// @(#)root/proofplayer:$Id$
// Author: Jan Iwaszkiewicz   11/12/06

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TPacketizerAdaptive                                                  //
//                                                                      //
// This packetizer is based on TPacketizer but uses different           //
// load-balancing algorithms and data structures.                       //
// Two main improvements in the load-balancing strategy:                //
// - First one was to change the order in which the files are assigned  //
//   to the computing nodes in such a way that network transfers are    //
//   evenly distributed in the query time. Transfer of the remote files //
//   was often becoming a bottleneck at the end of a query.             //
// - The other improvement is the use of time-based packet size. We     //
//   measure the processing rate of all the nodes and calculate the     //
//   packet size, so that it takes certain amount of time. In this way  //
//   packetizer prevents the situation where the query can't finish     //
//   because of one slow node.                                          //
//                                                                      //
// The data structures: TFileStat, TFileNode and TSlaveStat are         //
// enriched + changed and TFileNode::Compare method is changed.         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#include "TPacketizerAdaptive.h"

#include "Riostream.h"
#include "TDSet.h"
#include "TError.h"
#include "TEnv.h"
#include "TEntryList.h"
#include "TEventList.h"
#include "TMap.h"
#include "TMessage.h"
#include "TMonitor.h"
#include "TNtupleD.h"
#include "TObject.h"
#include "TParameter.h"
#include "TPerfStats.h"
#include "TProofDebug.h"
#include "TProof.h"
#include "TProofServ.h"
#include "TSlave.h"
#include "TSocket.h"
#include "TSortedList.h"
#include "TUrl.h"
#include "TClass.h"
#include "TRandom.h"
#include "TMath.h"
#include "TObjString.h"
#include "TList.h"

//
// The following three utility classes manage the state of the
// work to be performed and the slaves involved in the process.
// A list of TFileNode(s) describes the hosts with files, each
// has a list of TFileStat(s) keeping the state for each TDSet
// element (file).
//
// The list of TSlaveStat(s) keep track of the work (being) done
// by each slave
//


//------------------------------------------------------------------------------

class TPacketizerAdaptive::TFileStat : public TObject {

private:
   Bool_t         fIsDone;       // is this element processed
   TFileNode     *fNode;         // my FileNode
   TDSetElement  *fElement;      // location of the file and its range
   Long64_t       fNextEntry;    // cursor in the range, -1 when done // needs changing

public:
   TFileStat(TFileNode *node, TDSetElement *elem, TList *file);

   Bool_t         IsDone() const {return fIsDone;}
   Bool_t         IsSortable() const { return kTRUE; }
   void           SetDone() {fIsDone = kTRUE;}
   TFileNode     *GetNode() const {return fNode;}
   TDSetElement  *GetElement() const {return fElement;}
   Long64_t       GetNextEntry() const {return fNextEntry;}
   void           MoveNextEntry(Long64_t step) {fNextEntry += step;}

   // This method is used to keep a sorted list of remaining files to be processed
   Int_t          Compare(const TObject* obj) const
   {
      // Return -1 if elem.entries < obj.elem.entries, 0 if elem.entries equal
      // and 1 if elem.entries < obj.elem.entries.
      const TFileStat *fst = dynamic_cast<const TFileStat*>(obj);
      if (fst && GetElement() && fst->GetElement()) {
         Long64_t ent = GetElement()->GetNum();
         Long64_t entfst = fst->GetElement()->GetNum();
         if (ent > 0 && entfst > 0) {
            if (ent > entfst) {
               return 1;
            } else if (ent < entfst) {
               return -1;
            } else {
               return 0;
            }
         }
      }
      // No info: assume equal (no change in order)
      return 0;
   }
   void Print(Option_t * = 0) const
   {  // Notify file name and entries
      Printf("TFileStat: %s %lld", fElement ? fElement->GetName() : "---",
                                   fElement ? fElement->GetNum() : -1);
   }
};

TPacketizerAdaptive::TFileStat::TFileStat(TFileNode *node, TDSetElement *elem, TList *files)
   : fIsDone(kFALSE), fNode(node), fElement(elem), fNextEntry(elem->GetFirst())
{
   // Constructor: add to the global list
   if (files) files->Add(this);
}

//------------------------------------------------------------------------------

// a class describing a file node as a part of a session
class TPacketizerAdaptive::TFileNode : public TObject {

private:
   TString        fNodeName;        // FQDN of the node
   TList         *fFiles;           // TDSetElements (files) stored on this node
   TObject       *fUnAllocFileNext; // cursor in fFiles
   TList         *fActFiles;        // files with work remaining
   TObject       *fActFileNext;     // cursor in fActFiles
   Int_t          fMySlaveCnt;      // number of slaves running on this node
                                    // (which can process remote files)
   Int_t          fExtSlaveCnt;     // number of external slaves processing
                                    // files on this node
   Int_t          fRunSlaveCnt;     // total number of slaves processing files
                                    // on this node
   Long64_t       fProcessed;       // number of events processed on this node
   Long64_t       fEvents;          // number of entries in files on this node

   Int_t          fStrategy;        // 0 means the classic and 1 (default) - the adaptive strategy

   TSortedList   *fFilesToProcess;  // Global list of files (TFileStat) to be processed (owned by TPacketizer)

public:
   TFileNode(const char *name, Int_t strategy, TSortedList *files);
   ~TFileNode() { delete fFiles; delete fActFiles; }

   void        IncMySlaveCnt() { fMySlaveCnt++; }
   Int_t       GetMySlaveCnt() const { return fMySlaveCnt; }
   void        IncExtSlaveCnt(const char *slave) { if (fNodeName != slave) fExtSlaveCnt++; }
   void        DecExtSlaveCnt(const char *slave) { if (fNodeName != slave) fExtSlaveCnt--; R__ASSERT(fExtSlaveCnt >= 0); }
   Int_t       GetSlaveCnt() const { return fMySlaveCnt + fExtSlaveCnt; }
   void        IncRunSlaveCnt() { fRunSlaveCnt++; }
   void        DecRunSlaveCnt() { fRunSlaveCnt--; R__ASSERT(fRunSlaveCnt >= 0); }
   Int_t       GetRunSlaveCnt() const { return fRunSlaveCnt; }
   Int_t       GetExtSlaveCnt() const { return fExtSlaveCnt; }
   Int_t       GetNumberOfActiveFiles() const { return fActFiles->GetSize(); }
   Bool_t      IsSortable() const { return kTRUE; }
   Int_t       GetNumberOfFiles() { return fFiles->GetSize(); }
   void        IncProcessed(Long64_t nEvents)
                  { fProcessed += nEvents; }
   Long64_t    GetProcessed() const { return fProcessed; }
   void        DecreaseProcessed(Long64_t nEvents) { fProcessed -= nEvents; }
   // this method is used by Compare() it adds 1, so it returns a number that
   // would be true if one more slave is added.
   Long64_t    GetEventsLeftPerSlave() const
      { return ((fEvents - fProcessed)/(fRunSlaveCnt + 1)); }
   void        IncEvents(Long64_t nEvents) { fEvents += nEvents; }
   const char *GetName() const { return fNodeName.Data(); }
   Long64_t    GetNEvents() const { return fEvents; }

   void Print(Option_t * = 0) const
   {
      TFileStat *fs = 0;
      TDSetElement *e = 0;
      Int_t nn = 0;
      Printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
      Printf("+++ TFileNode: %s +++", fNodeName.Data());
      Printf("+++ Evts: %lld (total: %lld) ", fProcessed, fEvents);
      Printf("+++ Worker count: int:%d, ext: %d, tot:%d ", fMySlaveCnt, fExtSlaveCnt, fRunSlaveCnt);
      Printf("+++ Files: %d ", fFiles ? fFiles->GetSize() : 0);
      if (fFiles && fFiles->GetSize() > 0) {
         TIter nxf(fFiles);
         while ((fs = (TFileStat *) nxf())) {
            if ((e = fs->GetElement())) {
               Printf("+++  #%d: %s  %lld - %lld (%lld) - next: %lld ", ++nn, e->GetName(),
                     e->GetFirst(), e->GetFirst() + e->GetNum() - 1, e->GetNum(), fs->GetNextEntry());
            } else {
               Printf("+++  #%d: no element! ", ++nn);
            }
         }
      }
      Printf("+++ Active files: %d ", fActFiles ? fActFiles->GetSize() : 0);
      if (fActFiles && fActFiles->GetSize() > 0) {
         TIter nxaf(fActFiles);
         while ((fs = (TFileStat *) nxaf())) {
            if ((e = fs->GetElement())) {
               Printf("+++  #%d: %s  %lld - %lld (%lld) - next: %lld", ++nn, e->GetName(),
                      e->GetFirst(), e->GetFirst() + e->GetNum() - 1, e->GetNum(), fs->GetNextEntry());
            } else {
               Printf("+++  #%d: no element! ", ++nn);
            }
         }
      }
      Printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
   }

   void Add(TDSetElement *elem, Bool_t tolist)
   {
      TList *files = tolist ? (TList *)fFilesToProcess : (TList *)0;
      TFileStat *f = new TFileStat(this, elem, files);
      fFiles->Add(f);
      if (fUnAllocFileNext == 0) fUnAllocFileNext = fFiles->First();
   }

   TFileStat *GetNextUnAlloc()
   {
      TObject *next = fUnAllocFileNext;

      if (next != 0) {
         // make file active
         fActFiles->Add(next);
         if (fActFileNext == 0) fActFileNext = fActFiles->First();

         // move cursor
         fUnAllocFileNext = fFiles->After(fUnAllocFileNext);
      }
      return (TFileStat *) next;
   }

   TFileStat *GetNextActive()
   {
      TObject *next = fActFileNext;

      if (fActFileNext != 0) {
         fActFileNext = fActFiles->After(fActFileNext);
         if (fActFileNext == 0) fActFileNext = fActFiles->First();
      }

      return (TFileStat *) next;
   }

   void RemoveActive(TFileStat *file)
   {
      if (fActFileNext == file) fActFileNext = fActFiles->After(file);
      fActFiles->Remove(file);
      if (fFilesToProcess) fFilesToProcess->Remove(file);
      if (fActFileNext == 0) fActFileNext = fActFiles->First();
   }

   Int_t Compare(const TObject *other) const
   {
      // Must return -1 if this is smaller than obj, 0 if objects are equal
      // and 1 if this is larger than obj.
      // smaller means more needing a new worker.
      // Two cases are considered depending on
      // relation between harddrive speed and network bandwidth.

      const TFileNode *obj = dynamic_cast<const TFileNode*>(other);
      if (!obj) {
         Error("Compare", "input is not a TPacketizer::TFileNode object");
         return 0;
      }

      // how many more events it has than obj

      if (fStrategy == 1) {
         // The default adaptive strategy.
         Int_t myVal = GetRunSlaveCnt();
         Int_t otherVal = obj->GetRunSlaveCnt();
         if (myVal < otherVal) {
            return -1;
         } else if (myVal > otherVal) {
            return 1;
         } else {
            // if this has more events to process than obj
            if ((fEvents - fProcessed) >
                (obj->GetNEvents() - obj->GetProcessed())) {
               return -1;
            } else {
               return 1;
            }
         }
      } else {
         Int_t myVal = GetSlaveCnt();
         Int_t otherVal = obj->GetSlaveCnt();
         if (myVal < otherVal) {
            return -1;
         } else if (myVal > otherVal) {
            return 1;
         } else {
            return 0;
         }
      }
   }

   void Reset()
   {
      fUnAllocFileNext = fFiles->First();
      fActFiles->Clear();
      fActFileNext = 0;
      fExtSlaveCnt = 0;
      fMySlaveCnt = 0;
      fRunSlaveCnt = 0;
   }
};


TPacketizerAdaptive::TFileNode::TFileNode(const char *name, Int_t strategy, TSortedList *files)
   : fNodeName(name), fFiles(new TList), fUnAllocFileNext(0),
     fActFiles(new TList), fActFileNext(0), fMySlaveCnt(0),
     fExtSlaveCnt(0), fRunSlaveCnt(0), fProcessed(0), fEvents(0),
     fStrategy(strategy), fFilesToProcess(files)
{
   // Constructor

   fFiles->SetOwner();
   fActFiles->SetOwner(kFALSE);
}

//------------------------------------------------------------------------------

class TPacketizerAdaptive::TSlaveStat : public TVirtualPacketizer::TVirtualSlaveStat {

friend class TPacketizerAdaptive;

private:
   TFileNode     *fFileNode;     // corresponding node or 0
   TFileStat     *fCurFile;      // file currently being processed
   TDSetElement  *fCurElem;      // TDSetElement currently being processed
   Long64_t       fCurProcessed; // events processed in the current file
   Float_t        fCurProcTime;  // proc time spent on the current file
   TList         *fDSubSet;      // packets processed by this worker

public:
   TSlaveStat(TSlave *slave);
   ~TSlaveStat();
   TFileNode  *GetFileNode() const { return fFileNode; }
   Long64_t    GetEntriesProcessed() const { return fStatus?fStatus->GetEntries():-1; }
   Double_t    GetProcTime() const { return fStatus?fStatus->GetProcTime():-1; }
   TFileStat  *GetCurFile() { return fCurFile; }
   void        SetFileNode(TFileNode *node) { fFileNode = node; }
   void        UpdateRates(TProofProgressStatus *st);
   Float_t     GetAvgRate() { return fStatus->GetRate(); }
   Float_t     GetCurRate() {
      return (fCurProcTime?fCurProcessed/fCurProcTime:0); }
   Int_t       GetLocalEventsLeft() {
      return fFileNode?(fFileNode->GetEventsLeftPerSlave()):0; }
   TList      *GetProcessedSubSet() { return fDSubSet; }
   TProofProgressStatus *GetProgressStatus() { return fStatus; }
   TProofProgressStatus *AddProcessed(TProofProgressStatus *st = 0);
};

//______________________________________________________________________________
TPacketizerAdaptive::TSlaveStat::TSlaveStat(TSlave *slave)
   : fFileNode(0), fCurFile(0), fCurElem(0),
     fCurProcessed(0), fCurProcTime(0)
{
   // Constructor

   fDSubSet = new TList();
   fDSubSet->SetOwner();
   fSlave = slave;
   fStatus = new TProofProgressStatus();
   // The slave name is a special one in PROOF-Lite: avoid blocking on the DNS
   // for non existing names
   fWrkFQDN = slave->GetName();
   if (strcmp(slave->ClassName(), "TSlaveLite")) {
      fWrkFQDN = TUrl(fWrkFQDN).GetHostFQDN();
      // Get full name for local hosts
      if (fWrkFQDN.Contains("localhost") || fWrkFQDN == "127.0.0.1")
         fWrkFQDN = TUrl(gSystem->HostName()).GetHostFQDN();
   }
   PDB(kPacketizer, 2)
      Info("TSlaveStat", "wrk FQDN: %s", fWrkFQDN.Data());
}

//______________________________________________________________________________
TPacketizerAdaptive::TSlaveStat::~TSlaveStat()
{
   // Cleanup

   SafeDelete(fDSubSet);
   SafeDelete(fStatus);
}

//______________________________________________________________________________
void TPacketizerAdaptive::TSlaveStat::UpdateRates(TProofProgressStatus *st)
{
   // Update packetizer rates

   if (!st) {
      Error("UpdateRates", "no status object!");
      return;
   }
   if (fCurFile->IsDone()) {
      fCurProcTime = 0;
      fCurProcessed = 0;
   } else {
      fCurProcTime += st->GetProcTime() - GetProcTime();
      fCurProcessed += st->GetEntries() - GetEntriesProcessed();
   }
   fCurFile->GetNode()->IncProcessed(st->GetEntries() - GetEntriesProcessed());
   st->SetLastEntries(st->GetEntries() - fStatus->GetEntries());
   SafeDelete(fStatus);
   fStatus = st;
}

//______________________________________________________________________________
TProofProgressStatus *TPacketizerAdaptive::TSlaveStat::AddProcessed(TProofProgressStatus *st)
{
   // Add the current element to the fDSubSet (subset processed by this worker)
   // and if the status arg is given, then change the size of the packet.
   // return the difference (*st - *fStatus)

   if (st && fDSubSet && fCurElem) {
      if (fCurElem->GetNum() != st->GetEntries() - GetEntriesProcessed())
         fCurElem->SetNum(st->GetEntries() - GetEntriesProcessed());
      fDSubSet->Add(fCurElem);
      TProofProgressStatus *diff = new TProofProgressStatus(*st - *fStatus);
      return diff;
   } else {
      Error("AddProcessed", "processed subset of current elem undefined");
      return 0;
   }
}

//------------------------------------------------------------------------------

ClassImp(TPacketizerAdaptive)

//______________________________________________________________________________
TPacketizerAdaptive::TPacketizerAdaptive(TDSet *dset, TList *slaves,
                                         Long64_t first, Long64_t num,
                                         TList *input, TProofProgressStatus *st)
                    : TVirtualPacketizer(input, st)
{
   // Constructor

   PDB(kPacketizer,1) Info("TPacketizerAdaptive",
                           "enter (first %lld, num %lld)", first, num);

   // Init pointer members
   fSlaveStats = 0;
   fUnAllocated = 0;
   fActive = 0;
   fFileNodes = 0;
   fMaxPerfIdx = 1;
   fCachePacketSync = kTRUE;
   fMaxEntriesRatio = 2.;

   fMaxSlaveCnt = -1;
   fPacketAsAFraction = 4;
   fStrategy = 1;
   fFilesToProcess = new TSortedList;
   fFilesToProcess->SetOwner(kFALSE);

   if (!fProgressStatus) {
      Error("TPacketizerAdaptive", "No progress status");
      return;
   }

   // Attempt to synchronize the packet size with the tree cache size
   Int_t cpsync = -1;
   if (TProof::GetParameter(input, "PROOF_PacketizerCachePacketSync", cpsync) != 0) {
      // Check if there is a global cache-packet sync setting
      cpsync = gEnv->GetValue("Packetizer.CachePacketSync", 1);
   }
   if (cpsync >= 0) fCachePacketSync = (cpsync > 0) ? kTRUE : kFALSE;

   // Max file entries to avg allowed ratio for cache-to-packet synchronization
   // (applies only if fCachePacketSync is true; -1. disables the bound)
   if (TProof::GetParameter(input, "PROOF_PacketizerMaxEntriesRatio", fMaxEntriesRatio) != 0) {
      // Check if there is a global ratio setting
      fMaxEntriesRatio = gEnv->GetValue("Packetizer.MaxEntriesRatio", 2.);
   }

   // The possibility to change packetizer strategy to the basic TPacketizer's
   // one (in which workers always process their local data first).
   Int_t strategy = -1;
   if (TProof::GetParameter(input, "PROOF_PacketizerStrategy", strategy) != 0) {
      // Check if there is a global strategy setting
      strategy = gEnv->GetValue("Packetizer.Strategy", 1);
   }
   if (strategy == 0) {
      fStrategy = 0;
      Info("TPacketizerAdaptive", "using the basic strategy of TPacketizer");
   } else if (strategy != 1) {
      Warning("TPacketizerAdaptive", "unsupported strategy index (%d): ignore", strategy);
   }

   Long_t maxSlaveCnt = 0;
   if (TProof::GetParameter(input, "PROOF_MaxSlavesPerNode", maxSlaveCnt) == 0) {
      if (maxSlaveCnt < 1) {
         Info("TPacketizerAdaptive",
              "The value of PROOF_MaxSlavesPerNode must be grater than 0");
         maxSlaveCnt = 0;
      }
   } else {
      // Try also with Int_t (recently supported in TProof::SetParameter)
      Int_t mxslcnt = -1;
      if (TProof::GetParameter(input, "PROOF_MaxSlavesPerNode", mxslcnt) == 0) {
         if (mxslcnt < 1) {
            Info("TPacketizerAdaptive",
                 "The value of PROOF_MaxSlavesPerNode must be grater than 0");
            mxslcnt = 0;
         }
         maxSlaveCnt = (Long_t) mxslcnt;
      }
   }

   if (!maxSlaveCnt)
      maxSlaveCnt = gEnv->GetValue("Packetizer.MaxWorkersPerNode", 0);
   if (maxSlaveCnt > 0) {
      fMaxSlaveCnt = maxSlaveCnt;
      Info("TPacketizerAdaptive", "Setting max number of workers per node to %ld",
           fMaxSlaveCnt);
   }

   // if forceLocal parameter is set to 1 then eliminate the cross-worker
   // processing;
   // This minimizes the network usage on the PROOF cluser at the expense of
   // longer jobs processing times.
   // To process successfully the session must have workers with all the data!
   fForceLocal = kFALSE;
   Int_t forceLocal = 0;
   if (TProof::GetParameter(input, "PROOF_ForceLocal", forceLocal) == 0) {
      if (forceLocal == 1)
         fForceLocal = kTRUE;
      else
         Info("TPacketizerAdaptive",
            "The only accepted value of PROOF_ForceLocal parameter is 1 !");
   }

   // Below we provide a possibility to change the way packet size is
   // calculated or define the packet time directly.
   // fPacketAsAFraction can be interpreted as follows:
   // packet time is (expected job proc. time) / fPacketSizeAsAFraction.
   // It substitutes 20 in the old formula to calculate the fPacketSize:
   // fPacketSize = fTotalEntries / (20 * nslaves)
   Int_t packetAsAFraction = 0;
   if (TProof::GetParameter(input, "PROOF_PacketAsAFraction", packetAsAFraction) == 0) {
      if (packetAsAFraction > 0) {
         fPacketAsAFraction = packetAsAFraction;
         Info("TPacketizerAdaptive",
              "using alternate fraction of query time as a packet size: %d",
              packetAsAFraction);
      } else
         Info("TPacketizerAdaptive", "packetAsAFraction parameter must be higher than 0");
   }

   // Packet re-assignement
   fTryReassign = 0;
   Int_t tryReassign = 0;
   if (TProof::GetParameter(input, "PROOF_TryReassign", tryReassign) != 0)
      tryReassign = gEnv->GetValue("Packetizer.TryReassign", 0);
   fTryReassign = tryReassign;
   if (fTryReassign != 0)
      Info("TPacketizerAdaptive", "failed packets will be re-assigned");

   // Save the config parameters in the dedicated list so that they will be saved
   // in the outputlist and therefore in the relevant TQueryResult
   fConfigParams->Add(new TParameter<Int_t>("PROOF_PacketizerCachePacketSync", (Int_t)fCachePacketSync));
   fConfigParams->Add(new TParameter<Double_t>("PROOF_PacketizerMaxEntriesRatio", fMaxEntriesRatio));
   fConfigParams->Add(new TParameter<Int_t>("PROOF_PacketizerStrategy", fStrategy));
   fConfigParams->Add(new TParameter<Int_t>("PROOF_MaxWorkersPerNode", (Int_t)fMaxSlaveCnt));
   fConfigParams->Add(new TParameter<Int_t>("PROOF_ForceLocal", (Int_t)fForceLocal));
   fConfigParams->Add(new TParameter<Int_t>("PROOF_PacketAsAFraction", fPacketAsAFraction));

   Double_t baseLocalPreference = 1.2;
   fBaseLocalPreference = (Float_t)baseLocalPreference;
   if (TProof::GetParameter(input, "PROOF_BaseLocalPreference", baseLocalPreference) == 0)
      fBaseLocalPreference = (Float_t)baseLocalPreference;

   fFileNodes = new TList;
   fFileNodes->SetOwner();
   fUnAllocated = new TList;
   fUnAllocated->SetOwner(kFALSE);
   fActive = new TList;
   fActive->SetOwner(kFALSE);

   fValid = kTRUE;

   // Resolve end-point urls to optmize distribution
   // dset->Lookup(); // moved to TProofPlayerRemote::Process

   // Read list of mounted disks
   TObjArray *partitions = 0;
   TString partitionsStr;
   if (TProof::GetParameter(input, "PROOF_PacketizerPartitions", partitionsStr) != 0)
      partitionsStr = gEnv->GetValue("Packetizer.Partitions", "");
   if (!partitionsStr.IsNull()) {
      Info("TPacketizerAdaptive", "Partitions: %s", partitionsStr.Data());
      partitions = partitionsStr.Tokenize(",");
   }

   // Split into per host and disk entries
   dset->Reset();
   TDSetElement *e;
   while ((e = (TDSetElement*)dset->Next())) {

      if (e->GetValid()) continue;

      // The dataset name, if any
      if (fDataSet.IsNull() && e->GetDataSet() && strlen(e->GetDataSet()))
         fDataSet = e->GetDataSet();

      TUrl url = e->GetFileName();
      PDB(kPacketizer,2)
         Info("TPacketizerAdaptive", "element name: %s (url: %s)", e->GetFileName(), url.GetUrl());

      // Map non URL filenames to dummy host
      TString host;
      if ( !url.IsValid() ||
          (strncmp(url.GetProtocol(),"root", 4) &&
           strncmp(url.GetProtocol(),"rfio", 4) &&
           strncmp(url.GetProtocol(),"file", 4)) ) {
         host = "no-host";
      } else if ( url.IsValid() && !strncmp(url.GetProtocol(),"file", 4)) {
         host = "localhost";
         url.SetProtocol("root");
      } else {
         host = url.GetHostFQDN();
      }
      // Get full name for local hosts
      if (host.Contains("localhost") || host == "127.0.0.1") {
         url.SetHost(gSystem->HostName());
         host = url.GetHostFQDN();
      }

      // Find on which disk is the file, if any
      TString disk;
      if (partitions) {
         TIter iString(partitions);
         TObjString* os = 0;
         while ((os = (TObjString *)iString())) {
            // Compare begining of the url with disk mountpoint
            if (strncmp(url.GetFile(), os->GetName(), os->GetString().Length()) == 0) {
               disk = os->GetName();
               break;
            }
         }
      }
      // Node's url
      TString nodeStr;
      if (disk.IsNull())
         nodeStr.Form("%s://%s", url.GetProtocol(), host.Data());
      else
         nodeStr.Form("%s://%s/%s", url.GetProtocol(), host.Data(), disk.Data());
      TFileNode *node = (TFileNode *) fFileNodes->FindObject(nodeStr);

      if (node == 0) {
         node = new TFileNode(nodeStr, fStrategy, fFilesToProcess);
         fFileNodes->Add(node);
         PDB(kPacketizer,2)
            Info("TPacketizerAdaptive", "creating new node '%s' or the element", nodeStr.Data());
      } else {
         PDB(kPacketizer,2)
            Info("TPacketizerAdaptive", "adding element to existing node '%s'", nodeStr.Data());
      }

      node->Add(e, kFALSE);
   }

   fSlaveStats = new TMap;
   fSlaveStats->SetOwner(kFALSE);

   TSlave *slave;
   TIter si(slaves);
   while ((slave = (TSlave*) si.Next())) {
      fSlaveStats->Add( slave, new TSlaveStat(slave) );
      fMaxPerfIdx = slave->GetPerfIdx() > fMaxPerfIdx ?
         slave->GetPerfIdx() : fMaxPerfIdx;
   }

   // Setup file & filenode structure
   Reset();
   // Optimize the number of files to be open when running on subsample
   Int_t validateMode = 0;
   Int_t gprc = TProof::GetParameter(input, "PROOF_ValidateByFile", validateMode);
   Bool_t byfile = (gprc == 0 && validateMode > 0 && num > -1) ? kTRUE : kFALSE;
   if (num > -1)
      PDB(kPacketizer,2)
         Info("TPacketizerAdaptive",
              "processing subset of entries: validating by file? %s", byfile ? "yes": "no");
   ValidateFiles(dset, slaves, num, byfile);


   if (!fValid) return;

   // apply global range (first,num) to dset and rebuild structure
   // ommitting TDSet elements that are not needed

   Int_t files = 0;
   fTotalEntries = 0;
   fUnAllocated->Clear();  // avoid dangling pointers
   fActive->Clear();
   fFileNodes->Clear();    // then delete all objects
   PDB(kPacketizer,2)
      Info("TPacketizerAdaptive",
           "processing range: first %lld, num %lld", first, num);

   dset->Reset();
   Long64_t cur = 0;
   while (( e = (TDSetElement*)dset->Next())) {

      // Skip invalid or missing file; It will be moved
      // from the dset to the 'MissingFiles' list in the player.
      if (!e->GetValid()) continue;

      TUrl url = e->GetFileName();
      Long64_t eFirst = e->GetFirst();
      Long64_t eNum = e->GetNum();
      PDB(kPacketizer,2)
         Info("TPacketizerAdaptive", "processing element '%s'", e->GetFileName());
      PDB(kPacketizer,2)
         Info("TPacketizerAdaptive",
              " --> first %lld, elenum %lld (cur %lld) (entrylist: %p)", eFirst, eNum, cur, e->GetEntryList());

      if (!e->GetEntryList()) {
         // This element is before the start of the global range, skip it
         if (cur + eNum < first) {
            cur += eNum;
            PDB(kPacketizer,2)
               Info("TPacketizerAdaptive", " --> skip element cur %lld", cur);
            continue;
         }

         // This element is after the end of the global range, skip it
         if (num != -1 && (first+num <= cur)) {
            cur += eNum;
            PDB(kPacketizer,2)
               Info("TPacketizerAdaptive", " --> drop element cur %lld", cur);
            continue; // break ??
         }

         Bool_t inRange = kFALSE;
         if (cur <= first || (num != -1 && (first+num <= cur+eNum))) {

            if (cur <= first) {
               // If this element contains the start of the global range
               // adjust its start and number of entries
               e->SetFirst( eFirst + (first - cur) );
               e->SetNum( e->GetNum() - (first - cur) );
               PDB(kPacketizer,2)
                  Info("TPacketizerAdaptive", " --> adjust start %lld and end %lld",
                       eFirst + (first - cur), first + num - cur);
               inRange = kTRUE;
            }
            if (num != -1 && (first+num <= cur+eNum)) {
               // If this element contains the end of the global range
               // adjust its number of entries
               e->SetNum( first + num - e->GetFirst() - cur );
               PDB(kPacketizer,2)
                  Info("TPacketizerAdaptive", " --> adjust end %lld", first + num - cur);
               inRange = kTRUE;
            }

         } else {
            // Increment the counter ...
            PDB(kPacketizer,2)
               Info("TPacketizerAdaptive", " --> increment 'cur' by %lld", eNum);
            cur += eNum;
         }
         // Re-adjust eNum and cur, if needed
         if (inRange) {
            cur += eNum;
            eNum = e->GetNum();
         }

      } else {
         TEntryList *enl = dynamic_cast<TEntryList *>(e->GetEntryList());
         if (enl) {
            eNum = enl->GetN();
            PDB(kPacketizer,2)
               Info("TPacketizerAdaptive", " --> entry-list element: %lld entries", eNum);
         } else {
            TEventList *evl = dynamic_cast<TEventList *>(e->GetEntryList());
            eNum = evl ? evl->GetN() : eNum;
            PDB(kPacketizer,2)
               Info("TPacketizerAdaptive", " --> event-list element: %lld entries (evl:%p)", eNum, evl);
         }
         if (!eNum) {
            PDB(kPacketizer,2)
               Info("TPacketizerAdaptive", " --> empty entry- or event-list element!");
            continue;
         }
      }
      PDB(kPacketizer,2)
         Info("TPacketizerAdaptive", " --> next cur %lld", cur);

      // Map non URL filenames to dummy host
      TString host;
      if ( !url.IsValid() ||
          (strncmp(url.GetProtocol(),"root", 4) &&
           strncmp(url.GetProtocol(),"rfio", 4) &&
           strncmp(url.GetProtocol(),"file", 4)) ) {
         host = "no-host";
      } else if ( url.IsValid() && !strncmp(url.GetProtocol(),"file", 4)) {
         host = "localhost";
         url.SetProtocol("root");
      } else {
         host = url.GetHostFQDN();
      }
      // Get full name for local hosts
      if (host.Contains("localhost") || host == "127.0.0.1") {
         url.SetHost(gSystem->HostName());
         host = url.GetHostFQDN();
      }

      // Find, on which disk is the file
      TString disk;
      if (partitions) {
         TIter iString(partitions);
         TObjString* os = 0;
         while ((os = (TObjString *)iString())) {
            // Compare begining of the url with disk mountpoint
            if (strncmp(url.GetFile(), os->GetName(), os->GetString().Length()) == 0) {
               disk = os->GetName();
               break;
            }
         }
      }
      // Node's url
      TString nodeStr;
      if (disk.IsNull())
         nodeStr.Form("%s://%s", url.GetProtocol(), host.Data());
      else
         nodeStr.Form("%s://%s/%s", url.GetProtocol(), host.Data(), disk.Data());
      TFileNode *node = (TFileNode*) fFileNodes->FindObject(nodeStr);


      if (node == 0) {
         node = new TFileNode(nodeStr, fStrategy, fFilesToProcess);
         fFileNodes->Add( node );
         PDB(kPacketizer, 2)
            Info("TPacketizerAdaptive", " --> creating new node '%s' for element", nodeStr.Data());
      } else {
         PDB(kPacketizer, 2)
            Info("TPacketizerAdaptive", " --> adding element to exiting node '%s'", nodeStr.Data());
      }

      ++files;
      fTotalEntries += eNum;
      node->Add(e, kTRUE);
      node->IncEvents(eNum);
      PDB(kPacketizer,2) e->Print("a");
   }
   PDB(kPacketizer,1)
      Info("TPacketizerAdaptive", "processing %lld entries in %d files on %d hosts",
                                  fTotalEntries, files, fFileNodes->GetSize());

   // Set the total number for monitoring
   if (gPerfStats)
      gPerfStats->SetNumEvents(fTotalEntries);

   Reset();

   InitStats();

   if (!fValid)
      SafeDelete(fProgress);

   PDB(kPacketizer,1) Info("TPacketizerAdaptive", "return");
}

//______________________________________________________________________________
TPacketizerAdaptive::~TPacketizerAdaptive()
{
   // Destructor.

   if (fSlaveStats) {
      fSlaveStats->DeleteValues();
   }

   SafeDelete(fSlaveStats);
   SafeDelete(fUnAllocated);
   SafeDelete(fActive);
   SafeDelete(fFileNodes);
   SafeDelete(fFilesToProcess);
}

//______________________________________________________________________________
void TPacketizerAdaptive::InitStats()
{
   // (re)initialise the statistics
   // called at the begining or after a worker dies.

   // calculating how many files from TDSet are not cached on
   // any slave
   Int_t noRemoteFiles = 0;
   fNEventsOnRemLoc = 0;
   Int_t totalNumberOfFiles = 0;
   TIter next(fFileNodes);
   while (TFileNode *fn = (TFileNode*)next()) {
      totalNumberOfFiles += fn->GetNumberOfFiles();
      if (fn->GetMySlaveCnt() == 0) {
         noRemoteFiles += fn->GetNumberOfFiles();
         fNEventsOnRemLoc += (fn->GetNEvents() - fn->GetProcessed());
      }
   }

   if (totalNumberOfFiles == 0) {
      Info("InitStats", "no valid or non-empty file found: setting invalid");
      // No valid files: set invalid and return
      fValid = kFALSE;
      return;
   }

   fFractionOfRemoteFiles = (1.0 * noRemoteFiles) / totalNumberOfFiles;
   Info("InitStats",
        "fraction of remote files %f", fFractionOfRemoteFiles);

   if (!fValid)
      SafeDelete(fProgress);

   PDB(kPacketizer,1) Info("InitStats", "return");
}

//______________________________________________________________________________
TPacketizerAdaptive::TFileStat *TPacketizerAdaptive::GetNextUnAlloc(TFileNode *node, const char *nodeHostName)
{
   // Get next unallocated file from 'node' or other nodes:
   // First try 'node'. If there is no more files, keep trying to
   // find an unallocated file on other nodes.

   TFileStat *file = 0;

   if (node != 0) {
      PDB(kPacketizer, 2)
         Info("GetNextUnAlloc", "looking for file on node %s", node->GetName());
      file = node->GetNextUnAlloc();
      if (file == 0) RemoveUnAllocNode(node);
   } else {
      if (nodeHostName && strlen(nodeHostName) > 0) {

         TFileNode *fn;
         // Make sure that they are in the corrected order
         fUnAllocated->Sort();
         PDB(kPacketizer,2) fUnAllocated->Print();

         // Loop over unallocated fileNode list
         for (int i = 0; i < fUnAllocated->GetSize(); i++) {

            if ((fn = (TFileNode *) fUnAllocated->At(i))) {
               TUrl uu(fn->GetName());
               PDB(kPacketizer, 2)
                  Info("GetNextUnAlloc", "comparing %s with %s...", nodeHostName, uu.GetHost());

               // Check, whether node's hostname is matching with current fileNode (fn)
               if (!strcmp(nodeHostName, uu.GetHost())) {
                  node = fn;

                  // Fetch next unallocated file from this node
                  if ((file = node->GetNextUnAlloc()) == 0) {
                     RemoveUnAllocNode(node);
                     node = 0;
                  } else {
                     PDB(kPacketizer, 2)
                        Info("GetNextUnAlloc", "found! (host: %s)", uu.GetHost());
                     break;
                  }
               }
            } else {
               Warning("GetNextUnAlloc", "unallocate entry %d is empty!", i);
            }
         }

         if (node != 0 && fMaxSlaveCnt > 0 && node->GetExtSlaveCnt() >= fMaxSlaveCnt) {
            // Unlike in TPacketizer we look at the number of ext slaves only.
            PDB(kPacketizer,1)
               Info("GetNextUnAlloc", "reached Workers-per-Node Limit (%ld)", fMaxSlaveCnt);
            node = 0;
         }
      }

      if (node == 0) {
         while (file == 0 && ((node = NextNode()) != 0)) {
            PDB(kPacketizer, 2)
               Info("GetNextUnAlloc", "looking for file on node %s", node->GetName());
            if ((file = node->GetNextUnAlloc()) == 0) RemoveUnAllocNode(node);
         }
      }
   }

   if (file != 0) {
      // if needed make node active
      if (fActive->FindObject(node) == 0) {
         fActive->Add(node);
      }
   }

   PDB(kPacketizer, 2) {
      if (!file) {
         Info("GetNextUnAlloc", "no file found!");
      } else {
         file->Print();
      }
   }

   return file;
}

//______________________________________________________________________________
TPacketizerAdaptive::TFileNode *TPacketizerAdaptive::NextNode()
{
   // Get next node which has unallocated files.
   // the order is determined by TFileNode::Compare

   fUnAllocated->Sort();
   PDB(kPacketizer,2) {
      fUnAllocated->Print();
   }

   TFileNode *fn = (TFileNode*) fUnAllocated->First();
   if (fn != 0 && fMaxSlaveCnt > 0 && fn->GetExtSlaveCnt() >= fMaxSlaveCnt) {
      // unlike in TPacketizer we look at the number of ext slaves only.
      PDB(kPacketizer,1)
         Info("NextNode", "reached Workers-per-Node Limit (%ld)", fMaxSlaveCnt);
      fn = 0;
   }

   return fn;
}

//______________________________________________________________________________
void TPacketizerAdaptive::RemoveUnAllocNode(TFileNode * node)
{
   // Remove unallocated node.

   fUnAllocated->Remove(node);
}

//______________________________________________________________________________
TPacketizerAdaptive::TFileStat *TPacketizerAdaptive::GetNextActive()
{
   // Get next active file.

   TFileNode *node;
   TFileStat *file = 0;

   while (file == 0 && ((node = NextActiveNode()) != 0)) {
         file = node->GetNextActive();
         if (file == 0) RemoveActiveNode(node);
   }

   return file;
}


//______________________________________________________________________________
TPacketizerAdaptive::TFileNode *TPacketizerAdaptive::NextActiveNode()
{
   // Get next active node.

   fActive->Sort();
   PDB(kPacketizer,2) {
      Info("NextActiveNode", "enter");
      fActive->Print();
   }

   TFileNode *fn = (TFileNode*) fActive->First();
   // look at only ext slaves
   if (fn != 0 && fMaxSlaveCnt > 0 && fn->GetExtSlaveCnt() >= fMaxSlaveCnt) {
      PDB(kPacketizer,1)
         Info("NextActiveNode","reached Workers-per-Node limit (%ld)", fMaxSlaveCnt);
      fn = 0;
   }

   return fn;
}

//______________________________________________________________________________
void TPacketizerAdaptive::RemoveActive(TFileStat *file)
{
   // Remove file from the list of actives.

   TFileNode *node = file->GetNode();

   node->RemoveActive(file);
   if (node->GetNumberOfActiveFiles() == 0) RemoveActiveNode(node);
}

//______________________________________________________________________________
void TPacketizerAdaptive::RemoveActiveNode(TFileNode *node)
{
   // Remove node from the list of actives.

   fActive->Remove(node);
}

//______________________________________________________________________________
void TPacketizerAdaptive::Reset()
{
   // Reset the internal data structure for packet distribution.

   fUnAllocated->Clear();
   fUnAllocated->AddAll(fFileNodes);

   fActive->Clear();

   TIter files(fFileNodes);
   TFileNode *fn;
   while ((fn = (TFileNode*) files.Next()) != 0) {
      fn->Reset();
   }

   TIter slaves(fSlaveStats);
   TObject *key;
   while ((key = slaves.Next()) != 0) {
      TSlaveStat *slstat = (TSlaveStat*) fSlaveStats->GetValue(key);
      if (!slstat) {
         Warning("Reset", "TSlaveStat associated to key '%s' is NULL", key->GetName());
         continue;
      }
      // Find out which file nodes are on the worker machine and assign the
      // one with less workers assigned
      TFileNode *fnmin = 0;
      Int_t fncnt = fSlaveStats->GetSize();
      files.Reset();
      while ((fn = (TFileNode*) files.Next()) != 0) {
         if (!strcmp(slstat->GetName(), TUrl(fn->GetName()).GetHost())) {
            if (fn->GetMySlaveCnt() < fncnt) {
               fnmin = fn;
               fncnt = fn->GetMySlaveCnt();
            }
         }
      }
      if (fnmin != 0 ) {
         slstat->SetFileNode(fnmin);
         fnmin->IncMySlaveCnt();
         PDB(kPacketizer, 2)
            Info("Reset","assigning node '%s' to '%s' (cnt: %d)",
                         fnmin->GetName(), slstat->GetName(), fnmin->GetMySlaveCnt());
      }
      slstat->fCurFile = 0;
   }
}

//______________________________________________________________________________
void TPacketizerAdaptive::ValidateFiles(TDSet *dset, TList *slaves,
                                        Long64_t maxent, Bool_t byfile)
{
   // Check existence of file/dir/tree an get number of entries.
   // Assumes the files have been setup.

   TMap     slaves_by_sock;
   TMonitor mon;
   TList    workers;


   // Setup the communication infrastructure

   workers.AddAll(slaves);
   TIter    si(slaves);
   TSlave   *slm;
   while ((slm = (TSlave*)si.Next()) != 0) {
      PDB(kPacketizer,3)
      Info("ValidateFiles","socket added to monitor: %p (%s)",
          slm->GetSocket(), slm->GetName());
      mon.Add(slm->GetSocket());
      slaves_by_sock.Add(slm->GetSocket(), slm);
   }

   mon.DeActivateAll();

   ((TProof*)gProof)->DeActivateAsyncInput();

   // Some monitoring systems (TXSocketHandler) need to know this
   ((TProof*)gProof)->fCurrentMonitor = &mon;

   // Identify the type
   if (!strcmp(dset->GetType(), "TTree")) SetBit(TVirtualPacketizer::kIsTree);

   // Preparing for client notification
   TString msg("Validating files");
   UInt_t n = 0;
   UInt_t tot = dset->GetListOfElements()->GetSize();
   Bool_t st = kTRUE;

   Long64_t totent = 0, nopenf = 0;
   while (kTRUE) {

      // send work
      while (TSlave *s = (TSlave *)workers.First()) {

         workers.Remove(s);

         // find a file

         TSlaveStat *slstat = (TSlaveStat*)fSlaveStats->GetValue(s);
         if (!slstat) {
            Error("ValidateFiles", "TSlaveStat associated to slave '%s' is NULL", s->GetName());
            continue;
         }

         TFileNode *node = 0;
         TFileStat *file = 0;

         // try its own node first
         if ((node = slstat->GetFileNode()) != 0) {
            PDB(kPacketizer,3) node->Print();
            file = GetNextUnAlloc(node);
            if (file == 0)
               slstat->SetFileNode(0);
         }

         // look for a file on any other node if necessary
         if (file == 0)
            file = GetNextUnAlloc();

         if (file != 0) {
            // files are done right away
            RemoveActive(file);

            slstat->fCurFile = file;
            TDSetElement *elem = file->GetElement();
            Long64_t entries = elem->GetEntries(kTRUE, kFALSE);
            if (entries < 0 || strlen(elem->GetTitle()) <= 0) {
               // This is decremented when we get the reply
               file->GetNode()->IncExtSlaveCnt(slstat->GetName());
               TMessage m(kPROOF_GETENTRIES);
               m << dset->IsTree()
               << TString(elem->GetFileName())
               << TString(elem->GetDirectory())
               << TString(elem->GetObjName());

               s->GetSocket()->Send( m );
               mon.Activate(s->GetSocket());
               PDB(kPacketizer,2)
                  Info("ValidateFiles",
                       "sent to worker-%s (%s) via %p GETENTRIES on %s %s %s %s",
                       s->GetOrdinal(), s->GetName(), s->GetSocket(),
                       dset->IsTree() ? "tree" : "objects", elem->GetFileName(),
                       elem->GetDirectory(), elem->GetObjName());
            } else {
               // Fill the info
               elem->SetTDSetOffset(entries);
               if (entries > 0) {
                  // Most likely valid
                  elem->SetValid();
                  if (!elem->GetEntryList()) {
                     if (elem->GetFirst() > entries) {
                        Error("ValidateFiles",
                              "first (%lld) higher then number of entries (%lld) in %s",
                               elem->GetFirst(), entries, elem->GetFileName());
                        // disable element
                        slstat->fCurFile->SetDone();
                        elem->Invalidate();
                        dset->SetBit(TDSet::kSomeInvalid);
                     }
                     if (elem->GetNum() == -1) {
                        elem->SetNum(entries - elem->GetFirst());
                     } else if (elem->GetFirst() + elem->GetNum() > entries) {
                        Warning("ValidateFiles", "num (%lld) + first (%lld) larger then number of"
                                 " keys/entries (%lld) in %s", elem->GetNum(), elem->GetFirst(),
                                 entries, elem->GetFileName());
                        elem->SetNum(entries - elem->GetFirst());
                     }
                     PDB(kPacketizer,2)
                        Info("ValidateFiles",
                             "found elem '%s' with %lld entries", elem->GetFileName(), entries);
                  }
               }
               // Count
               totent += entries;
               nopenf++;
               // Notify the client
               n++;
               gProof->SendDataSetStatus(msg, n, tot, st);

               // This worker is ready for the next validation
               workers.Add(s);
            }
         }
      }

      // Check if there is anything to wait for
      if (mon.GetActive() == 0) {
         if (byfile && maxent > 0) {
            // How many files do we still need ?
            Long64_t nrestf = (maxent - totent) * nopenf / totent ;
            if (nrestf <= 0 && maxent > totent) nrestf = 1;
            if (nrestf > 0) {
               PDB(kPacketizer,3)
                  Info("ValidateFiles", "{%lld, %lld, %lld}: needs to validate %lld more files",
                                         maxent, totent, nopenf, nrestf);
               si.Reset();
               while ((slm = (TSlave *) si.Next()) && nrestf--) {
                  workers.Add(slm);
               }
               continue;
            } else {
               PDB(kPacketizer,3)
                  Info("ValidateFiles", "no need to validate more files");
               break;
            }
         } else {
            break;
         }
      }

      PDB(kPacketizer,3) {
         Info("ValidateFiles", "waiting for %d slaves:", mon.GetActive());
         TList *act = mon.GetListOfActives();
         TIter next(act);
         while (TSocket *s = (TSocket*) next()) {
            TSlave *sl = (TSlave *) slaves_by_sock.GetValue(s);
            if (sl)
               Info("ValidateFiles", "   worker-%s (%s)",
                    sl->GetOrdinal(), sl->GetName());
         }
         delete act;
      }

      TSocket *sock = mon.Select();
      // If we have been interrupted break
      if (!sock) {
         Error("ValidateFiles", "selection has been interrupted - STOP");
         mon.DeActivateAll();
         fValid = kFALSE;
         break;
      }
      mon.DeActivate(sock);

      PDB(kPacketizer,3) Info("ValidateFiles", "select returned: %p", sock);

      TSlave *slave = (TSlave *) slaves_by_sock.GetValue( sock );
      if (!sock->IsValid()) {
         // A socket got invalid during validation
         Error("ValidateFiles", "worker-%s (%s) got invalid - STOP",
               slave->GetOrdinal(), slave->GetName());
         ((TProof*)gProof)->MarkBad(slave, "socket got invalid during validation");
         fValid = kFALSE;
         break;
      }

      TMessage *reply;

      if (sock->Recv(reply) <= 0) {
         // Notify
         Error("ValidateFiles", "Recv failed! for worker-%s (%s)",
                                slave->GetOrdinal(), slave->GetName());
         // Help! lost a slave? ('slave' is deleted inside here ...)
         ((TProof*)gProof)->MarkBad(slave, "receive failed during validation");
         fValid = kFALSE;
         continue;
      }

      if (reply->What() != kPROOF_GETENTRIES) {
         // Not what we want: handover processing to the central machinery
         Int_t what = reply->What();
         ((TProof*)gProof)->HandleInputMessage(slave, reply);
         if (what == kPROOF_FATAL) {
             Error("ValidateFiles", "kPROOF_FATAL from worker-%s (%s)",
                                    slave->GetOrdinal(), slave->GetName());
             fValid = kFALSE;
         } else {
            // Reactivate the socket
            mon.Activate(sock);
         }
         // Get next message
         continue;
      }

      TSlaveStat *slavestat = (TSlaveStat*) fSlaveStats->GetValue( slave );
      TDSetElement *e = slavestat->fCurFile->GetElement();
      slavestat->fCurFile->GetNode()->DecExtSlaveCnt(slavestat->GetName());
      Long64_t entries;

      (*reply) >> entries;

      // Extract object name, if there
      if ((reply->BufferSize() > reply->Length())) {
         TString objname;
         (*reply) >> objname;
         e->SetTitle(objname);
      }

      e->SetTDSetOffset(entries);
      if (entries > 0) {

         // This dataset element is most likely valid
         e->SetValid();

         if (!e->GetEntryList()) {
            if (e->GetFirst() > entries) {
               Error("ValidateFiles",
                     "first (%lld) higher then number of entries (%lld) in %s",
                      e->GetFirst(), entries, e->GetFileName());

               // Invalidate the element
               slavestat->fCurFile->SetDone();
               e->Invalidate();
               dset->SetBit(TDSet::kSomeInvalid);
            }

            if (e->GetNum() == -1) {
               e->SetNum(entries - e->GetFirst());
            } else if (e->GetFirst() + e->GetNum() > entries) {
               Error("ValidateFiles",
                     "num (%lld) + first (%lld) larger then number of keys/entries (%lld) in %s",
                      e->GetNum(), e->GetFirst(), entries, e->GetFileName());
               e->SetNum(entries - e->GetFirst());
            }
         }

         // Count
         totent += entries;
         nopenf++;

         // Notify the client
         n++;
         gProof->SendDataSetStatus(msg, n, tot, st);

      } else {

         Error("ValidateFiles", "cannot get entries for file: %s - skipping", e->GetFileName() );
         //
         // Need to fix this with a user option to allow incomplete file sets (rdm)
         //
         //fValid = kFALSE; // all element must be readable!
         if (gProofServ) {
            TMessage m(kPROOF_MESSAGE);
            m << TString(Form("Cannot get entries for file: %s - skipping",
                              e->GetFileName()));
            gProofServ->GetSocket()->Send(m);
         }

         // invalidate element
         e->Invalidate();
         dset->SetBit(TDSet::kSomeInvalid);
      }
      PDB(kPacketizer,3) Info("ValidateFiles", " %lld events validated", totent);

      // Ready for the next job, unless we have enough files
      if (maxent < 0 || ((totent < maxent) && !byfile))
         workers.Add(slave);
   }

   // report std. output from slaves??

   ((TProof*)gProof)->ActivateAsyncInput();

   // This needs to be reset
   ((TProof*)gProof)->fCurrentMonitor = 0;

   // No reason to continue if invalid
   if (!fValid)
      return;

   // compute the offset for each file element
   Long64_t offset = 0;
   Long64_t newOffset = 0;
   TIter next(dset->GetListOfElements());
   TDSetElement *el;
   while ( (el = dynamic_cast<TDSetElement*> (next())) ) {
      if (el->GetValid()) {
         newOffset = offset + el->GetTDSetOffset();
         el->SetTDSetOffset(offset);
         offset = newOffset;
      }
   }
}

//______________________________________________________________________________
Int_t TPacketizerAdaptive::CalculatePacketSize(TObject *slStatPtr, Long64_t cachesz, Int_t learnent)
{
   // The result depends on the fStrategy

   Long64_t num;
   if (fStrategy == 0) {
      // TPacketizer's heuristic for starting packet size
      // Constant packet size;
      Int_t nslaves = fSlaveStats->GetSize();
      if (nslaves > 0) {
         num = fTotalEntries / (fPacketAsAFraction * nslaves);
      } else {
         num = 1;
      }
   } else {
      // The dynamic heuristic for setting the packet size (default)
      // Calculates the packet size based on performance of this slave
      // and estimated time left until the end of the query.
      TSlaveStat* slstat = (TSlaveStat*)slStatPtr;
      Float_t rate = slstat->GetCurRate();
      if (!rate)
         rate = slstat->GetAvgRate();
      if (rate) {

         // Global average rate
         Float_t avgProcRate = (GetEntriesProcessed()/(GetCumProcTime() / fSlaveStats->GetSize()));
         Float_t packetTime = ((fTotalEntries - GetEntriesProcessed())/avgProcRate)/fPacketAsAFraction;

         // Bytes-to-Event conversion
         Float_t bevt = (GetEntriesProcessed() > 0) ? GetBytesRead() / GetEntriesProcessed() : -1.;

         // Make sure it is not smaller then the cache, if the info is available and the size
         // synchronization is required. But apply the cache-packet size synchronization only if there
         // are enough left files to process and the files are all of similar sizes. Otherwise we risk
         // to not exploit optimally all potentially active workers.
         Bool_t cpsync = fCachePacketSync;
         if (fMaxEntriesRatio > 0. && cpsync) {
            if (fFilesToProcess && fFilesToProcess->GetSize() <= fSlaveStats->GetSize()) {
               Long64_t remEntries = fTotalEntries - GetEntriesProcessed();
               Long64_t maxEntries = -1;
               if (fFilesToProcess->Last()) {
                  TDSetElement *elem = (TDSetElement *) ((TPacketizerAdaptive::TFileStat *) fFilesToProcess->Last())->GetElement();
                  if (elem) maxEntries = elem->GetNum();
               }
               if (maxEntries > remEntries / fSlaveStats->GetSize() * fMaxEntriesRatio) {
                  PDB(kPacketizer,3) {
                     Info("CalculatePacketSize", "%s: switching off synchronization of packet and cache sizes:", slstat->GetOrdinal());
                     Info("CalculatePacketSize", "%s: few files (%d) remaining of very different sizes (max/avg = %.2f > %.2f)",
                                                 slstat->GetOrdinal(), fFilesToProcess->GetSize(),
                                                (Double_t)maxEntries / remEntries * fSlaveStats->GetSize(), fMaxEntriesRatio);
                  }
                  cpsync = kFALSE;
               }
            }
         }
         if (bevt > 0. && cachesz > 0 && cpsync) {
            if ((Long64_t)(rate * packetTime * bevt) < cachesz)
               packetTime = cachesz / bevt / rate;
         }

         // Apply min-max again, if required
         if (fMaxPacketTime > 0. && packetTime > fMaxPacketTime) packetTime = fMaxPacketTime;
         if (fMinPacketTime > 0. && packetTime < fMinPacketTime) packetTime = fMinPacketTime;

         // Translate the packet length in number of entries
         num = (Long64_t)(rate * packetTime);

         // Notify
         PDB(kPacketizer,2)
            Info("CalculatePacketSize","%s: avgr: %f, rate: %f, left: %lld, pacT: %f, sz: %f (csz: %f), num: %lld",
                 slstat->GetOrdinal(), avgProcRate, rate, fTotalEntries - GetEntriesProcessed(),
                 packetTime, ((bevt > 0) ? num*bevt/1048576. : -1.), cachesz/1048576., num);

      } else {
         // First packet for this worker in this query
         // Twice the learning phase
         num = (learnent > 0) ? 5 * learnent : 1000;

         // Notify
         PDB(kPacketizer,2)
            Info("CalculatePacketSize","%s: num: %lld", slstat->GetOrdinal(),  num);
      }
   }
   if (num < 1) num = 1;
   return num;
}

//______________________________________________________________________________
Int_t TPacketizerAdaptive::AddProcessed(TSlave *sl,
                                        TProofProgressStatus *status,
                                        Double_t latency,
                                        TList **listOfMissingFiles)
{
   // To be used by GetNextPacket but also in reaction to kPROOF_STOPPROCESS
   // message (when the worker was asked to stop processing during a packet).
   // returns the #entries intended in the last packet - #processed entries

   // find slave
   TSlaveStat *slstat = (TSlaveStat*) fSlaveStats->GetValue( sl );
   if (!slstat) {
      Error("AddProcessed", "%s: TSlaveStat instance for worker %s not found!",
                            (sl ? sl->GetOrdinal() : "x.x"),
                            (sl ? sl->GetName() : "**undef**"));
      return -1;
   }

   // update stats & free old element

   if ( slstat->fCurElem != 0 ) {
      Long64_t expectedNumEv = slstat->fCurElem->GetNum();
      // Calculate the number of events processed in the last packet
      Long64_t numev;
      if (status && status->GetEntries() > 0)
         numev = status->GetEntries() - slstat->GetEntriesProcessed();
      else
         numev = 0;

      // Calculate the progress made in the last packet
      TProofProgressStatus *progress = 0;
      if (numev > 0) {
         // This also moves the pointer in the corrsponding TFileInfo
         progress = slstat->AddProcessed(status);
         if (progress) {
            (*fProgressStatus) += *progress;
            // update processing rate
            slstat->UpdateRates(status);
         }
      } else {
          progress = new TProofProgressStatus();
      }
      if (progress) {
         PDB(kPacketizer,2)
            Info("AddProcessed", "%s: %s: %lld %7.3lf %7.3lf %7.3lf %lld",
               sl->GetOrdinal(), sl->GetName(), progress->GetEntries(), latency,
               progress->GetProcTime(), progress->GetCPUTime(), progress->GetBytesRead());

         if (gPerfStats)
            gPerfStats->PacketEvent(sl->GetOrdinal(), sl->GetName(),
                                    slstat->fCurElem->GetFileName(),
                                    progress->GetEntries(),
                                    latency,
                                    progress->GetProcTime(),
                                    progress->GetCPUTime(),
                                    progress->GetBytesRead());
         delete progress;
      }
      if (numev != expectedNumEv) {
         // The last packet was not fully processed
         // and will be split in two:
         // - The completed part was marked as done.
         // - Create a new packet with the part to be resubmitted.
         TDSetElement *newPacket = new TDSetElement(*(slstat->fCurElem));
         if (newPacket && numev < expectedNumEv) {
            Long64_t first = newPacket->GetFirst();
            newPacket->SetFirst(first + numev);
            if (ReassignPacket(newPacket, listOfMissingFiles) == -1)
               SafeDelete(newPacket);
         } else
            Error("AddProcessed", "%s: processed too much? (%lld, %lld)",
                                  sl->GetOrdinal(), numev, expectedNumEv);

         // TODO: a signal handler which will send info from the worker
         // after a packet fails.
         /* Add it to the failed packets list.
         if (!fFailedPackets) {
            fFailedPackets = new TList();
         }
         fFailedPackets->Add(slstat->fCurElem);
         */
      }

      slstat->fCurElem = 0;
      return (expectedNumEv - numev);
   } else {
      // the kPROOF_STOPPRPOCESS message is send after the worker receives zero
      // as the reply to kPROOF_GETNEXTPACKET
      return -1;
   }
}

//______________________________________________________________________________
TDSetElement *TPacketizerAdaptive::GetNextPacket(TSlave *sl, TMessage *r)
{
   // Get next packet;
   // A meaningfull difference to TPacketizer is the fact that this
   // packetizer, for each worker, tries to predict whether the worker
   // will finish processing it's local files before the end of the query.
   // If yes, it allocates, to those workers, files from non-slave filenodes
   // or from slaves that are overloaded. The check is done every time a new
   // file needs to be assigned.

   if ( !fValid ) {
      return 0;
   }

   // find slave

   TSlaveStat *slstat = (TSlaveStat*) fSlaveStats->GetValue( sl );
   if (!slstat) {
      Error("GetNextPacket", "TSlaveStat instance for worker %s not found!",
                            (sl ? sl->GetName() : "**undef**"));
      return 0;
   }

   // Attach to current file
   TFileStat *file = slstat->fCurFile;

   // Update stats & free old element

   Bool_t firstPacket = kFALSE;
   Long64_t cachesz = -1;
   Int_t learnent = -1;
   if ( slstat->fCurElem != 0 ) {

      Long64_t restEntries = 0;
      Double_t latency, proctime, proccpu;
      TProofProgressStatus *status = 0;
      Bool_t fileNotOpen = kFALSE, fileCorrupted = kFALSE;

      if (sl->GetProtocol() > 18) {

         (*r) >> latency;
         (*r) >> status;

         if (sl->GetProtocol() > 25) {
            (*r) >> cachesz >> learnent;
            if (r->BufferSize() > r->Length()) (*r) >> restEntries;
         }
         fileNotOpen = status->TestBit(TProofProgressStatus::kFileNotOpen) ? kTRUE : kFALSE;
         fileCorrupted = status->TestBit(TProofProgressStatus::kFileCorrupted) ? kTRUE : kFALSE;

      } else {

         Long64_t bytesRead = -1;

         (*r) >> latency >> proctime >> proccpu;
         // only read new info if available
         if (r->BufferSize() > r->Length()) (*r) >> bytesRead;
         if (r->BufferSize() > r->Length()) (*r) >> restEntries;
         Long64_t totev = 0;
         if (r->BufferSize() > r->Length()) (*r) >> totev;

         status = new TProofProgressStatus(totev, bytesRead, -1, proctime, proccpu);
         fileNotOpen = (restEntries < 0) ? kTRUE : kFALSE;
      }

      if (!fileNotOpen && !fileCorrupted) {
         if (AddProcessed(sl, status, latency) != 0)
            Error("GetNextPacket", "%s: the worker processed a different # of entries", sl->GetOrdinal());
         if (fProgressStatus->GetEntries() >= fTotalEntries) {
            if (fProgressStatus->GetEntries() > fTotalEntries)
               Error("GetNextPacket", "%s: processed too many entries! (%lld, %lld)",
                                      sl->GetOrdinal(), fProgressStatus->GetEntries(), fTotalEntries);
            // Send last timer message and stop the timer
            HandleTimer(0);
            SafeDelete(fProgress);
         }
      } else {
         if (file) {
            if (file->GetElement()) {
               if (fileCorrupted) {
                  Info("GetNextPacket", "%s: file '%s' turned corrupted: invalidating file (%lld)",
                                       sl->GetOrdinal(), file->GetElement()->GetName(), restEntries);
                  Int_t nunproc = AddProcessed(sl, status, latency);
                  PDB(kPacketizer,1)
                     Info("GetNextPacket", "%s: %d entries un-processed", sl->GetOrdinal(), nunproc);
                  // Remaining to be processed
                  Long64_t num = 0;
                  if (file->GetElement()->TestBit(TDSetElement::kCorrupted)) {
                     // Add the remainign entries in the packet to the ones already registered
                     num = file->GetElement()->GetEntries() + restEntries;
                  } else {
                     // First call: add the remaining entries in the packet and those of the file
                     // not yet assigned
                     Long64_t rest = file->GetElement()->GetEntries() - file->GetNextEntry();
                     num = restEntries + rest;
                  }
                  file->GetElement()->SetEntries(num);
                  PDB(kPacketizer,1)
                     Info("GetNextPacket", "%s: removed file: %s, entries left: %lld", sl->GetOrdinal(),
                                           file->GetElement()->GetName(), file->GetElement()->GetEntries());
                  // Flag as corrupted
                  file->GetElement()->SetBit(TDSetElement::kCorrupted);
               } else {
                  Info("GetNextPacket", "%s: file '%s' could not be open: invalidating related element",
                                        sl->GetOrdinal(), file->GetElement()->GetName());
               }
               // Invalidate the element
               file->GetElement()->Invalidate();
               // Add it to the failed packets list
               if (!fFailedPackets) fFailedPackets = new TList();
               if (!fFailedPackets->FindObject(file->GetElement()))
                  fFailedPackets->Add(file->GetElement());
            }
            // Deactivate this TFileStat
            file->SetDone();
            RemoveActive(file);
         } else {
            Info("GetNextPacket", "%s: error raised by worker, but TFileStat object invalid:"
                                  " protocol error?", sl->GetOrdinal());
         }
      }
   } else {
      firstPacket = kTRUE;
   }

   if ( fStop ) {
      HandleTimer(0);
      return 0;
   }

   TString nodeName;
   if (file != 0) nodeName = file->GetNode()->GetName();
   TString nodeHostName(slstat->GetName());

   PDB(kPacketizer,3)
      Info("GetNextPacket", "%s: entries processed: %lld - looking for a packet from node '%s'",
                            sl->GetOrdinal(), fProgressStatus->GetEntries(), nodeName.Data());

   // If current file is just finished
   if ( file != 0 && file->IsDone() ) {
      file->GetNode()->DecExtSlaveCnt(slstat->GetName());
      file->GetNode()->DecRunSlaveCnt();
      if (gPerfStats)
         gPerfStats->FileEvent(sl->GetOrdinal(), sl->GetName(), file->GetNode()->GetName(),
                               file->GetElement()->GetFileName(), kFALSE);
      file = 0;
   }
   // Reset the current file field
   slstat->fCurFile = file;

   Long64_t avgEventsLeftPerSlave =
      (fTotalEntries - fProgressStatus->GetEntries()) / fSlaveStats->GetSize();
   if (fTotalEntries == fProgressStatus->GetEntries())
      return 0;
   // Get a file if needed
   if ( file == 0) {
      // Needs a new file
      Bool_t openLocal;
      // Aiming for localPreference == 1 when #local == #remote events left
      Float_t localPreference = fBaseLocalPreference - (fNEventsOnRemLoc /
                                (0.4 *(fTotalEntries - fProgressStatus->GetEntries())));
      if ( slstat->GetFileNode() != 0 ) {
         // Local file node exists and has more events to process.
         fUnAllocated->Sort();
         TFileNode* firstNonLocalNode = (TFileNode*)fUnAllocated->First();
         Bool_t nonLocalNodePossible;
         if (fForceLocal)
            nonLocalNodePossible = 0;
         else
            nonLocalNodePossible = firstNonLocalNode ?
                    (fMaxSlaveCnt < 0 || (fMaxSlaveCnt > 0 && firstNonLocalNode->GetExtSlaveCnt() < fMaxSlaveCnt))
                                                     : 0;
         openLocal = !nonLocalNodePossible;
         Float_t slaveRate = slstat->GetAvgRate();
         if ( nonLocalNodePossible && fStrategy == 1) {
            // OpenLocal is set to kFALSE
            if ( slstat->GetFileNode()->GetRunSlaveCnt() >
                 slstat->GetFileNode()->GetMySlaveCnt() - 1 )
                // External slaves help slstat -> don't open nonlocal files
                // -1 because, at this point slstat is not running
                  openLocal = kTRUE;
            else if ( slaveRate == 0 ) { // first file for this slave
               // GetLocalEventsLeft() counts the potential slave
               // as running on its fileNode.
               if ( slstat->GetLocalEventsLeft() * localPreference
                   > (avgEventsLeftPerSlave))
                  openLocal = kTRUE;
               else if ( (firstNonLocalNode->GetEventsLeftPerSlave())
                     < slstat->GetLocalEventsLeft() * localPreference )
                  openLocal = kTRUE;
               else if ( firstNonLocalNode->GetExtSlaveCnt() > 1 )
                  openLocal = kTRUE;
               else if ( firstNonLocalNode->GetRunSlaveCnt() == 0 )
                  openLocal = kTRUE;
            } else {
               // At this point slstat has a non zero avg rate > 0
               Float_t slaveTime = slstat->GetLocalEventsLeft()/slaveRate;
               // And thus fCumProcTime, fProcessed > 0
               Float_t avgTime = avgEventsLeftPerSlave
                                 /(fProgressStatus->GetEntries()/GetCumProcTime());
               if (slaveTime * localPreference > avgTime)
                  openLocal = kTRUE;
               else if ((firstNonLocalNode->GetEventsLeftPerSlave())
                        < slstat->GetLocalEventsLeft() * localPreference)
                  openLocal = kTRUE;
            }
         }
         if (openLocal || fStrategy == 0) {
            // Try its own node
            file = slstat->GetFileNode()->GetNextUnAlloc();
            if (!file)
               file = slstat->GetFileNode()->GetNextActive();
            if ( file == 0 ) {
               // No more files on this worker
               slstat->SetFileNode(0);
            }
         }
      }

      // Try to find an unused filenode first
      if(file == 0 && !fForceLocal)
         file = GetNextUnAlloc(0, nodeHostName);

      // Then look at the active filenodes
      if(file == 0 && !fForceLocal)
         file = GetNextActive();

      if (file == 0) return 0;

      PDB(kPacketizer,3) if (fFilesToProcess) fFilesToProcess->Print();

      slstat->fCurFile = file;
      // if remote and unallocated file
      if (file->GetNode()->GetMySlaveCnt() == 0 &&
         file->GetElement()->GetFirst() == file->GetNextEntry()) {
         fNEventsOnRemLoc -= file->GetElement()->GetNum();
         if (fNEventsOnRemLoc < 0) {
            Error("GetNextPacket",
                  "inconsistent value for fNEventsOnRemLoc (%lld): stop delivering packets!",
                   fNEventsOnRemLoc);
            return 0;
         }
      }
      file->GetNode()->IncExtSlaveCnt(slstat->GetName());
      file->GetNode()->IncRunSlaveCnt();
      if (gPerfStats)
         gPerfStats->FileEvent(sl->GetOrdinal(), sl->GetName(),
                               file->GetNode()->GetName(),
                               file->GetElement()->GetFileName(), kTRUE);
   }

   Long64_t num = CalculatePacketSize(slstat, cachesz, learnent);

   // Get a packet

   TDSetElement *base = file->GetElement();
   Long64_t first = file->GetNextEntry();
   Long64_t last = base->GetFirst() + base->GetNum();

   // If the remaining part is smaller than the (packetsize * 1.5)
   // then increase the packetsize

   if ( first + num * 1.5 >= last ) {
      num = last - first;
      file->SetDone(); // done
      // Delete file from active list (unalloc list is single pass, no delete needed)
      RemoveActive(file);
   }

   // Update NextEntry in the file object
   file->MoveNextEntry(num);

   slstat->fCurElem = CreateNewPacket(base, first, num);
   if (base->GetEntryList())
      slstat->fCurElem->SetEntryList(base->GetEntryList(), first, num);

   // Flag the first packet of a new run (dataset)
   if (firstPacket)
      slstat->fCurElem->SetBit(TDSetElement::kNewRun);
   else
      slstat->fCurElem->ResetBit(TDSetElement::kNewRun);

   PDB(kPacketizer,2)
      Info("GetNextPacket","%s: %s %lld %lld (%lld)", sl->GetOrdinal(), base->GetFileName(), first, first + num - 1, num);

   return slstat->fCurElem;
}

//______________________________________________________________________________
Int_t TPacketizerAdaptive::GetActiveWorkers()
{
   // Return the number of workers still processing

   Int_t actw = 0;
   TIter nxw(fSlaveStats);
   TObject *key;
   while ((key = nxw())) {
      TSlaveStat *wrkstat = (TSlaveStat *) fSlaveStats->GetValue(key);
      if (wrkstat && wrkstat->fCurFile) actw++;
   }
   // Done
   return actw;
}

//______________________________________________________________________________
Float_t TPacketizerAdaptive::GetCurrentRate(Bool_t &all)
{
   // Get Estimation of the current rate; just summing the current rates of
   // the active workers

   all = kTRUE;
   // Loop over the workers
   Float_t currate = 0.;
   if (fSlaveStats && fSlaveStats->GetSize() > 0) {
      TIter nxw(fSlaveStats);
      TObject *key;
      while ((key = nxw()) != 0) {
         TSlaveStat *slstat = (TSlaveStat *) fSlaveStats->GetValue(key);
         if (slstat && slstat->GetProgressStatus() && slstat->GetEntriesProcessed() > 0) {
            // Sum-up the current rates
            currate += slstat->GetProgressStatus()->GetCurrentRate();
         } else {
            all = kFALSE;
         }
      }
   }
   // Done
   return currate;
}

//______________________________________________________________________________
Int_t TPacketizerAdaptive::GetEstEntriesProcessed(Float_t t, Long64_t &ent,
                                                  Long64_t &bytes, Long64_t &calls)
{
   // Get estimation for the number of processed entries and bytes read at time t,
   // based on the numbers already processed and the latests worker measured speeds.
   // If t <= 0 the current time is used.
   // Only the estimation for the entries is currently implemented.
   // This is needed to smooth the instantaneous rate plot.

   // Default value
   ent = GetEntriesProcessed();
   bytes = GetBytesRead();
   calls = GetReadCalls();

   // Parse option
   if (fUseEstOpt == kEstOff)
      // Do not use estimation
      return 0;
   Bool_t current = (fUseEstOpt == kEstCurrent) ? kTRUE : kFALSE;

   TTime tnow = gSystem->Now();
   Double_t now = (t > 0) ? (Double_t)t : Long64_t(tnow) / (Double_t)1000.;
   Double_t dt = -1;

   // Loop over the workers
   Bool_t all = kTRUE;
   Float_t trate = 0.;
   if (fSlaveStats && fSlaveStats->GetSize() > 0) {
      ent = 0;
      TIter nxw(fSlaveStats);
      TObject *key;
      while ((key = nxw()) != 0) {
         TSlaveStat *slstat = (TSlaveStat *) fSlaveStats->GetValue(key);
         if (slstat) {
            // Those surely processed
            Long64_t e = slstat->GetEntriesProcessed();
            if (e <= 0) all = kFALSE;
            // Time elapsed since last update
            dt = now - slstat->GetProgressStatus()->GetLastUpdate();
            // Add estimated entries processed since last update
            Float_t rate = (current && slstat->GetCurRate() > 0) ? slstat->GetCurRate()
                                                                 : slstat->GetAvgRate();
            trate += rate;
            // Add estimated entries processed since last update
            e += (Long64_t) (dt * rate);
            // Add to the total
            ent += e;
            // Notify
            PDB(kPacketizer,3)
               Info("GetEstEntriesProcessed","%s: e:%lld rate:%f dt:%f e:%lld",
                                          slstat->fSlave->GetOrdinal(),
                                          slstat->GetEntriesProcessed(), rate, dt, e);
         }
      }
   }
   // Notify
   dt = now - fProgressStatus->GetLastUpdate();
   PDB(kPacketizer,2)
      Info("GetEstEntriesProcessed",
           "dt: %f, estimated entries: %lld (%lld), bytes read: %lld rate: %f (all: %d)",
                               dt, ent, GetEntriesProcessed(), bytes, trate, all);

   // Check values
   ent = (ent > 0) ? ent : fProgressStatus->GetEntries();
   ent = (ent <= fTotalEntries) ? ent : fTotalEntries;
   bytes = (bytes > 0) ? bytes : fProgressStatus->GetBytesRead();

   // Done
   return ((all) ? 0 : 1);
}

//______________________________________________________________________________
void TPacketizerAdaptive::MarkBad(TSlave *s, TProofProgressStatus *status,
                                  TList **listOfMissingFiles)
{
   // This method can be called at any time during processing
   // as an effect of handling kPROOF_STOPPROCESS
   // If the output list from this worker is going to be sent back to the master,
   // the 'status' includes the number of entries processed by the slave.
   // From this we calculate the remaining part of the packet.
   // 0 indicates that the results from that worker were lost completely.
   // Assume that the filenodes for which we have a TFileNode object
   // are still up and running.

   TSlaveStat *slaveStat = (TSlaveStat *)(fSlaveStats->GetValue(s));
   if (!slaveStat) {
      Error("MarkBad", "Worker does not exist");
      return;
   }
   // Update worker counters
   if (slaveStat->fCurFile && slaveStat->fCurFile->GetNode()) {
      slaveStat->fCurFile->GetNode()->DecExtSlaveCnt(slaveStat->GetName());
      slaveStat->fCurFile->GetNode()->DecRunSlaveCnt();
   }

   // If status is defined, the remaining part of the last packet is
   // reassigned in AddProcessed called from handling kPROOF_STOPPROCESS
   if (!status) {
      // Get the subset processed by the bad worker.
      TList *subSet = slaveStat->GetProcessedSubSet();
      if (subSet) {
         // Take care of the current packet
         if (slaveStat->fCurElem) {
            subSet->Add(slaveStat->fCurElem);
         }
         // Merge overlapping or subsequent elements
         Int_t nmg = 0, ntries = 100;
         TDSetElement *e = 0, *enxt = 0;
         do {
            nmg = 0;
            e = (TDSetElement *) subSet->First();
            while ((enxt = (TDSetElement *) subSet->After(e))) {
               if (e->MergeElement(enxt) >= 0) {
                  nmg++;
                  subSet->Remove(enxt);
                  delete enxt;
               } else {
                  e = enxt;
               }
            }
         } while (nmg > 0 && --ntries > 0);
         // reassign the packets assigned to the bad slave and save the size;
         SplitPerHost(subSet, listOfMissingFiles);
         // the elements were reassigned so should not be deleted
         subSet->SetOwner(0);
      } else {
         Warning("MarkBad", "subset processed by bad worker not found!");
      }
      (*fProgressStatus) -= *(slaveStat->GetProgressStatus());
   }
   // remove slavestat from the map
   fSlaveStats->Remove(s);
   delete slaveStat;
   // recalculate fNEventsOnRemLoc and others
   InitStats();
}

//______________________________________________________________________________
Int_t TPacketizerAdaptive::ReassignPacket(TDSetElement *e,
                                          TList **listOfMissingFiles)
{
   // The file in the listOfMissingFiles can appear several times;
   // in order to fix that, a TDSetElement::Merge method is needed.

   if (!e) {
      Error("ReassignPacket", "empty packet!");
      return -1;
   }
   // Check the old filenode
   TUrl url = e->GetFileName();
   // Check the host from which 'e' was previously read.
   // Map non URL filenames to dummy host
   TString host;
   if ( !url.IsValid() ||
       (strncmp(url.GetProtocol(),"root", 4) &&
        strncmp(url.GetProtocol(),"rfio", 4))) {
      host = "no-host";
   } else {
      host = url.GetHost();
   }

   // If accessible add it back to the old node
   // and do DecProcessed
   TFileNode *node = (TFileNode*) fFileNodes->FindObject( host );
   if (node && fTryReassign) {
      // The packet 'e' was processing data from this node.
      node->DecreaseProcessed(e->GetNum());
      // The file should be already in fFilesToProcess ...
      node->Add(e, kFALSE);
      if (!fUnAllocated->FindObject(node))
         fUnAllocated->Add(node);
      return 0;
   } else {
      // Add to the list of missing files
      TFileInfo *fi = e->GetFileInfo();
      if (listOfMissingFiles && *listOfMissingFiles)
         (*listOfMissingFiles)->Add((TObject *)fi);
      return -1;
   }
}

//______________________________________________________________________________
void TPacketizerAdaptive::SplitPerHost(TList *elements,
                                       TList **listOfMissingFiles)
{
   // Split into per host entries
   // The files in the listOfMissingFiles can appear several times;
   // in order to fix that, a TDSetElement::Merge method is needed.

   if (!elements) {
      Error("SplitPerHost", "Empty list of packets!");
      return;
   }
   if (elements->GetSize() <= 0) {
      Error("SplitPerHost", "The input list contains no elements");
      return;
   }
   TIter subSetIter(elements);
   TDSetElement *e;
   while ((e = (TDSetElement*) subSetIter.Next())) {
      if (ReassignPacket(e, listOfMissingFiles) == -1) {
         // Remove from the list in order to delete it.
         if (elements->Remove(e))
            Error("SplitPerHost", "Error removing a missing file");
         delete e;
      }

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