diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCellGroup.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCellGroup.h new file mode 100644 index 0000000000000000000000000000000000000000..e18f5262a8f835f84f00b63fa86e37fbeb15e978 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCellGroup.h @@ -0,0 +1,81 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOCELLGROUP_H +#define CALOCELLGROUP_H +#include "GaudiKernel/MsgStream.h" +#include "CaloIdentifier/CaloCell_ID.h" +#include <bitset> + +class CaloCellGroup { + + public: + CaloCellGroup(); + + //Format: + //[EMEC,EMB/A/Layer/Region/Eta/Phi] value1, value2, ... + bool setDefinition(const CaloCell_ID* caloCellId, const std::string& definition, MsgStream& logStr); + bool inGroup(const Identifier id) const; + const std::vector<float>& getValue() const {return m_values;} + + void printDef() const; + + + private: + void complain(MsgStream&,std::string) const; + + enum Fields { + LAYER, + REGION, + ETA, + PHI, + NFIELDS + }; + + /* + enum Calo { + EMB=0, + EMEC, + HEC, + FCAL + }; + + //Group defintion: + std::bitset<4> m_subCalos; + //std::bitset<CaloCell_ID:SUBCALO> m_subCalos; + */ + + + bool m_pos,m_neg; + bool m_emb,m_emecow,m_emeciw,m_hec,m_fcal; + std::vector<std::pair<int,int> > m_fieldBoundaries; + std::vector<float> m_values; + + const CaloCell_ID *m_caloCellId; + +}; + +class CaloCellGroupList { + public: + CaloCellGroupList():m_initialized(false) {}; + + //Convention: First element of vector has default values, following elements as defined above + bool setDefinition(const CaloCell_ID* caloCellId, const std::vector<std::string>& definitions, MsgStream& logStr); + + void dump(const CaloCell_ID* caloCellId); // for debugging + + void printDef() const; + + const std::vector<float>& valuesForCell(const Identifier id); + + const std::vector<float>& getDefaults() const {return m_defaults; } + + private: + std::vector<CaloCellGroup> m_groups; + std::vector<float> m_defaults; + bool m_initialized; +}; + + +#endif diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_Base_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_Base_ID.h new file mode 100644 index 0000000000000000000000000000000000000000..0b5331ccacf7d4df26d22c8bea449843030f385c --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_Base_ID.h @@ -0,0 +1,402 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/CaloCell_Base_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2012 + * @brief Helper base class for offline cell identifiers + */ + + +#ifndef CALOIDENTIFIER_CALOCELL_BASE_ID_H +#define CALOIDENTIFIER_CALOCELL_BASE_ID_H + + +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "CaloIdentifier/CaloID.h" +#include "CaloIdentifier/LArNeighbours.h" +#include "CaloGeoHelpers/CaloSampling.h" + + +class CaloNeighbours; + + +/** + * @class CaloCell_Base_ID + * @brief Helper base class for offline cell identifiers + * + * This class provides an interface to generate offline identifiers + * for the full calorimeter (LAr + Tile). <br> + * It factors out code common to both + * @c CaloCell_ID and @c CaloCell_SuperCell_ID. + * + */ +class CaloCell_Base_ID : public AtlasDetectorID, public CaloSampling +{ +public: + typedef Identifier::size_type size_type ; + + /** enumeration of sub calorimeters*/ + enum SUBCALO { LAREM = 0, LARHEC = 1, LARFCAL = 2, TILE = 3, LARMINIFCAL = 4, NSUBCALO = 5, NOT_VALID=CaloIDHelper::NOT_VALID /*999999*/ }; + + /** enumeration of samplings (i.e.layers) separately for various sub calorimeters */ + //typedef CaloSampling::CaloSample CaloSample; + // enum CaloSample { + // PreSamplerB=0, EMB1, EMB2, EMB3, // LAr barrel + // PreSamplerE, EME1, EME2, EME3, // LAr EM endcap + // HEC0, HEC1, HEC2, HEC3, // Hadronic end cap cal. + // TileBar0, TileBar1, TileBar2, // Tile barrel + // TileGap1, TileGap2, TileGap3, // Tile gap (ITC & scint) + // TileExt0, TileExt1, TileExt2, // Tile extended barrel + // FCAL0, FCAL1, FCAL2, // Forward EM endcap + // MINIFCAL0, MINIFCAL1, MINIFCAL2, MINIFCAL3, // MiniFCAL + // Unknown + // }; + + + /** Constructor */ + CaloCell_Base_ID(const LArEM_Base_ID* em_id, + const LArHEC_Base_ID* hec_id, + const LArFCAL_Base_ID* fcal_id, + const LArMiniFCAL_ID* minifcal_id, + const Tile_Base_ID* tile_id, + bool supercell); + + ~CaloCell_Base_ID(); + + + int GetSubCaloName( const std::string SubCaloName ) const; + + bool do_checks(void) const; + + void set_do_checks(bool do_checks) const; + + /// Initialization from the identifier dictionary + virtual int initialize_from_dictionary(const IdDictMgr& dict_mgr); + + /** Make a region ID from constituting fields and subCalo index; + for (Mini)FCAL and Tiles, the last argument is not used + for Tiles, 'barec_or_posneg' corresponds to 'section', 'sampling_or_fcalmodule' corresponds to 'side' */ + Identifier region_id (const int subCalo, + const int barec_or_posneg, + const int sampling_or_fcalmodule, + const int region_or_dummy ) const; + + /** Make a cell (== channel) ID from constituting fields and subCalo index; + for (Mini)FCAL, 'region_or_dummy' argument is not used + for Tiles, 'barec_or_posneg' corresponds to 'section', 'sampling_or_fcalmodule' corresponds to 'side', 'region_or_dummy' corresponds to 'module', + 'eta' corresponds to 'tower' and 'phi' corresponds to 'sample' */ + Identifier cell_id (const int subCalo, + const int barec_or_posneg, + const int sampling_or_fcalmodule, + const int region_or_dummy, + const int eta, + const int phi ) const; + + /** Make a region ID from a cell ID */ + Identifier region_id (const Identifier cellId ) const; + + /** not available for Tile + depth is only used for miniFCAL */ + Identifier cell_id( const Identifier regionId, + const int eta, const int phi, + int depth = 0) const ; + + /** create region id from 'global'(==full calo) hash id*/ + Identifier region_id (const IdentifierHash caloRegionHash) const; + /** create region id from 'local'(==internal to sub calo) hash id and sub calorimeter */ + Identifier region_id (const int subCalo, const IdentifierHash subCaloRegionHash) const; + + /** create cell id from 'global' hash id*/ + Identifier cell_id (const IdentifierHash caloCellHash) const; + /** create cell id from 'local'(==internal to sub calo) hash id and sub calorimeter */ + Identifier cell_id (const int subCalo, const IdentifierHash subCaloCellHash) const; + + /** create hash id from 'global' region id*/ + IdentifierHash calo_region_hash (const Identifier regionId) const; + /** create hash id from 'global' region id + @return subCalo*/ + IdentifierHash subcalo_region_hash (const Identifier regionId, int& subCalo) const; // subCalo is an output argument + + /** create hash id from 'global' cell id */ + IdentifierHash calo_cell_hash (const Identifier cellId) const; + /** create hash id from 'global' cell id + @return subCalo*/ + IdentifierHash subcalo_cell_hash (const Identifier cellId, int& subCalo) const; // subCalo is an output argument + + /** cell 'global' hash table max size */ + size_type calo_cell_hash_max (void) const; + /** cell 'global' region table max size */ + size_type calo_region_hash_max (void) const; + + /** to loop on 'global' cell hashes of one sub-calorimeter alone + @param id + @return caloCellMin, CaloCellMax*/ + void calo_cell_hash_range (const Identifier id, IdentifierHash& caloCellMin, IdentifierHash& caloCellMax) const; + /** to loop on 'global' cell hashes of one sub-calorimeter alone + @param subCalo + @return caloCellMin, CaloCellMax*/ + void calo_cell_hash_range (const int subCalo, IdentifierHash& caloCellMin, IdentifierHash& caloCellMax) const; + /** to loop on 'global' region hashes of one sub-calorimeter alone + @param id + @return caloCellMin, CaloCellMax*/ + void calo_reg_hash_range (const Identifier id, IdentifierHash& caloCellMin, IdentifierHash& caloCellMax) const; + /** to loop on 'global' region hashes of one sub-calorimeter alone + @param subCalo + @return caloCellMin, CaloCellMax*/ + void calo_reg_hash_range (const int subCalo, IdentifierHash& caloCellMin, IdentifierHash& caloCellMax) const; + + /** to translate a cell 'global' caloHash into a subCaloHash @return subCalo */ + IdentifierHash subcalo_cell_hash (const IdentifierHash caloHash, int& subCalo) const; + /** to translate a region 'global' caloHash into a subCaloHash @return subCalo */ + IdentifierHash subcalo_region_hash (const IdentifierHash caloHash, int& subCalo) const; + + /** to translate a cell subCaloHash with its subCalo index into a 'global' caloHash @param subCalo, subCaloHash */ + IdentifierHash calo_cell_hash (const int subCalo, const IdentifierHash subCaloHash) const; + /** to translate a region subCaloHash with its subCalo index into a 'global' caloHash @param subCalo, subCaloHash */ + IdentifierHash calo_region_hash (const int subCalo, const IdentifierHash subCaloHash) const; + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + /** begin iterator over full set of Identifiers (LAr + Tiles) */ + id_iterator cell_begin (void) const; + /** end iterator over full set of Identifiers (LAr + Tiles) */ + id_iterator cell_end (void) const; + /** Range over full set of Identifiers (LAr + Tiles) */ + id_range cell_range (void) const; + + /** begin iterator over subCalo sets of cell Identifiers @param subCalo */ + id_iterator cell_begin (const int subCalo) const; + /** end iterator over subCalo sets of cell Identifiers @param subCalo */ + id_iterator cell_end (const int subCalo) const; + /** Range over subCalo sets of cell Identifiers @param subCalo */ + id_range cell_range (const int subCalo) const; + + /** begin iterator over set of region Identifiers (LAr + Tiles) */ + id_iterator reg_begin (void) const; + /** end iterator over set of region Identifiers (LAr + Tiles) */ + id_iterator reg_end (void) const; + /** Range over set of region Identifiers (LAr + Tiles) */ + id_range reg_range (void) const; + + /** begin iterator over subCalo sets of region Identifiers @param subCalo */ + id_iterator reg_begin (const int subCalo) const; + /** end iterator over subCalo sets of region Identifiers @param subCalo */ + id_iterator reg_end (const int subCalo) const; + /** Range over subCalo sets of region Identifiers @param subCalo */ + id_range reg_range (const int subCalo) const; + + /** test if the id belongs to LArEM */ + bool is_em (const Identifier id) const; + /** test if the hash id belongs to LArEM */ + bool is_em (const IdentifierHash caloHash) const; + + /** test if the id belongs to the EM barrel */ + bool is_em_barrel (const Identifier id) const; + + /** test if the id belongs to the EM Endcap */ + bool is_em_endcap (const Identifier id) const; + + /** test if the id belongs to the EM Endcap inner wheel */ + bool is_em_endcap_inner (const Identifier id) const; + + /** test if the id belongs to the EM Endcap outer wheel */ + bool is_em_endcap_outer (const Identifier id) const; + + /** test if the id belongs to the HEC */ + bool is_hec (const Identifier id) const; + /** test if the hash id belongs to the HEC */ + bool is_hec (const IdentifierHash caloHash) const; + + /** test if the id belongs to the FCAL - true also for MiniFCAL */ + bool is_fcal (const Identifier id) const; + /** test if the hash id belongs to the FCAL - true also for MiniFCAL */ + bool is_fcal (const IdentifierHash caloHash) const; + + /** test if the id belongs to the MiniFCAL */ + bool is_minifcal (const Identifier id) const; + /** test if the hash id belongs to the FCAL */ + bool is_minifcal (const IdentifierHash caloHash) const; + + /** test if the id belongs to the Tiles */ + bool is_tile (const Identifier id) const; + /** test if the hash id belongs to the Tiles */ + bool is_tile (const IdentifierHash caloHash) const; + bool is_tile (const ExpandedIdentifier& id) const; + + /** test if the id belongs to the Tiles barrel*/ + bool is_tile_barrel (const Identifier id) const; + /** test if the id belongs to the Tiles extended barrel */ + bool is_tile_extbarrel (const Identifier id) const; + /** test if the id belongs to the Tiles gap */ + bool is_tile_gap (const Identifier id) const; + bool is_tile_gapscin (const Identifier id) const; + /** test if the id belongs to the Tiles negative side*/ + bool is_tile_negative (const Identifier id) const; + /** test if the id belongs to the Tiles positive side*/ + bool is_tile_positive (const Identifier id) const; + + /** returns an int taken from SUBCALO enum and describing the subCalo to which the Id belongs. */ + int sub_calo (const Identifier id)const; + /** returns an int taken from SUBCALO enum and describing the subCalo to which the hash Id belongs. */ + int sub_calo (const IdentifierHash caloHash)const; + + /** returns an int taken from Sampling enum and describing the subCalo to which the Id belongs. */ + int calo_sample (const Identifier id)const; + /** returns an int taken from Sampling enum and describing the subCalo to which the hash Id belongs. */ + int calo_sample (const IdentifierHash caloHash)const; + + + /* field values (proposal)*/ + /* + int first_field (const Identifier id)const; // corresponds to 'barrel_ec' for LArEM, 'pos_neg' for LArHEC and LArFCAL, 'section' for Tile + int second_field (const Identifier id)const; // corresponds to 'sampling' for LArEM and LArHEC, 'module' for LArFCAL, 'side' for Tile + int third_field (const Identifier id)const; // corresponds to 'region' for LArEM and LArHEC, nothing for LArFCAL, 'module' for Tile + int fourth_field (const Identifier id)const; // corresponds to 'eta' for LAr, 'tower' for Tile + int fifth_field (const Identifier id)const; // corresponds to 'phi' for LAr, 'sample' for Tile + */ + + /** LAr field values (NOT_VALID == invalid request) @warning corresponds to 'barrel_ec' for LArEM */ + int pos_neg (const Identifier id)const; // corresponds to 'barrel_ec' for LArEM + /** LAr field values (NOT_VALID == invalid request) @warning corresponds 'module' for FCAL/MiniFCAL*/ + int sampling (const Identifier id)const; // corresponds 'module' for FCAL/MiniFCAL + /** LAr field values (NOT_VALID == invalid request) @warning no region for FCAL, is 'depth' for MiniFCAL*/ + int region (const Identifier id)const; // no region for FCAL, is 'depth' for MiniFCAL + /** LAr field values (NOT_VALID == invalid request) */ + int eta (const Identifier id)const; + /** LAr field values (NOT_VALID == invalid request) */ + int phi (const Identifier id)const; + /** Tile field values (NOT_VALID == invalid request) */ + int section (const Identifier id)const; + /** Tile field values (NOT_VALID == invalid request) */ + int side (const Identifier id)const; + /** Tile field values (NOT_VALID == invalid request) */ + int module (const Identifier id)const; + /** Tile field values (NOT_VALID == invalid request) */ + int tower (const Identifier id)const; + /** Tile field values (NOT_VALID == invalid request) */ + int sample (const Identifier id)const; + + /** Test if the identifier represents a supercell. */ + bool is_supercell (const Identifier id)const; + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier regId) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier regId) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_min(const Identifier regId) const; // LAr only + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier regId) const; + + /** LAr eta granularity (NOT_VALID == failure) + @warning input = REGION ID !! */ + float etaGranularity(const Identifier regId) const; + /** LAr phi granularity (NOT_VALID == failure) + @warning input = REGION ID !! */ + float phiGranularity(const Identifier regId) const; + /** minimum LAr eta for this region + @warning input = REGION ID !! */ + float eta0(const Identifier regId) const; + /** minimum LAr phi for this region + @warning input = REGION ID !! */ + float phi0(const Identifier regId) const; + + /** access to EM idHelper + */ + const LArEM_Base_ID* em_idHelper() const + { return m_emHelper; + } + /** access to HEC idHelper + */ + const LArHEC_Base_ID* hec_idHelper() const + { return m_hecHelper; + } + + /** access to FCAL idHelper + */ + const LArFCAL_Base_ID* fcal_idHelper() const + { return m_fcalHelper; + } + + /** access to MiniFCAL idHelper + */ + const LArMiniFCAL_ID* minifcal_idHelper() const + { return m_minifcalHelper; + } + + /** access to Tile idHelper + */ + const Tile_Base_ID* tile_idHelper() const + { return m_tileHelper; + } + + + /** access to hashes for neighbours return == 0 for neighbours found <br> + @warning !!! input and output hash indices are all meant as CALO !!! <br> + option = prevInPhi, nextInPhi, prevInEta, nextInEta, corners2D, prevInSamp, nextInSamp, upAndDown, prevSubDet, nextSubDet, corners3D, prevSuperCalo, nextSuperCalo<br> + and the composite options <br> + option = faces2D = prevInPhi|nextInPhi|prevInEta|nextInEta, <br> + all2D = corners2D|faces2D, <br> + all3D = all2D|prevInSamp|nextInSamp|upAndDown|prevSubDet|nextSubDet, <br> + all3DwithCorners = all3D|corners3D, <br> + super3D = all3D|prevSuperCalo|nextSuperCalo<br> + in 'nextInEta', 'nextInSamp', 'nextSubDet', and 'nextSuperCalo', next means 'away from the centre of Atlas' <br> + in 'prevInEta', 'prevInSamp', 'prevSubDet', and 'prevSuperCalo', prev means 'towards the centre of Atlas' <br> + 'all2D', 'all3D', and 'all3DwithCorners' return neighbours within one + sub detector, while 'super3D' returns neighbours also across + detector boundaries. <br>*/ + int get_neighbours(const IdentifierHash caloHash, + const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const; + + + +private: + SUBCALO get_subcalo (Identifier id) const; + + const LArEM_Base_ID* m_emHelper; + const LArHEC_Base_ID* m_hecHelper; + const LArFCAL_Base_ID* m_fcalHelper; + const LArMiniFCAL_ID* m_minifcalHelper; + const Tile_Base_ID* m_tileHelper; + const CaloIDHelper* m_helpers[NSUBCALO]; + + size_type m_cell_hash_max; + size_type m_region_hash_max; + size_type m_cell_min[NSUBCALO]; + size_type m_cell_max[NSUBCALO]; + size_type m_reg_min[NSUBCALO]; + size_type m_reg_max[NSUBCALO]; + std::vector<Identifier> m_cell_vec; + std::vector<Identifier> m_region_vec; + +private: + // Avoid coverity warnings. + CaloCell_Base_ID (const CaloCell_Base_ID&); + CaloCell_Base_ID& operator= (const CaloCell_Base_ID&); + + CaloNeighbours* m_caloNeighbours; + + unsigned m_supercell; +}; + + + +#include "CaloIdentifier/CaloCell_Base_ID.icc" + + + +#endif // not CALOIDENTIFIER_CALOCELL_BASE_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_Base_ID.icc b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_Base_ID.icc new file mode 100644 index 0000000000000000000000000000000000000000..99cae44d6ca57d89ef089fface8badf08248e7be --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_Base_ID.icc @@ -0,0 +1,990 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/CaloCell_Base_ID.icc + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2012 + * @brief Helper base class for offline cell identifiers + */ + + +//-------------------- +// Inline definitions +//-------------------- + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::region_id (const int subCalo, + const int barec_or_posneg, + const int sampling_or_fcalmodule, + const int region_or_dummy ) const +{ + Identifier result(0); // this returns a pixel identifier [2.1.-2.0.0] + if( subCalo == LAREM ) { + return m_emHelper->region_id(barec_or_posneg, sampling_or_fcalmodule, region_or_dummy); + } + else if( subCalo == LARHEC ) { + return m_hecHelper->region_id(barec_or_posneg, sampling_or_fcalmodule, region_or_dummy); + } + else if( subCalo == LARFCAL ) { + return m_fcalHelper->module_id(barec_or_posneg, sampling_or_fcalmodule); + } + else if( subCalo == LARMINIFCAL ) { + return m_minifcalHelper->module_id(barec_or_posneg, sampling_or_fcalmodule); + } + else if( subCalo == TILE ) { + return m_tileHelper->region_id(barec_or_posneg, sampling_or_fcalmodule); + } + else { + return(result); + } +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::cell_id (const int subCalo, + const int barec_or_posneg, + const int sampling_or_fcalmodule, + const int region_or_dummy, + const int eta, + const int phi) const +{ + Identifier result(0); + if( subCalo == LAREM ) { + return m_emHelper->channel_id(barec_or_posneg, sampling_or_fcalmodule, region_or_dummy, eta, phi); + } + else if( subCalo == LARHEC ) { + return m_hecHelper->channel_id(barec_or_posneg, sampling_or_fcalmodule, region_or_dummy, eta, phi); + } + else if( subCalo == LARFCAL ) { + return m_fcalHelper->channel_id(barec_or_posneg, sampling_or_fcalmodule, eta, phi); + } + else if( subCalo == LARMINIFCAL ) { + return m_minifcalHelper->channel_id(barec_or_posneg, sampling_or_fcalmodule, region_or_dummy, eta, phi); + } + else if( subCalo == TILE ) { + return m_tileHelper->cell_id(barec_or_posneg, sampling_or_fcalmodule, region_or_dummy, eta, phi); + } + else { + return(result); + } +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::region_id ( const Identifier cellId ) const +{ + Identifier result(0); + if(m_emHelper->is_lar_em(cellId)) { + return m_emHelper->region_id(cellId); + } + else if(m_emHelper->is_lar_hec(cellId)) { + return m_hecHelper->region_id(cellId); + } + else if(m_emHelper->is_lar_minifcal(cellId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->module_id(cellId); + } + else if(m_emHelper->is_lar_fcal(cellId)) { + return m_fcalHelper->module_id(cellId); + } + else if(m_emHelper->is_tile(cellId)) { + return m_tileHelper->region_id(cellId); + } + else { + return(result); + } +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::cell_id (const Identifier regionId, + const int eta, + const int phi, + int depth) const +{ + Identifier result(0); + if(m_emHelper->is_lar_em(regionId)) { + return m_emHelper->channel_id(regionId,eta,phi); + } + else if(m_emHelper->is_lar_hec(regionId)) { + return m_hecHelper->channel_id(regionId,eta,phi); + } + else if(m_emHelper->is_lar_minifcal(regionId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->channel_id(regionId, depth,eta,phi); + } + else if(m_emHelper->is_lar_fcal(regionId)) { + return m_fcalHelper->channel_id(regionId,eta,phi); + } + else { + return(result); + } +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::region_id (const IdentifierHash caloRegionHash) const +{ + return(m_region_vec[caloRegionHash]); +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::region_id (const int subCalo, + const IdentifierHash subCaloRegionHash) const +{ + return(m_region_vec[subCaloRegionHash + m_reg_min[subCalo]]); +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::cell_id (const IdentifierHash caloCellHash) const +{ + return(m_cell_vec[caloCellHash]); +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloCell_Base_ID::cell_id (const int subCalo, const IdentifierHash subCaloCellHash) const +{ + return(m_cell_vec[subCaloCellHash + m_cell_min[subCalo]]); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash +CaloCell_Base_ID::calo_region_hash (const Identifier regionId) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_region_vec.begin(),m_region_vec.end(),regionId); + if ( it != m_region_vec.end() ){ + return (it - m_region_vec.begin()); + } + return (NOT_VALID); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash +CaloCell_Base_ID::subcalo_region_hash (const Identifier regionId, int& subCalo) const +{ + subCalo = LAREM ; + if(is_hec(regionId)) { + subCalo = LARHEC ; + } + else if (is_minifcal(regionId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + subCalo = LARMINIFCAL ; + } + else if (is_fcal(regionId)) { + subCalo = LARFCAL ; + } + else if (is_tile(regionId)) { + subCalo = TILE ; + } + std::vector<Identifier>::const_iterator it = std::lower_bound(m_region_vec.begin(),m_region_vec.end(),regionId); + if ( it != m_region_vec.end() ){ + return (it - m_region_vec.begin() - m_reg_min[subCalo]); + } + return (NOT_VALID); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash +CaloCell_Base_ID::subcalo_cell_hash (const Identifier cellId, int& subCalo) const +{ + subCalo = get_subcalo (cellId); + switch (subCalo) { + + // LArEM / HEC have subdetector-specific optimized methods. + case LAREM: + return m_emHelper->channel_hash (cellId); + case LARHEC: + return m_hecHelper->channel_hash (cellId); + case LARFCAL: + case TILE: + case LARMINIFCAL: + return m_helpers[subCalo]->channel_hash (cellId); + default: + return NOT_VALID; + } +} + +//---------------------------------------------------------------------------- +inline IdentifierHash +CaloCell_Base_ID::calo_cell_hash (const Identifier cellId) const +{ + int subcalo; + IdentifierHash hash = subcalo_cell_hash (cellId, subcalo); + if (hash != NOT_VALID) + return m_cell_min[subcalo] + hash; + return NOT_VALID; +} + +//---------------------------------------------------------------------------- +inline CaloCell_Base_ID::size_type CaloCell_Base_ID::calo_cell_hash_max (void) const +{ + return m_cell_hash_max; +} + +//---------------------------------------------------------------------------- +inline CaloCell_Base_ID::size_type CaloCell_Base_ID::calo_region_hash_max (void) const +{ + return m_region_hash_max; +} + +//---------------------------------------------------------------------------- +inline void CaloCell_Base_ID::calo_cell_hash_range (const Identifier id, IdentifierHash& caloCellMin, IdentifierHash& caloCellMax) const +{ + if(m_emHelper->is_lar_em(id)) { + caloCellMin = m_cell_min[LAREM]; + caloCellMax = m_cell_max[LAREM]; + } + else if(m_emHelper->is_lar_hec(id)) { + caloCellMin = m_cell_min[LARHEC]; + caloCellMax = m_cell_max[LARHEC]; + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + caloCellMin = m_cell_min[LARMINIFCAL]; + caloCellMax = m_cell_max[LARMINIFCAL]; + } + else if(m_emHelper->is_lar_fcal(id)) { + caloCellMin = m_cell_min[LARFCAL]; + caloCellMax = m_cell_max[LARFCAL]; + } + else if(m_emHelper->is_tile(id)) { + caloCellMin = m_cell_min[TILE]; + caloCellMax = m_cell_max[TILE]; + } + else { + caloCellMin = NOT_VALID; + caloCellMax = NOT_VALID; + } +} + +//---------------------------------------------------------------------------- +inline void CaloCell_Base_ID::calo_reg_hash_range (const Identifier id, IdentifierHash& caloRegMin, IdentifierHash& caloRegMax) const +{ + if(m_emHelper->is_lar_em(id)) { + caloRegMin = m_reg_min[LAREM]; + caloRegMax = m_reg_max[LAREM]; + } + else if(m_emHelper->is_lar_hec(id)) { + caloRegMin = m_reg_min[LARHEC]; + caloRegMax = m_reg_max[LARHEC]; + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + caloRegMin = m_reg_min[LARMINIFCAL]; + caloRegMax = m_reg_max[LARMINIFCAL]; + } + else if(m_emHelper->is_lar_fcal(id)) { + caloRegMin = m_reg_min[LARFCAL]; + caloRegMax = m_reg_max[LARFCAL]; + } + else if(m_emHelper->is_tile(id)) { + caloRegMin = m_reg_min[TILE]; + caloRegMax = m_reg_max[TILE]; + } + else { + caloRegMin = NOT_VALID; + caloRegMax = NOT_VALID; + } +} + +//---------------------------------------------------------------------------- +inline void CaloCell_Base_ID::calo_cell_hash_range (const int subCalo, IdentifierHash& caloCellMin, IdentifierHash& caloCellMax) const +{ + caloCellMin = m_cell_min[subCalo]; + caloCellMax = m_cell_max[subCalo]; +} + +//---------------------------------------------------------------------------- +inline void CaloCell_Base_ID::calo_reg_hash_range (const int subCalo, IdentifierHash& caloRegMin, IdentifierHash& caloRegMax) const +{ + caloRegMin = m_reg_min[subCalo]; + caloRegMax = m_reg_max[subCalo]; +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloCell_Base_ID::subcalo_cell_hash ( const IdentifierHash caloHash, int& subCalo) const +{ + if(caloHash < m_cell_max[LAREM]) { + subCalo = LAREM; + } + else if(caloHash < m_cell_max[LARHEC] ) { + subCalo = LARHEC; + } + else if(caloHash < m_cell_max[LARFCAL] ) { + subCalo = LARFCAL; + } + else if(caloHash < m_cell_max[TILE] ) { + subCalo = TILE; + } + else if(caloHash < m_cell_max[LARMINIFCAL] ) { + subCalo = LARMINIFCAL; + } + else { + subCalo = NOT_VALID; + return(NOT_VALID); + } + return( caloHash - m_cell_min[subCalo]) ; +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloCell_Base_ID::subcalo_region_hash ( const IdentifierHash caloHash, int& subCalo) const +{ + if(caloHash < m_reg_max[LAREM]) { + subCalo = LAREM; + } + else if(caloHash < m_reg_max[LARHEC] ) { + subCalo = LARHEC; + } + else if(caloHash < m_reg_max[LARFCAL] ) { + subCalo = LARFCAL; + } + else if(caloHash < m_reg_max[TILE] ) { + subCalo = TILE; + } + else if(caloHash < m_reg_max[LARMINIFCAL] ) { + subCalo = LARMINIFCAL; + } + else { + subCalo = NOT_VALID; + return(NOT_VALID); + } + return( caloHash - m_reg_min[subCalo]) ; +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloCell_Base_ID::calo_cell_hash (const int subCalo, const IdentifierHash subCaloHash) const +{ + return( subCaloHash + m_cell_min[subCalo]) ; +} + + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloCell_Base_ID::calo_region_hash (const int subCalo, const IdentifierHash subCaloHash) const +{ + return( subCaloHash + m_reg_min[subCalo]) ; +} + +//---------------------------------------------------------------------------- +inline CaloCell_Base_ID::id_iterator CaloCell_Base_ID::cell_begin (void) const +{ + return(m_cell_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline CaloCell_Base_ID::id_iterator CaloCell_Base_ID::cell_end (void) const +{ + return(m_cell_vec.end()); +} + +//---------------------------------------------------------------------------- +inline CaloCell_Base_ID::id_range CaloCell_Base_ID::cell_range (void) const +{ + return id_range (cell_begin(), cell_end()); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_iterator +CaloCell_Base_ID::cell_begin (const int subCalo) const +{ + return m_helpers[subCalo]->channels().begin(); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_iterator +CaloCell_Base_ID::cell_end (const int subCalo) const +{ + return m_helpers[subCalo]->channels().end(); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_range +CaloCell_Base_ID::cell_range (const int subCalo) const +{ + return m_helpers[subCalo]->channels().range(); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_iterator +CaloCell_Base_ID::reg_begin (void) const +{ + return(m_region_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_iterator +CaloCell_Base_ID::reg_end (void) const +{ + return(m_region_vec.end()); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_range +CaloCell_Base_ID::reg_range (void) const +{ + return id_range (reg_begin(), reg_end()); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_iterator +CaloCell_Base_ID::reg_begin (const int subCalo) const +{ + return m_helpers[subCalo]->regions().begin(); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_iterator +CaloCell_Base_ID::reg_end (const int subCalo) const +{ + return m_helpers[subCalo]->regions().end(); +} + +//---------------------------------------------------------------------------- +inline +CaloCell_Base_ID::id_range +CaloCell_Base_ID::reg_range (const int subCalo) const +{ + return m_helpers[subCalo]->regions().range(); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_em(const Identifier id) const +{ + return m_emHelper->is_lar_em(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_em(const IdentifierHash caloHash) const +{ + bool result=false; + if(caloHash < m_cell_max[LAREM]) result=true; + return result; +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_em_barrel(const Identifier id) const +{ + return m_emHelper->is_em_barrel(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_em_endcap(const Identifier id) const +{ + return m_emHelper->is_em_endcap(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_em_endcap_inner(const Identifier id) const +{ + return m_emHelper->is_em_endcap_inner(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_em_endcap_outer(const Identifier id) const +{ + return m_emHelper->is_em_endcap_outer(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_hec(const Identifier id) const +{ + return m_emHelper->is_lar_hec(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_hec(const IdentifierHash caloHash) const +{ + bool result=false; + if(caloHash >= m_cell_min[LARHEC] && + caloHash < m_cell_max[LARHEC] ) result=true; + return result; +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_fcal(const Identifier id) const +{ + return m_emHelper->is_lar_fcal(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_fcal(const IdentifierHash caloHash) const +{ + bool result=false; + if(caloHash >= m_cell_min[LARFCAL] && caloHash < m_cell_max[LARFCAL] ) result=true; + return result; +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_minifcal(const Identifier id) const +{ + return m_emHelper->is_lar_minifcal(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_minifcal(const IdentifierHash caloHash) const +{ + bool result=false; + if(caloHash >= m_cell_min[LARMINIFCAL] && caloHash < m_cell_max[LARMINIFCAL] ) result=true; + return result; +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile(const ExpandedIdentifier& id) const +{ + return m_emHelper->is_tile(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile(const Identifier id) const +{ + return m_emHelper->is_tile(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile(const IdentifierHash caloHash) const +{ + bool result=false; + if(caloHash >= m_cell_min[TILE] && caloHash < m_cell_max[TILE] ) result=true; + return result; +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile_barrel(const Identifier id) const +{ + return m_tileHelper->is_tile_barrel(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile_extbarrel(const Identifier id) const +{ + return m_tileHelper->is_tile_extbarrel(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile_gap(const Identifier id) const +{ + return m_tileHelper->is_tile_gap(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile_gapscin(const Identifier id) const +{ + return m_tileHelper->is_tile_gapscin(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile_positive(const Identifier id) const +{ + return m_tileHelper->is_positive(id); +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_tile_negative(const Identifier id) const +{ + return m_tileHelper->is_negative(id); +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::sub_calo (const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return LAREM; + } + else if(m_emHelper->is_lar_hec(id)) { + return LARHEC; + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return LARMINIFCAL; + } + else if(m_emHelper->is_lar_fcal(id)) { + return LARFCAL; + } + else if(m_emHelper->is_tile(id)) { + return TILE; + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::sub_calo (const IdentifierHash caloHash)const +{ + int result = NOT_VALID; + if(caloHash < m_cell_max[LAREM]) { + result = LAREM; + } + else if(caloHash < m_cell_max[LARHEC] ) { + result = LARHEC; + } + else if(caloHash < m_cell_max[LARFCAL] ) { + result = LARFCAL; + } + else if(caloHash < m_cell_max[TILE] ) { + result = TILE; + } + else if(caloHash < m_cell_max[LARMINIFCAL] ) { + result = LARMINIFCAL; + } + return result; +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::pos_neg (const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return m_emHelper->barrel_ec(id); + } + else if(m_emHelper->is_lar_hec(id)) { + return m_hecHelper->pos_neg(id); + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->pos_neg(id); + } + else if(m_emHelper->is_lar_fcal(id)) { + return m_fcalHelper->pos_neg(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::section (const Identifier id)const +{ + if(m_emHelper->is_tile(id)) { + return m_tileHelper->section(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::sampling (const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return m_emHelper->sampling(id); + } + else if(m_emHelper->is_lar_hec(id)) { + return m_hecHelper->sampling(id); + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->depth(id); + } + else if(m_emHelper->is_lar_fcal(id)) { + return m_fcalHelper->module(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::side (const Identifier id)const +{ + if(m_emHelper->is_tile(id)) { + return m_tileHelper->side(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::region (const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return m_emHelper->region(id); + } + else if(m_emHelper->is_lar_hec(id)) { + return m_hecHelper->region(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::module (const Identifier id)const +{ + if(m_emHelper->is_tile(id)) { + return m_tileHelper->module(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::eta(const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return m_emHelper->eta(id); + } + else if(m_emHelper->is_lar_hec(id)) { + return m_hecHelper->eta(id); + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->eta(id); + } + else if(m_emHelper->is_lar_fcal(id)) { + return m_fcalHelper->eta(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::tower(const Identifier id)const +{ + if(m_emHelper->is_tile(id)) { + return m_tileHelper->tower(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::phi(const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return m_emHelper->phi(id); + } + else if(m_emHelper->is_lar_hec(id)) { + return m_hecHelper->phi(id); + } + else if(m_emHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->phi(id); + } + else if(m_emHelper->is_lar_fcal(id)) { + return m_fcalHelper->phi(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::sample(const Identifier id)const +{ + if(m_emHelper->is_tile(id)) { + return m_tileHelper->sample(id); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline bool CaloCell_Base_ID::is_supercell(const Identifier id)const +{ + if(m_emHelper->is_lar_em(id)) { + return m_emHelper->is_supercell(id); + } + else if(is_hec(id)) { + return m_hecHelper->is_supercell(id); + } + else if(m_emHelper->is_lar_fcal(id)) { + return m_fcalHelper->is_supercell(id); + } + else if(is_tile(id)) { + return m_tileHelper->is_supercell(id); + } + + return false; +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::eta_min(const Identifier regId) const +{ + if(m_emHelper->is_lar_em(regId)) { + return m_emHelper->eta_min(regId); + } + else if(m_emHelper->is_lar_hec(regId)) { + return m_hecHelper->eta_min(regId); + } + else if(m_emHelper->is_lar_minifcal(regId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->eta_min(regId); + } + else if(m_emHelper->is_lar_fcal(regId)) { + return m_fcalHelper->eta_min(regId); + } + else if(m_emHelper->is_tile(regId)) { + return m_tileHelper->eta_min(regId); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::eta_max(const Identifier regId) const +{ + if(m_emHelper->is_lar_em(regId)) { + return m_emHelper->eta_max(regId); + } + else if(m_emHelper->is_lar_hec(regId)) { + return m_hecHelper->eta_max(regId); + } + else if(m_emHelper->is_lar_minifcal(regId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->eta_max(regId); + } + else if(m_emHelper->is_lar_fcal(regId)) { + return m_fcalHelper->eta_max(regId); + } + else if(m_emHelper->is_tile(regId)) { + return m_tileHelper->eta_max(regId); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::phi_min(const Identifier regId) const +{ + if(m_emHelper->is_lar_em(regId)) { + return m_emHelper->phi_min(regId); + } + else if(m_emHelper->is_lar_hec(regId)) { + return m_hecHelper->phi_min(regId); + } + else if(m_emHelper->is_lar_minifcal(regId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->phi_min(regId); + } + else if(m_emHelper->is_lar_fcal(regId)) { + return m_fcalHelper->phi_min(regId); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline int CaloCell_Base_ID::phi_max(const Identifier regId) const +{ + if(m_emHelper->is_lar_em(regId)) { + return m_emHelper->phi_max(regId); + } + else if(m_emHelper->is_lar_hec(regId)) { + return m_hecHelper->phi_max(regId); + } + else if(m_emHelper->is_lar_minifcal(regId)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return m_minifcalHelper->phi_max(regId); + } + else if(m_emHelper->is_lar_fcal(regId)) { + return m_fcalHelper->phi_max(regId); + } + else if(m_emHelper->is_tile(regId)) { + return m_tileHelper->phi_max(regId); + } + else { + return(NOT_VALID); + } +} + +//---------------------------------------------------------------------------- +inline float CaloCell_Base_ID::etaGranularity(const Identifier regId) const +{ + int subcalo = 0; + IdentifierHash regHash = subcalo_region_hash (regId, subcalo); + if (regHash == NOT_VALID) return NOT_VALID; + return m_helpers[subcalo]->etaGranularity (regHash); +} + +//---------------------------------------------------------------------------- +inline float CaloCell_Base_ID::phiGranularity(const Identifier regId) const +{ + int subcalo = 0; + IdentifierHash regHash = subcalo_region_hash (regId, subcalo); + if (regHash == NOT_VALID) return NOT_VALID; + return m_helpers[subcalo]->phiGranularity (regHash); +} + +//---------------------------------------------------------------------------- +inline float CaloCell_Base_ID::eta0(const Identifier regId) const +{ + int subcalo = 0; + IdentifierHash regHash = subcalo_region_hash (regId, subcalo); + if (regHash == NOT_VALID) return NOT_VALID; + return m_helpers[subcalo]->eta0 (regHash); +} + +//---------------------------------------------------------------------------- +inline float CaloCell_Base_ID::phi0(const Identifier regId) const +{ + int subcalo = 0; + IdentifierHash regHash = subcalo_region_hash (regId, subcalo); + if (regHash == NOT_VALID) return NOT_VALID; + return m_helpers[subcalo]->phi0 (regHash); +} + +//--------------------------------------------------------------------------- +inline int CaloCell_Base_ID::GetSubCaloName(const std::string SubCaloName )const +{ + if(SubCaloName=="LAREM"){ + return(LAREM); + } + else if(SubCaloName=="LARHEC"){ + return(LARHEC); + } + else if(SubCaloName=="LARMINIFCAL"){ + return(LARMINIFCAL); + } + else if(SubCaloName=="LARFCAL"){ + return(LARFCAL); + } + else if(SubCaloName=="TILE"){ + return(TILE); + } + else{ + return(NOT_VALID); + } +} + + +//--------------------------------------------------------------------------- +inline +CaloCell_Base_ID::SUBCALO +CaloCell_Base_ID::get_subcalo (Identifier id) const +{ + if (m_emHelper->is_lar_em(id)) + return LAREM; + else if (m_emHelper->is_lar_hec(id)) + return LARHEC; + else if (m_emHelper->is_lar_minifcal (id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + return LARMINIFCAL; + } + else if (m_emHelper->is_lar_fcal (id)) + return LARFCAL; + else if (m_emHelper->is_tile (id)) + return TILE; + return NOT_VALID; +} diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..16060f464b18facb4309071de67b08a70ae10b61 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_ID.h @@ -0,0 +1,97 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOCELL_ID_H +#define CALOCELL_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" + +#include "CaloIdentifier/CaloID.h" +#include "CaloIdentifier/CaloCell_Base_ID.h" +#include "SGTools/BaseInfo.h" + +#include <vector> +#include <iostream> + + + +class IdentifierHash; + +/** + * @class CaloCell_ID + * @brief Helper class for offline cell identifiers + * + * This class provides an interface to generate offline identifiers + * for the full calorimeter (LAr + Tile). <br> + * It is actually a wrapper of the specific helpers LArEM_ID, + * LArHEC_ID, LArFCAL_ID, LArMiniFCAL_ID and Tile_ID. + * + */ +class CaloCell_ID : public CaloCell_Base_ID +{ + +public: + + typedef CaloCell_Base_ID::size_type size_type; + + /** Constructor */ + CaloCell_ID(const LArEM_ID* em_id, + const LArHEC_ID* hec_id, + const LArFCAL_ID* fcal_id, + const LArMiniFCAL_ID* minifcal_id, + const TileID* tile_id) ; + + ~CaloCell_ID(void); + + // SUBCALO enumeration moved to CaloCell_Base_ID. + typedef CaloCell_Base_ID::SUBCALO SUBCALO; + + // CaloSample enumeration moved to CaloGeoHelpers/CaloSampling + typedef CaloSampling::CaloSample CaloSample; + + + /// Initialization from the identifier dictionary + virtual int initialize_from_dictionary(const IdDictMgr& dict_mgr); + //@} + + + /** access to EM idHelper + */ + const LArEM_ID* em_idHelper() const + { + return static_cast<const LArEM_ID*> (CaloCell_Base_ID::em_idHelper()); + } + /** access to HEC idHelper + */ + const LArHEC_ID* hec_idHelper() const + { + return static_cast<const LArHEC_ID*> (CaloCell_Base_ID::hec_idHelper()); + } + /** access to FCAL idHelper + */ + const LArFCAL_ID* fcal_idHelper() const + { + return static_cast<const LArFCAL_ID*> (CaloCell_Base_ID::fcal_idHelper()); + } + /** access to Tile idHelper + */ + const TileID* tile_idHelper() const + { + return static_cast<const TileID*> (CaloCell_Base_ID::tile_idHelper()); + } + + +private: + // Avoid coverity warnings. + CaloCell_ID (const CaloCell_ID&); + CaloCell_ID& operator= (const CaloCell_ID&); +}; + +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( CaloCell_ID , 123500438 , 1 ) +SG_BASE (CaloCell_ID, CaloCell_Base_ID); + +#endif // CALOCELL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_SuperCell_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_SuperCell_ID.h new file mode 100644 index 0000000000000000000000000000000000000000..c4dcb4352b0189a85b72906db2bc1d43f6f90037 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_SuperCell_ID.h @@ -0,0 +1,101 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/CaloCell_SuperCell_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2012 + * @brief Helper class for offline supercell identifiers + */ + + +#ifndef CALOIDENTIFIER_CALOCELL_SUPERCELL_ID_H +#define CALOIDENTIFIER_CALOCELL_SUPERCELL_ID_H + + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" + +#include "CaloIdentifier/CaloID.h" +#include "CaloIdentifier/CaloCell_Base_ID.h" +#include "CaloIdentifier/LArNeighbours.h" +#include "SGTools/BaseInfo.h" + +#include <vector> +#include <iostream> + + +class IdentifierHash; +class CaloNeighbours; + +/** + * @class CaloCell_SuperCell_ID + * @brief Helper class for offline supercell identifiers + * + * This class provides an interface to generate offline identifiers + * for the full calorimeter (LAr + Tile). + * Where defined, we use supercells rather + * than the basic calorimeter cells.<br> + * It is actually a wrapper of the specific helpers LArEM_SuperCell_ID, + * LArHEC_ID, LArFCAL_ID, LArMiniFCAL_ID and Tile_ID. + */ +class CaloCell_SuperCell_ID : public CaloCell_Base_ID +{ + +public: + + typedef CaloCell_Base_ID::size_type size_type; + + /** Constructor */ + CaloCell_SuperCell_ID(const LArEM_SuperCell_ID* em_id, + const LArHEC_SuperCell_ID* hec_id, + const LArFCAL_SuperCell_ID* fcal_id, + const LArMiniFCAL_ID* minifcal_id, + const Tile_SuperCell_ID* tile_id) ; + + ~CaloCell_SuperCell_ID(void); + + + /** access to EM idHelper + */ + const LArEM_SuperCell_ID* em_idHelper() const + { + return static_cast<const LArEM_SuperCell_ID*> + (CaloCell_Base_ID::em_idHelper()); + } + /** access to HEC idHelper + */ + const LArHEC_SuperCell_ID* hec_idHelper() const + { + return static_cast<const LArHEC_SuperCell_ID*> + (CaloCell_Base_ID::hec_idHelper()); + } + /** access to FCAL idHelper + */ + const LArFCAL_SuperCell_ID* fcal_idHelper() const + { + return static_cast<const LArFCAL_SuperCell_ID*> + (CaloCell_Base_ID::fcal_idHelper()); + } + /** access to FCAL idHelper + */ + const Tile_SuperCell_ID* tile_idHelper() const + { + return static_cast<const Tile_SuperCell_ID*> + (CaloCell_Base_ID::tile_idHelper()); + } +}; + +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( CaloCell_SuperCell_ID , 128365736 , 1 ) +SG_BASE (CaloCell_SuperCell_ID, CaloCell_Base_ID); + + + + +#endif // not CALOIDENTIFIER_CALOCELL_SUPERCELL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloDM_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloDM_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..956ee3856e7e0f96b5b2ed1a6dc222dc59991bde --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloDM_ID.h @@ -0,0 +1,670 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALODM_ID_H +#define CALODM_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "Identifier/Range.h" +#include "IdDict/IdDictFieldImplementation.h" + +#include "CaloIdentifier/CaloID_Exception.h" + +#include <vector> +#include <algorithm> + + +/** +* +* @class CaloDM_ID +* @brief Helper class for Calo Dead Material offline identifiers +* +* This class provides an interface to decode and generate offline identifiers +* for the Calo Dead Materials. <p> +* +* Definition and range of values for the elements of the +* identifier are (ATL-SOFT-2001-004): <p> +* <pre> +* element range meaning +* ------- ----- ------- +* +* DETZSIDE +/-4 positive/negative LAr +* +/-5 positive/negative Tile +* +* LAr: +* ==== +* DeadMAT [1,3] 1=outside accordion .... +* 2=internal "cracks" +* 3=beam test +* +* +* sampling [0,3] type 1 and type 2 +* ? type 3 +* +* region [0,5] type 1, sampling 0 +* [0,7] type 1, sampling 1 +* [0,5] type 1, sampling 2 +* [0,2] type 1, sampling 3 +* [0,3] type 2, sampling [0,3] +* ? type 3 +* +* eta [0,49] values and ranges depend on the DM type, the sampling, the region etc .... +* +* phi [0,63] all except below +* " [0,31] type 2, sampling [0,3], region 2 +* " 0 type 1, sampling 3, region 2 +* +* Tile +* ==== +* DeadMAT [1,3] 1=dead material around sensitive material +* 2=dead material in internal "cracks" (if any) +* 3=beam test +* +* sampling [0,3] type 1 +* 0 type 2,3 +* +* region [0,1] type 1, sampling 0 +* [0,2] type 1, sampling 1 +* [0,2] type 1, sampling 2 +* 0 type 1, sampling 3 +* 0 type 2,3 +* +* eta [0,9] type 1, sampling 0, region 0 +* [0,4] type 1, sampling 0, region 1 +* [0,3] type 1, sampling 1, region 0 +* [0,2] type 1, sampling 1, region 1 +* [0,3] type 1, sampling 1, region 2 +* [0,7] type 1, sampling 2, region 0 +* [0,4] type 1, sampling 2, region 1 +* [0,1] type 1, sampling 2, region 2 +* [0,16] type 1, sampling 3, region 0 +* 0 type 2,3 +* +* phi [0,63] in all regions +* +* +* +* region _id DETZSIDE/DMTYPE/SAMPLING/REGION +* +* +* zone_id Region_ID+ETA+PHI +* +* </pre> +* @author started by Fairouz Malek +* @author maintained by Fabienne Ledroit +*/ +class IdentifierHash; + +class CaloDM_ID : public AtlasDetectorID +{ +public: + + typedef Identifier::size_type size_type ; + + + CaloDM_ID(void); + + virtual ~CaloDM_ID(); + + /** build a region identifier valid for both LAr and Tiles */ + Identifier region_id ( int pos_neg_z, int dmat, int sampling, int region ) const throw(CaloID_Exception); + + /** build a region identifier valid for both LAr and Tiles */ + Identifier region_id (const Identifier& zoneId ) const; + + /** build a zone identifier valid for both LAr and Tiles */ + Identifier zone_id (int pos_neg_z, int dat, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception); + + /** build a zone identifier valid for both LAr and Tiles */ + Identifier zone_id (const Identifier& regionId, + int eta, int phi ) const ; + + /** to disentangle between LAr and Tile dead material */ + bool is_lar (const Identifier& zoneId) const; + /** to disentangle between LAr and Tile dead material */ + bool is_tile (const Identifier& zoneId) const; + + /** create a lar region id from hash id*/ + Identifier lar_region_id (IdentifierHash lar_region_hash_id) const; + /** create a tile region id from hash id*/ + Identifier tile_region_id (IdentifierHash tile_region_hash_id) const; + + /** create a lar zone id from hash id*/ + Identifier lar_zone_id (IdentifierHash lar_zone_hash_id) const; + /** create a tile zone id from hash id*/ + Identifier tile_zone_id (IdentifierHash tile_zone_hash_id) const; + + /** create a lar hash id from region id*/ + IdentifierHash lar_region_hash (Identifier LArRegionId) const; + /** create a tile hash id from region id*/ + IdentifierHash tile_region_hash (Identifier TileRegionId) const; + + /** create a lar hash id from zone id*/ + IdentifierHash lar_zone_hash (Identifier LArZoneId) const; + /** create a tile hash id from zone id*/ + IdentifierHash tile_zone_hash (Identifier TileZoneId) const; + + + /** lar region hash table max size */ + size_type lar_region_hash_max (void) const; + /** lar zone hash table max size */ + size_type lar_zone_hash_max (void) const; + /** tile region hash table max size */ + size_type tile_region_hash_max (void) const; + /** tile zone hash table max size */ + size_type tile_zone_hash_max (void) const; + + /** begin iterator over lar regions */ + std::vector<Identifier>::const_iterator lar_region_begin (void) const; + /** end iterator over lar regions */ + std::vector<Identifier>::const_iterator lar_region_end (void) const; + /** begin iterator over tile regions */ + std::vector<Identifier>::const_iterator tile_region_begin (void) const; + /** end iterator over tile regions */ + std::vector<Identifier>::const_iterator tile_region_end (void) const; + + /** begin iterator over full set of LAr identifiers */ + std::vector<Identifier>::const_iterator lar_zone_begin (void) const; + /** end iterator over full set of LAr identifiers */ + std::vector<Identifier>::const_iterator lar_zone_end (void) const; + /** begin iterator over full set of Tile identifiers */ + std::vector<Identifier>::const_iterator tile_zone_begin (void) const; + /** end iterator over full set of Tile identifiers */ + std::vector<Identifier>::const_iterator tile_zone_end (void) const; + + + /** + * return pos_neg_z according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * DETZSIDE +/-4 positive/negative LAr + * +/-5 positive/negative Tile + * + * failure returns 0 + * + * </pre> + */ + int pos_neg_z (const Identifier& id)const; + + /** + * return DMtype according to : <br> + * + * <pre> + * element range + * ------- ----- + * DeadMat [1,3] LAr + * [1,3] Tile + * + * failure returns 0 + * + * </pre> + */ + int dmat (const Identifier& id)const; + + /** + * return sampling according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * sampling [0,3] type 1 and type 2 (LAr only) + * ? type 3 + * + * failure returns 0 + * + * </pre> + */ + int sampling (const Identifier& id)const; + + /** + * return region according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * lar region 0 type 1, sampling 0 + * [0,7] type 1, sampling 1 + * [0,5] type 1, sampling 2 + * [0,2] type 1, sampling 3 + * [0,3] type 2, sampling [0,3] + * ? type 3 + * + * + * failure returns 0 + * + * </pre> + */ + int region (const Identifier& id)const; + + /** + * return eta <br> + * + */ + int eta (const Identifier& id)const; + + /** + * return phi <br> + * + */ + int phi (const Identifier& id)const; + + + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier& id) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier& id) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_min(const Identifier& id) const; + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier& id) const; + + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); + + /** access to IdContext's which define which levels of fields are contained in a region id */ + IdContext region_context (void) const; + + /** access to IdContext's which define which levels of fields are contained in a zone id */ + IdContext zone_context (void) const; + + +private: + + + enum {NOT_VALID_HASH = 128000}; + + + IdentifierHash lar_zone_hash_binary_search (Identifier zoneId) const; + IdentifierHash tile_zone_hash_binary_search (Identifier zoneId) const; + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + + void lar_region_id_checks ( int pos_neg_z, int dmat, int sampling, int region ) const throw(CaloID_Exception); + + void tile_region_id_checks ( int pos_neg_z, int dmat, int sampling, int region ) const throw(CaloID_Exception); + + void lar_zone_id_checks (int pos_neg_z, int dat, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception); + void tile_zone_id_checks (int pos_neg_z, int dat, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception); + void zone_id_checks (const Identifier& regionId, + int eta, int phi ) const throw(CaloID_Exception); + + + + int initLevelsFromDict(void) ; + + int init_lar_hashes(void) ; + int init_tile_hashes(void) ; + + + size_type m_calodm_region_index; + size_type m_CALO_INDEX; + size_type m_DETZSIDE_INDEX; + size_type m_DMAT_INDEX; + size_type m_SAMPLING_INDEX; + size_type m_REGION_INDEX; + size_type m_ETA_INDEX; + size_type m_PHI_INDEX; + + const IdDictDictionary* m_dict; + + MultiRange m_full_lar_region_range; + MultiRange m_full_lar_zone_range; + size_type m_lar_zone_hash_max; + size_type m_lar_region_hash_max; + std::vector<Identifier> m_lar_zone_vec; + std::vector<Identifier> m_lar_region_vec; + + MultiRange m_full_tile_region_range; + MultiRange m_full_tile_zone_range; + size_type m_tile_zone_hash_max; + size_type m_tile_region_hash_max; + std::vector<Identifier> m_tile_zone_vec; + std::vector<Identifier> m_tile_region_vec; + + /** + @brief small class holding the starting hash value, the min eta and the number of phi bins of each region + + used to CPU-optimize the conversion from an identifier to a hash index + */ + class HashCalc + { + public: + HashCalc() : + m_hash(0), + m_etamin(0), + m_nphi(0) {} + IdentifierHash m_hash; + size_type m_etamin; + size_type m_nphi; + }; + + std::vector<HashCalc> m_lar_hash_calcs; + std::vector<HashCalc> m_tile_hash_calcs; + + + + IdDictFieldImplementation m_calo_impl; + IdDictFieldImplementation m_calodm_impl; + IdDictFieldImplementation m_dmat_impl; + IdDictFieldImplementation m_sampling_impl; + IdDictFieldImplementation m_region_impl; + IdDictFieldImplementation m_eta_impl; + IdDictFieldImplementation m_phi_impl; + + + IdDictFieldImplementation m_pnz_reg_impl; + +}; + +//using the macros below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( CaloDM_ID , 167756483 , 1 ) + + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::region_id (int pos_neg_z, int dmat, int sampling, int region) const throw(CaloID_Exception) +{ + Identifier result(0); + // Pack fields independently + m_calo_impl.pack (calo_field_value(), result); + m_calodm_impl.pack (pos_neg_z, result); + m_dmat_impl.pack (dmat, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + + // Do checks + if(m_do_checks) { + if(abs(pos_neg_z) == 4) { + lar_region_id_checks( pos_neg_z, dmat, sampling, region); + } else + if(abs(pos_neg_z) == 5) { + tile_region_id_checks( pos_neg_z, dmat, sampling, region); + } + else + { + CaloID_Exception except("wrong value for pos_neg_z, only +-4 and +-5 allowed" , 99); + throw except ; + } + } + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +CaloDM_ID::region_id ( const Identifier& zoneId ) const +{ + Identifier result(zoneId); + // reset eta/phi + m_eta_impl.reset(result); + m_phi_impl.reset(result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::zone_id ( int pos_neg_z, int dmat, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception) +{ + Identifier result(0); + // Pack fields independently + m_calo_impl.pack (calo_field_value(), result); + m_calodm_impl.pack (pos_neg_z, result); + m_dmat_impl.pack (dmat, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + // Do checks + if(m_do_checks) { + if(abs(pos_neg_z) == 4) { + lar_zone_id_checks( pos_neg_z, dmat, sampling, region, eta, phi ); + } + else if(abs(pos_neg_z) == 5) { + tile_zone_id_checks( pos_neg_z, dmat, sampling, region, eta, phi ); + } + else { + CaloID_Exception except("wrong value for pos_neg_z, only +-4 and +-5 allowed" , 99); + throw except ; + } + } + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::zone_id ( const Identifier& regionId, + int eta, int phi ) const +{ + Identifier result(regionId); + + // Reset the fields and then set the values + m_eta_impl.reset (result); + m_phi_impl.reset (result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + // Do checks + if(m_do_checks) { + zone_id_checks( regionId, eta, phi ); + } + + return result; +} + +//---------------------------------------------------------------------------- +inline bool CaloDM_ID::is_lar(const Identifier& zoneId) const +{ + return ( abs(m_calodm_impl.unpack(zoneId)) == 4 ); +} + +//---------------------------------------------------------------------------- +inline bool CaloDM_ID::is_tile(const Identifier& zoneId) const +{ + return ( abs(m_calodm_impl.unpack(zoneId)) == 5 ); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::lar_region_id (IdentifierHash lar_region_hash_id) const +{ + return(m_lar_region_vec[lar_region_hash_id]); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::tile_region_id (IdentifierHash tile_region_hash_id) const +{ + return(m_tile_region_vec[tile_region_hash_id]); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::lar_zone_id (IdentifierHash lar_zone_hash_id) const +{ + return(m_lar_zone_vec[lar_zone_hash_id]); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloDM_ID::tile_zone_id (IdentifierHash tile_zone_hash_id) const +{ + return(m_tile_zone_vec[tile_zone_hash_id]); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloDM_ID::lar_region_hash (Identifier LArRegionId) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_lar_region_vec.begin(),m_lar_region_vec.end(),LArRegionId); + if ( it != m_lar_region_vec.end() ){ + return (it - m_lar_region_vec.begin()); + } + return (0); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloDM_ID::tile_region_hash (Identifier TileRegionId) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_tile_region_vec.begin(),m_tile_region_vec.end(),TileRegionId); + if ( it != m_tile_region_vec.end() ){ + return (it - m_tile_region_vec.begin()); + } + return (0); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloDM_ID::lar_zone_hash (Identifier LArZoneId) const +{ + const HashCalc& hc = m_lar_hash_calcs[m_pnz_reg_impl.unpack(LArZoneId)]; + return (hc.m_hash + (eta(LArZoneId)-hc.m_etamin)*hc.m_nphi + phi(LArZoneId)); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloDM_ID::tile_zone_hash (Identifier TileZoneId) const +{ + const HashCalc& hc = m_tile_hash_calcs[m_pnz_reg_impl.unpack(TileZoneId)]; + return (hc.m_hash + (eta(TileZoneId)-hc.m_etamin)*hc.m_nphi + phi(TileZoneId)); +} + +//---------------------------------------------------------------------------- +inline CaloDM_ID::size_type CaloDM_ID::lar_region_hash_max (void) const +{ + return m_lar_region_hash_max; +} + +//---------------------------------------------------------------------------- +inline CaloDM_ID::size_type CaloDM_ID::lar_zone_hash_max (void) const +{ + return m_lar_zone_hash_max; +} + +//---------------------------------------------------------------------------- +inline CaloDM_ID::size_type CaloDM_ID::tile_region_hash_max (void) const +{ + return m_tile_region_hash_max; +} + +//---------------------------------------------------------------------------- +inline CaloDM_ID::size_type CaloDM_ID::tile_zone_hash_max (void) const +{ + return m_tile_zone_hash_max; +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::lar_region_begin (void) const +{ + return(m_lar_region_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::lar_region_end (void) const +{ + return(m_lar_region_vec.end()); +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::lar_zone_begin (void) const +{ + return(m_lar_zone_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::lar_zone_end (void) const +{ + return(m_lar_zone_vec.end()); +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::tile_region_begin (void) const +{ + return(m_tile_region_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::tile_region_end (void) const +{ + return(m_tile_region_vec.end()); +} + + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::tile_zone_begin (void) const +{ + return(m_tile_zone_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline std::vector<Identifier>::const_iterator CaloDM_ID::tile_zone_end (void) const +{ + return(m_tile_zone_vec.end()); +} + +//---------------------------------------------------------------------------- +inline int CaloDM_ID::pos_neg_z(const Identifier& id) const +{ + return (m_calodm_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloDM_ID::sampling(const Identifier& id) const +{ + return (m_sampling_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloDM_ID::region(const Identifier& id) const +{ + return (m_region_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloDM_ID::eta(const Identifier& id) const +{ + return (m_eta_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloDM_ID::phi(const Identifier& id) const +{ + return (m_phi_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloDM_ID::dmat(const Identifier& id) const +{ + return (m_dmat_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloDM_ID::lar_zone_hash_binary_search (Identifier zoneId) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_lar_zone_vec.begin(),m_lar_zone_vec.end(),zoneId); + if ( it != m_lar_zone_vec.end() ){ + return (it - m_lar_zone_vec.begin()); + } + return (0); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloDM_ID::tile_zone_hash_binary_search (Identifier zoneId) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_tile_zone_vec.begin(),m_tile_zone_vec.end(),zoneId); + if ( it != m_tile_zone_vec.end() ){ + return (it - m_tile_zone_vec.begin()); + } + return (0); +} + +#endif // CALODM_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloGain.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloGain.h new file mode 100755 index 0000000000000000000000000000000000000000..2d7865d50fe41fda4bc8c88a1c6a54dc2654323d --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloGain.h @@ -0,0 +1,25 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/* date of creation : 27/01/2004 */ + +#ifndef CALO_GAIN_H +#define CALO_GAIN_H + +namespace CaloGain { + enum CaloGain { + TILELOWLOW =-16 , + TILELOWHIGH =-15 , + TILEHIGHLOW = -12, + TILEHIGHHIGH = -11, + TILEONELOW =-4, + TILEONEHIGH =-3, + INVALIDGAIN = -1, LARHIGHGAIN = 0, LARMEDIUMGAIN = 1, LARLOWGAIN = 2, + LARNGAIN =3, + UNKNOWNGAIN=4}; +} + + +#endif //CALO_GAIN_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloID.h new file mode 100755 index 0000000000000000000000000000000000000000..aa28146b582cfeb6be262cf71560a2caf17534be --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloID.h @@ -0,0 +1,15 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArEM_ID.h" +#include "CaloIdentifier/LArEM_SuperCell_ID.h" +#include "CaloIdentifier/LArFCAL_ID.h" +#include "CaloIdentifier/LArFCAL_SuperCell_ID.h" +#include "CaloIdentifier/LArMiniFCAL_ID.h" +#include "CaloIdentifier/LArHEC_ID.h" +#include "CaloIdentifier/LArHEC_SuperCell_ID.h" +#include "CaloIdentifier/TileID.h" +#include "CaloIdentifier/Tile_SuperCell_ID.h" +#include "CaloIdentifier/CaloLVL1_ID.h" + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIDHelper.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIDHelper.h new file mode 100644 index 0000000000000000000000000000000000000000..2338b5566aa991fa0fbdedc1ff631852af5bb3fe --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIDHelper.h @@ -0,0 +1,351 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/CaloIDHelper.h + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Base class to factor out code common among Calo ID helpers. + */ + + +#ifndef CALOIDENTIFIER_CALOIDHELPER_H +#define CALOIDENTIFIER_CALOIDHELPER_H + + +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/Identifier.h" +#include "Identifier/IdentifierHash.h" +#include "boost/range/iterator_range.hpp" +#include <vector> +#include <set> +class MultiRange; +class IMessageSvc; +class IdDictRegion; + + +/** + * @brief Base class to factor out code common among Calo ID helpers. + */ +class CaloIDHelper + : public AtlasDetectorID +{ +public: + enum { NOT_VALID=999999 }; + + + typedef Identifier::size_type size_type ; + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + + + /** + * @brief Manage a list of identifiers. + * The identifiers are kept in sorted order, and the index + * of an identifier in this list defines its hash value. + * We supply methods for converting between identifiers + * and the hash value; we also keep track of the corresponding + * ID context. + * + * Most calo ID helpers will use two of these: one for + * channels (cells) and one for regiosn. + */ + class HashGroup + { + public: + /** + * @brief Constructor. + * Starts in an uninitialized state. + */ + HashGroup(); + + + /** + * @brief Initialize. + * @param parent The parent ID helper (in which @c idfunc is defined). + * @param type A string to add on to the name. + * @param full_range The @c MultiRange for to this group. + * @param idfunc Function to convert from an @c ExpandedIdentifier + * to an @c Identifier for this group. + * @param end_index The ending index for the context for this group. + * @return 0 on success; non-zero on failure. + */ + template <class T> + int init (const T& parent, + const std::string& type, + const MultiRange& full_range, + Identifier (T::*idfunc) (const ExpandedIdentifier&) const, + size_type end_index); + + + /** + * @brief Initialize. + * @param name Name of this group (only for error reporting). + * @param ids Set of Identifiers comprising this group. + * @param end_index The ending index for the context for this group. + * @parma msgSvc The global message service + * (may be 0, only for error reporting). + * @param full_range The @c MultiRange corresponding to this group. + * If supplied, the side of the @c ids set is checked + * against the range's cardinality. + * @return 0 on success; non-zero on failure. + */ + int init (const std::string& name, + const std::set<Identifier>& ids, + size_type end_index, + IMessageSvc* msgSvc, + const MultiRange* full_range = 0); + + + /// Return one more than the largest hash code. + size_type hash_max() const; + + /// Return a begin iterator over the group's Identifiers. + id_iterator begin() const; + /// Return an end iterator over the group's Identifiers. + id_iterator end() const; + /// Return an iterator range over the group's Identifiers. + id_range range() const; + + /// Return the identifier for a given hash code (no checking). + Identifier id (IdentifierHash hashId) const; + + + /** + * @brief Look up the hash code corresponding to an Identifier. + * Uses binary search. + * @param id The identifier to look up. + * @param[out] hash_id The corresponding hash code. + * @return 0 if the Identifier was found; non-zero otherwise. + */ + int get_hash (Identifier id, IdentifierHash& hash_id) const; + + + /** + * @brief Look up the hash code corresponding to an Identifier. + * Uses binary search. + * @param id The identifier to look up. + * @return The corresponding hash code. + * An invalid IdentifierHash will be returned if the Identifier + * is not found. + */ + IdentifierHash hash (Identifier id) const; + + /// Return a vector of all Identifiers for this group. + const std::vector<Identifier>& ids() const; + + /// Return the ending index of the context for this group. + size_type end_index() const; + + /// Return the context for this group. + IdContext context() const; + + + private: + /// List of Identifiers for this group. + std::vector<Identifier> m_id_vec; + + /// Ending index for this group's context. + size_type m_end_index; + }; + + + /** + * @brief Constructor. Makes an uninitialized helper. + * To initialize, call @c initialize_base_from_dictionary, + * followed by @c init_channels and @c init_regions, + * and optionally @c fill_vec_of_dict_regions. + * @param name Name of this helper (for error reporting). + */ + CaloIDHelper (const std::string& name); + + + /// Return the @c HashGroup for channels (cells). + const HashGroup& channels() const; + + /// Return the @c HashGroup for regions. + const HashGroup& regions() const; + + /// Return the channel (cell) Identifier for a given hash code (no checking). + Identifier channel_id (IdentifierHash hashId) const; + /// Return the region Identifier for a given hash code (no checking). + Identifier region_id (IdentifierHash hashId) const; + + + /** + * @brief Convert a connected channel (cell) Identifier to a hash code. + * Some subdetector helpers may override this with a faster version. + */ + IdentifierHash channel_hash (Identifier channelId) const; + + + /** + * @brief Convert a connected region Identifier to a hash code. + * Some subdetector helpers may override this with a faster version. + */ + IdentifierHash region_hash (Identifier regionId) const; + + + /** + * @brief Convert a hash code to an Identifier for either channels or regions, + * depending on the context. + * If you know the context at compile-time, @c channel_id and + * @c region_id will be faster (but they don't do range checking). + * @param hash_id The hash code to convert. + * @param[out] id The resulting Identifier. Will be invalid if there + * was an error. + * @param context The context in which to do the conversion + * (specifies whether we want channels or regions). + * @return 0 for success, non-zero for failure (unrecognized context, + * or hash code out of range). + */ + virtual int get_id (const IdentifierHash& hash_id, + Identifier& id, + const IdContext* context = 0 ) const; + + + /** + * @brief Convert an Identifier to a hash code for either channels or regions, + * depending on the context. + * Uses binary search. + * Some of the subdetector-specific helpers define faster + * versions of @c channel_hash and @c region_hash (that, + * however, do less checking). + * @param id The identifier to convert. + * @param[out] hash_id The resulting hash code. Will be invalid if there + * was an error. + * @param context The context in which to do the conversion + * (specifies whether we want channels or regions). + * @return 0 for success, non-zero for failure (unrecognized context + * or Identifier. + */ + virtual int get_hash (const Identifier& id, + IdentifierHash& hash_id, + const IdContext* context = 0 ) const; + + + /// One more than the largest channel (cell) hash code. + size_type channel_hash_max() const; + /// One more than the largest region hash code. + size_type region_hash_max() const; + + + /// Return the context for channels (cells). + IdContext channel_context() const; + /// Return the context for regions. + IdContext region_context() const; + + + /// Return the vector of @c IdDictRegion, accessed via region hash. + const std::vector<const IdDictRegion*>& dictRegions() const; + + + /** + * @brief Return the eta granularity of a region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ + float etaGranularity(const IdentifierHash regHash) const; + + + /** + * @brief Return the phi granularity of a region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ + float phiGranularity(const IdentifierHash regHash) const; + + + /** + * @brief Return the minimum eta of region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ + float eta0(const IdentifierHash regHash) const; + + + /** + * @brief Return the minimum phi of region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ + float phi0(const IdentifierHash regHash) const; + + + /// Return the name for this helper. + std::string name() const; + + /// Return the message service for this helper (may be null). + IMessageSvc* msgSvc() const; + + + +protected: + /** + * @brief Do basic initialization of the helper. + * @param dict_mgr The dictionary manager returned from the parser. + * @param dict_name The dictionary name (eg, `LArCalorimeter'). + * @return 0 on success, non-zero on failure. + */ + int initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& dict_name); + + + /// Return the @c HashGroup for channels (cells). non-const. + HashGroup& channels(); + /// Return the @c HashGroup for regions. non-const. + HashGroup& regions(); + + + /// Return the dictionary for this subdetector. + const IdDictDictionary* dict() const; + + + /** + * @brief Initialize the list of detector regions. + * @c init_regions should have been called first. + * @param group_name The group for this helper. + * @return 0 on success; non-zero on failure. + */ + int fill_vec_of_dict_regions (const std::string& group_name = ""); + + + /** + * @brief Create an expanded Identifier from an Identifier. + * @return 0 on success; non-zero on failure. + * @param id Identifier to convert. + * @param[out] exp_id The expanded Identifier. + * @param context The context in which to do the conversion + * (specifies whether we want channels or regions). + */ + virtual int get_expanded_id (const Identifier& id, + ExpandedIdentifier& exp_id, + const IdContext* context) const = 0; + + +private: + /// Name of this helper. + std::string m_name; + + /// Group of channel (cell) Identifiers. + HashGroup m_channels; + + /// Group of region Identifiers. + HashGroup m_regions; + + /// The dictionary for this helper. + const IdDictDictionary* m_dict; + + /// List of @c IdDictRegion objects. + std::vector<const IdDictRegion*> m_vecOfDictRegions; +}; + + +#include "CaloIdentifier/CaloIDHelper.icc" + + +#endif // not CALOIDENTIFIER_CALOIDHELPER_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIDHelper.icc b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIDHelper.icc new file mode 100644 index 0000000000000000000000000000000000000000..0d592acebebe44ebb8190be785719286ce2884f4 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIDHelper.icc @@ -0,0 +1,307 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/CaloIDHelper.icc + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Base class to factor out code common among Calo ID helpers. + * Inline implementations. + */ + + +/** + * @brief Initialize. + * @param parent The parent ID helper (in which @c idfunc is defined). + * @param type A string to add on to the name. + * @param full_range The @c MultiRange for to this group. + * @param idfunc Function to convert from an @c ExpandedIdentifier + * to an @c Identifier for this group. + * @param end_index The ending index for the context for this group. + * @return 0 on success; non-zero on failure. + */ +template <class T> +inline +int +CaloIDHelper::HashGroup::init (const T& parent, + const std::string& type, + const MultiRange& full_range, + Identifier (T::*idfunc) + (const ExpandedIdentifier&) const, + size_type end_index) +{ + std::set<Identifier> ids; + for (unsigned int i = 0; i < full_range.size(); ++i) { + const Range& range = full_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier id = (parent.*idfunc) (exp_id); + if(!(ids.insert(id)).second){ + MsgStream log (parent.msgSvc(), "CaloIDHelper::HashGroup"); + log << MSG::ERROR << parent.name() << "init_hashes " + << " duplicated id for channel id. nids= " << ids.size() + << " compact Id " << parent.show_to_string(id) + << endreq; + } + } + } + return init (parent.name() + "." + type, + ids, end_index, parent.msgSvc(), &full_range); +} + + +/** + * @brief Return one more than the largest hash code. + */ +inline +CaloIDHelper::size_type CaloIDHelper::HashGroup::hash_max() const +{ + return m_id_vec.size(); +} + + +/** + * @brief Return a begin iterator over the group's Identifiers. + */ +inline +CaloIDHelper::id_iterator CaloIDHelper::HashGroup::begin() const +{ + return m_id_vec.begin(); +} + + +/** + * @brief Return an end iterator over the group's Identifiers. + */ +inline +CaloIDHelper::id_iterator CaloIDHelper::HashGroup::end() const +{ + return m_id_vec.end(); +} + + +/** + * @brief Return a iterator range over the group's Identifiers. + */ +inline +CaloIDHelper::id_range CaloIDHelper::HashGroup::range() const +{ + return id_range(begin(), end()); +} + + +/** + * @brief Return the identifier for a given hash code (no checking). + */ +inline +Identifier CaloIDHelper::HashGroup::id (IdentifierHash hashId) const +{ + return m_id_vec[hashId]; +} + + +/** + * @brief Look up the hash code corresponding to an Identifier. + * Uses binary search. + * @param id The identifier to look up. + * @return The corresponding hash code. + * An invalid IdentifierHash will be returned if the Identifier + * is not found. + */ +inline +IdentifierHash CaloIDHelper::HashGroup::hash (Identifier id) const +{ + IdentifierHash ret; + get_hash (id, ret); + return ret; +} + + +/** + * @brief Return a vector of all Identifiers for this group. + */ +inline +const std::vector<Identifier>& CaloIDHelper::HashGroup::ids() const +{ + return m_id_vec; +} + + +/** + * @brief Return the ending index of the context for this group. + */ +inline +CaloIDHelper::size_type CaloIDHelper::HashGroup::end_index() const +{ + return m_end_index; +} + + +//************************************************************************* + + +/** + * @brief Return the @c HashGroup for channels (cells). + */ +inline +const CaloIDHelper::HashGroup& CaloIDHelper::channels() const +{ + return m_channels; +} + + +/** + * @brief Return the @c HashGroup for regions. + */ +inline +const CaloIDHelper::HashGroup& CaloIDHelper::regions() const +{ + return m_regions; +} + + +/** + * @brief Return the channel Identifier for a given hash code (no checking). + */ +inline +Identifier CaloIDHelper::channel_id (IdentifierHash hashId) const +{ + return m_channels.id(hashId); +} + + +/** + * @brief Return the region Identifier for a given hash code (no checking). + */ +inline +Identifier CaloIDHelper::region_id (IdentifierHash hashId) const +{ + return m_regions.id(hashId); +} + + +/** + * @brief Convert a connected channel (cell) Identifier to a hash code. + * Some subdetector helpers may override this with a faster version. + */ +inline +IdentifierHash CaloIDHelper::channel_hash (Identifier channelId) const +{ + return m_channels.hash (channelId); +} + + +/** + * @brief Convert a connected region Identifier to a hash code. + * Some subdetector helpers may override this with a faster version. + */ +inline +IdentifierHash CaloIDHelper::region_hash (Identifier regionId) const +{ + return m_regions.hash (regionId); +} + + + +/** + * @brief One more than the largest channel (cell) hash code. + */ +inline +CaloIDHelper::size_type CaloIDHelper::channel_hash_max() const +{ + return m_channels.hash_max(); +} + + +/** + * @brief One more than the largest region hash code. + */ +inline +CaloIDHelper::size_type CaloIDHelper::region_hash_max() const +{ + return m_regions.hash_max(); +} + + +/** + * @brief Return the context for channels (cells). + */ +inline +IdContext CaloIDHelper::channel_context() const +{ + return m_channels.context(); +} + + +/** + * @brief Return the context for regions. + */ +inline +IdContext CaloIDHelper::region_context() const +{ + return m_regions.context(); +} + + +/** + * @brief Return the vector of @c IdDictRegion, accessed via region hash. + */ +inline +const std::vector<const IdDictRegion*>& CaloIDHelper::dictRegions() const +{ + return m_vecOfDictRegions; +} + + +/** + * @brief Return the @c HashGroup for channels (cells). non-const. + */ +inline +CaloIDHelper::HashGroup& CaloIDHelper::channels() +{ + return m_channels; +} + + +/** + * @brief Return the @c HashGroup for regions. non-const. + */ +inline +CaloIDHelper::HashGroup& CaloIDHelper::regions() +{ + return m_regions; +} + + +/** + * @brief Return the dictionary for this subdetector. + */ +inline +const IdDictDictionary* CaloIDHelper::dict() const +{ + return m_dict; +} + + +/** + * @brief Return the name for this helper. + */ +inline +std::string CaloIDHelper::name() const +{ + return m_name; +} + + +/** + * @brief Return the message service for this helper. + */ +inline +IMessageSvc* CaloIDHelper::msgSvc() const +{ + return m_msgSvc; +} diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloID_Exception.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloID_Exception.h new file mode 100755 index 0000000000000000000000000000000000000000..ed200e482754b35bb733afa6911e0f80cdb40efb --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloID_Exception.h @@ -0,0 +1,82 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/* date of creation : 10/X/2002 */ + +/* date of last modification : 10/X/2002 */ + +#ifndef CALOID_EXCEPTION_H +#define CALOID_EXCEPTION_H + +#include <string> + +/** + * @brief Exception class for Calo Identifiers + + * @author Johann Collot , Fabienne Ledroit (cloning LArID_Exception) + */ + +class CaloID_Exception { +public: + + /** + * default constructor + */ + CaloID_Exception() ; + + /** + * constructor to be used + */ + CaloID_Exception(std::string lMessage , int lCode) ; + + /** + * set error message + */ + void message(std::string lMessage) ; + + /** + * return error message <br> + */ + virtual std::string message() const ; + + /** + * set error code number<br> + */ + void code(int lCode) ; + + /** + * return error code <br><br> + * + * error codes : <br> + * 0 : no error <br> + * 1 : CaloLVL1_ID::region_id Error <br> + * 2 : CaloLVL1_ID::channel_id Error <br> + * 3 : LArDM::region_id Error <br> + * 4 : LArDM::zone_id Error <br> + * 999 : undefined error <br> + */ + virtual int code() const ; + + virtual operator std::string(); + + /** + * destructor + */ + virtual ~CaloID_Exception() ; + +private: + + /** + * error message + */ + std::string m_message; + + /** + * error code + */ + int m_code; +}; + + +#endif //CALOID_EXCEPTION_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIdManager.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIdManager.h new file mode 100755 index 0000000000000000000000000000000000000000..dc979ddc9963ae90244769bb530b51501ddd7a74 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIdManager.h @@ -0,0 +1,115 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Calorimeter Identifier package + ----------------------------------------- + Copyright (C) 2003 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: CaloIdManager.h,v 1.4 2007-06-15 14:52:20 fledroit Exp $ +//<version> $Name: not supported by cvs2svn $ + +#ifndef CALOID_CALOIDMANAGER_H +# define CALOID_CALOIDMANAGER_H + +#include "CLIDSvc/CLASS_DEF.h" + +class CaloCell_ID; +class CaloCell_SuperCell_ID; +class CaloDM_ID; +class CaloLVL1_ID; +class LArEM_ID; +class LArEM_SuperCell_ID; +class LArFCAL_ID; +class LArFCAL_SuperCell_ID; +class LArMiniFCAL_ID; +class LArHEC_ID; +class LArHEC_SuperCell_ID; +class TileID; +class Tile_SuperCell_ID; +class TTOnlineID; + + +/** +* @brief This class initializes the Calo (LAr and Tile) offline identifiers. +* +* For subdetector specific functionality (online identifiers and +* cabling for example, or Regions), one should use the LArIdManager and TileIdManager +* +*/ +class CaloIdManager +{ + +public: + + CaloIdManager(void); + ~CaloIdManager(void); + + /// Access to singleton + static const CaloIdManager* instance (void); + + /// Access to IdHelper + const CaloCell_ID* getCaloCell_ID (void) const; + const CaloDM_ID* getDM_ID (void) const; + const CaloLVL1_ID* getLVL1_ID (void) const; + const LArEM_ID* getEM_ID (void) const; + const LArFCAL_ID* getFCAL_ID (void) const; + const LArMiniFCAL_ID* getMiniFCAL_ID (void) const; + const LArHEC_ID* getHEC_ID (void) const; + const TileID* getTileID (void) const; + const TTOnlineID* getTTOnlineID (void) const; + const CaloCell_SuperCell_ID*getCaloCell_SuperCell_ID (void) const; + const LArEM_SuperCell_ID* getEM_SuperCell_ID (void) const; + const LArHEC_SuperCell_ID* getHEC_SuperCell_ID (void) const; + const LArFCAL_SuperCell_ID* getFCAL_SuperCell_ID (void) const; + const Tile_SuperCell_ID* getTile_SuperCell_ID (void) const; + + void initialize (void); + bool isInitialized (void) const; + + /// these methods are used within Id initialisation, general public + /// should ignore them : + + void set_helper (const CaloCell_ID* idHelper); + void set_helper (const CaloDM_ID* idHelper); + void set_helper (const CaloLVL1_ID* idHelper); + void set_helper (const LArEM_ID* idHelper); + void set_helper (const LArFCAL_ID* idHelper); + void set_helper (const LArMiniFCAL_ID* idHelper); + void set_helper (const LArHEC_ID* idHelper); + void set_helper (const TileID* idHelper); + void set_helper (const TTOnlineID* idHelper); + void set_helper (const CaloCell_SuperCell_ID* idHelper); + void set_helper (const LArEM_SuperCell_ID* idHelper); + void set_helper (const LArHEC_SuperCell_ID* idHelper); + void set_helper (const LArFCAL_SuperCell_ID* idHelper); + void set_helper (const Tile_SuperCell_ID* idHelper); + +private: + + static CaloIdManager* s_instance; + bool m_isInitialized; + + const CaloCell_ID* m_cell_id; + const CaloDM_ID* m_dm_id; + const CaloLVL1_ID* m_lvl1_id; + const LArEM_ID* m_em_id; + const LArFCAL_ID* m_fcal_id; + const LArMiniFCAL_ID* m_minifcal_id; + const LArHEC_ID* m_hec_id; + const TileID* m_tile_id; + const TTOnlineID* m_ttonline_id; + const CaloCell_SuperCell_ID* m_cell_supercell_id; + const LArEM_SuperCell_ID* m_em_supercell_id; + const LArHEC_SuperCell_ID* m_hec_supercell_id; + const LArFCAL_SuperCell_ID* m_fcal_supercell_id; + const Tile_SuperCell_ID* m_tile_supercell_id; + +}; + +CLASS_DEF( CaloIdManager , 125856940 , 1 ) + + +#endif // CALOID_CALOIDMANAGER_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIdentifierDict.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIdentifierDict.h new file mode 100755 index 0000000000000000000000000000000000000000..c079bbdac6b47ceb8ad9989b145142ea485562a0 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloIdentifierDict.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/** + * @file CaloIdentifierDict.h + * + * @brief This file includes the class for dictionary definitions + * + * @author RD Schaffer <R.D.Schaffer@cern.ch> + * + * $Id: CaloIdentifierDict.h,v 1.8 2009-03-30 11:19:27 tsulaia Exp $ + */ +#ifndef CALOIDENTIFIER_CALOIDENTIFIERDICT_H +#define CALOIDENTIFIER_CALOIDENTIFIERDICT_H + +#include "CaloIdentifier/CaloCell_ID.h" +#include "CaloIdentifier/CaloCell_SuperCell_ID.h" +#include "CaloIdentifier/CaloDM_ID.h" +#include "CaloIdentifier/CaloID.h" +#include "CaloIdentifier/TTOnlineID.h" +#include "CaloIdentifier/TileTBID.h" +#include "CaloIdentifier/CaloIdManager.h" +#include "CaloIdentifier/LArFCAL_ID.h" +#include "CaloIdentifier/LArFCAL_SuperCell_ID.h" + +namespace CaloIdentifer +{ +// PyGate<CaloCell_ID> m_pyGate_CaloCell_ID ; +// LArEM_ID m_lar_em_id ; +// LArHEC_ID m_lar_hec_id; +// LArFCAL_ID m_lar_fcal_id; +// TileID m_tile_id; +// CaloLVL1_ID m_calo_lvl1_id; + + bool instan_iterator_comp (const std::vector<Identifier>& v) + { + return v.begin() != v.end(); + } +} + +#endif // CALOIDENTIFIER_CALOIDENTIFIERDICT_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloLVL1_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloLVL1_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..d107b9f3f4aa8fae8559555c6ebae3fa817ac085 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloLVL1_ID.h @@ -0,0 +1,728 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOLVL1_ID_H +#define CALOLVL1_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "Identifier/Range.h" +#include "IdDict/IdDictFieldImplementation.h" + +#include "CaloIdentifier/CaloID_Exception.h" + +#include "boost/range/iterator_range.hpp" +#include <vector> +#include <algorithm> + + +/** +* +* @class CaloLVL1_ID +* @brief Helper class for offline TT identifiers +* +* This class provides an interface to decode and generate offline identifiers +* for the Calorimeter Trigger Towers. <p> +* +* Definition and range of values for the elements of the +* identifier are (ATL-SOFT-2001-004): <p> +* <pre> +* element range meaning +* ------- ----- ------- +* +* DETZSIDE +/-1 positive/negative +* +* LVL1sampling 0 EM +* " 1 Hadronic +* +* region [0,3] 4 regions of different eta/phi granularity +* +* eta [0,24] region 0(|eta|<2.5), granularity = 0.1 +* " [0,2] region 1(2.5<|eta|<3.1), granularity = 0.2 +* " 0 region 2(3.1<|eta|<3.2), granularity = 0.1 +* " [0,3] region 3(3.2<|eta|<4.9), granularity = 0.4 +* +* phi [0,63] region 0(|eta|<2.5), granularity = 0.1 +* " [0,31] region 1(2.5<|eta|<3.1), granularity = 0.2 +* " [0,31] region 2(3.1<|eta|<3.2), granularity = 0.2 +* " [0,15] region 3(3.2<|eta|<4.9), granularity = 0.4 +* +* +* Added May 2003 : 'extended' identifiers include 'layer' information : +* +* element range meaning +* ------- ----- ------- +* layer [0,3] 0==PS 1==Front 2==Middle 3==Back in regions 0-2 +* [0,1] 0== FCAL2, 1== FCAL3 in region 3 +* +* </pre> +* @author F Ledroit +*/ +class IdentifierHash; + +class CaloLVL1_ID : public AtlasDetectorID +{ +public: + + typedef Identifier::size_type size_type ; + + + CaloLVL1_ID(void); + + virtual ~CaloLVL1_ID(); + + /** build a tower identifier */ + Identifier tower_id (int pos_neg_z, int sampling, int region, + int eta, int phi ) const ; + + /** build a tower identifier */ + Identifier tower_id (const Identifier regionId, + int eta, int phi ) const ; + + /** build a tower identifier */ + Identifier tower_id (const Identifier layerId) const; + + /** build a region (of towers) identifier */ + Identifier region_id ( int pos_neg_z, int sampling, int region ) const; + + /** build a region (of towers) identifier */ + Identifier region_id ( const Identifier tower_or_layerId ) const; + + + /** build a layer identifier */ + Identifier layer_id ( int pos_neg_z, int sampling, int region, + int eta, int phi, int layer ) const; + + /** build a layer identifier */ + Identifier layer_id ( const Identifier towerId, int layer ) const; + + + /** access to IdContext's which define which levels of fields are contained in the id */ + /** id for towers ("reduced" id) */ + IdContext region_context (void) const; + + /** access to IdContext's which define which levels of fields are contained in the id */ + /** id for towers ("normal" id) */ + IdContext tower_context (void) const; + + /** access to IdContext's which define which levels of fields are contained in the id */ + /** id for towers with layers ("extended" id) */ + IdContext layer_context (void) const; + + /** create compact id from hash id (return == 0 for OK)*/ + virtual int get_id (const IdentifierHash& hash_id, Identifier& id, const IdContext* context = 0 ) const; + + /** create hash id from compact id (return == 0 for OK)*/ + virtual int get_hash (const Identifier& id, IdentifierHash& hash_id, const IdContext* context = 0 ) const; + + /** create region id from hash id*/ + Identifier region_id (IdentifierHash region_hash_id) const; + + /** create tower id from hash id*/ + Identifier tower_id (IdentifierHash tower_hash_id) const; + + /** create hash id from tower id*/ + IdentifierHash tower_hash (Identifier towerId) const; + /** create hash id from tower id -- method NOT optimised, please use tower_hash() above */ + IdentifierHash tower_hash_binary_search (Identifier towerId) const; + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); + + /** tower hash table max size */ + size_type tower_hash_max (void) const; + /** layer hash table max size */ + size_type layer_hash_max (void) const; + /** region hash table max size */ + size_type region_hash_max (void) const; + + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + + /** begin iterator over regions */ + id_iterator region_begin () const; + /** end iterator over regions */ + id_iterator region_end () const; + /** range over regions */ + id_range region_range () const; + + /** begin iterator over towers */ + id_iterator tower_begin () const; + /** end iterator over towers */ + id_iterator tower_end () const; + /** range over towers */ + id_range tower_range () const; + + /** begin iterators over layers */ + id_iterator layer_begin () const; + /** end iterators over layers */ + id_iterator layer_end () const; + /** range over layers */ + id_range layer_range () const; + + /** Test wether given tower or layer is part of the Tile Calorimeter + @warning does NOT take as input a REGION identifier */ + bool is_tile (const Identifier id) const; + /** Test wether given tower or layer is part of the EM barrel + @warning does NOT take as input a REGION identifier + @warning excluding 'barrel end'! */ + bool is_emb (const Identifier id) const; + /** Test wether given tower or layer is part of the EM barrel END + @warning does NOT take as input a REGION identifier */ + bool is_barrel_end (const Identifier id) const; + /** Test wether given tower or layer is part of the EM end-cap + @warning does NOT take as input a REGION identifier */ + bool is_emec (const Identifier id) const; + /** Test wether given tower or layer is part of the HEC + @warning does NOT take as input a REGION identifier */ + bool is_hec (const Identifier id) const; + /** Test wether given tower or layer is part of the FCAL + @warning does NOT take as input a REGION identifier */ + bool is_fcal (const Identifier id) const; + + /** + * return pos_neg_z according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * DETZSIDE +/-1 positive/negative + * + * failure returns 0 + * + * </pre> + */ + int pos_neg_z (const Identifier id)const; + + /** + * return sampling according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * LVL1sampling 0 EM + * " 1 Hadronic + * + * failure returns 0 + * + * </pre> + */ + int sampling (const Identifier id)const; + + /** + * return region according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * region [0,3] 4 regions of different eta/phi granularity + * + * failure returns 0 + * + * </pre> + */ + int region (const Identifier id)const; + + /** + * return eta according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * eta [0,24] region 0(|eta|<2.5), granularity = 0.1 + * " [0,2] region 1(2.5<|eta|<3.1), granularity = 0.2 + * " 0 region 2(3.1<|eta|<3.2), granularity = 0.1 + * " [0,3] region 3(3.2<|eta|<4.9), granularity = 0.4 + * + * failure returns 0 + * + * </pre> + */ + int eta (const Identifier id)const; + + /** + * return phi according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * phi [0,63] region 0(|eta|<2.5), granularity = 0.1 + * " [0,31] region 1(2.5<|eta|<3.1), granularity = 0.2 + * " [0,31] region 2(3.1<|eta|<3.2), granularity = 0.2 + * " [0,15] region 3(3.2<|eta|<4.9), granularity = 0.4 + * + * failure returns 0 + * + * </pre> + */ + int phi (const Identifier id)const; + + /** + * return layer according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * layer [0,3] region 0, 1, 2 (|eta|<3.2) : 4 em samplings or 4 had samplings + * " [0,1] region 3 (3.2<|eta|<4.9) : 1 em sampling or 2 had samplings + * + * failure returns 0 + * + * </pre> + */ + int layer (const Identifier id)const; + + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier regId) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier regId) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier regId) const; + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int layer_max(const Identifier regId) const; + + /** access to hashes for neighbours in phi -- towers only (no extended) + return == 0 for neighbours found */ + int get_prev_in_phi(const IdentifierHash& id, IdentifierHash& prev) const; + /** access to hashes for neighbours in phi -- towers only (no extended) + return == 0 for neighbours found */ + int get_next_in_phi(const IdentifierHash& id, IdentifierHash& next) const; + /** access to hashes for neighbours in eta -- towers only (no extended) + return == 0 for neighbours found */ + int get_prev_in_eta(const IdentifierHash& id, IdentifierHash& prev) const; + /** access to hashes for neighbours in eta -- towers only (no extended) + return == 0 for neighbours found */ + int get_next_in_eta(const IdentifierHash& id, IdentifierHash& next) const; + +private: + + + enum {NOT_VALID_HASH = 64000}; + + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + + void tower_id_checks (int pos_neg_z, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception); + void tower_id_checks (const Identifier regionId, + int eta, int phi ) const throw(CaloID_Exception); + void region_id_checks ( int pos_neg_z, int sampling, int region ) const throw(CaloID_Exception); + + void layer_id_checks ( int pos_neg_z, int sampling, int region, + int eta, int phi, int layer ) const throw(CaloID_Exception); + void layer_id_checks ( const Identifier towerId, + int layer ) const throw(CaloID_Exception); + + + int initLevelsFromDict(void) ; + + int init_hashes(void) ; + + int init_neighbors(void) ; + + + size_type m_lvl1_region_index; + size_type m_CALO_INDEX; + size_type m_DETZSIDE_INDEX; + size_type m_SAMPLING_INDEX; + size_type m_REGION_INDEX; + size_type m_ETA_INDEX; + size_type m_PHI_INDEX; + size_type m_LAYER_INDEX; + + const IdDictDictionary* m_dict; + + MultiRange m_full_region_range; + MultiRange m_full_tower_range; + MultiRange m_full_layer_range; + size_type m_tower_hash_max; + size_type m_layer_hash_max; + size_type m_region_hash_max; + std::vector<Identifier> m_tower_vec; + std::vector<Identifier> m_layer_vec; + std::vector<Identifier> m_region_vec; + std::vector<unsigned short> m_prev_phi_vec; + std::vector<unsigned short> m_next_phi_vec; + std::vector<unsigned short> m_prev_eta_vec; + std::vector<unsigned short> m_next_eta_vec; + + /** + @brief small class holding the starting hash value, the min eta and the number of phi bins of each region + + used to CPU-optimize the conversion from an identifier to a hash index + */ + class HashCalc + { + public: + HashCalc() : + m_hash(0), + m_etamin(0), + m_nphi(0) {} + IdentifierHash m_hash; + size_type m_etamin; + size_type m_nphi; + }; + std::vector<HashCalc> m_hash_calcs; + + + + IdDictFieldImplementation m_calo_impl; + IdDictFieldImplementation m_lvl1_impl; + IdDictFieldImplementation m_sampling_impl; + IdDictFieldImplementation m_region_impl; + IdDictFieldImplementation m_eta_impl; + IdDictFieldImplementation m_phi_impl; + IdDictFieldImplementation m_layer_impl; + + IdDictFieldImplementation m_pnz_reg_impl; + +}; + +//using the macros below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( CaloLVL1_ID , 108133391 , 1 ) + + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::tower_id ( int pos_neg_z, int sampling, int region, + int eta, int phi ) const +{ + Identifier result(0); + // Pack fields independently + m_calo_impl.pack (calo_field_value(), result); + m_lvl1_impl.pack (pos_neg_z, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + // Do checks + if(m_do_checks) { + tower_id_checks( pos_neg_z, sampling, region, eta, phi ); + } + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::tower_id ( const Identifier regionId, + int eta, int phi ) const +{ + Identifier result(regionId); + + // Reset the fields and then set the values + m_eta_impl.reset (result); + m_phi_impl.reset (result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + // Do checks + if(m_do_checks) { + tower_id_checks( regionId, eta, phi ); + } + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::region_id ( const Identifier tower_or_layerId ) const +{ + Identifier result(tower_or_layerId); + // reset eta, phi, layer + m_eta_impl.reset(result); + m_phi_impl.reset(result); + m_layer_impl.reset(result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::tower_id ( const Identifier layerId ) const +{ + Identifier result(layerId); + // reset layer + m_layer_impl.reset(result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::region_id (int pos_neg_z, int sampling, int region)const +{ + Identifier result(0); + // Pack fields independently + m_calo_impl.pack (calo_field_value(), result); + m_lvl1_impl.pack (pos_neg_z, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + + // Do checks + if(m_do_checks) { + region_id_checks( pos_neg_z, sampling, region); + } + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::layer_id ( int pos_neg_z, int sampling, int region, + int eta, int phi, int layer ) const +{ + Identifier result(0); + // Pack fields independently + m_calo_impl.pack (calo_field_value(), result); + m_lvl1_impl.pack (pos_neg_z, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_layer_impl.pack (layer, result); + + // Do checks + if(m_do_checks) { + layer_id_checks( pos_neg_z, sampling, region, eta, phi, layer ); + } + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::layer_id ( const Identifier towerId, + int layer ) const +{ + Identifier result(towerId); + + // Reset the fields and then set the values + m_layer_impl.reset (result); + m_layer_impl.pack (layer, result); + // Do checks + if(m_do_checks) { + layer_id_checks( towerId, layer ); + } + + return result; +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::size_type CaloLVL1_ID::tower_hash_max (void) const +{ + return m_tower_hash_max; +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::size_type CaloLVL1_ID::layer_hash_max (void) const +{ + return m_layer_hash_max; +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::size_type CaloLVL1_ID::region_hash_max (void) const +{ + return m_region_hash_max; +} + + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_iterator CaloLVL1_ID::region_begin (void) const +{ + return(m_region_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_iterator CaloLVL1_ID::region_end (void) const +{ + return(m_region_vec.end()); +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_range CaloLVL1_ID::region_range () const +{ + return id_range (region_begin(), region_end()); +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_iterator CaloLVL1_ID::tower_begin (void) const +{ + return(m_tower_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_iterator CaloLVL1_ID::tower_end (void) const +{ + return(m_tower_vec.end()); +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_range CaloLVL1_ID::tower_range () const +{ + return id_range (tower_begin(), tower_end()); +} + +//---------------------------------------------------------------------------- + +inline CaloLVL1_ID::id_iterator CaloLVL1_ID::layer_begin (void) const +{ + return(m_layer_vec.begin()); +} + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_iterator CaloLVL1_ID::layer_end (void) const +{ + return(m_layer_vec.end()); +} + + +//---------------------------------------------------------------------------- +inline CaloLVL1_ID::id_range CaloLVL1_ID::layer_range () const +{ + return id_range (layer_begin(), layer_end()); +} + +//---------------------------------------------------------------------------- +inline int CaloLVL1_ID::pos_neg_z(const Identifier id) const +{ + return (m_lvl1_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloLVL1_ID::sampling(const Identifier id) const +{ + return (m_sampling_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloLVL1_ID::region(const Identifier id) const +{ + return (m_region_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloLVL1_ID::eta(const Identifier id) const +{ + return (m_eta_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloLVL1_ID::phi(const Identifier id) const +{ + return (m_phi_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int CaloLVL1_ID::layer(const Identifier id) const +{ + return (m_layer_impl.unpack(id)); +} + + +//---------------------------------------------------------------------------- +inline bool CaloLVL1_ID::is_tile (const Identifier id) const +{ + // Must first check if this is a normal tile id + if (AtlasDetectorID::is_tile(id)) { + return (true); + } + else { + return (is_lvl1_trig_towers(id) && region(id) == 0 && sampling(id) == 1 && eta(id) < 15); + } +} + +//---------------------------------------------------------------------------- +inline bool CaloLVL1_ID::is_emb (const Identifier id) const +{ + return (is_lvl1_trig_towers(id) && region(id) == 0 && sampling(id) == 0 && eta(id) < 14); +} + +//---------------------------------------------------------------------------- +inline bool CaloLVL1_ID::is_barrel_end (const Identifier id) const +{ + return (is_lvl1_trig_towers(id) && region(id) == 0 && sampling(id) == 0 && eta(id) == 14); +} + +//---------------------------------------------------------------------------- +inline bool CaloLVL1_ID::is_emec (const Identifier id) const +{ + return (is_lvl1_trig_towers(id) && sampling(id) == 0 && + ((region(id) == 0 && eta(id) > 14) || region(id) == 1 || region(id) == 2 )); +} + +//---------------------------------------------------------------------------- +inline bool CaloLVL1_ID::is_hec (const Identifier id) const +{ + return (is_lvl1_trig_towers(id) && sampling(id) == 1 && + ((region(id) == 0 && eta(id) > 14) || region(id) == 1 || region(id) == 2 )); +} + +//---------------------------------------------------------------------------- +inline bool CaloLVL1_ID::is_fcal (const Identifier id) const +{ + return (is_lvl1_trig_towers(id) && region(id) == 3 ); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::region_id (IdentifierHash region_hash_id) const +{ + return(m_region_vec[region_hash_id]); +} + +//---------------------------------------------------------------------------- +inline Identifier CaloLVL1_ID::tower_id (IdentifierHash tower_hash_id) const +{ + return(m_tower_vec[tower_hash_id]); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloLVL1_ID::tower_hash (Identifier towerId) const +{ + const HashCalc& hc = m_hash_calcs[m_pnz_reg_impl.unpack(towerId)]; + return (hc.m_hash + (eta(towerId)-hc.m_etamin)*hc.m_nphi + phi(towerId)); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash CaloLVL1_ID::tower_hash_binary_search (Identifier towerId) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_tower_vec.begin(),m_tower_vec.end(),towerId); + if ( it != m_tower_vec.end() ){ + return (it - m_tower_vec.begin()); + } + return (0); +} + + + +#endif // CALOLVL1_ID_H + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/CaloNeighbours.h b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloNeighbours.h new file mode 100755 index 0000000000000000000000000000000000000000..5f18578f929a897139cdfe5b1331ac80f4af2f72 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/CaloNeighbours.h @@ -0,0 +1,117 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOIDENTIFIER_CALONEIGHBOURS_H +#define CALOIDENTIFIER_CALONEIGHBOURS_H +//----------------------------------------------------------------------- +// File and Version Information: +// +//$Id: CaloNeighbours.h,v 1.2 2008-12-13 04:57:11 ssnyder Exp $ +// +// +// Description: Initialize and provide access to neighbours accross +// the calorimeter systems. The neighbours within a +// a single system are provided by the individual helper. +// +// Environment: +// Software developed for the ATLAS Detector at the CERN LHC +// +// Author List: +// Sven Menke +// +//----------------------------------------------------------------------- +#include <string> +#include <map> +#include <vector> +#include "CaloIdentifier/CaloCell_ID.h" +#include "Identifier/Range.h" +class ExpandedIdentifier; + +enum NEIGHBOURTYPE {nextInCalo,prevInCalo}; + +struct ltIdHash{ + bool operator()(const IdentifierHash& id1, const IdentifierHash& id2) const + { + return ((unsigned int)id1) < ((unsigned int)id2); + } +}; + + +class CaloNeighbourRegion { + public: + + enum {SIDE = 2, SAMPL = 3, REGION = 4, ETA = 5, PHI = 6, TILESECTION = 1, TILEPHI = 3, TILEETA = 4, TILESAMPL = 5, FCALETA = 4, FCALPHI = 5}; + + CaloNeighbourRegion(const std::string name, + const CaloCell_Base_ID * theCaloId); + + virtual ~CaloNeighbourRegion(); + + void setType(const NEIGHBOURTYPE type); + void setSourceRange(const Range & theRange); + void setTargetRange(const Range & theRange); + void setSide(const int side1, const int side2); + void setPhi(const int phi1, const int phi2); + int setNeighbours(ExpandedIdentifier& id1, std::vector<ExpandedIdentifier>& id2, std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapPlus, std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapMinus); + + void initializeVectors(std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapPlus, std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapMinus); + + int getNeighbours(const IdentifierHash caloHash, std::vector<IdentifierHash>& neighbourList) const; + + inline NEIGHBOURTYPE getType() const { + return m_type; + } + + inline const std::string getName() const { + return m_name; + } + + private: + + int getId(ExpandedIdentifier& id, Identifier &rID, const Range &theRange, const int side = +1, const int dphi = 0) const; + + std::string m_name; + NEIGHBOURTYPE m_type; + const CaloCell_Base_ID * m_calo_id; + + Range m_sourceRange,m_targetRange; + + bool m_hasPhi; + int m_iPhiSource,m_iPhiTarget; + + bool m_hasSide; + int m_iSideSource,m_iSideTarget; + + bool m_isValidMinus,m_isValidPlus; + + IdentifierHash m_minHashMinus,m_maxHashMinus,m_minHashPlus,m_maxHashPlus; + std::vector< std::vector<IdentifierHash>* > m_neighbours_plus; + std::vector< std::vector<IdentifierHash>* > m_neighbours_minus; +}; + +class CaloNeighbours { + +public: + + // default constructor + CaloNeighbours(); + + // default destructor + virtual ~CaloNeighbours(); + + int initialize(const CaloCell_Base_ID* caloID, std::string filename); + + int get_nextInCalo(const IdentifierHash &id,std::vector<IdentifierHash>& neighbourList) const; + + int get_prevInCalo(const IdentifierHash &id,std::vector<IdentifierHash>& neighbourList) const; + + int get_neighbours(const IdentifierHash &id, const std::vector<CaloNeighbourRegion*> ®ions, std::vector<IdentifierHash>& neighbourList) const; + + private: + const CaloCell_Base_ID * m_calo_id; + + std::vector<CaloNeighbourRegion*> m_next_regions; + std::vector<CaloNeighbourRegion*> m_prev_regions; +}; +#endif // CALOIDENTIFIER_CALONEIGHBOURS_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_Base_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_Base_ID.h new file mode 100644 index 0000000000000000000000000000000000000000..c14038831af2da6527d7068d44431f39c9d8a0f2 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_Base_ID.h @@ -0,0 +1,522 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArEM_Base_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date Aug, 2012 + * @brief Factor out code common between LArEM_ID and LArEM_SuperCell_ID. + */ + + +#ifndef CALOIDENTIFIER_LAREM_BASE_ID_H +#define CALOIDENTIFIER_LAREM_BASE_ID_H + + +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "CaloIdentifier/LArNeighbours.h" +#include "CaloIdentifier/CaloIDHelper.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "boost/range/iterator_range.hpp" + + +class IdDictRegion; +class LArEM_region; + + + +/** + * This class factors out code common between LArEM_ID and LArEM_SuperCell_ID. + */ +class LArEM_Base_ID : public CaloIDHelper +{ +public: + typedef Identifier::size_type size_type ; + + /** Constructor. If SUPERCELL is true, this helper is for supercells. */ + LArEM_Base_ID (const std::string& name, bool supercell); + + ~LArEM_Base_ID(void); + + /** Build a cell identifier from an expanded identifier. */ + Identifier region_id (const ExpandedIdentifier& exp_id) const; + + /** Build a cell identifier from an expanded identifier. */ + Identifier channel_id (const ExpandedIdentifier& exp_id) const; + + /** build a region identifier for a connected channel */ + Identifier region_id (int barrel_ec, int sampling, int region ) const; + + /** build a cell identifier for a connected channel */ + Identifier channel_id (int barrel_ec, int sampling, int region, + int eta, int phi ) const; + + /** build a cell identifier for disconnected channels */ + Identifier disc_channel_id (const ExpandedIdentifier& exp_id) const; + + /** build a region identifier for disconnected channels */ + Identifier disc_region_id (int barrel_ec, int sampling, int region ) const; + + /** build a cell identifier for disconnected channels */ + Identifier disc_channel_id (int barrel_ec, int sampling, int region, + int eta, int phi ) const; + + + /** allows to know in which region is a channel/cell + -- valid for both kinds of channels (connected or not) */ + Identifier region_id (const Identifier channelId) const ; + + /** allows to build a cell id starting from a region id (e.g. from descriptors) + -- valid for both kinds of channels (connected or not) */ + Identifier channel_id (const Identifier regionId, + int eta, int phi ) const; + + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const IdentifierHash hashId) const; + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const Identifier channelId) const; + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_connected (int barrel_ec, int sampling, int region, int eta, int phi) const throw(LArID_Exception); + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_disconnected (int barrel_ec, int sampling, int region, int eta, int phi) const throw(LArID_Exception); + + /** create hash id from connected channel id */ + IdentifierHash channel_hash (Identifier channelId) const; + /** create hash id from connected channel id -- method NOT optimised, please use channel_hash() above */ + IdentifierHash channel_hash_binary_search (Identifier channelId) const; + + /** create channel id from hash id (valid for all channels, connected + diconnected) */ + Identifier disc_channel_id (IdentifierHash disc_channel_hash_id) const; + + /** create hash id from disconnected channel id*/ + IdentifierHash disc_channel_hash (Identifier disc_channel_id) const; + + /** cell hash table max size (all channels: connected + disconnected) */ + size_type disc_channel_hash_max (void) const; + /** disconnected cell/channel hash table min index */ + size_type disc_channel_hash_min (void) const; + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + + /** begin iterator over set of Region Identifiers */ + id_iterator reg_begin (void) const; + /** end iterator over set of Region Identifiers */ + id_iterator reg_end (void) const; + /** Range over set of Region Identifiers. */ + id_range reg_range () const; + + /** begin iterator over full set of EM Identifiers */ + id_iterator em_begin (void) const; + /** end iterator over full set of EM Identifiers */ + id_iterator em_end (void) const; + /** Range over full set of EM Identifiers. */ + id_range em_range () const; + + /** begin iterator over full set of EM Identifiers for DISconnected channels (only) */ + id_iterator disc_em_begin (void) const; + /** end iterator over full set of EM Identifiers for disconnected channels (only) */ + id_iterator disc_em_end (void) const; + /** Range over full set of EM Identifiers for DISconnected channels (only) */ + id_range disc_em_range () const; + + /** provide access to connected channel id vector, accessed via hash */ + const std::vector<Identifier>& channel_ids() const; + + /** test if the id belongs to the EM barrel -- valid for both connected and disconnected channels */ + bool is_em_barrel (const Identifier id) const; + + /** test if the id belongs to the EM Endcap -- valid for both connected and disconnected channels */ + bool is_em_endcap (const Identifier id) const; + + /** test if the id belongs to the EM Endcap inner wheel -- valid for both connected and disconnected channels */ + bool is_em_endcap_inner (const Identifier id) const; + + /** test if the id belongs to the EM Endcap outer wheel -- valid for both connected and disconnected channels */ + bool is_em_endcap_outer (const Identifier id) const; + + + + + /** + * return barrel_ec according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * + * barrel_ec +/-1 positive/negative barrel - A/C side or P/M half barrel + * " +/-2 positive/negative endcap outer wheel - A/C side + * " +/-3 positive/negative endcap inner wheel - A/C side + * + * </pre> + */ + int barrel_ec (const Identifier id)const; + + /** + * return sampling according to : <br> + * + * element range meaning + * ------- ----- ------- + * + * sampling 0 both presamplers + * " [1,3] barrel and endcap outer wheel + * " [1,2] endcap inner wheel + * + * </pre> + */ + int sampling (const Identifier id)const; + + + /** + * return region according to : <br> + * + * <pre> + * + * element range meaning + * ------- ----- ------- + * + * region 0 both presamplers + * " [0,1] barrel sampling 1 and 2 + * " 0 barrel sampling 3 + * " + * " [0,5] endcap outer wheel sampling 1 (cells) + * " 0,[2,5] endcap outer wheel sampling 1 (supercells) + * " 0 endcap inner wheel sampling 1 (cells) + * " [0,1] endcap inner wheel sampling 1 (supercells) + * " [0,1] endcap outer wheel sampling 2 + * " 0 endcap inner wheel sampling 2 (cells) + * " [0,1] endcap inner wheel sampling 2 (supercells) + * " 0 endcap outer wheel sampling 3 + * + * </pre> + */ + int region (const Identifier id)const; + + /** + * return eta according to : <br> + * + * <pre> + * Cells: + * element range meaning + * ------- ----- ------- + * + * eta for barrel [0,60] presampler - 0< eta <1.52 - deta is approximately equal to 0.025 + * " [0,447] sampling 1 region 0 0 < eta < 1.4 - deta = 0.025/8 + * " [0,2] sampling 1 region 1 1.4 < eta < 1.475 - deta = 0.025 + * " [0,55] sampling 2 region 0 0 < eta < 1.4 - deta = 0.025 + * " 0 sampling 2 region 1 1.4 < eta < 1.475 - deta = 0.075 + * " [0,26] sampling 3 region 0 0 < eta < 1.35 - deta = 0.050 + * " + * + * eta for endcap [0,11] presampler sampling 0 region 0 1.5 < eta < 1.8 - deta = 0.025 + * " 0 outer wheel sampling 1 region 0 1.375 < eta < 1.425 - deta = 0.05 + * " [0,2] outer wheel sampling 1 region 1 1.425 < eta < 1.5 - deta = 0.025 + * " [0,95] outer wheel sampling 1 region 2 1.5 < eta < 1.8 - deta = 0.025/8 + * " [0,47] outer wheel sampling 1 region 3 1.8 < eta < 2.0 - deta = 0.025/6 + * " [0,63] outer wheel sampling 1 region 4 2.0 < eta < 2.4 - deta = 0.025/4 + * " [0,3] outer wheel sampling 1 region 5 2.4 < eta < 2.5 - deta = 0.025 + * " [0,6] inner wheel sampling 1 region 0 2.5 < eta < 3.2 - deta = 0.1 + * " 0 outer wheel sampling 2 region 0 1.375 < eta < 1.425 - deta = 0.05 + * " [0,42] outer wheel sampling 2 region 1 1.425 < eta < 2.5 - deta = 0.025 + * " [0,6] inner wheel sampling 2 region 0 2.5 < eta < 3.2 - deta = 0.1 + * " [0,19] outer wheel sampling 3 region 0 1.5 < eta < 2.5 - deta = 0.05 + * + * Supercells: + * element range meaning + * ------- ----- ------- + * + * eta for barrel [0,15] presampler - 0< eta <1.52 - deta is approximately equal to 0.1 + * " [0,55] sampling 1 region 0 0 < eta < 1.4 - deta = 0.025 + * " [0,2] sampling 1 region 1 1.4 < eta < 1.475 - deta = 0.025 + * " [0,55] sampling 2 region 0 0 < eta < 1.4 - deta = 0.025 + * " 0 sampling 2 region 1 1.4 < eta < 1.475 - deta = 0.075 + * " [0,13] sampling 3 region 0 0 < eta < 1.35 - deta = 0.1 + * " + * + * eta for endcap [0,2] presampler sampling 0 region 0 1.5 < eta < 1.8 - deta = 0.1 + * " 0 outer wheel sampling 1 region 0 1.375 < eta < 1.425 - deta = 0.125 + * " [0,11] outer wheel sampling 1 region 2 1.5 < eta < 1.8 - deta = 0.025 + * " [0,7] outer wheel sampling 1 region 3 1.8 < eta < 2.0 - deta = 0.033 + * " [0,15] outer wheel sampling 1 region 4 2.0 < eta < 2.4 - deta = 0.025 + * " 0 outer wheel sampling 1 region 5 2.4 < eta < 2.5 - deta = 0.1 + * " [0,2] inner wheel sampling 1 region 0 2.5 < eta < 3.1 - deta = 0.2 + * " 0 inner wheel sampling 1 region 1 3.1 < eta < 3.2 - deta = 0.1 + * " 0 outer wheel sampling 2 region 0 1.375 < eta < 1.425 - deta = 0.05 + * " [0,42] outer wheel sampling 2 region 1 1.425 < eta < 2.5 - deta = 0.025 + * " [0,2] inner wheel sampling 2 region 0 2.5 < eta < 3.1 - deta = 0.2 + * " 0 inner wheel sampling 2 region 0 3.1 < eta < 3.2 - deta = 0.1 + * " [0,9] outer wheel sampling 3 region 0 1.5 < eta < 2.5 - deta = 0.1 + * + * -999 if disconnected channel + * </pre> + */ + int eta (const Identifier id)const; + + /** + * return phi according to : <br> + * + * <pre> + * element range meaning + * ------- ----- ------- + * + * + * Cells: + * phi for barrel [0,63] barrel presampler - dphi = 0.1 + * " [0,63] sampling 1 region 0 - dphi = 0.1 + * " [0,255] sampling 1 region 1 - dphi = 0.025 + * " [0,255] sampling 2 region 0 - dphi = 0.025 + * " [0,255] sampling 2 region 1 - dphi = 0.025 + * " [0,255] sampling 3 region 1 - dphi = 0.025 + * + * + * + * phi for endcap [0,63] presampler sampling 0 region 0 - dphi = 0.1 + * " [0,63] outer wheel sampling 1 regions [0,5] - dphi = 0.1 + * " [0,63] inner wheel sampling 1 regions 0 - dphi = 0.1 + * " [0,255] outer wheel sampling 2 regions [0,1] - dphi = 0.025 + * " [0,63] inner wheel sampling 2 region 0 - dphi = 0.1 + * " [0,255] outer wheel sampling 3 region 0 - dphi = 0.025 + * + * Supercells: + * phi for barrel [0,63] barrel presampler - dphi = 0.1 + * " [0,63] sampling 1 region 0 - dphi = 0.1 + * " [0,63] sampling 1 region 1 - dphi = 0.1 + * " [0,63] sampling 2 region 0 - dphi = 0.1 + * " [0,63] sampling 2 region 1 - dphi = 0.1 + * " [0,63] sampling 3 region 1 - dphi = 0.1 + * + * + * + * phi for endcap [0,63] presampler sampling 0 region 0 - dphi = 0.1 + * " [0,63] outer wheel sampling 1 regions [0,5] - dphi = 0.1 + * " [0,31] inner wheel sampling 1 regions 0 - dphi = 0.2 + * " [0,63] outer wheel sampling 2 regions [0,1] - dphi = 0.1 + * " [0,31] inner wheel sampling 2 region 0 - dphi = 0.2 + * " [0,63] outer wheel sampling 3 region 0 - dphi = 0.1 + * + * -999 if disconnected channel + * </pre> + */ + int phi (const Identifier id)const; + + + /** Test if the identifier represents a supercell. */ + bool is_supercell (const Identifier id)const; + + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier regId) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier regId) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_min(const Identifier regId) const; + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier regId) const; + + + /** eta index -- only for checks, since dummy for disconnected channels */ + int disc_eta (const Identifier id)const; + /** phi index -- only for checks, since dummy for disconnected channels */ + int disc_phi (const Identifier id)const; + + /** initialization from the identifier dictionary*/ + int initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name); + + + /** True if the + and - sides of the calorimeter are identical (true layout). + False if they are mirror reflections (used in early MC). */ + bool twoSymSides() const; + + + /** access to hashes for neighbours return == 0 for neighbours found <br> + option = prevInPhi, nextInPhi, prevInEta, nextInEta, faces2D, corners2D, all2D, + prevInSamp, nextInSamp, upAndDown, prevSubDet, nextSubDet, all3D <br> + + in 'nextInEta', 'nextInSamp', 'nextSubDet', next means 'away from the centre of Atlas' <br> + in 'prevInEta', 'prevInSamp', 'prevSubDet', prev means 'towards the centre of Atlas' <br> + faces2D means prevInPhi + nextInPhi + prevInEta + nextInEta <br> + corners2D means corners in the same sampling, + not only touching cells but all corner cells forming a square (in case of change in eta granularity ) <br> + all2D means faces2D + corners2D <br> + upAndDown means prevInSamp + nextInSamp <br> + prevSubDet and nextSubDet mean across barrel/EC boundary <br> + all3D means all2D + upAndDown + prevSubDet + nextSubDet <br> */ + int get_neighbours(const IdentifierHash id, + const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const; + + + using CaloIDHelper::region_id; + using CaloIDHelper::region_hash; + using CaloIDHelper::channel_id; + // Inherited from CaloIDHelper: + // + //Identifier channel_id (IdentifierHash hashId) const; + //Identifier region_id (IdentifierHash hashId) const; + //IdentifierHash region_hash (Identifier regionId) const; + //size_type channel_hash_max() const; + //size_type region_hash_max() const; + //IdContext channel_context() const; + //IdContext region_context() const; + //const std::vector<const IdDictRegion*>& dictRegions() const; + //float etaGranularity(const IdentifierHash regHash) const; + //float phiGranularity(const IdentifierHash regHash) const; + //float eta0(const IdentifierHash regHash) const; + //float phi0(const IdentifierHash regHash) const; + //virtual int get_id (const IdentifierHash& hash_id, + // Identifier& id, + // const IdContext* context = 0 ) const; + //virtual int get_hash (const Identifier& id, + // IdentifierHash& hash_id, + // const IdContext* context = 0 ) const; + + +private: + enum {NOT_VALID_HASH = 256000}; + + // Check methods + void region_id_checks (int barrel_ec, int sampling, int region ) const throw(LArID_Exception); + void channel_id_checks (int barrel_ec, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception); + void channel_id_checks (const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception); + + void disc_region_id_checks (int barrel_ec, int sampling, int region ) const throw(LArID_Exception); + void disc_channel_id_checks (int barrel_ec, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception); + void disc_channel_id_checks (const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception); + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + virtual int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + int get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + int phi_min_init(const Identifier regId) const; + + int initLevelsFromDict (const std::string& group_name); + int init_hashes(void) ; + int init_disc_hashes(void) ; + + + int get_prevInPhi(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_nextInPhi(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_prevInEta(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const; + + int get_nextInEta(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, const unsigned int& maxHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const; + + int get_prevInSamp(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_nextInSamp(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_prevInSubdet(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_nextInSubdet(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const; + + + + int init_neighbors(void) ; + + +private: + unsigned m_slar; + + bool m_two_sym_sides; + + MultiRange m_full_region_range; + MultiRange m_full_em_range; + MultiRange m_full_disc_region_range; + MultiRange m_full_disc_em_range; + + size_type m_em_region_index; + size_type m_LAR_INDEX; + size_type m_EM_INDEX; + size_type m_BEC_INDEX; + size_type m_SAMPLING_INDEX; + size_type m_REGION_INDEX; + size_type m_ETA_INDEX; + size_type m_PHI_INDEX; + size_type m_SLAR_INDEX; + + CaloIDHelper::HashGroup m_disc_channels; + + IdDictFieldImplementation m_lar_impl; + IdDictFieldImplementation m_em_impl; + IdDictFieldImplementation m_bec_impl; + IdDictFieldImplementation m_sampling_impl; + IdDictFieldImplementation m_region_impl; + IdDictFieldImplementation m_eta_impl; + IdDictFieldImplementation m_phi_impl; + + IdDictFieldImplementation m_slar_impl; + + std::vector<int> m_vecOfPhiMin; + + /** + @brief small class holding the starting hash value, the min eta and the number of phi bins of each region + + used to CPU-optimize the conversion from an identifier to a hash index + */ + class HashCalc + { + public: + HashCalc() : + m_hash(0), + m_etamin(0), + m_phimin(0), + m_nphi(0) {} + IdentifierHash m_hash; + size_type m_etamin; + size_type m_phimin; + size_type m_nphi; + }; + std::vector<HashCalc> m_hash_calcs; + + IdDictFieldImplementation m_bec_reg_impl; + + std::vector<Identifier> m_disc_region_vec; + std::vector<LArEM_region*> m_vecOfRegions; + std::vector<unsigned> m_cells; // stores starting hash number of each region, regions are ordered by hash so this array is ordered as well + + LArEM_Base_ID (const LArEM_Base_ID&); + LArEM_Base_ID& operator= (const LArEM_Base_ID&); +}; + + +#include "CaloIdentifier/LArEM_Base_ID.icc" + + +#endif // not CALOIDENTIFIER_LAREM_BASE_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_Base_ID.icc b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_Base_ID.icc new file mode 100644 index 0000000000000000000000000000000000000000..914d952bfefcbbe9a10ee22454089158fa638052 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_Base_ID.icc @@ -0,0 +1,377 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArEM_Base_ID.icc + * @author scott snyder <snyder@bnl.gov> + * @date Aug, 2012 + * @brief Inline implementations for LArEM_Base_ID. + */ + + +//-------------------- +// Inline definitions +//-------------------- + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::region_id ( const ExpandedIdentifier& exp_id) const +{ + return this->region_id ( exp_id[m_BEC_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::channel_id ( const ExpandedIdentifier& exp_id) const +{ + return this->channel_id (exp_id[m_BEC_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::region_id (int barrel_ec, int sampling, int region) const +{ + + // Do checks + if(m_do_checks) { + region_id_checks ( barrel_ec, sampling, region ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_em_impl.pack (lar_em_field_value(), result); + m_bec_impl.pack (barrel_ec, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::channel_id ( int barrel_ec, int sampling, int region, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + channel_id_checks( barrel_ec, sampling, region, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_em_impl.pack (lar_em_field_value(), result); + m_bec_impl.pack (barrel_ec, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::disc_region_id (int barrel_ec, int sampling, int region) const +{ + // Do checks + if(m_do_checks) { + disc_region_id_checks ( barrel_ec, sampling, region ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_em_impl.pack (-1, result); + m_bec_impl.pack (barrel_ec, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::disc_channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_channel_id (exp_id[m_BEC_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::disc_channel_id ( int barrel_ec, int sampling, int region, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + disc_channel_id_checks( barrel_ec, sampling, region, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_em_impl.pack (-1, result); + m_bec_impl.pack (barrel_ec, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::region_id ( const Identifier channelId ) const +{ + Identifier result(channelId); + // reset eta/phi + m_eta_impl.reset(result); + m_phi_impl.reset(result); + m_slar_impl.pack(m_slar,result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArEM_Base_ID::channel_id ( const Identifier regionId, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + if(is_connected(regionId)) { + channel_id_checks( regionId, eta, phi ); + } else { + disc_channel_id_checks( regionId, eta, phi ); + } + } + + Identifier result(regionId); + + // Reset the fields and then set the values + m_eta_impl.reset (result); + m_phi_impl.reset (result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::is_connected(const IdentifierHash hashId) const +{ + return ( hashId < channels().hash_max() ); +} + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::is_connected(const Identifier channelId) const +{ + return ( m_em_impl.unpack(channelId) == 1 ); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArEM_Base_ID::channel_hash (Identifier channelId) const +{ + const HashCalc& hc = m_hash_calcs[m_bec_reg_impl.unpack(channelId)]; + return (hc.m_hash + (eta(channelId)-hc.m_etamin)*hc.m_nphi + (phi(channelId)-hc.m_phimin) ); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArEM_Base_ID::channel_hash_binary_search (Identifier channelId) const +{ + return CaloIDHelper::channel_hash (channelId); +} + +//---------------------------------------------------------------------------- +inline Identifier LArEM_Base_ID::disc_channel_id (IdentifierHash disc_channel_hash_id) const +{ + if(disc_channel_hash_id < channels().hash_max()) { + return channel_id (disc_channel_hash_id); + } + else { + return m_disc_channels.id (disc_channel_hash_id - channels().hash_max()); + } +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArEM_Base_ID::disc_channel_hash (Identifier disc_channel_id) const +{ + if (is_connected(disc_channel_id)) { + const HashCalc& hc = m_hash_calcs[m_bec_reg_impl.unpack(disc_channel_id)]; + return (hc.m_hash + (eta(disc_channel_id)-hc.m_etamin)*hc.m_nphi + phi(disc_channel_id)-hc.m_phimin ); + } + else { + IdentifierHash hash = m_disc_channels.hash (disc_channel_id); + if (hash.is_valid()) + hash += channels().hash_max(); + return hash; + } +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::size_type LArEM_Base_ID::disc_channel_hash_max (void) const +{ + return channels().hash_max() + m_disc_channels.hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::size_type LArEM_Base_ID::disc_channel_hash_min (void) const +{ + return channels().hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_iterator LArEM_Base_ID::reg_begin (void) const +{ + return regions().begin(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_iterator LArEM_Base_ID::reg_end (void) const +{ + return regions().end(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_range LArEM_Base_ID::reg_range (void) const +{ + return regions().range(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_iterator LArEM_Base_ID::em_begin (void) const +{ + return channels().begin(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_iterator LArEM_Base_ID::em_end (void) const +{ + return channels().end(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_range LArEM_Base_ID::em_range (void) const +{ + return channels().range(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_iterator LArEM_Base_ID::disc_em_begin (void) const +{ + return m_disc_channels.begin(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_iterator LArEM_Base_ID::disc_em_end (void) const +{ + return m_disc_channels.end(); +} + +//---------------------------------------------------------------------------- +inline LArEM_Base_ID::id_range LArEM_Base_ID::disc_em_range (void) const +{ + return m_disc_channels.range(); +} + +//---------------------------------------------------------------------------- +inline const std::vector<Identifier>& LArEM_Base_ID::channel_ids() const +{ + return channels().ids(); +} + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::is_em_barrel(const Identifier id) const +{ + return (is_lar_em(id) && (abs(barrel_ec(id)))==1); +} + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::is_em_endcap(const Identifier id) const +{ + return (is_lar_em(id) && (abs(barrel_ec(id)))>1); +} + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::is_em_endcap_outer(const Identifier id) const +{ + return (is_lar_em(id) && (abs(barrel_ec(id)))==2); +} + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::is_em_endcap_inner(const Identifier id) const +{ + return (is_lar_em(id) && (abs(barrel_ec(id)))==3); +} + +//---------------------------------------------------------------------------- +inline int LArEM_Base_ID::barrel_ec(const Identifier id)const +{ + return (m_bec_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArEM_Base_ID::sampling(const Identifier id)const +{ + return (m_sampling_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArEM_Base_ID::region(const Identifier id)const +{ + return (m_region_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArEM_Base_ID::eta(const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_eta_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArEM_Base_ID::phi(const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_phi_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArEM_Base_ID::phi_min(const Identifier regId) const +{ + IdentifierHash regHash = region_hash(regId); + unsigned int index = regHash; + return (m_vecOfPhiMin[index]); +} + + +//---------------------------------------------------------------------------- +inline bool LArEM_Base_ID::twoSymSides() const +{ + return m_two_sym_sides; +} + + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..f6c44fb60a8bbbdd9e91e6dda82a7788817540fe --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_ID.h @@ -0,0 +1,199 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LAREM_ID_H +#define LAREM_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "IdDict/IdDictDefs.h" + +#include "CaloIdentifier/LArID_Exception.h" +#include "CaloIdentifier/LArEM_Base_ID.h" +#include "SGTools/BaseInfo.h" + +#include <vector> +#include <algorithm> + +/** +* +* @class LArEM_ID +* @brief Helper class for LArEM offline identifiers +* +* This class provides an interface to decode and generate offline identifiers +* for the LAr EM detector subsystem. <p> +* +* Definition and range of values for the elements of the identifier are: <p> +* <pre> +* Connected channels : +* ------------------ +* element range meaning +* ------- ----- ------- +* +* barrel_ec +/-1 positive/negative barrel - A/C side or P/M half barrel +* " +/-2 positive/negative endcap outer wheel - A/C side +* " +/-3 positive/negative endcap inner wheel - A/C side +* +* sampling 0 both presamplers +* " [1,3] barrel and endcap outer wheel +* " [1,2] endcap inner wheel +* +* region 0 both presamplers +* " [0,1] barrel sampling 1 and 2 +* " 0 barrel sampling 3 +* " +* " [0,5] endcap outer wheel sampling 1 +* " 0 endcap inner wheel sampling 1 +* " [0,1] endcap outer wheel sampling 2 +* " 0 endcap inner wheel sampling 2 +* " 0 endcap outer wheel sampling 3 +* +* +* eta for barrel [0,60] presampler - 0< eta <1.52 - deta is approximately equal to 0.025 +* " [0,447] sampling 1 region 0 0 < eta < 1.4 - deta = 0.025/8 +* " [0,2] sampling 1 region 1 1.4 < eta < 1.475 - deta = 0.025 +* " [0,55] sampling 2 region 0 0 < eta < 1.4 - deta = 0.025 +* " 0 sampling 2 region 1 1.4 < eta < 1.475 - deta = 0.075 +* " [0,26] sampling 3 region 0 0 < eta < 1.35 - deta = 0.050 +* " +* phi for barrel [0,63] barrel presampler - dphi = 0.1 +* " [0,63] sampling 1 region 0 - dphi = 0.1 +* " [0,255] sampling 1 region 1 - dphi = 0.025 +* " [0,255] sampling 2 region 0 - dphi = 0.025 +* " [0,255] sampling 2 region 1 - dphi = 0.025 +* " [0,255] sampling 3 region 0 - dphi = 0.025 +* +* number of cells in barrel : +* presampler : 7808 +* sampling 1 : 58752 +* sampling 2 : 29184 +* sampling 3 : 13824 +* total :109568 +* +* eta for endcap [0,11] presampler sampling 0 region 0 1.5 < eta < 1.8 - deta = 0.025 +* " 0 outer wheel sampling 1 region 0 1.375 < eta < 1.425 - deta = 0.05 +* " [0,2] outer wheel sampling 1 region 1 1.425 < eta < 1.5 - deta = 0.025 +* " [0,95] outer wheel sampling 1 region 2 1.5 < eta < 1.8 - deta = 0.025/8 +* " [0,47] outer wheel sampling 1 region 3 1.8 < eta < 2.0 - deta = 0.025/6 +* " [0,63] outer wheel sampling 1 region 4 2.0 < eta < 2.4 - deta = 0.025/4 +* " [0,3] outer wheel sampling 1 region 5 2.4 < eta < 2.5 - deta = 0.025 +* " [0,6] inner wheel sampling 1 region 0 2.5 < eta < 3.2 - deta = 0.1 +* " 0 outer wheel sampling 2 region 0 1.375 < eta < 1.425 - deta = 0.05 +* " [0,42] outer wheel sampling 2 region 1 1.425 < eta < 2.5 - deta = 0.025 +* " [0,6] inner wheel sampling 2 region 0 2.5 < eta < 3.2 - deta = 0.1 +* " [0,19] outer wheel sampling 3 region 0 1.5 < eta < 2.5 - deta = 0.05 +* +* phi for endcap [0,63] presampler sampling 0 region 0 - dphi = 0.1 +* " [0,63] outer wheel sampling 1 regions [0,5] - dphi = 0.1 +* " [0,63] inner wheel sampling 1 region 0 - dphi = 0.1 +* " [0,255] outer wheel sampling 2 regions [0,1] - dphi = 0.025 +* " [0,63] inner wheel sampling 2 region 0 - dphi = 0.1 +* " [0,255] outer wheel sampling 3 region 0 - dphi = 0.025 +* +* number of cells in endcap : +* presampler : 1536 +* Outer wheel: +* sampling 1 : 27648 +* sampling 2 : 22528 +* sampling 3 : 10240 +* total : 60416 +* Inner wheel: +* sampling 1 : 896 +* sampling 2 : 896 +* total : 1792 +* +* Grand Total : 63744 +* +* Disconnected channels : +* --------------------- +* barrel_ec +/-1 positive/negative barrel - A/C side or P/M half barrel +* " +/-2 positive/negative endcap outer wheel - A/C side +* " +/-3 positive/negative endcap inner wheel - A/C side +* +* sampling 0 both presamplers +* " [1,3] barrel and endcap outer wheel +* " [1,2] endcap inner wheel +* +* region 0 both presamplers +* " 0 barrel sampling 2 +* " 0 barrel sampling 3 +* " +* " 1,3,5 endcap outer wheel sampling 1 +* " 0 endcap inner wheel sampling 1 +* " 0 endcap inner wheel sampling 2 +* +* +* eta for barrel [61,63] presampler +* " [56,63] sampling 2 region 0 +* " 27 sampling 3 region 0 +* " +* phi for barrel [0,63] barrel presampler +* " [0,255] sampling 2 region 0 +* " [0,255] sampling 3 region 0 +* +* number of disconnected cells in barrel : +* presampler : 384 +* sampling 2 : 128 +* sampling 3 : 512 +* total : 1024 +* +* +* eta for endcap [12,19] presampler sampling 0 region 0 +* " [0,2] outer wheel sampling 1 region 1 +* " [0,47] outer wheel sampling 1 region 3 +* " [0,3] outer wheel sampling 1 region 5 +* " [0,6] inner wheel sampling 1 region 0 +* " [0,6] inner wheel sampling 2 region 0 +* +* phi for endcap [0,63] presampler sampling 0 region 0 +* " [0,63] outer wheel sampling 1 regions 1,3,5 +* " [0,63] inner wheel sampling 1 region 0 +* " [0,63] inner wheel sampling 2 region 0 +* +* number of cells in endcap : +* presampler : 1024 +* Outer wheel: +* sampling 1 : 3072 +* total : 4096 +* Inner wheel: +* sampling 1 : 128 +* sampling 2 : 128 +* total : 256 +* +* Grand Total : 4352 +* +* In the hash series, the diconnected channels are put at the end, after the connected channels. +* channel_hash_min = 0 ; disc_channel_hash_min = channel_hash_max ; +* +* </pre> +* @author started by RD Schaffer +* @author maintained by Fabienne Ledroit +*/ + +class Range; + +class LArEM_ID : public LArEM_Base_ID +{ +public: + + typedef Identifier::size_type size_type ; + + LArEM_ID(void); + ~LArEM_ID(void); + + + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( LArEM_ID , 163583365 , 1 ) +SG_BASE (LArEM_ID, LArEM_Base_ID); + + +#endif // LAREM_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_SuperCell_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_SuperCell_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..cfd0a54fb842824c9c5dee6fa9f1371f3107d533 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArEM_SuperCell_ID.h @@ -0,0 +1,137 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArEM_SuperCell_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date Aug, 2012 + * @brief Helper class for LArEM offline identifiers for supercells + */ + + +#ifndef CALOIDENTIFIER_LAREM_SUPERCELL_ID_H +#define CALOIDENTIFIER_LAREM_SUPERCELL_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "CaloIdentifier/LArEM_Base_ID.h" +#include "SGTools/BaseInfo.h" + + +/** +* +* @class LArEM_SuperCell_ID +* @brief Helper class for LArEM offline identifiers for supercells +* +* This class provides an interface to decode and generate offline identifiers +* for the Supercell version of the LAr EM detector subsystem. <p> +* +* Definition and range of values for the elements of the identifier are: <p> +* <pre> +* Connected channels : +* ------------------ +* element range meaning +* ------- ----- ------- +* +* barrel_ec +/-1 positive/negative barrel - A/C side or P/M half barrel +* " +/-2 positive/negative endcap outer wheel - A/C side +* " +/-3 positive/negative endcap inner wheel - A/C side +* +* sampling 0 both presamplers +* " [1,3] barrel and endcap outer wheel +* " [1,2] endcap inner wheel +* +* region 0 both presamplers +* " [0,1] barrel sampling 1 and 2 +* " 0 barrel sampling 3 +* " +* " 0,[2,5] endcap outer wheel sampling 1 +* " [0,1] endcap inner wheel sampling 1 +* " [0,1] endcap outer wheel sampling 2 +* " [0,1] endcap inner wheel sampling 2 +* " 0 endcap outer wheel sampling 3 +* +* +* eta for barrel [0,15] presampler - 0< eta <1.52 - deta is approximately equal to 0.1 +* " [0,55] sampling 1 region 0 0 < eta < 1.4 - deta = 0.025 +* " [0,2] sampling 1 region 1 1.4 < eta < 1.475 - deta = 0.025 +* " [0,55] sampling 2 region 0 0 < eta < 1.4 - deta = 0.025 +* " 0 sampling 2 region 1 1.4 < eta < 1.475 - deta = 0.075 +* " [0,13] sampling 3 region 0 0 < eta < 1.35 - deta = 0.1 +* " +* phi for barrel [0,63] barrel presampler - dphi = 0.1 +* " [0,63] sampling 1 region 0 - dphi = 0.1 +* " [0,63] sampling 1 region 1 - dphi = 0.1 +* " [0,63] sampling 2 region 0 - dphi = 0.1 +* " [0,63] sampling 2 region 1 - dphi = 0.1 +* " [0,63] sampling 3 region 0 - dphi = 0.1 +* +* number of cells in barrel : +* presampler : 2048 +* sampling 1 : 7552 +* sampling 2 : 7296 +* sampling 3 : 1792 +* total : 18688 +* +* eta for endcap [0,2] presampler sampling 0 region 0 1.5 < eta < 1.8 - deta = 0.1 +* " 0 outer wheel sampling 1 region 0 1.375 < eta < 1.425 - deta = 0.125 +* " [0,11] outer wheel sampling 1 region 2 1.5 < eta < 1.8 - deta = 0.025 +* " [0,11] outer wheel sampling 1 region 3 1.8 < eta < 2.0 - deta = 0.1667 +* " [0,15] outer wheel sampling 1 region 4 2.0 < eta < 2.4 - deta = 0.025 +* " 0 outer wheel sampling 1 region 5 2.4 < eta < 2.5 - deta = 0.1 +* " [0,2] inner wheel sampling 1 region 0 2.5 < eta < 3.1 - deta = 0.2 +* " 0 inner wheel sampling 1 region 0 3.1 < eta < 3.2 - deta = 0.1 +* " 0 outer wheel sampling 2 region 0 1.375 < eta < 1.425 - deta = 0.05 +* " [0,42] outer wheel sampling 2 region 1 1.425 < eta < 2.5 - deta = 0.025 +* " [0,2] inner wheel sampling 2 region 0 2.5 < eta < 3.1 - deta = 0.2 +* " 0 inner wheel sampling 2 region 0 3.1 < eta < 3.2 - deta = 0.1 +* " [0,9] outer wheel sampling 3 region 0 1.5 < eta < 2.5 - deta = 0.1 +* +* phi for endcap [0,63] presampler sampling 0 region 0 - dphi = 0.1 +* " [0,63] outer wheel sampling 1 regions [0,5] - dphi = 0.1 +* " [0,31] inner wheel sampling 1 region 0 - dphi = 0.2 +* " [0,63] outer wheel sampling 2 regions [0,1] - dphi = 0.1 +* " [0,31] inner wheel sampling 2 region 0 - dphi = 0.2 +* " [0,63] outer wheel sampling 3 region 0 - dphi = 0.1 +* +* number of cells in endcap : +* presampler : 384 +* Outer wheel: +* sampling 1 : 4864 +* sampling 2 : 5632 +* sampling 3 : 1280 +* total : 11776 +* Inner wheel: +* sampling 1 : 256 +* sampling 2 : 256 +* total : 512 +* +* Grand Total : 12672 +* +* No disconnected channels are defined for supercells. +* +* @author RD Schaffer, Denis Oliveira Damazio, scott snyder +*/ + + + +class LArEM_SuperCell_ID : public LArEM_Base_ID +{ +public: + LArEM_SuperCell_ID(void); + ~LArEM_SuperCell_ID(void); + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( LArEM_SuperCell_ID , 99488227 , 1 ) +SG_BASE (LArEM_SuperCell_ID, LArEM_Base_ID); + + +#endif // CALOIDENTIFIER_LAREM_SUPERCELL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_Base_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_Base_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..59507d79f1a6b7412343abcba92865347835f829 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_Base_ID.h @@ -0,0 +1,303 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOIDENTIFIER_LARFCAL_BASE_ID_H +#define CALOIDENTIFIER_LARFCAL_BASE_ID_H + +#include "CaloIdentifier/CaloIDHelper.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "CaloIdentifier/LArNeighbours.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "boost/range/iterator_range.hpp" + +class IdDictRegion; + +class LArFCAL_Base_ID : public CaloIDHelper +{ +public: + + typedef Identifier::size_type size_type ; + + LArFCAL_Base_ID(const std::string& name, bool supercell); + + /** module identifier for a connected channel from ExpandedIdentifier */ + Identifier module_id (const ExpandedIdentifier& exp_id) const ; + + /** cell identifier for a connected channel from ExpandedIdentifier */ + Identifier channel_id (const ExpandedIdentifier& exp_id) const ; + + /** build a module identifier for a connected channel */ + Identifier module_id ( int pos_neg, int module ) const ; + + /** build a cell identifier for a connected channel */ + Identifier channel_id( int pos_neg, int module, + int eta, int phi ) const ; + + /** module identifier for a disconnected channel from ExpandedIdentifier */ + Identifier disc_module_id (const ExpandedIdentifier& exp_id) const ; + + /** cell identifier for a disconnected channel from ExpandedIdentifier */ + Identifier disc_channel_id (const ExpandedIdentifier& exp_id) const ; + + /** build a module identifier for disconnected channels */ + Identifier disc_module_id ( int pos_neg, int module ) const ; + + /** build a cell identifier for disconnected channels */ + Identifier disc_channel_id( int pos_neg, int module, + int eta, int phi ) const ; + + /** allows to know in which region is a channel/cell + -- valid for both kinds of channels (connected or not) */ + Identifier module_id (const Identifier id ) const; + + /** allows to build a channel id starting from a module id (e.g. from descriptors) + -- valid for both kinds of channels (connected or not) */ + Identifier channel_id( const Identifier moduleId, + int eta, int phi) const ; + + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const IdentifierHash hashId) const; + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const Identifier channelId) const; + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_connected ( int pos_neg, int module, int eta, int phi ) const throw(LArID_Exception); + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_disconnected ( int pos_neg, int module, int eta, int phi ) const throw(LArID_Exception); + + /** create module id from hash id (connected channels only)*/ + Identifier module_id (IdentifierHash module_hash_id) const; + + /** create hash id from module id*/ + IdentifierHash module_hash (Identifier module_id) const; + + /** create hash id from connected channel id -- method NOT optimised, please use channel_hash() above */ + IdentifierHash channel_hash_binary_search (Identifier channelId) const; + + /** create channel id from hash id (all channels, connected + diconnected, together) */ + Identifier disc_channel_id (IdentifierHash disc_channel_hash_id) const; + + /** create hash id from disconnected channel id*/ + IdentifierHash disc_channel_hash (Identifier disc_channelId) const; + + /** region hash table max size */ + size_type module_hash_max (void) const; + /** cell hash table max size (all channels: connected + disconnected) */ + size_type disc_channel_hash_max (void) const; + /** disconnected cell/channel hash table min index */ + size_type disc_channel_hash_min (void) const; + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + /** begin iterator over set of module Identifiers */ + id_iterator mod_begin (void) const; + /** end iterator over set of module Identifiers */ + id_iterator mod_end (void) const; + /** Range over full set of FCAL modules. */ + id_range mod_range () const; + + /** begin iterator over full set of Fcal Identifiers for connected channels */ + id_iterator fcal_begin (void) const; + /** end iterator over full set of Fcal Identifiers for connected channels */ + id_iterator fcal_end (void) const; + /** Range over full set of FCAL Identifiers. */ + id_range fcal_range () const; + + /** begin iterator over full set of Fcal Identifiers for DISconnected channels */ + id_iterator disc_fcal_begin (void) const; + /** end iterator over full set of Fcal Identifiers for DISconnected channels */ + id_iterator disc_fcal_end (void) const; + /** Range over full set of FCAL Identifiers for disconnected channels. */ + id_range disc_fcal_range () const; + + /** begin iterator over full set of Fcal Identifiers for DISconnected modules */ + id_iterator disc_module_begin (void) const; + /** end iterator over full set of Fcal Identifiers for DISconnected modules */ + id_iterator disc_module_end (void) const; + /** Range over full set of FCAL Identifiers for disconnected modules. */ + id_range disc_module_range () const; + + /** provide acces to channel id vector, accessed via hash */ + const std::vector<Identifier>& channel_ids() const; + + + /** pos_neg : +/- 2 (A/C side) */ + int pos_neg (const Identifier id)const; + /** module [1,3] */ + int module (const Identifier id)const; + /** eta [0,63] module 1 ; [0,31] module 2 ; [0,15] module 3, -999 if disconnected channel */ + int eta (const Identifier id)const; + /** phi [0,15], -999 if disconnected channel */ + int phi (const Identifier id)const; + + /** Test if the identifier represents a supercell. */ + bool is_supercell (const Identifier id)const; + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier regId) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier regId) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_min(const Identifier regId) const; + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier regId) const; + + /** eta index -- only for checks, since dummy for disconnected channels */ + int disc_eta (const Identifier id)const; + /** phi index -- only for checks, since dummy for disconnected channels */ + int disc_phi (const Identifier id)const; + + /** context for modules -- method kept for backward compatibility. NOT optimised <br> + access to IdContext's which define which levels of fields are contained in the id */ + IdContext module_context (void) const; + + + + /** access to hashes for neighbours return == 0 for neighbours found <br> + option = all2D, prevInSamp, nextInSamp, all3D <br> + in 'nextInSamp', next means 'away from the centre of Atlas' <br> + in 'prevInSamp', prev means 'towards the centre of Atlas' <br> + Nota Bene = neighbours do not include diconnected channels */ + int get_neighbours(const IdentifierHash id, + const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const; + + + + /** initialization from the identifier dictionary*/ + virtual int initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name); + + + using CaloIDHelper::channel_id; + using CaloIDHelper::channel_hash; + // Inherited from CaloIDHelper: + // + //Identifier channel_id (IdentifierHash hashId) const; + //Identifier region_id (IdentifierHash hashId) const; + //IdentifierHash channel_hash (Identifier channelId) const; + //IdentifierHash region_hash (Identifier regionId) const; + //size_type channel_hash_max() const; + //size_type region_hash_max() const; + //IdContext channel_context() const; + //IdContext region_context() const; + //const std::vector<const IdDictRegion*>& dictRegions() const; + //float etaGranularity(const IdentifierHash regHash) const; + //float phiGranularity(const IdentifierHash regHash) const; + //float eta0(const IdentifierHash regHash) const; + //float phi0(const IdentifierHash regHash) const; + //virtual int get_id (const IdentifierHash& hash_id, + // Identifier& id, + // const IdContext* context = 0 ) const; + //virtual int get_hash (const Identifier& id, + // IdentifierHash& hash_id, + // const IdContext* context = 0 ) const; + + +private: + + enum {NOT_VALID_HASH = 64000}; + + int phi_min_init(const Identifier regId) const; + + // Check methods + + void module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception); + void channel_id_checks ( int pos_neg, int module, + int eta, int phi ) const throw(LArID_Exception); + void channel_id_checks ( const Identifier moduleId, + int eta, int phi) const throw(LArID_Exception); + void disc_module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception); + void disc_channel_id_checks ( int pos_neg, int module, + int eta, int phi ) const throw(LArID_Exception); + void disc_channel_id_checks ( const Identifier moduleId, + int eta, int phi) const throw(LArID_Exception); + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + virtual int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + int get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + + int initLevelsFromDict(const std::string& group_name) ; + int init_hashes(void) ; + int init_disc_hashes(void) ; + + int init_neighbours_from_file(std::string filename, std::vector<std::set<IdentifierHash> > &vec); + + int init_neighbours_2d(std::string filename) + { + return init_neighbours_from_file(filename, m_neighbours_2d_vec); + } + + int init_neighbours_3d_next(std::string filename) + { + return init_neighbours_from_file(filename, m_neighbours_3d_next_vec); + } + + int init_neighbours_3d_prev(std::string filename) + { + return init_neighbours_from_file(filename, m_neighbours_3d_prev_vec); + } + + int init_neighbours(const IdDictMgr& dict_mgr) ; + + +private: + unsigned m_slar; + + bool m_two_sym_sides; + + size_type m_fcal_region_index; + size_type m_LAR_INDEX; + size_type m_SLAR_INDEX; + size_type m_FCAL_INDEX; + size_type m_POSNEG_INDEX; + size_type m_MODULE_INDEX; + size_type m_ETA_INDEX; + size_type m_PHI_INDEX; + + MultiRange m_full_channel_range; + MultiRange m_full_module_range; + MultiRange m_full_disc_channel_range; + MultiRange m_full_disc_module_range; + + CaloIDHelper::HashGroup m_disc_channels; + CaloIDHelper::HashGroup m_disc_modules; + + std::vector<short int> m_vecOfPhiMin; + + IdDictFieldImplementation m_lar_impl; + IdDictFieldImplementation m_fcal_impl; + IdDictFieldImplementation m_pn_impl; + IdDictFieldImplementation m_module_impl; + IdDictFieldImplementation m_eta_impl; + IdDictFieldImplementation m_phi_impl; + IdDictFieldImplementation m_pn_mod_impl; + + IdDictFieldImplementation m_slar_impl; + + LArFCAL_Base_ID (const LArFCAL_Base_ID&); + LArFCAL_Base_ID& operator= (const LArFCAL_Base_ID&); + + std::vector<std::set<IdentifierHash> > m_neighbours_2d_vec; + std::vector<std::set<IdentifierHash> > m_neighbours_3d_next_vec; + std::vector<std::set<IdentifierHash> > m_neighbours_3d_prev_vec; +}; + +#include "CaloIdentifier/LArFCAL_Base_ID.icc" + + +#endif // not CALOIDENTIFIER_LARFCAL_BASE_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_Base_ID.icc b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_Base_ID.icc new file mode 100644 index 0000000000000000000000000000000000000000..9bd8b6ad1e3bda585cfa37a958e0bed17aa3128b --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_Base_ID.icc @@ -0,0 +1,369 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArFCAL_Base_ID.icc + * @author naoko kanaya <nkanaya@cern.ch> + * @date May, 2013 + * @brief Inline implementations for LArFCAL_Base_ID. + */ + + +//-------------------- +// Inline definitions +//-------------------- + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::module_id (const ExpandedIdentifier& exp_id) const +{ + return this->module_id ( exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->channel_id (exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::module_id (int pos_neg, int module) const +{ + // Do checks + if(m_do_checks) { + module_id_checks ( pos_neg, module ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (lar_fcal_field_value(), result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::channel_id ( int pos_neg, int module, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + channel_id_checks( pos_neg, module, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (lar_fcal_field_value(), result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::disc_module_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_module_id ( exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::disc_channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_channel_id (exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::disc_module_id (int pos_neg, int module) const +{ + // Do checks + if(m_do_checks) { + disc_module_id_checks ( pos_neg, module ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (-3 , result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::disc_channel_id ( int pos_neg, int module, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + disc_channel_id_checks( pos_neg, module, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (-3 , result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::module_id ( const Identifier channelId ) const +{ + + Identifier result(channelId); + // reset eta/phi + m_eta_impl.reset(result); + m_phi_impl.reset(result); + m_slar_impl.pack(m_slar,result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArFCAL_Base_ID::channel_id ( const Identifier module_id, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + if(is_connected(module_id)) { + channel_id_checks( module_id, eta, phi ); + } else { + disc_channel_id_checks( module_id, eta, phi ); + } + } + + Identifier result(module_id); + + // Reset the fields and then set the values + m_eta_impl.reset (result); + m_phi_impl.reset (result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline bool LArFCAL_Base_ID::is_connected(const IdentifierHash hashId) const +{ + return ( hashId < channels().hash_max() ); +} + +//---------------------------------------------------------------------------- +inline bool LArFCAL_Base_ID::is_connected(const Identifier channelId) const +{ + return ( m_fcal_impl.unpack(channelId) == 3 ); +} + +//---------------------------------------------------------------------------- +inline Identifier LArFCAL_Base_ID::module_id (IdentifierHash module_hash_id) const +{ + return region_id (module_hash_id); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArFCAL_Base_ID::module_hash (Identifier module_id) const +{ + return region_hash (module_id); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArFCAL_Base_ID::channel_hash_binary_search (Identifier channelId) const +{ + return channel_hash (channelId); +} + +//---------------------------------------------------------------------------- +inline Identifier LArFCAL_Base_ID::disc_channel_id (IdentifierHash disc_channel_hash_id) const +{ + if(disc_channel_hash_id < channels().hash_max()) { + return channel_id (disc_channel_hash_id); + } + else { + return m_disc_channels.id (disc_channel_hash_id - channels().hash_max()); + } +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArFCAL_Base_ID::disc_channel_hash (Identifier disc_channelId) const +{ + if (is_connected(disc_channelId)) { + return channel_hash (disc_channelId); + } + else { + IdentifierHash hash = m_disc_channels.hash (disc_channelId); + if (hash.is_valid()) + hash += channels().hash_max(); + return hash; + } +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::size_type LArFCAL_Base_ID::module_hash_max (void) const +{ + return region_hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::size_type LArFCAL_Base_ID::disc_channel_hash_max (void) const +{ + return channels().hash_max() + m_disc_channels.hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::size_type LArFCAL_Base_ID::disc_channel_hash_min (void) const +{ + return channels().hash_max() ; +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::mod_begin (void) const +{ + return regions().begin(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::mod_end (void) const +{ + return regions().end(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_range LArFCAL_Base_ID::mod_range (void) const +{ + return regions().range(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::fcal_begin (void) const +{ + return channels().begin(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::fcal_end (void) const +{ + return channels().end(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_range LArFCAL_Base_ID::fcal_range (void) const +{ + return channels().range(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::disc_fcal_begin (void) const +{ + return m_disc_channels.begin(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::disc_fcal_end (void) const +{ + return m_disc_channels.end(); +} + +//---------------------------------------------------------------------------- +inline LArFCAL_Base_ID::id_range LArFCAL_Base_ID::disc_fcal_range (void) const +{ + return m_disc_channels.range(); +} + +//---------------------------------------------------------------------------- +inline +LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::disc_module_begin (void) const +{ + return m_disc_modules.begin(); +} + +//---------------------------------------------------------------------------- +inline +LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::disc_module_end (void) const +{ + return m_disc_modules.end(); +} + +//---------------------------------------------------------------------------- +inline +LArFCAL_Base_ID::id_range LArFCAL_Base_ID::disc_module_range (void) const +{ + return m_disc_modules.range(); +} + +//---------------------------------------------------------------------------- +inline const std::vector<Identifier>& LArFCAL_Base_ID::channel_ids() const +{ + return channels().ids(); +} + +//---------------------------------------------------------------------------- +inline int LArFCAL_Base_ID::pos_neg (const Identifier id)const +{ + return (m_pn_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArFCAL_Base_ID::module (const Identifier id)const +{ + return (m_module_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArFCAL_Base_ID::eta (const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_eta_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArFCAL_Base_ID::phi(const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_phi_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArFCAL_Base_ID::phi_min(const Identifier modId) const +{ + IdentifierHash modHash = module_hash(modId); + unsigned int index = modHash; + return (m_vecOfPhiMin[index]); +} diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..086594017505e0e5e43cabe2e63807b08f966b48 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_ID.h @@ -0,0 +1,95 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LARFCAL_ID_H +#define LARFCAL_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "IdDict/IdDictDefs.h" + +#include "CaloIdentifier/LArID_Exception.h" +#include "CaloIdentifier/LArFCAL_Base_ID.h" +#include "SGTools/BaseInfo.h" + +#include "boost/range/iterator_range.hpp" +#include <vector> +#include <algorithm> +#include <set> + + +/** +* +* @class LArFCAL_ID +* @brief Helper class for LArFCAL offline identifiers +* + * + * This class provides an interface to decode and generate offline identifiers + * for the LAr FCAL detector. <p> + * + * Definition and range of values for the fields: <p> + * <pre> + * Connected channels : + * ------------------ + * pos_neg = +/- 2 (A/C side)<br><br> + * + * module = [1,3] : 1 EM , 2-3 Hadronic <br><br> + * + * phi = [0,15] <br><br> + * + * eta = [0,62] module 1 ; <br> + * eta = [0,31] module 2, except phi=3,4,11,12: eta = [0,30] and phi=0,7,8,15: eta = [0,29] ; <br> + * eta = [0,15] module 3, except phi=2,10: eta = [0,14] (old FCAL desciption) <br> + * except phi=5,13: eta = [0,14] (new FCAL desciption) <br><br> + * + * 3524 connected cells in total <br> + * + * Disconnected channels : + * ------------------ + * pos_neg = +/- 2 (A/C side)<br><br> + * + * module = [1,3] : 1 EM , 2-3 Hadronic <br><br> + * + * phi = [0,15] <br><br> + * + * eta = 63 module 1 ; <br> + * eta = 31 module 2 phi=3,4,11,12 <br> + * = [30,31] module 2, phi=0,7,8,15 ; <br> + * eta = 15 module 3, phi=2,10 (old FCAL description) <br> + * phi=3,15 (new FCAL description) <br><br> + * + * 60 disconnected cells in total <br> + * In the hash series, the diconnected channels are put at the end, after the connected channels. + * channel_hash_min = 0 ; disc_channel_hash_min = channel_hash_max ; + * + * @author started by RD Schaffer + * @author maintained by F Ledroit + * @author neighbour list/code provided by Sven Menke + */ + +class Range; +class LArFCAL_region; + +class LArFCAL_ID : public LArFCAL_Base_ID +{ +public: + + typedef Identifier::size_type size_type ; + + LArFCAL_ID(void); + ~LArFCAL_ID(void); + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( LArFCAL_ID , 45738051 , 1 ) +SG_BASE (LArFCAL_ID, LArFCAL_Base_ID); + + +#endif // LARFCAL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_SuperCell_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_SuperCell_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..6cbcd5576a9c449bbf4e1a49a59c398c4119cd3c --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArFCAL_SuperCell_ID.h @@ -0,0 +1,65 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOIDENTIFIER_LARFCAL_SUPERCELL_ID_H +#define CALOIDENTIFIER_LARFCAL_SUPERCELL_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "CaloIdentifier/LArFCAL_Base_ID.h" +#include "SGTools/BaseInfo.h" + +#include <vector> +#include <algorithm> +#include <set> + + +/** +* +* @class LArFCAL_SuperCell_ID +* @brief Helper class for LArFCAL offline identifiers for supercells +* +* +* This class provides an interface to decode and generate offline identifiers +* for the Supercell version of LAr FCAL detector. <p> +* +* Definition and range of values for the fields: <p> +* <pre> +* Connected channels : +* ------------------ +* pos_neg = +/- 2 (A/C side)<br><br> +* +* module = [1,3] : 1 EM , 2-3 Hadronic <br><br> +* +* phi = [0,15] <br><br> +* +* eta = [0,11] module 1 ; <br> +* eta = [0,7] module 2 ; <br> +* eta = [0,3] module 3 ; <br> +* +* 384 connected cells in total <br> +* +* No disconnected channels are defined for supercells. +* +* @author RD Schaffer, Denis Oliveira Damazio, scott snyder, naoko kanaya +*/ + + + +class LArFCAL_SuperCell_ID : public LArFCAL_Base_ID +{ +public: + LArFCAL_SuperCell_ID(void); + ~LArFCAL_SuperCell_ID(void); + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( LArFCAL_SuperCell_ID , 12829437 , 1 ) +SG_BASE (LArFCAL_SuperCell_ID, LArFCAL_Base_ID); + + +#endif // CALOIDENTIFIER_LARFCAL_SUPERCELL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_Base_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_Base_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..6eccb0e23eafc6486126c41e52b3efb43ee4cbf5 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_Base_ID.h @@ -0,0 +1,373 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArHEC_Base_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Factor out code common between LArHEC_ID and LArHEC_SuperCell_ID. + */ + + +#ifndef CALOIDENTIFIER_LARHEC_BASE_ID_H +#define CALOIDENTIFIER_LARHEC_BASE_ID_H + + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "IdDict/IdDictDefs.h" + +#include "CaloIdentifier/CaloIDHelper.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "CaloIdentifier/LArNeighbours.h" +#include "boost/range/iterator_range.hpp" + +#include <vector> +#include <algorithm> + + +class Range; +class LArHEC_region; + + +/** + * + * This class factors out code common between LArEM_ID and LArEM_SuperCell_ID. + */ +class LArHEC_Base_ID : public CaloIDHelper +{ +public: + + /** Constructor. If SUPERCELL is true, this helper is for supercells. */ + LArHEC_Base_ID (const std::string& name, bool supercell); + + ~LArHEC_Base_ID(); + + /** region identifier for a connected channel from ExpandedIdentifier*/ + Identifier region_id (const ExpandedIdentifier& exp_id ) const ; + + /** channel identifier for a connected channel from ExpandedIdentifier*/ + Identifier channel_id (const ExpandedIdentifier& exp_id ) const ; + + /** build a region identifier for a connected channel */ + Identifier region_id (int pos_neg, int sampling, int region ) const ; + + /** build a cell identifier for a connected channel */ + Identifier channel_id (int pos_neg, int sampling, int region, + int eta, int phi ) const ; + + /** build a cell identifier for a connected channel <br> + eta counting includes regions */ + Identifier channel_id ( int pos_neg, int sampling, + int eta, int phi ) const throw(LArID_Exception) ; + + /** For a specific sector , eta, phi_sector + * <pre> + * + * sector [0,31] + * + * phi_sector [0,1] Outer part, dphi=0.1 + * " [0] Inner part, dphi=0.2 + * + * </pre> + */ + Identifier channel_id ( int pos_neg, int sampling, int sector, int region, + int eta, int phi_sector ) const throw(LArID_Exception); + + + /** region identifier for disconnected channels, from ExpandedIdentifier */ + Identifier disc_region_id (const ExpandedIdentifier& exp_id) const; + + /** cell identifier for disconnected channels, from ExpandedIdentifier */ + Identifier disc_channel_id (const ExpandedIdentifier& exp_id) const; + + /** build a region identifier for disconnected channels */ + Identifier disc_region_id (int pos_neg, int sampling, int region ) const ; + + /** build a cell identifier for disconnected channels */ + Identifier disc_channel_id (int pos_neg, int sampling, int region, + int eta, int phi ) const ; + + /** allows to know in which region is a channel/cell + -- valid for both kinds of channels (connected or not) */ + Identifier region_id (const Identifier channelId) const ; + + /** allows to build a channel id starting from a region id (e.g. from descriptors) + -- valid for both kinds of channels (connected or not) */ + Identifier channel_id (const Identifier regionId, + int eta, int phi ) const ; + + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const IdentifierHash hashId) const; + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const Identifier channelId) const; + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_connected ( int pos_neg, int sampling, int region, int eta, int phi ) const throw(LArID_Exception); + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_disconnected ( int pos_neg, int sampling, int region, int eta, int phi ) const throw(LArID_Exception); + + /** Test if the identifier represents a supercell. */ + bool is_supercell (const Identifier id)const; + + /** create hash id from connected channel id */ + IdentifierHash channel_hash (Identifier channelId) const; + /** create hash id from connected channel id -- method NOT optimised, please use channel_hash() above */ + IdentifierHash channel_hash_binary_search (Identifier channelId) const; + + /** create channel id from hash id (all channels, connected + diconnected, together) */ + Identifier disc_channel_id (IdentifierHash disc_channel_hash_id) const; + + /** create hash id from channel id*/ + IdentifierHash disc_channel_hash (Identifier discChannelId) const; + + /** cell hash table max size (all channels: connected + disconnected) */ + size_type disc_channel_hash_max (void) const; + /** disconnected cell/channel hash table min index */ + size_type disc_channel_hash_min (void) const; + + /** begin iterator over set of region Identifiers */ + id_iterator reg_begin (void) const; + /** end iterator over set of region Identifiers */ + id_iterator reg_end (void) const; + /** Range over set of Region Identifiers. */ + id_range reg_range () const; + + /** begin iterator over full set of Hec Identifiers for connected channels */ + id_iterator hec_begin (void) const; + /** end iterator over full set of Hec Identifiers for connected channels */ + id_iterator hec_end (void) const; + /** Range over full set of HEC Identifiers. */ + id_range hec_range () const; + + /** begin iterator over full set of Hec Identifiers for DISconnected channels */ + id_iterator disc_hec_begin (void) const; + /** end iterator over full set of Hec Identifiers for DISconnected channels */ + id_iterator disc_hec_end (void) const; + /** Range over full set of HEC Identifiers for DISconnected channels (only) */ + id_range disc_hec_range () const; + + /** begin iterator over full set of Hec Identifiers for DISconnected regions */ + id_iterator disc_reg_begin (void) const; + /** end iterator over full set of Hec Identifiers for DISconnected channels */ + id_iterator disc_reg_end (void) const; + /** Range over full set of HEC Identifiers for DISconnected channels (only) */ + id_range disc_reg_range () const; + + /** provide access to channel id vector, accessed via hash */ + const std::vector<Identifier>& channel_ids() const; + /** provide access to region id vector, accessed via hash */ + const std::vector<Identifier>& region_ids() const; + + + /** return pos_neg -2 (C side) or 2 (A side)*/ + int pos_neg (const Identifier id)const; + + /** return sampling [0,3] (only 0 for supercells) */ + int sampling (const Identifier id)const; + + /** return region [0,1] */ + int region (const Identifier id)const; + + /** return eta [0,9] outer part [0,3] inner part, -999 if disconnected channel */ + int eta (const Identifier id)const; + + /** return phi[0,63] outer part [0,31] inner part, -999 if disconnected channel */ + int phi (const Identifier id)const; + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier regId) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier regId) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_min(const Identifier regId) const; + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier regId) const; + + + /** eta index -- only for checks, since dummy for disconnected channels */ + int disc_eta (const Identifier id)const; + /** phi index -- only for checks, since dummy for disconnected channels */ + int disc_phi (const Identifier id)const; + + + /** initialization from the identifier dictionary*/ + int initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name); + + /** True if the + and - sides of the calorimeter are identical (true layout). + False if they are mirror reflections (used in early MC). */ + bool twoSymSides() const; + + + /** access to hashes for neighbours return == 0 for neighbours found <br> + option = prevInPhi, nextInPhi, prevInEta, nextInEta, faces 2D, corners2D, all2D, prevInSamp, nextInSamp, upAndDown, all3D <br> + + in 'nextInEta' and 'nextInSamp', next means 'away from the centre of Atlas' <br> + in 'prevInEta' and 'prevInSamp', prev means 'towards the centre of Atlas' <br> + faces2D means prevInPhi + nextInPhi + prevInEta + nextInEta <br> + corners2D means corners in the same sampling, + not only touching cells but all corner cells forming a square (in case of change in eta granularity ) <br> + all2D means faces2D + corners2D <br> + upAndDown means prevInSamp + nextInSamp <br> + all3D means all2D + upAndDown <br> + Nota Bene = neighbours do not include disconnected channels */ + int get_neighbours(const IdentifierHash id, + const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const; + + + using CaloIDHelper::channel_id; + using CaloIDHelper::region_id; + // Inherited from CaloIDHelper: + // + //Identifier channel_id (IdentifierHash hashId) const; + //Identifier region_id (IdentifierHash hashId) const; + //IdentifierHash region_hash (Identifier regionId) const; + //size_type channel_hash_max() const; + //size_type region_hash_max() const; + //IdContext channel_context() const; + //IdContext region_context() const; + //const std::vector<const IdDictRegion*>& dictRegions() const; + //float etaGranularity(const IdentifierHash regHash) const; + //float phiGranularity(const IdentifierHash regHash) const; + //float eta0(const IdentifierHash regHash) const; + //float phi0(const IdentifierHash regHash) const; + //virtual int get_id (const IdentifierHash& hash_id, + // Identifier& id, + // const IdContext* context = 0 ) const; + //virtual int get_hash (const Identifier& id, + // IdentifierHash& hash_id, + // const IdContext* context = 0 ) const; + + +private: + + enum {NOT_VALID_HASH = 64000}; + + int phi_min_init(const Identifier regId) const; + + // Check methods + + void region_id_checks (int pos_neg, int sampling, int region ) const throw(LArID_Exception); + void channel_id_checks (int pos_neg, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception); + void channel_id_checks (const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception); + void disc_region_id_checks (int pos_neg, int sampling, int region ) const throw(LArID_Exception); + void disc_channel_id_checks (int pos_neg, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception); + void disc_channel_id_checks (const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception); + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + virtual int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + int get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + int initLevelsFromDict (const std::string& group_name) ; + + int init_hashes(void) ; + int init_disc_hashes(void) ; + + int get_prevInPhi(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_nextInPhi(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_prevInEta(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const; + + int get_nextInEta(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, const unsigned int& maxHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const; + + int get_prevInSamp(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const; + + int get_nextInSamp(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const; + + + int init_neighbors(void) ; + + + unsigned m_slar; + + size_type m_hec_region_index; + size_type m_LAR_INDEX; + size_type m_HEC_INDEX; + size_type m_POSNEG_INDEX; + size_type m_SAMPLING_INDEX; + size_type m_REGION_INDEX; + size_type m_ETA_INDEX; + size_type m_PHI_INDEX; + size_type m_SLAR_INDEX; + + MultiRange m_full_channel_range; + MultiRange m_full_region_range; + + MultiRange m_full_disc_channel_range; + MultiRange m_full_disc_region_range; + + CaloIDHelper::HashGroup m_disc_channels; + CaloIDHelper::HashGroup m_disc_regions; + + bool m_two_sym_sides; + + std::vector<short int> m_vecOfPhiMin; + + /** + @brief small class holding the starting hash value, the min eta and the number of phi bins of each region + + used to CPU-optimize the conversion from an identifier to a hash index + */ + class HashCalc + { + public: + HashCalc() : + m_hash(0), + m_etamin(0), + m_phimin(0), + m_nphi(0) {} + IdentifierHash m_hash; + size_type m_etamin; + size_type m_phimin; + size_type m_nphi; + }; + std::vector<HashCalc> m_hash_calcs; + + + IdDictFieldImplementation m_lar_impl; + IdDictFieldImplementation m_hec_impl; + IdDictFieldImplementation m_pn_impl; + IdDictFieldImplementation m_sampling_impl; + IdDictFieldImplementation m_region_impl; + IdDictFieldImplementation m_eta_impl; + IdDictFieldImplementation m_phi_impl; + IdDictFieldImplementation m_slar_impl; + + IdDictFieldImplementation m_pn_reg_impl; + + std::vector<LArHEC_region*> m_vecOfRegions; + std::vector<short int> m_vecOfCellInfo; +}; + + +#include "CaloIdentifier/LArHEC_Base_ID.icc" + +#endif // LARHEC_BASE_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_Base_ID.icc b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_Base_ID.icc new file mode 100644 index 0000000000000000000000000000000000000000..a34418e7a93b3c6ec31e40c7f5e35f5d694e1a49 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_Base_ID.icc @@ -0,0 +1,388 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArHEC_Base_ID.icc + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Inline implementations for LArHEC_Base_ID. + */ + +//-------------------- +// Inline definitions +//-------------------- + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::region_id (const ExpandedIdentifier& exp_id) const +{ + return this->region_id ( exp_id[m_POSNEG_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->channel_id (exp_id[m_POSNEG_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::region_id (int pos_neg, int sampling, int region) const +{ + // Do checks + if(m_do_checks) { + region_id_checks ( pos_neg, sampling, region ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_hec_impl.pack (lar_hec_field_value(),result); + m_pn_impl.pack (pos_neg, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::channel_id ( int pos_neg, int sampling, int region, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + channel_id_checks( pos_neg, sampling, region, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_hec_impl.pack (lar_hec_field_value(),result); + m_pn_impl.pack (pos_neg, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::disc_region_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_region_id ( exp_id[m_POSNEG_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::disc_channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_channel_id (exp_id[m_POSNEG_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::disc_region_id (int pos_neg, int sampling, int region) const +{ + // Do checks + if(m_do_checks) { + disc_region_id_checks ( pos_neg, sampling, region ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_hec_impl.pack (-2 ,result); // fix me !!! + m_pn_impl.pack (pos_neg, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::disc_channel_id ( int pos_neg, int sampling, int region, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + disc_channel_id_checks( pos_neg, sampling, region, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_hec_impl.pack (-2 ,result); // fix me !!! + m_pn_impl.pack (pos_neg, result); + m_sampling_impl.pack (sampling, result); + m_region_impl.pack (region, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::region_id ( const Identifier channelId ) const +{ + + Identifier result(channelId); + // reset eta/phi + m_eta_impl.reset(result); + m_phi_impl.reset(result); + m_slar_impl.pack(m_slar,result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArHEC_Base_ID::channel_id ( const Identifier regionId, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + if(is_connected(regionId)) { + channel_id_checks( regionId, eta, phi ); + } else { + disc_channel_id_checks( regionId, eta, phi ); + } + } + + Identifier result(regionId); + + // Reset the fields and then set the values + m_eta_impl.reset (result); + m_phi_impl.reset (result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + m_slar_impl.pack (m_slar, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline bool LArHEC_Base_ID::is_connected(const IdentifierHash hashId) const +{ + return ( hashId < channel_hash_max() ); +} + +//---------------------------------------------------------------------------- +inline bool LArHEC_Base_ID::is_connected(const Identifier channelId) const +{ + return ( m_hec_impl.unpack(channelId) == 2 ); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArHEC_Base_ID::channel_hash (Identifier channelId) const +{ + const HashCalc& hc = m_hash_calcs[m_pn_reg_impl.unpack(channelId)]; + return (hc.m_hash + (eta(channelId)-hc.m_etamin)*hc.m_nphi + phi(channelId)-hc.m_phimin ); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArHEC_Base_ID::channel_hash_binary_search (Identifier channelId) const +{ + return CaloIDHelper::channel_hash (channelId); +} + +//---------------------------------------------------------------------------- +inline Identifier LArHEC_Base_ID::disc_channel_id (IdentifierHash disc_channel_hash_id) const +{ + if(disc_channel_hash_id < channels().hash_max()) { + return channel_id (disc_channel_hash_id); + } + else { + return m_disc_channels.id (disc_channel_hash_id - channels().hash_max()); + } +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArHEC_Base_ID::disc_channel_hash (Identifier discChannelId) const +{ + if (is_connected(discChannelId)) { + const HashCalc& hc = m_hash_calcs[m_pn_reg_impl.unpack(discChannelId)]; + return (hc.m_hash + (eta(discChannelId)-hc.m_etamin)*hc.m_nphi + phi(discChannelId)-hc.m_phimin); + } + else { + IdentifierHash hash = m_disc_channels.hash (discChannelId); + if (hash.is_valid()) + hash += channels().hash_max(); + return hash; + } +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::size_type LArHEC_Base_ID::disc_channel_hash_max () const +{ + return channel_hash_max() + m_disc_channels.hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::size_type LArHEC_Base_ID::disc_channel_hash_min () const +{ + return channel_hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::reg_begin () const +{ + return regions().begin(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::reg_end (void) const +{ + return regions().end(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_range LArHEC_Base_ID::reg_range (void) const +{ + return regions().range(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::hec_begin (void) const +{ + return channels().begin(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::hec_end (void) const +{ + return channels().end(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_range LArHEC_Base_ID::hec_range (void) const +{ + return channels().range(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::disc_hec_begin () const +{ + return m_disc_channels.begin(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::disc_hec_end () const +{ + return m_disc_channels.end(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_range LArHEC_Base_ID::disc_hec_range () const +{ + return m_disc_channels.range(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::disc_reg_begin () const +{ + return m_disc_regions.begin(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::disc_reg_end () const +{ + return m_disc_regions.end(); +} + +//---------------------------------------------------------------------------- +inline LArHEC_Base_ID::id_range LArHEC_Base_ID::disc_reg_range () const +{ + return m_disc_regions.range(); +} + +//---------------------------------------------------------------------------- +inline const std::vector<Identifier>& LArHEC_Base_ID::channel_ids() const +{ + return channels().ids(); +} + +//---------------------------------------------------------------------------- +inline const std::vector<Identifier>& LArHEC_Base_ID::region_ids() const +{ + return regions().ids(); +} + +//---------------------------------------------------------------------------- +inline int LArHEC_Base_ID::pos_neg(const Identifier id)const +{ + return (m_pn_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArHEC_Base_ID::sampling(const Identifier id)const +{ + return (m_sampling_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArHEC_Base_ID::region(const Identifier id)const +{ + return (m_region_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArHEC_Base_ID::eta(const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_eta_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArHEC_Base_ID::phi(const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_phi_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArHEC_Base_ID::phi_min(const Identifier regId) const +{ + IdentifierHash regHash = region_hash(regId); + unsigned int index = regHash; + return (m_vecOfPhiMin[index]); +} + + +//---------------------------------------------------------------------------- +inline bool LArHEC_Base_ID::is_supercell (Identifier id) const +{ + return(m_slar_impl.unpack(id)) != 0; +} + +//---------------------------------------------------------------------------- +inline bool LArHEC_Base_ID::twoSymSides() const +{ + return m_two_sym_sides; +} diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..cc4572279d2fc50f9088a8dfde175a2716d37d66 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_ID.h @@ -0,0 +1,106 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LARHEC_ID_H +#define LARHEC_ID_H + + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "IdDict/IdDictDefs.h" + +#include "CaloIdentifier/LArHEC_Base_ID.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "SGTools/BaseInfo.h" +#include "boost/range/iterator_range.hpp" + +#include <vector> +#include <algorithm> + + +/** +* +* @class LArHEC_ID +* @brief Helper class for LArHEC offline identifiers +* +* This class provides an interface to decode and generate offline identifiers +* for the HEC detector subsystem. <p> +* +* Definition and the range of values for the elements of the +* identifier are: <p> +* <pre> +* Connected channels : +* ------------------ +* element range meaning +* ------- ----- ------- +* +* pos/neg -2 or 2 -2 = negative HEC (C side), 2 = positive HEC ( A side) +* +* sampling [0,3] [0,1] = first wheel, [2,3] = second wheel +* +* region [0,1] 0 : outer part, 1 : inner part +* +* eta [0,9] Outer part region 0 , samplings 0 and 1 , 1.5< eta <2.5 , deta=0.1 +* " [1,9] Outer part region 0 , samplings 2 , 1.6< eta <2.5 , deta=0.1 +* " [2,9] Outer part region 0 , samplings 3 , 1.7< eta <2.5 , deta=0.1 +* " [0,3] Inner part region 1 , samplings 0 and 3 , 2.5< eta <3.3 , deta=0.2 +* " [0,2] Inner part region 1 , samplings 1 and 2 , 2.5< eta <3.1 , deta=0.2 +* +* phi [0,63] Outer part, dphi=0.1 +* " [0,31] Inner part, dphi=0.2 +* +* 5632 active cells in the full HEC +* +* Disconnected channels : +* --------------------- +* element range meaning +* ------- ----- ------- +* +* pos/neg -2 or 2 -2 = negative HEC (C side), 2 = positive HEC ( A side) +* +* sampling [1,3] [0,1] = first wheel, [2,3] = second wheel +* +* region [0,1] 0 : outer part, 1 : inner part +* +* eta 0 Outer part region 0 , sampling 2 , 1.5< eta <1.6 , deta=0.1 +* " [0,1] Outer part region 0 , sampling 3 , 1.5< eta <1.7 , deta=0.1 +* " 3 Inner part region 1 , samplings 1 and 2 , 3.1< eta <3.3 , deta=0.2 +* +* phi [0,63] Outer part, dphi=0.1 +* " [0,31] Inner part, dphi=0.2 +* +* 512 disconnected channels in the full HEC +* In the hash series, the disconnected channels are put at the end, after the connected channels. +* channel_hash_min = 0 ; disc_channel_hash_min = channel_hash_max ; +* +* </pre> +* +* @author started by RD Schaffer +* @author maintained by Fabienne Ledroit +*/ + +class Range; + +class LArHEC_ID + : public LArHEC_Base_ID +{ +public: + + LArHEC_ID(void); + ~LArHEC_ID(void); + + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( LArHEC_ID , 3870484 , 1 ) +SG_BASE (LArHEC_ID, LArHEC_Base_ID); + + +#endif // LARHEC_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_SuperCell_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_SuperCell_ID.h new file mode 100644 index 0000000000000000000000000000000000000000..fef8b4109d57d1fcbf6af520e9d4d1c909d15fdd --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArHEC_SuperCell_ID.h @@ -0,0 +1,76 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArHEC_SuperCell_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Helper class for LArHEC offline identifiers for supercells + */ + + +#ifndef CALOIDENTIFIER_LARHEC_SUPERCELL_ID_H +#define CALOIDENTIFIER_LARHEC_SUPERCELL_ID_H + + +#include "CLIDSvc/CLASS_DEF.h" +#include "CaloIdentifier/LArHEC_Base_ID.h" +#include "SGTools/BaseInfo.h" + + +/** +* +* @class LArHEC_SuperCell_ID +* @brief Helper class for LArHEC offline identifiers for supercells +* +* This class provides an interface to decode and generate offline identifiers +* for the supercell version of the HEC detector subsystem. <p> +* +* Definition and the range of values for the elements of the +* identifier are: <p> +* <pre> +* Connected channels : +* ------------------ +* element range meaning +* ------- ----- ------- +* +* pos/neg -2 or 2 -2 = negative HEC (C side), 2 = positive HEC ( A side) +* +* sampling 0 All samplings are summed +* +* region [0,1] 0 : outer part, 1 : inner part +* +* eta [0,9] Outer part region 0, 1.5< eta <2.5 , deta=0.1 +* " [0,3] Inner part region 1, 2.5< eta <3.3 , deta=0.2 +* +* phi [0,63] Outer part, dphi=0.1 +* " [0,31] Inner part, dphi=0.2 +* +* 1536 active supercells in the full HEC +* +* No disconnected channels defined for supercells. +* +* </pre> +*/ +class LArHEC_SuperCell_ID + : public LArHEC_Base_ID +{ +public: + LArHEC_SuperCell_ID (); + + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + + + +CLASS_DEF( LArHEC_SuperCell_ID , 254277678 , 1 ) +SG_BASE (LArHEC_SuperCell_ID, LArHEC_Base_ID); + + +#endif // not CALOIDENTIFIER_LARHEC_SUPERCELL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArID.h new file mode 100755 index 0000000000000000000000000000000000000000..010f1835bedb65cd98af12b727f636cee1c94d48 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArID.h @@ -0,0 +1,7 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArEM_ID.h" +#include "CaloIdentifier/LArFCAL_ID.h" +#include "CaloIdentifier/LArHEC_ID.h" diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArID_Exception.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArID_Exception.h new file mode 100755 index 0000000000000000000000000000000000000000..f24fe8b258fc32de8c40229ec9c528e76c5edcd8 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArID_Exception.h @@ -0,0 +1,83 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/* Generated by Together */ + +/* date of creation : 12/06/2001 */ + +#ifndef LAROFFLINEID_EXCEPTION_H +#define LAROFFLINEID_EXCEPTION_H + +#include <string> + +/** + * @brief Exception class for LAr Identifiers + + * @author Johann Collot , Brinick Simmons + */ + +class LArID_Exception { +public: + + /** + * default constructor + */ + LArID_Exception() : m_message("No error message") , m_code( 999 ) { } + + /** + * constructor to be used + */ + LArID_Exception(std::string l_message , int l_code) : m_message ( l_message ) , m_code ( l_code ) { } + + /** + * set error message + */ + void message(std::string l_message) { m_message = l_message ;} + + /** + * return error message <br> + */ + virtual std::string message() const { return m_message;} + + /** + * set error code number<br> + */ + void code(int l_code) { m_code = l_code ;} + + /** + * return error code <br><br> + * + * error codes : <br> + * 0 : no error <br> + * 5 : LArEM::region_id Error <br> + * 6 : LArEM::channel_id Error <br> + * 7 : LArHEC::region_id Error <br> + * 8 : LArHEC::channel_id Error <br> + * 9 : LArFCAL::region_id Error <br> + *10 : LArFCAL::channel_id Error <br> + * 999 : undefined error <br> + */ + virtual int code() const { return m_code;} + + virtual operator std::string(); + + /** + * destructor + */ + virtual ~LArID_Exception() {} + +private: + + /** + * error message + */ + std::string m_message; + + /** + * error code + */ + int m_code; +}; +#endif //LAROFFLINEID_EXCEPTION_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArMiniFCAL_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArMiniFCAL_ID.h new file mode 100644 index 0000000000000000000000000000000000000000..3d950f72b242d63507da82d67ea189506c00625c --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArMiniFCAL_ID.h @@ -0,0 +1,742 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LARMiniFCAL_ID_H +#define LARMiniFCAL_ID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "IdDict/IdDictDefs.h" + +#include "CaloIdentifier/CaloIDHelper.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "CaloIdentifier/LArNeighbours.h" + +#include "boost/range/iterator_range.hpp" +#include <vector> +#include <algorithm> +#include <set> + + +/** +* +* @class LArMiniFCAL_ID +* @brief Helper class for LArMiniFCAL offline identifiers +* + * + * This class provides an interface to decode and generate offline identifiers + * for the LAr MiniFCAL detector. <p> + * + * Definition and range of values for the fields: <p> + * <pre> + * Connected channels : + * ------------------ + * pos_neg = +/- 2 (A/C side)<br><br> + * + * module = [0] : Only one module <br><br> + * + * depth = [0,3] + * + * phi = [0,phimax] : depends on layout <br><br> + * + * eta = [0,8] depends on layout ; <br> + * + * + * Disconnected channels : + * ------------------ + * pos_neg = +/- 2 (A/C side)<br><br> + * + * no disconnected channels yet <br><br> + * + * + * @author started by RD Schaffer + * @author maintained by F Ledroit + * @author neighbour list/code provided by Sven Menke + * @author adapted from Fcal for MiniFcal by M Fincke + */ + +class Range; +class LArMiniFCAL_region; + +class LArMiniFCAL_ID : public CaloIDHelper +{ +public: + + typedef Identifier::size_type size_type ; + + LArMiniFCAL_ID(void); + + ~LArMiniFCAL_ID(void); + + /** check whether LArMiniFCAL ID helper has been initialized - + returns false if description is not available */ + bool is_initialized() const; + + /** module identifier for a connected channel from ExpandedIdentifier */ + Identifier module_id (const ExpandedIdentifier& exp_id) const ; + + /** cell identifier for a connected channel from ExpandedIdentifier */ + Identifier channel_id (const ExpandedIdentifier& exp_id) const ; + + /** build a module identifier for a connected channel */ + Identifier module_id ( int pos_neg, int module ) const ; + + /** build a cell identifier for a connected channel */ + Identifier channel_id( int pos_neg, int module, int depth, + int eta, int phi ) const ; + + /** module identifier for a disconnected channel from ExpandedIdentifier */ + Identifier disc_module_id (const ExpandedIdentifier& exp_id) const ; + + /** cell identifier for a disconnected channel from ExpandedIdentifier */ + Identifier disc_channel_id (const ExpandedIdentifier& exp_id) const ; + + /** build a module identifier for disconnected channels */ + Identifier disc_module_id ( int pos_neg, int module ) const ; + + /** build a cell identifier for disconnected channels */ + Identifier disc_channel_id( int pos_neg, int module, int depth, + int eta, int phi ) const ; + + /** allows to know in which region is a channel/cell + -- valid for both kinds of channels (connected or not) */ + Identifier module_id (const Identifier id ) const; + + /** allows to build a channel id starting from a module id (e.g. from descriptors) + -- valid for both kinds of channels (connected or not) */ + Identifier channel_id( const Identifier moduleId, int depth, + int eta, int phi) const ; + + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const IdentifierHash hashId) const; + /** to disentangle between connected and disconnected channels + this method is CPU cheap */ + bool is_connected (const Identifier channelId) const; + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_connected ( int pos_neg, int module, int depth, int eta, int phi ) const throw(LArID_Exception); + /** to disentangle between connected and disconnected channels + this method is CPU expensive */ + bool is_disconnected ( int pos_neg, int module, int depth, int eta, int phi ) const throw(LArID_Exception); + + bool is_supercell (const Identifier channelId) const; + + /** create module id from hash id (connected channels only)*/ + Identifier module_id (IdentifierHash module_hash_id) const; + + /** create hash id from module id*/ + IdentifierHash module_hash (Identifier module_id) const; + + /** create hash id from connected channel id -- method NOT optimised, please use channel_hash() above */ + IdentifierHash channel_hash_binary_search (Identifier channelId) const; + + /** create channel id from hash id (all channels, connected + diconnected, together) */ + Identifier disc_channel_id (IdentifierHash disc_channel_hash_id) const; + + /** create hash id from disconnected channel id*/ + IdentifierHash disc_channel_hash (Identifier disc_channelId) const; + + /** region hash table max size */ + size_type module_hash_max (void) const; + /** cell hash table max size (all channels: connected + disconnected) */ + size_type disc_channel_hash_max (void) const; + /** disconnected cell/channel hash table min index */ + size_type disc_channel_hash_min (void) const; + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + /** begin iterator over set of module Identifiers */ + id_iterator mod_begin () const; + /** end iterator over set of module Identifiers */ + id_iterator mod_end () const; + /** range over set of module Identifiers */ + id_range mod_range () const; + + /** begin iterator over full set of Fcal Identifiers for connected channels */ + id_iterator minifcal_begin () const; + /** end iterator over full set of Fcal Identifiers for connected channels */ + id_iterator minifcal_end () const; + /** range over full set of Fcal Identifiers for connected channels */ + id_range minifcal_range () const; + + /** begin iterator over full set of Fcal Identifiers for DISconnected channels */ + id_iterator disc_minifcal_begin () const; + /** end iterator over full set of Fcal Identifiers for DISconnected channels */ + id_iterator disc_minifcal_end () const; + /** range over full set of Fcal Identifiers for DISconnected channels */ + id_range disc_minifcal_range () const; + + /** begin iterator over full set of Fcal Identifiers for DISconnected modules */ + id_iterator disc_mod_begin () const; + /** end iterator over full set of Fcal Identifiers for DISconnected modules */ + id_iterator disc_mod_end () const; + /** range over full set of Fcal Identifiers for DISconnected modules */ + id_range disc_mod_range () const; + + /** provide access to channel id vector, accessed via hash */ + const std::vector<Identifier>& channel_ids() const; + + /** provide access to module id vector, accessed via hash */ + const std::vector<Identifier>& module_ids() const; + + + /** pos_neg : +/- 2 (A/C side) */ + int pos_neg (const Identifier id)const; + /** module [0] */ + int module (const Identifier id)const; + /** depth [0,3], -999 if disconnected channel */ + int depth (const Identifier id)const; + /** eta [0,63] module 1 ; [0,31] module 2 ; [0,15] module 3, -999 if disconnected channel */ + int eta (const Identifier id)const; + /** phi [0,15], -999 if disconnected channel */ + int phi (const Identifier id)const; + + /** min value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_min(const Identifier regId) const; + /** max value of eta index (-999 == failure) + @warning input = REGION ID !! */ + int eta_max(const Identifier regId) const; + /** min value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_min(const Identifier regId) const; + /** max value of phi index (-999 == failure) + @warning input = REGION ID !! */ + int phi_max(const Identifier regId) const; + + /** access to hashes for neighbours return == 0 for neighbours found <br> + option = all2D, prevInSamp, nextInSamp, all3D <br> + in 'nextInSamp', next means 'away from the centre of Atlas' <br> + in 'prevInSamp', prev means 'towards the centre of Atlas' <br> + Nota Bene = neighbours do not include diconnected channels */ + int get_neighbours(const IdentifierHash id, const LArNeighbours::neighbourOption& option, std::vector<IdentifierHash>& neighbourList) const; + + /** eta index -- only for checks, since dummy for disconnected channels */ + int disc_eta (const Identifier id)const; + /** phi index -- only for checks, since dummy for disconnected channels */ + int disc_phi (const Identifier id)const; + + /** context for modules -- method kept for backward compatibility. NOT optimised <br> + access to IdContext's which define which levels of fields are contained in the id */ + IdContext module_context (void) const; + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); + + using CaloIDHelper::channel_id; + using CaloIDHelper::channel_hash; + // Inherited from CaloIDHelper: + // + //Identifier channel_id (IdentifierHash hashId) const; + //Identifier region_id (IdentifierHash hashId) const; + //IdentifierHash channel_hash (Identifier channelId) const; + //IdentifierHash region_hash (Identifier regionId) const; + //size_type channel_hash_max() const; + //size_type region_hash_max() const; + //IdContext channel_context() const; + //IdContext region_context() const; + //const std::vector<const IdDictRegion*>& dictRegions() const; + //float etaGranularity(const IdentifierHash regHash) const; + //float phiGranularity(const IdentifierHash regHash) const; + //float eta0(const IdentifierHash regHash) const; + //float phi0(const IdentifierHash regHash) const; + //virtual int get_id (const IdentifierHash& hash_id, + // Identifier& id, + // const IdContext* context = 0 ) const; + //virtual int get_hash (const Identifier& id, + // IdentifierHash& hash_id, + // const IdContext* context = 0 ) const; + + +private: + + + enum {NOT_VALID_HASH = 64000}; + + int phi_min_init(const Identifier regId) const; + + std::vector<std::set<IdentifierHash> > m_neighbors_2d_vec; + std::vector<std::set<IdentifierHash> > m_neighbors_3d_next_vec; + std::vector<std::set<IdentifierHash> > m_neighbors_3d_prev_vec; + + // Check methods + + void module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception); + void channel_id_checks ( int pos_neg, int module, + int depth, int eta, int phi ) const throw(LArID_Exception); + void channel_id_checks ( const Identifier moduleId, + int depth, int eta, int phi) const throw(LArID_Exception); + void disc_module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception); + void disc_channel_id_checks ( int pos_neg, int module, + int depth, int eta, int phi ) const throw(LArID_Exception); + void disc_channel_id_checks ( const Identifier moduleId, + int depth, int eta, int phi) const throw(LArID_Exception); + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + virtual int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + int get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + + int initLevelsFromDict(void) ; + + int init_hashes(void) ; + int init_disc_hashes(void) ; + + int init_neighbors_from_file(std::string filename, std::vector<std::set<IdentifierHash> > &vec); + + int init_neighbors_2d(std::string filename) + { + return init_neighbors_from_file(filename, m_neighbors_2d_vec); + } + + int init_neighbors_3d_next(std::string filename) + { + return init_neighbors_from_file(filename, m_neighbors_3d_next_vec); + } + + int init_neighbors_3d_prev(std::string filename) + { + return init_neighbors_from_file(filename, m_neighbors_3d_prev_vec); + } + + int init_neighbors(const IdDictMgr& dict_mgr) ; + + // flag to protect for when helper hasn't been able to be + // initialized - no description in xml dictionary + bool m_is_initialized; + size_type m_fcal_region_index; + size_type m_minifcal_region_index; + size_type m_LAR_INDEX; + size_type m_MiniFCAL_INDEX; + size_type m_POSNEG_INDEX; + size_type m_MODULE_INDEX; + size_type m_DEPTH_INDEX; + size_type m_ETA_INDEX; + size_type m_PHI_INDEX; + + MultiRange m_full_channel_range; + MultiRange m_full_module_range; + MultiRange m_full_depth_range; + MultiRange m_full_disc_channel_range; + MultiRange m_full_disc_module_range; + + CaloIDHelper::HashGroup m_disc_channels; + CaloIDHelper::HashGroup m_disc_modules; + + bool m_two_sym_sides; + + std::vector<short int> m_vecOfCellInfo; + std::vector<short int> m_vecOfPhiMin; + + + IdDictFieldImplementation m_lar_impl; + IdDictFieldImplementation m_fcal_impl; + IdDictFieldImplementation m_pn_impl; + IdDictFieldImplementation m_module_impl; + IdDictFieldImplementation m_depth_impl; + IdDictFieldImplementation m_eta_impl; + IdDictFieldImplementation m_phi_impl; + + IdDictFieldImplementation m_pn_mod_impl; + +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( LArMiniFCAL_ID , 79264204 , 1 ) + + +//-------------------- +// Inline definitions +//-------------------- + +//---------------------------------------------------------------------------- +inline bool +LArMiniFCAL_ID::is_initialized() const +{ + return m_is_initialized; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::module_id (const ExpandedIdentifier& exp_id) const +{ + return this->module_id ( exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->channel_id (exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_DEPTH_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::module_id (int pos_neg, int module) const +{ + + Identifier result(0); + + // Do checks + if(m_do_checks) { + module_id_checks ( pos_neg, module ); + } + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (lar_fcal_field_value(), result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::channel_id ( int pos_neg, int module, int depth, + int eta, int phi ) const +{ + + // Do checks + if(m_do_checks) { + channel_id_checks( pos_neg, module, depth, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (lar_fcal_field_value(), result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + m_depth_impl.pack (depth, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::disc_module_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_module_id ( exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX] ); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::disc_channel_id (const ExpandedIdentifier& exp_id) const +{ + return this->disc_channel_id (exp_id[m_POSNEG_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_DEPTH_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::disc_module_id (int pos_neg, int module) const +{ + + // Do checks + if(m_do_checks) { + disc_module_id_checks ( pos_neg, module ); + } + + Identifier result(0); + + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (-3 , result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::disc_channel_id ( int pos_neg, int module, int depth, + int eta, int phi ) const +{ + + // Do checks + if(m_do_checks) { + disc_channel_id_checks( pos_neg, module, depth, eta, phi ); + } + + Identifier result(0); + // Pack fields independently + m_lar_impl.pack (lar_field_value(), result); + m_fcal_impl.pack (-3 , result); + m_pn_impl.pack (pos_neg, result); + m_module_impl.pack (module, result); + m_depth_impl.pack (depth, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::module_id ( const Identifier channelId ) const +{ + + Identifier result(channelId); + // reset depth/eta/phi + m_depth_impl.reset(result); + m_eta_impl.reset(result); + m_phi_impl.reset(result); + return (result); +} + +//---------------------------------------------------------------------------- +inline Identifier +LArMiniFCAL_ID::channel_id ( const Identifier module_id, int depth, + int eta, int phi ) const +{ + // Do checks + if(m_do_checks) { + if(is_connected(module_id)) { + channel_id_checks( module_id, depth, eta, phi ); + } else { + disc_channel_id_checks( module_id, depth, eta, phi ); + } + } + + Identifier result(module_id); + + // Reset the fields and then set the values + m_depth_impl.reset (result); + m_eta_impl.reset (result); + m_phi_impl.reset (result); + m_depth_impl.pack (depth, result); + m_eta_impl.pack (eta, result); + m_phi_impl.pack (phi, result); + + return result; +} + +//---------------------------------------------------------------------------- +inline bool LArMiniFCAL_ID::is_connected(const IdentifierHash hashId) const +{ + return ( hashId < channels().hash_max() ); +} + +//---------------------------------------------------------------------------- +inline bool LArMiniFCAL_ID::is_connected(const Identifier channelId) const +{ + return ( m_fcal_impl.unpack(channelId) == 3 ); +} + +//---------------------------------------------------------------------------- +inline Identifier LArMiniFCAL_ID::module_id (IdentifierHash module_hash_id) const +{ + return region_id(module_hash_id); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArMiniFCAL_ID::module_hash (Identifier module_id) const +{ + return region_hash (module_id); +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArMiniFCAL_ID::channel_hash_binary_search (Identifier channelId) const +{ + return channel_hash (channelId); +} + +//---------------------------------------------------------------------------- +inline Identifier LArMiniFCAL_ID::disc_channel_id (IdentifierHash disc_channel_hash_id) const +{ + if(disc_channel_hash_id < channels().hash_max()) { + return channel_id (disc_channel_hash_id); + } + else { + return m_disc_channels.id (disc_channel_hash_id - channels().hash_max()); + } +} + +//---------------------------------------------------------------------------- +inline IdentifierHash LArMiniFCAL_ID::disc_channel_hash (Identifier disc_channelId) const +{ + if (is_connected(disc_channelId)) { + return channel_hash (disc_channelId); + } + else { + IdentifierHash hash = m_disc_channels.hash (disc_channelId); + if (hash.is_valid()) + hash += channels().hash_max(); + return hash; + } +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::size_type LArMiniFCAL_ID::module_hash_max (void) const +{ + return region_hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::size_type LArMiniFCAL_ID::disc_channel_hash_max (void) const +{ + return channels().hash_max() + m_disc_channels.hash_max(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::size_type LArMiniFCAL_ID::disc_channel_hash_min (void) const +{ + return channels().hash_max() ; +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::mod_begin (void) const +{ + return regions().begin(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::mod_end (void) const +{ + return regions().end(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_range LArMiniFCAL_ID::mod_range() const +{ + return regions().range(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::minifcal_begin (void) const +{ + return channels().begin(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::minifcal_end (void) const +{ + return channels().end(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_range LArMiniFCAL_ID::minifcal_range() const +{ + return channels().range(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::disc_minifcal_begin (void) const +{ + return m_disc_channels.begin(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::disc_minifcal_end (void) const +{ + return m_disc_channels.end(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_range LArMiniFCAL_ID::disc_minifcal_range() const +{ + return m_disc_channels.range(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::disc_mod_begin (void) const +{ + return m_disc_modules.begin(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_iterator LArMiniFCAL_ID::disc_mod_end (void) const +{ + return m_disc_modules.end(); +} + +//---------------------------------------------------------------------------- +inline LArMiniFCAL_ID::id_range LArMiniFCAL_ID::disc_mod_range() const +{ + return m_disc_modules.range(); +} + +//---------------------------------------------------------------------------- +inline const std::vector<Identifier>& LArMiniFCAL_ID::channel_ids() const +{ + return channels().ids(); +} + +//---------------------------------------------------------------------------- +inline const std::vector<Identifier>& LArMiniFCAL_ID::module_ids() const +{ + return regions().ids(); +} + +//---------------------------------------------------------------------------- +inline int LArMiniFCAL_ID::pos_neg (const Identifier id)const +{ + return (m_pn_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArMiniFCAL_ID::module (const Identifier id)const +{ + return (m_module_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int LArMiniFCAL_ID::depth (const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_depth_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArMiniFCAL_ID::eta (const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_eta_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArMiniFCAL_ID::phi(const Identifier id)const +{ + int result = -999 ; + if(is_connected(id)) result = m_phi_impl.unpack(id); + return(result); +} + +//---------------------------------------------------------------------------- +inline int LArMiniFCAL_ID::phi_min(const Identifier modId) const +{ + IdentifierHash modHash = module_hash(modId); + unsigned int index = modHash; + return (m_vecOfPhiMin[index]); +} + +//---------------------------------------------------------------------------- +inline bool LArMiniFCAL_ID::is_supercell(const Identifier /*channelId*/) const +{ + return false; +} + +#endif // LARMiniFCAL_ID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/LArNeighbours.h b/Calorimeter/CaloIdentifier/CaloIdentifier/LArNeighbours.h new file mode 100755 index 0000000000000000000000000000000000000000..289e9e408f837c03fe348da4260a3817b4607012 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/LArNeighbours.h @@ -0,0 +1,33 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/* date of creation : 28/07/2003 */ + +#ifndef LAR_NEIGHBOURS_H +#define LAR_NEIGHBOURS_H + + +namespace LArNeighbours { + enum neighbourOption { prevInPhi = 0x0001, + nextInPhi = 0x0002, + prevInEta = 0x0004, + nextInEta = 0x0008, + faces2D = prevInPhi|nextInPhi|prevInEta|nextInEta, + corners2D = 0x0010, + all2D = corners2D|faces2D, + prevInSamp = 0x0020, + nextInSamp = 0x0040, + upAndDown = prevInSamp|nextInSamp, + prevSubDet = 0x0080, + nextSubDet = 0x0100, + all3D = all2D|prevInSamp|nextInSamp|upAndDown|prevSubDet|nextSubDet, + corners3D = 0x0200, + all3DwithCorners = all3D|corners3D, + prevSuperCalo = 0x0400, + nextSuperCalo = 0x0800, + super3D = all3D|prevSuperCalo|nextSuperCalo}; +} + +#endif //LAR_NEIGHBOURS_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/TTOnlineID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/TTOnlineID.h new file mode 100755 index 0000000000000000000000000000000000000000..6342fee3c7b9617b9f7061ce9a937d21438d1893 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/TTOnlineID.h @@ -0,0 +1,465 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALOIDENTIFIER_TTONLINEID_H +#define CALOIDENTIFIER_TTONLINEID_H + +#include "CLIDSvc/CLASS_DEF.h" +#include "GaudiKernel/MsgStream.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/HWIdentifier.h" +#include "Identifier/IdentifierHash.h" +#include "Identifier/Range.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "IdDict/IdDictDefs.h" +#include "CaloIdentifier/CaloID_Exception.h" +#include <vector> +#include <iostream> +#include <algorithm> +#include <map> + +//using namespace std; + +class IdentifierHash; +class Range; + +/** +* +* @class TTOnlineID +* @brief Helper class for Calo TT online identifiers +* +* This class provides an interface to decode and generate online identifiers +* for the Calorimeter Trigger Towers. <p> +* +*/ +class TTOnlineID : public AtlasDetectorID +{ + public: + + typedef Identifier::size_type size_type; + + TTOnlineID(void); + ~TTOnlineID(void); + + + /* build towerId HWIdentifier */ + /*=========================== */ + /** (1) create towerId from fields */ + HWIdentifier crateId( int crate ) const; + /** (2) create towerId from hash */ + HWIdentifier crateId( IdentifierHash crate_hash ) const; + /** (3) create towerId from hash */ + IdentifierHash crateHash( HWIdentifier crate_id ) const; + /** (4) iterator over towerId */ + std::vector<HWIdentifier>::const_iterator crate_begin(void) const; + std::vector<HWIdentifier>::const_iterator crate_end(void) const; + + /* build moduleId HWIdentifier */ + /*=========================== */ + /** (1) create towerId from fields */ + HWIdentifier moduleId( int crate, int module) const; + /** (2) create towerId from hash */ + HWIdentifier moduleId( IdentifierHash crate_hash ) const; + /** (3) create towerId from hash */ + IdentifierHash moduleHash( HWIdentifier crate_id ) const; + /** (4) iterator over towerId */ + std::vector<HWIdentifier>::const_iterator module_begin(void) const; + std::vector<HWIdentifier>::const_iterator module_end(void) const; + + /* build submoduleId HWIdentifier */ + /*=========================== */ + /** (1) create towerId from fields */ + HWIdentifier submoduleId( int crate, int module, int submodule) const; + /** (2) create towerId from hash */ + HWIdentifier submoduleId( IdentifierHash crate_hash ) const; + /** (3) create towerId from hash */ + IdentifierHash submoduleHash( HWIdentifier crate_id ) const; + /** (4) iterator over towerId */ + std::vector<HWIdentifier>::const_iterator submodule_begin(void) const; + std::vector<HWIdentifier>::const_iterator submodule_end(void) const; + + /* build moduleId HWIdentifier */ + /*=========================== */ + /** (1) create towerId from fields */ + HWIdentifier channelId( int crate, int module, int submodule, int channel) const; + /** (2) create towerId from hash */ + HWIdentifier channelId( IdentifierHash crate_hash ) const; + /** (3) create towerId from hash */ + IdentifierHash channelHash( HWIdentifier crate_id ) const; + /** (4) iterator over towerId */ + std::vector<HWIdentifier>::const_iterator channel_begin(void) const; + std::vector<HWIdentifier>::const_iterator channel_end(void) const; + + + + /* hash tables max size */ + /*====================== */ + size_type crateHashMax (void) const; + size_type moduleHashMax (void) const; + size_type submoduleHashMax (void) const; + size_type channelHashMax (void) const; + + + /** Initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); + + + // HWIdentifier Fields for TTOnlineID + // ======================================== + int crate( const HWIdentifier id )const; + int module( const HWIdentifier id )const; + int submodule( const HWIdentifier id )const; + int channel( const HWIdentifier id )const; + + + /** context for feedthroughs, feb & channels */ + + IdContext crateContext(void) const; + IdContext moduleContext(void) const; + IdContext submoduleContext(void) const; + IdContext channelContext(void) const; + + +private: + + enum {NOT_VALID_HASH = 256000}; + + IdentifierHash channel_hash_binary_search(HWIdentifier channelId) const; + + // Check methods + void channel_Id_checks(int crate, int module, int submodule, int channel ) const throw(CaloID_Exception); + void channel_Id_checks(const HWIdentifier crateId, int module, int submodule, int channel ) const throw(CaloID_Exception); + void channel_Id_checks(const HWIdentifier moduleId, int submodule, int channel ) const throw(CaloID_Exception); + void channel_Id_checks(const HWIdentifier submoduleId, int channel ) const throw(CaloID_Exception); + + void submodule_Id_checks(int crate, int module, int submodule ) const throw(CaloID_Exception); + void module_Id_checks(int crate, int module ) const throw(CaloID_Exception); + void crate_Id_checks( int crate ) const throw(CaloID_Exception); + + /** create expanded HWIdentifier from HWIdentifier (return == 0 for OK) */ + int get_expanded_id (const HWIdentifier& id, ExpandedIdentifier& exp_id, + const IdContext* context) const; + + /** return the value of the detzside field (initialized in initialize_from_dictionary())*/ + int detzside_field_value() const; + + /** init() hashes */ + int initLevelsFromDict(void) ; + int init_hashes(void); + + /** Member Data index */ + size_type m_calo_index; + size_type m_detzside_index; + size_type m_l1online_regions_index; + size_type m_crate_index; + size_type m_module_index; + size_type m_submodule_index; + size_type m_channel_index; + + const IdDictDictionary* m_dict; + MultiRange m_full_crate_range; + MultiRange m_full_module_range; + MultiRange m_full_submodule_range; + MultiRange m_full_channel_range; + + size_type m_crateHashMax; + size_type m_moduleHashMax; + size_type m_submoduleHashMax; + size_type m_channelHashMax; + + std::vector<HWIdentifier> m_crate_vec; + std::vector<HWIdentifier> m_module_vec; + std::vector<HWIdentifier> m_submodule_vec; + std::vector<HWIdentifier> m_channel_vec; + + int m_iDetZSideFieldValue; + + /** + @brief small class holding the starting hash value, the min eta and the number of phi bins of each region <br> + used to CPU-optimize the conversion from an identifier to a hash index + */ + class HashCalc + { + public: + HashCalc() : + m_hash(0), + m_channelmin(0) {} + IdentifierHash m_hash; + size_type m_channelmin; + }; + std::vector<HashCalc> m_hash_calcs; + + + /** Field Implementation */ + IdDictFieldImplementation m_calo_impl; + IdDictFieldImplementation m_calo_detzside_impl; + IdDictFieldImplementation m_crate_impl; + IdDictFieldImplementation m_module_impl; + IdDictFieldImplementation m_submodule_impl; + IdDictFieldImplementation m_channel_impl; +}; + + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( TTOnlineID , 38321944 , 1 ) + + +//===================== +// Inline Definitions +//===================== + +/* Crates */ + +//========================================================================================================== +inline HWIdentifier TTOnlineID::crateId( int crate ) const +//========================================================================================================== +{ + HWIdentifier result(0); + m_calo_impl.pack (10 , result); + m_calo_detzside_impl.pack (0 , result); + m_crate_impl.pack (crate , result); + + /* Do checks */ + if(m_do_checks) { + crate_Id_checks( crate ); + } + return result; +} + +//============================================================================== */ +inline HWIdentifier TTOnlineID::crateId(IdentifierHash cratehash_id) const +//===============================================================================*/ +{ + return(m_crate_vec[cratehash_id]); +} + +//============================================================================= +inline IdentifierHash TTOnlineID::crateHash (HWIdentifier crate_id) const{ +//============================================================================= + std::vector<HWIdentifier>::const_iterator it = std::lower_bound(m_crate_vec.begin(),m_crate_vec.end(),crate_id); + if ( it != m_crate_vec.end() ){ + return (it - m_crate_vec.begin()); + } + return (0); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::crate_begin(void) const { +//============================================================================= + return(m_crate_vec.begin()); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::crate_end(void) const { +//============================================================================= + return(m_crate_vec.end()); +} + +/* Modules */ + +//========================================================================================================== +inline HWIdentifier TTOnlineID::moduleId( int crate, int module ) const +//========================================================================================================== +{ + HWIdentifier result(0); + m_calo_impl.pack (10 , result); + m_calo_detzside_impl.pack (0 , result); + m_crate_impl.pack (crate , result); + m_module_impl.pack (module , result); + + /* Do checks */ + if(m_do_checks) { + module_Id_checks( crate, module ); + } + return result; +} + +//============================================================================== */ +inline HWIdentifier TTOnlineID::moduleId(IdentifierHash modulehash_id) const +//===============================================================================*/ +{ + return(m_module_vec[modulehash_id]); +} + +//============================================================================= +inline IdentifierHash TTOnlineID::moduleHash (HWIdentifier module_id) const{ +//============================================================================= + std::vector<HWIdentifier>::const_iterator it = std::lower_bound(m_module_vec.begin(),m_module_vec.end(),module_id); + if ( it != m_module_vec.end() ){ + return (it - m_module_vec.begin()); + } + return (0); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::module_begin(void) const { +//============================================================================= + return(m_module_vec.begin()); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::module_end(void) const { +//============================================================================= + return(m_module_vec.end()); +} + + +/* SubModules */ + +//========================================================================================================== +inline HWIdentifier TTOnlineID::submoduleId( int crate, int module, int submodule ) const +//========================================================================================================== +{ + HWIdentifier result(0); + m_calo_impl.pack (10 , result); + m_calo_detzside_impl.pack (0 , result); + m_crate_impl.pack (crate , result); + m_module_impl.pack (module , result); + m_submodule_impl.pack (submodule , result); + + /* Do checks */ + if(m_do_checks) { + submodule_Id_checks( crate, module, submodule ); + } + return result; +} + +//============================================================================== */ +inline HWIdentifier TTOnlineID::submoduleId(IdentifierHash submodulehash_id) const +//===============================================================================*/ +{ + return(m_submodule_vec[submodulehash_id]); +} + +//============================================================================= +inline IdentifierHash TTOnlineID::submoduleHash (HWIdentifier submodule_id) const{ +//============================================================================= + std::vector<HWIdentifier>::const_iterator it = std::lower_bound(m_submodule_vec.begin(),m_submodule_vec.end(),submodule_id); + if ( it != m_submodule_vec.end() ){ + return (it - m_submodule_vec.begin()); + } + return (0); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::submodule_begin(void) const { +//============================================================================= + return(m_submodule_vec.begin()); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::submodule_end(void) const { +//============================================================================= + return(m_submodule_vec.end()); +} + + +/* Channels */ + +//========================================================================================================== +inline HWIdentifier TTOnlineID::channelId( int crate, int module, int submodule, int channel ) const +//========================================================================================================== +{ + HWIdentifier result(0); + m_calo_impl.pack (10 , result); + m_calo_detzside_impl.pack (0 , result); + m_crate_impl.pack (crate , result); + m_module_impl.pack (module , result); + m_submodule_impl.pack (submodule , result); + m_channel_impl.pack (channel , result); + + /* Do checks */ + if(m_do_checks) { + channel_Id_checks( crate, module, submodule, channel ); + } + return result; +} + +//============================================================================== */ +inline HWIdentifier TTOnlineID::channelId(IdentifierHash channelhash_id) const +//===============================================================================*/ +{ + return(m_channel_vec[channelhash_id]); +} + +//============================================================================= +inline IdentifierHash TTOnlineID::channelHash (HWIdentifier channel_id) const{ +//============================================================================= + std::vector<HWIdentifier>::const_iterator it = std::lower_bound(m_channel_vec.begin(),m_channel_vec.end(),channel_id); + if ( it != m_channel_vec.end() ){ + return (it - m_channel_vec.begin()); + } + return (0); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::channel_begin(void) const { +//============================================================================= + return(m_channel_vec.begin()); +} + +//============================================================================= +inline std::vector<HWIdentifier>::const_iterator TTOnlineID::channel_end(void) const { +//============================================================================= + return(m_channel_vec.end()); +} + + +/* Hash indices */ + +inline TTOnlineID::size_type TTOnlineID::crateHashMax (void) const +/*====================================================================*/ +{ + return m_crateHashMax; +} + +inline TTOnlineID::size_type TTOnlineID::moduleHashMax (void) const +/*====================================================================*/ +{ + return m_moduleHashMax; +} + +inline TTOnlineID::size_type TTOnlineID::submoduleHashMax (void) const +/*====================================================================*/ +{ + return m_submoduleHashMax; +} + +inline TTOnlineID::size_type TTOnlineID::channelHashMax (void) const +/*====================================================================*/ +{ + return m_channelHashMax; +} + +inline int TTOnlineID::crate(const HWIdentifier id)const +/*===========================================================*/ +{ + return (m_crate_impl.unpack(id)); +} + +inline int TTOnlineID::module(const HWIdentifier id)const +/*===========================================================*/ +{ + return (m_module_impl.unpack(id)); +} + +inline int TTOnlineID::submodule(const HWIdentifier id)const +/*===========================================================*/ +{ + return (m_submodule_impl.unpack(id)); +} + +inline int TTOnlineID::channel(const HWIdentifier id)const +/*===========================================================*/ +{ + return (m_channel_impl.unpack(id)); +} + +inline int TTOnlineID::detzside_field_value() const +{ + return m_iDetZSideFieldValue; +} + +#endif // TTOnlineID_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/TileID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/TileID.h new file mode 100755 index 0000000000000000000000000000000000000000..ded5865bc895305ff6ac111f0f52388e056dcdbb --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/TileID.h @@ -0,0 +1,89 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Tile Calorimeter detector description package + ----------------------------------------- + Copyright (C) 1998-2003 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: TileID.h,v 1.14 2008-07-10 00:55:04 solodkov Exp $ +//<version> $Name: not supported by cvs2svn $ + +// TileID.h +// +// Atlas detector Identifier class for Tile Calorimeter +// + +#ifndef CALOIDENTIFIER_TILEID_H +#define CALOIDENTIFIER_TILEID_H + +#include "AtlasDetDescr/AtlasDetectorID.h" +// #include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "CaloIdentifier/Tile_Base_ID.h" +#include "CaloIdentifier/TileID_Exception.h" + +#include "CLIDSvc/CLASS_DEF.h" +#include "SGTools/BaseInfo.h" + +#include "boost/range/iterator_range.hpp" +#include <string> +#include <vector> +#include <set> + +/** +* +* @class TileID +* @brief Helper class for TileCal offline identifiers +* @author Alexander Solodkov +* +* This class provides an interface to generate an identifier or a range +* for the Tile Calorimeter detector subsystem. +* +* Definition and the range of values for the elements of the identifier: +* <pre> +* +* element range meaning +* ------- ----- ------- +* +* section 1 to 15 section number ( 1 = Barrel +* 2 = Extended Barrel +* 3 = Gap Detector +* i.e. gap scin E1-E4 and ITC cells D4, C10 +* 4 = Ancillary detectors ) +* section codes 5 and 6 are used internally +* for supercell barrel and extbarrel, respectively. +* side -1 to 1 -1 = negative eta, 1 = positive eta, 0 = undefined (both sides) +* module 0 to 63 module number by phi +* tower(eta) 0 to 15 0-15 = tower number by pseudorapidity with 0.1 increment in eta +* Attention! in PhysTDR data last tower is 16 +* sample 0 to 15 0 = A, 1 = B = BC = C, 2 = D, 3 = special gap scin cells E1-E4 +* 4-15 = individual tiles, used in Cesium calibration data +* pmt 0 to 1 PMT number in the cell (0 = side close to module with smaller number) +* adc 0 to 1 ADC number for the PMT (0 = low gain, 1 = high gain) +* +* </pre> +*/ +class TileID : public Tile_Base_ID { + + friend class TileNeighbour; + +public: + + // default constructor + TileID(); + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( TileID , 2901 , 1 ) +SG_BASE (TileID, Tile_Base_ID); + +#endif // CALOIDENTIFIER_TILEID_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/TileID_Exception.h b/Calorimeter/CaloIdentifier/CaloIdentifier/TileID_Exception.h new file mode 100755 index 0000000000000000000000000000000000000000..d7c6371dd5a89c0f407ac10de74ba49611aa9746 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/TileID_Exception.h @@ -0,0 +1,81 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TILEID_EXCEPTION_H +#define TILEID_EXCEPTION_H + +#include <string> + +/** +* @class TileID_Exception +* @brief Exception class for Tile Identifiers +* @author Alexander Solodkov +*/ + +class TileID_Exception { +public: + + /** + * default constructor + */ + TileID_Exception() : m_message("No error message") , m_code( 999 ) { } + + /** + * constructor to be used + */ + TileID_Exception(std::string l_message , int l_code) : m_message ( l_message ) , m_code ( l_code ) { } + + /** + * set error message + */ + void message(std::string l_message) { m_message = l_message ;} + + /** + * return error message + */ + virtual std::string message() const { return m_message;} + + /** + * set error code number + */ + void code(int l_code) { m_code = l_code ;} + + /** + * return error code + * + * error codes : + * 0 : no error + * 1 : Logical ID is out of range + * 2 : Hardware ID is out of range + * 3 : No PMT for this logical ID (invalid logical ID) + * 4 : No PMT for this channel (not connected) + * 9 : ID compactification Error + *11 : id is not an TileCal logical identifier + *12 : id is not an TileCal hardware identifier + *19 : no IDCompactor available ( null pointer ) + * 999 : undefined error + */ + virtual int code() const { return m_code;} + + virtual operator std::string(); + + /** + * destructor + */ + virtual ~TileID_Exception() {} + +private: + + /** + * error message + */ + std::string m_message; + + /** + * error code + */ + int m_code; +}; +#endif //TILEID_EXCEPTION_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/TileNeighbour.h b/Calorimeter/CaloIdentifier/CaloIdentifier/TileNeighbour.h new file mode 100755 index 0000000000000000000000000000000000000000..4ff62aa1d83e314028d69045b0208cc071ee4370 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/TileNeighbour.h @@ -0,0 +1,100 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Tile Calorimeter detector description package + ----------------------------------------- + Copyright (C) 2003 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: TileNeighbour.h,v 1.6 2007-07-08 19:22:30 solodkov Exp $ +//<version> $Name: not supported by cvs2svn $ + +// TileNeighbour.h +// +// Helper for neighbour search in TileCalorimeter +// +// Aug-2003 by AS +// + +#ifndef CALOIDENTIFIER_TILENEIGHBOUR_H +#define CALOIDENTIFIER_TILENEIGHBOUR_H + +#include "CaloIdentifier/LArNeighbours.h" + +#include <string> +#include <vector> +#include <set> + +/** +* @class TileNeighbour +* @brief This class return all neighbours for given hash ID of the cell +* @author Alexander Solodkov +*/ + +class Tile_Base_ID; +class Identifier; +class IdentifierHash; +class IdContext; +class MsgStream; + +class TileNeighbour { + +public: + + // default constructor + TileNeighbour(void); + + // default destructor + virtual ~TileNeighbour(void); + + int initialize(const Tile_Base_ID* tileID, std::string filename = "TileNeighbour.txt" ); + int prev_phi (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int next_phi (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int prev_eta (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int next_eta (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int prev_samp (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int next_samp (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int prev_samp_wide (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + int next_samp_wide (const IdentifierHash & id, std::vector<IdentifierHash> & neighbourList) const; + +private: + + unsigned int m_debug; + unsigned int m_length; + unsigned int m_maxHash; + + std::vector<std::vector<short int> > m_prev_eta; + std::vector<std::vector<short int> > m_next_eta; + std::vector<std::vector<short int> > m_prev_samp; + std::vector<std::vector<short int> > m_next_samp; + std::vector<std::vector<short int> > m_prev_samp_wide; + std::vector<std::vector<short int> > m_next_samp_wide; + + std::vector<short int> m_phid_index; + std::vector<short int> m_cell_index; + std::vector<IdentifierHash> m_hashid_vec; + + int initialize_prev_eta (unsigned int ind, const std::vector<short int> & all_cells); + int initialize_next_eta (unsigned int ind, const std::vector<short int> & all_cells); + int initialize_prev_samp(unsigned int ind, const std::vector<short int> & all_cells); + int initialize_next_samp(unsigned int ind, const std::vector<short int> & all_cells); + int initialize_prev_samp_wide(unsigned int ind, const std::vector<short int> & all_cells); + int initialize_next_samp_wide(unsigned int ind, const std::vector<short int> & all_cells); + + int fill_phi_vec (std::set<std::pair<IdentifierHash,int> > & ids, + unsigned int hash_max, unsigned int max_phi, MsgStream & log); + + void get_id (std::string & strName, Identifier & id, const Tile_Base_ID* tileID); + + void get_name (Identifier & id, std::string & section, int & module, + std::string & cell, const Tile_Base_ID* tileID, MsgStream & log, + const char * end); + + void print_list (std::vector<IdentifierHash> & nb_list, + const Tile_Base_ID* tileID, const IdContext* context, + MsgStream & log, const char * pref, const char * suff); +}; + +#endif // CALOIDENTIFIER_TILENEIGHBOUR_H diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h new file mode 100755 index 0000000000000000000000000000000000000000..eaf989febded7f6aa632cc7e4d4359b7c51594da --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h @@ -0,0 +1,308 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Tile Calorimeter detector description package + ----------------------------------------- + Copyright (C) 1998-2003 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: TileTBID.h,v 1.1 2009-03-30 11:19:27 tsulaia Exp $ +//<version> $Name: not supported by cvs2svn $ + +// TileTBID.h +// +// Atlas detector Identifier class for Tile Calorimeter +// + +#ifndef TILEIDENTIFIER_TILETBID_H +#define TILEIDENTIFIER_TILETBID_H + +#include "CaloIdentifier/TileID.h" + +/** +* @class TileTBID +* @brief Helper class for TileCal offline identifiers of ancillary testbeam detectors and MBTS +* @author Alexander Solodkov +* +* +* This class provides an interface to generate hardware identifier or +* a range for the Tile Calorimeter detector subsystem. +* +* Definition and the range of values for the elements of the identifier: +* <pre> +* +* element range meaning +* ------- ----- ------- +* +* type 2 to 6 Readout type +* 2 - prototype modules (not used now) +* 3 - all detectors with ADC readout +* 4 - all detectors with TDC readout +* 5 - all detectors with flash ADC readout +* 6 - non-detectors +* module 0 to 6 For type=2 - just module number (0-4) +* For type=5 - drawer number (0-5) +* for (type=3) | for (type=4) | for (type=6) +* 0 - S1-S4 | beam ch1 (both X & Y) | CIS parameters +* 1 - Ch1-Ch2 | beam ch2 (both X & Y) | Pattern Unit +* 2 - Laser | beam ch3 (both X & Y) | +* 3 - back mu-wall | beam ch4 (both X & Y) | +* 4 - side mu-wall | extra | +* 5 - crack counter | | +* 6 - phantom calo | | +* channel 0 to 63 channel number +* (for beam chambers: X=0, Y=1) +* +* if TileTBID is used for minimum bias scintillators, then +* +* type -1 or +1 - eta side +* module 0 to 7 - phi slice number +* channel 0 to 1 - cell number along radius +* </pre> +*/ + +class TileTBID : public AtlasDetectorID { + +public: + + typedef Identifier::size_type size_type ; + + /** + * @brief Default constructor + */ + TileTBID(void); + + /** + * @brief Default destructor + */ + virtual ~TileTBID(); + + /** Identifier numbering */ + enum SECTION { TILE_TESTBEAM = 4 /*TileID::TESTBEAM*/ }; + enum RO_TYPE { PROTO_TYPE = 2, + ADC_TYPE = 3, + TDC_TYPE = 4, + FADC_TYPE = 5, + INT_TYPE = 6 }; + enum DET_NUM { S_COUNTER = 0, CIS_PAR = 0, + CH_COUNTER = 1, PATTERN_UNIT = 1, + LASER = 2, + BACK_WALL = 3, + SIDE_WALL = 4, + CRACK_WALL = 5, + PHANTOM_CALO = 6 }; + + + /** + * @brief identifer for all Tile testbeam detectors + */ + Identifier tiletb_id ( void ) const; + /** + * @brief identifer for Tile testbeam detectors of a give type + */ + Identifier type_id ( int type) const throw(TileID_Exception); + /** + * @brief identifer for one module of a Tile testbeam detector + */ + Identifier module_id ( int type, int module ) const throw(TileID_Exception); + /** + * @brief identifer for one channel of a Tile testbeam detector + */ + Identifier channel_id ( int type, int module, + int channel ) const throw(TileID_Exception); + + /** + * @brief extract module ID from channel ID + */ + Identifier module_id ( const Identifier& id ) const; + /** + * @brief create channel ID from module ID + */ + Identifier channel_id ( const Identifier& id, + int channel ) const throw(TileID_Exception); + + /** + * @brief Test ID if it is TileTBID + */ + bool is_tiletb ( const Identifier& id ) const; + + /** + * @brief extract system field from TileTB identifier + */ + inline int system ( const Identifier & id ) const { return m_system_impl.unpack(id); } + /** + * @brief extract section field from TileTB identifier + */ + inline int section ( const Identifier & id ) const { return m_section_impl.unpack(id); } + /** + * @brief extract type field from TileTB identifier + */ + inline int type ( const Identifier & id ) const { return m_type_impl.unpack(id); } + /** + * @brief extract module field from TileTB identifier + */ + inline int module ( const Identifier & id ) const { return m_module_impl.unpack(id); } + /** + * @brief extract channel field from TileTB identifier + */ + inline int channel ( const Identifier & id ) const { return m_channel_impl.unpack(id); } + + /** define synonyms for minimum bias scintillators */ + + /** + * @brief extract side field from MBTS identifier + */ + inline int side ( const Identifier & id ) const { return type(id); } + /** + * @brief extract phi field from MBTS identifier + */ + inline int phi ( const Identifier & id ) const { return module(id); } + /** + * @brief extract eta field from MBTS identifier + */ + inline int eta ( const Identifier & id ) const { return channel(id); } + + + /** + * @brief extract all fields from TileTB identifier + Identifier get_all_fields ( const Identifier & id, + unsigned int last=99 ) const; + */ + + /** + * @brief convert TileTB identifier to string + */ + std::string to_string ( const Identifier & id, int level=0 ) const; + + /** access to IdContext's which define which levels of fields are contained in the id */ + + /** + * @brief idContext for TYPEs + */ + IdContext type_context (void) const; + /** + * @brief idContext for modules + */ + IdContext module_context (void) const; + /** + * @brief idContext for channels + */ + IdContext channel_context (void) const; + + + /** + * @brief create compact id from hash id (return == 0 for OK) + */ + virtual int get_id (const IdentifierHash& hash_id, Identifier& id, const IdContext* context = 0 ) const; + + /** + * @brief create hash id from compact id (return == 0 for OK) + */ + virtual int get_hash (const Identifier& id, IdentifierHash& hash_id, const IdContext* context = 0 ) const; + + /** + * @brief initialization from the identifier dictionary + */ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); + + /** + * @brief TYPE hash table max size + */ + inline size_type type_hash_max (void) const { return m_type_hash_max; } + /** + * @brief module hash table max size + */ + inline size_type module_hash_max (void) const { return m_module_hash_max; } + /** + * @brief channel hash table max size + */ + inline size_type channel_hash_max(void) const { return m_channel_hash_max; } + + /** + * @brief begin iterator for TYPE Identifiers + */ + std::vector<Identifier>::const_iterator type_begin (void) const { return(m_type_vec.begin()); } + /** + * @brief end iterator for TYPE Identifiers + */ + std::vector<Identifier>::const_iterator type_end (void) const { return(m_type_vec.end()); } + + /** + * @brief begin iterator for moulde Identifiers + */ + std::vector<Identifier>::const_iterator module_begin (void) const { return(m_module_vec.begin()); } + /** + * @brief end iterator for moulde Identifiers + */ + std::vector<Identifier>::const_iterator module_end (void) const { return(m_module_vec.end()); } + + /** + * @brief begin iterator for channel Identifiers + */ + std::vector<Identifier>::const_iterator channel_begin (void) const { return(m_channel_vec.begin()); } + /** + * @brief begin iterator for channel Identifiers + */ + std::vector<Identifier>::const_iterator channel_end (void) const { return(m_channel_vec.end()); } + + enum {NOT_VALID_HASH = 64000}; + +private: + + /** + * @brief create expanded Identifier from Identifier (return == 0 for OK) + */ + int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + /** + * @brief unpack one field from Identifier + */ + int get_field ( const Identifier & id, + size_type index ) const; + + int initLevelsFromDict(void) ; + + int init_hashes(void) ; + + bool module_id (const Identifier& type_id, int module, Identifier& module_id ); + bool channel_id (const Identifier& type_id, int module, int channel, Identifier& channel_id ); + bool channel_id (const Identifier& module_id, int channel, Identifier& channel_id ); + int fill_vec (std::set<Identifier> & ids, + unsigned int hash_max, std::vector<Identifier> & vec); + + size_type m_tile_region_index; + size_type m_SYSTEM_INDEX; + size_type m_SECTION_INDEX; + size_type m_TYPE_INDEX; + size_type m_MODULE_INDEX; + size_type m_CHANNEL_INDEX; + + const IdDictDictionary* m_dict; + + IdDictFieldImplementation m_system_impl; + IdDictFieldImplementation m_section_impl; + IdDictFieldImplementation m_type_impl; + IdDictFieldImplementation m_module_impl; + IdDictFieldImplementation m_channel_impl; + + MultiRange m_full_type_range; + MultiRange m_full_module_range; + MultiRange m_full_channel_range; + size_type m_type_hash_max; + size_type m_module_hash_max; + size_type m_channel_hash_max; + std::vector<Identifier> m_type_vec; + std::vector<Identifier> m_module_vec; + std::vector<Identifier> m_channel_vec; + + Identifier m_base_tile_type; +}; + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( TileTBID , 2903 , 1 ) + +#endif // TILEIDENTIFIER_TILETBID_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/Tile_Base_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/Tile_Base_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..8305944a5c6104b953d8748bfaf842620d14def4 --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/Tile_Base_ID.h @@ -0,0 +1,352 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/Tile_Base_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Factor out code common between TileID and Tile_SuperCell_ID. + */ + +#ifndef CALOIDENTIFIER_TILE_BASE_ID_H +#define CALOIDENTIFIER_TILE_BASE_ID_H + +#include "AtlasDetDescr/AtlasDetectorID.h" +// #include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "CaloIdentifier/CaloIDHelper.h" +#include "CaloIdentifier/TileID_Exception.h" +#include "CaloIdentifier/TileNeighbour.h" + +#include "CLIDSvc/CLASS_DEF.h" + +#include "boost/range/iterator_range.hpp" +#include <string> +#include <vector> +#include <set> + +class IdentifierHash; + + +/** + * + * This class factors out code common between TileID and Tile_SuperCell_ID. + */ +class Tile_Base_ID : public CaloIDHelper { + + friend class TileNeighbour; + +public: + + /** Constructor. If SUPERCELL is true, this helper is for supercells. */ + Tile_Base_ID (const std::string& name, bool supercell); + + enum SECTION { ONLINE = 0, BARREL = 1, EXTBAR = 2, GAPDET = 3, AUXDET = 4 , + SBARREL = 5, SEXTBAR = 6, + SECTION_MASK = 3, + SUPERCELL_MASK = 4 + }; + enum SAMPLE { SAMP_A = 0, + SAMP_B = 1, SAMP_BC = 1, SAMP_C = 1, // synonyms + SAMP_D = 2, SAMP_E = 3, SAMP_X = 4 }; + enum SIDE { NEGATIVE = -1, POSITIVE = 1, TWOSIDES = 0 }; + enum GAIN { LOWGAIN = 0, HIGHGAIN = 1 }; + enum SIZE { NSIDES = 2, NSECTIONS = 3, NREGIONS = NSIDES * NSECTIONS }; + + /** build identifier for whole TileCal */ + Identifier tile_system () const; + + /** build identifier for Tile Barrel */ + Identifier tile_barrel () const; + + /** build identifier for Tile Extended Barrel */ + Identifier tile_extbarrel () const; + + /** build identifier for Tile Gap detector (ITC + gap/crack scintillators) */ + Identifier tile_gap () const; + + /** build identifier for any Tilecal section */ + Identifier tile_det ( int section) const throw(TileID_Exception); + + /** build single region, module, tower, cell, pmt, adc identifiers */ + Identifier region_id ( int index) const throw(TileID_Exception); + Identifier region_id ( int section, int side) const throw(TileID_Exception); + Identifier region_id ( const Identifier& any_id) const; + + Identifier module_id ( int section, int side, + int module) const throw(TileID_Exception); + Identifier module_id ( const Identifier& any_id) const; + Identifier tower_id ( int section, int side, + int module, int tower) const throw(TileID_Exception); + Identifier tower_id ( const Identifier& any_id) const; + Identifier cell_id ( const Identifier & any_id ) const; + Identifier cell_id ( int section, int side, + int module, int tower, + int sample ) const throw(TileID_Exception); + Identifier pmt_id ( const Identifier & any_id ) const; + Identifier pmt_id ( const Identifier & cell_id, + int pmt ) const throw(TileID_Exception); + Identifier pmt_id ( int section, int side, + int module, int tower, + int sample, int pmt ) const throw(TileID_Exception); + Identifier adc_id ( const Identifier & cell_id, + int pmt, int adc ) const throw(TileID_Exception); + Identifier adc_id ( const Identifier & pmt_id, + int adc ) const throw(TileID_Exception); + Identifier adc_id ( int section, int side, + int module, int tower, + int sample, int pmt, + int adc ) const throw(TileID_Exception); + + /** fast conversion from hash to ID for cells */ + Identifier cell_id (const IdentifierHash& hash_id) const throw(TileID_Exception); + /** fast conversion from ID to hash for cells */ + IdentifierHash cell_hash (const Identifier& cell_id) const throw(TileID_Exception); + + /** Test of an Identifier to see if it belongs to a particular part of the calorimeter */ +// bool is_tile (const Identifier& id) const; + bool is_tile_barrel (const Identifier& id) const; + bool is_tile_extbarrel (const Identifier& id) const; + bool is_tile_gap (const Identifier& id) const; + bool is_tile_gapscin (const Identifier& id) const; + bool is_tile_aux (const Identifier& id) const; + + bool is_negative (const Identifier& id) const; + bool is_positive (const Identifier& id) const; + bool is_twosides (const Identifier& id) const; + + bool is_low_gain (const Identifier& id) const; + bool is_high_gain (const Identifier& id) const; + + bool is_supercell (const Identifier& id) const; + + int region ( int section, int side ) const; + int region ( const Identifier & id ) const; + int system ( const Identifier & id ) const; + int section ( const Identifier & id ) const; + int side ( const Identifier & id ) const; + int module ( const Identifier & id ) const; + int tower ( const Identifier & id ) const; + int sample ( const Identifier & id ) const; + int pmt ( const Identifier & id ) const; + int adc ( const Identifier & id ) const; + + // fast way to get Tile sampling (be careful - doesn't work for MBTS) + int sampling ( const Identifier & id ) const { return m_sample_impl.unpack(id); } + + std::string to_string (const Identifier & id, int level=0) const; + std::string to_string (const IdentifierHash & hash_id, int level=0) const; + + + /** access to IdContext's which define which levels of fields are contained in the id */ + /** id for regions */ + IdContext region_context (void) const; + + /** id for modules */ + IdContext module_context (void) const; + + /** id for towers */ + IdContext tower_context (void) const; + + /** id for cells */ + IdContext cell_context (void) const; + + /** id for PMTs */ + IdContext pmt_context (void) const; + + /** id for ADCs */ + IdContext adc_context (void) const; + + + /** create compact id from hash id (return == 0 for OK)*/ + virtual int get_id (const IdentifierHash& hash_id, Identifier& id, const IdContext* context = 0 ) const; + + /** create hash id from compact id (return == 0 for OK)*/ + virtual int get_hash (const Identifier& id, IdentifierHash& hash_id, const IdContext* context = 0 ) const; + + /** initialization from the identifier dictionary*/ + int initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name); + + /** hash tables max size */ + size_type region_hash_max (void) const; + size_type module_hash_max (void) const; + size_type tower_hash_max (void) const; + size_type cell_hash_max (void) const; + size_type pmt_hash_max (void) const; + size_type adc_hash_max (void) const; + + /** Type for iterators over identifiers. */ + typedef std::vector<Identifier>::const_iterator id_iterator; + /** Type for range over identifiers. */ + typedef boost::iterator_range<id_iterator> id_range; + + /** iterator over set of region Identifiers */ + id_iterator reg_begin () const; + id_iterator reg_end () const; + id_range reg_range () const; + + /** iterator over set of region Identifiers (synonyms for naming consistency) */ + id_iterator region_begin () const { return reg_begin(); } + id_iterator region_end () const { return reg_end(); } + id_range region_range () const { return reg_range(); } + + /** iterator over set of module Identifiers */ + id_iterator module_begin () const; + id_iterator module_end () const; + id_range module_range () const; + + /** iterator over set of tower Identifiers */ + id_iterator tower_begin () const; + id_iterator tower_end () const; + id_range tower_range () const; + + /** iterator over set of cell Identifiers */ + id_iterator cell_begin () const; + id_iterator cell_end () const; + id_range cell_range () const; + + /** iterator over set of pmt Identifiers */ + id_iterator pmt_begin () const; + id_iterator pmt_end () const; + id_range pmt_range () const; + + /** iterator over set of adc Identifiers */ + id_iterator adc_begin () const; + id_iterator adc_end () const; + id_range adc_range () const; + + /** provide access to id vectors, accessed via hash */ + const std::vector<Identifier>& region_ids() const; + const std::vector<Identifier>& module_ids() const; + const std::vector<Identifier>& tower_ids() const; + const std::vector<Identifier>& cell_ids() const; + const std::vector<Identifier>& pmt_ids() const; + const std::vector<Identifier>& adc_ids() const; + + + /** max values (-999 == failure) */ + int eta_min(const Identifier& id) const; + int eta_max(const Identifier& id) const; + int region_eta_min(const Identifier& id) const; + int region_eta_max(const Identifier& id) const; + int phi_max(const Identifier& id) const; + + enum {NOT_VALID_HASH = 64000}; + + /** Construct identifiers with checking. */ + bool module_id (const Identifier& region_id, + int module, + Identifier& module_id ) const; + bool tower_id (const Identifier& region_id, + int module, int tower, + Identifier& tower_id ) const; + bool cell_id (const Identifier& region_id, + int module, int tower, int sample, + Identifier& cell_id ) const; + bool pmt_id (const Identifier& cell_id, + int pmt, + Identifier& pmt_id ) const; + bool adc_id (const Identifier& pmt_id, + int adc, + Identifier& adc_id ) const; + bool adc_id (const Identifier& cell_id, + int pmt, int adc, + Identifier& adc_id ) const; + + /// Construct identifiers from ExpandedIdentifier's. + Identifier region_id (const ExpandedIdentifier& exp_id) const; + Identifier module_id (const ExpandedIdentifier& exp_id) const; + Identifier tower_id (const ExpandedIdentifier& exp_id) const; + Identifier cell_id (const ExpandedIdentifier& exp_id) const; + Identifier pmt_id (const ExpandedIdentifier& exp_id) const; + Identifier adc_id (const ExpandedIdentifier& exp_id) const; + + + /** access to hashes for neighbours return == 0 for neighbours found + option = prevInPhi, nextInPhi, prevInEta, nextInEta, ..., ..., all2D, prevInSamp, nextInSamp, ..., all3D + + in 'nextInEta' next always means higher eta (i.e. smaller abs(eta) for negative eta) + in 'prevInEta' prev always means smaller eta + in 'nextInPhi' next always means higher phi (i.e. smaller abs(phi) for negative phi) + in 'prevInPhi' prev always means smaller phi + in 'nextInSamp', next means 'away from the centre of Atlas' + in 'prevInSamp', prev means 'towards the centre of Atlas' + all2D means PrevInEta and nextInEta for all cells obtained in prevInPhi and nextInPhi + all3D means prevInSamp and nextInSamp for all cells obtained in all2D + NOTA neighbour is also returned across Barrel-ITC-Gap.Sin-Ext.Barrel boundaries */ + int get_neighbours(const IdentifierHash& id, + const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const; + + +private: + + int decode_section (int section) const + { + return section >= SBARREL ? (section & SECTION_MASK) : section; + } + + int encode_section (int section) const + { + return m_supercell ? (section | SUPERCELL_MASK) : section; + } + + /** create expanded Identifier from Identifier (return == 0 for OK) */ + virtual int get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const; + + /** unpack one field from Identifier */ + int get_field ( const Identifier & id, + size_type index ) const; + + int initLevelsFromDict (const std::string& group_name) ; + + int init_hashes(void) ; + + int eta_min(const Identifier& id, const IdContext& context) const; + int eta_max(const Identifier& id, const IdContext& context) const; + + unsigned m_supercell; + + size_type m_tile_region_index; + size_type m_SYSTEM_INDEX; + size_type m_SECTION_INDEX; + size_type m_SIDE_INDEX; + size_type m_MODULE_INDEX; + size_type m_TOWER_INDEX; + size_type m_SAMPLE_INDEX; + size_type m_PMT_INDEX; + size_type m_ADC_INDEX; + + IdDictFieldImplementation m_system_impl; + IdDictFieldImplementation m_section_impl; + IdDictFieldImplementation m_side_impl; + IdDictFieldImplementation m_module_impl; + IdDictFieldImplementation m_tower_impl; + IdDictFieldImplementation m_sample_impl; + IdDictFieldImplementation m_pmt_impl; + IdDictFieldImplementation m_adc_impl; + IdDictFieldImplementation m_slar_impl; + + MultiRange m_full_region_range; + MultiRange m_full_module_range; + MultiRange m_full_tower_range; + MultiRange m_full_cell_range; + MultiRange m_full_pmt_range; + MultiRange m_full_adc_range; + + CaloIDHelper::HashGroup m_modules; + CaloIDHelper::HashGroup m_towers; + CaloIDHelper::HashGroup m_pmts; + CaloIDHelper::HashGroup m_adcs; + + TileNeighbour m_neighbour; +}; + + +#endif // not CALOIDENTIFIER_TILE_BASE_ID_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/Tile_SuperCell_ID.h b/Calorimeter/CaloIdentifier/CaloIdentifier/Tile_SuperCell_ID.h new file mode 100755 index 0000000000000000000000000000000000000000..245e9e8722672c73f38744d9967c8b2602a05ccc --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/Tile_SuperCell_ID.h @@ -0,0 +1,81 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/Tile_SuperCell_ID.h + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Helper class for Tile offline identifiers for supercells + */ + + +#ifndef CALOIDENTIFIER_TILE_SUPERCELL_ID_H +#define CALOIDENTIFIER_TILE_SUPERCELL_ID_H + +#include "AtlasDetDescr/AtlasDetectorID.h" +// #include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictFieldImplementation.h" +#include "CaloIdentifier/Tile_Base_ID.h" +#include "CaloIdentifier/TileID_Exception.h" + +#include "CLIDSvc/CLASS_DEF.h" +#include "SGTools/BaseInfo.h" + +#include "boost/range/iterator_range.hpp" +#include <string> +#include <vector> +#include <set> + +/** +* +* @class Tile_SuperCell_ID +* @brief Helper class for Tile offline identifiers for supercells +* +* This class provides an interface to generate an identifier or a range +* for the Tile Calorimeter detector subsystem. +* +* Definition and the range of values for the elements of the identifier: +* <pre> +* +* element range meaning +* ------- ----- ------- +* +* section 1 to 2 section number ( 1 = Barrel +* 2 = Extended Barrel ) +* internally, these are stored as 5 and 6, +* to distinguish the supercell case. +* side -1 to 1 -1 = negative eta, 1 = positive eta, 0 = undefined (both sides) +* module 0 to 63 module number by phi +* tower(eta) 0 to 15 0-15 = tower number by pseudorapidity with 0.1 increment in eta +* Attention! in PhysTDR data last tower is 16 +* sample 0 or 2 0 = sum over samplings, 2 = D only +* +* Total is 2752, of which 2048 are the tower sums and 704 are the +* D layer cells. Note that the D layer cells both contribute to the +* tower sums and are also represented separately. +* +* </pre> +*/ +class Tile_SuperCell_ID : public Tile_Base_ID +{ +public: + + // default constructor + Tile_SuperCell_ID(); + + /** initialization from the identifier dictionary*/ + virtual int initialize_from_dictionary (const IdDictMgr& dict_mgr); +}; + + +//using the macro below we can assign an identifier (and a version) +//This is required and checked at compile time when you try to record/retrieve +CLASS_DEF( Tile_SuperCell_ID, 49557789, 1 ) +SG_BASE (Tile_SuperCell_ID, Tile_Base_ID); + +#endif // CALOIDENTIFIER_TILE_SUPERCELL_ID_H + diff --git a/Calorimeter/CaloIdentifier/CaloIdentifier/selection.xml b/Calorimeter/CaloIdentifier/CaloIdentifier/selection.xml new file mode 100755 index 0000000000000000000000000000000000000000..7bfb35e6409e04b3a5bae4e026a069880dc06f7a --- /dev/null +++ b/Calorimeter/CaloIdentifier/CaloIdentifier/selection.xml @@ -0,0 +1,35 @@ +<lcgdict> + + <class name="CaloCell_ID" /> + <class name="CaloCell_Base_ID" /> + <class name="CaloCell_SuperCell_ID" /> + <class name="AtlasDetectorID" /> + <class name="CaloDM_ID" /> + <class name="CaloLVL1_ID" /> + <class name="LArEM_ID" /> + <class name="LArEM_Base_ID" /> + <class name="LArEM_SuperCell_ID" /> + <class name="LArFCAL_ID" /> + <class name="LArFCAL_SuperCell_ID" /> + <class name="LArFCAL_Base_ID" /> + <class name="LArMiniFCAL_ID" /> + <class name="LArHEC_ID" /> + <class name="LArHEC_SuperCell_ID" /> + <class name="LArHEC_Base_ID" /> + <class name="TileID" /> + <class name="Tile_SuperCell_ID" /> + <class name="Tile_Base_ID" /> + <class name="TTOnlineID" /> + <class name="TileTBID" /> + <class name="CaloIdManager" /> + <class name="CaloIDHelper" /> + + <!-- should really be in DetDescrDictionary. --> + <class name="boost::iterator_range<std::vector<Identifier>::const_iterator>"/> + <class name="std::vector<Identifier>::const_iterator"/> + <function proto_pattern="*operator==*Identifier*"/> + <function proto_pattern="*operator!=*Identifier*"/> + +</lcgdict> + + diff --git a/Calorimeter/CaloIdentifier/cmt/requirements b/Calorimeter/CaloIdentifier/cmt/requirements new file mode 100755 index 0000000000000000000000000000000000000000..4dc943471bea70fd791b8511477d3747f1ed88cd --- /dev/null +++ b/Calorimeter/CaloIdentifier/cmt/requirements @@ -0,0 +1,64 @@ +package CaloIdentifier + +author Fabienne Ledroit <ledroit@lpsc.in2p3.fr> + +use AtlasPolicy AtlasPolicy-* +use CLIDSvc CLIDSvc-* Control +use SGTools SGTools-* Control +use GaudiInterface GaudiInterface-* External +use AtlasBoost AtlasBoost-* External +use AtlasDetDescr AtlasDetDescr-* DetectorDescription +use Identifier Identifier-* DetectorDescription +use IdDict IdDict-* DetectorDescription + +use GaudiInterface GaudiInterface-* External + +use CaloGeoHelpers CaloGeoHelpers-* Calorimeter + +private +use CxxUtils CxxUtils-* Control +end_private + +library CaloIdentifier *.cxx +apply_pattern installed_library + +apply_pattern declare_runtime_extras extras="SuperCaloNeighborsSuperCells-April2014.dat FCalSuperCells2DNeighborsNew-April2014.txt FCalSuperCells3DNeighborsPrevNew-April2014.txt FCalSuperCells3DNeighborsNextNew-April2014.txt TileSuperCellNeighbour.txt TileNeighbour.txt TileNeighbour_reduced.txt FCal2DNeighbors.txt FCal3DNeighborsPrev.txt FCal3DNeighborsNext.txt FCal2DNeighbors_H6.txt FCal3DNeighborsPrev_H6.txt FCal3DNeighborsNext_H6.txt SuperCaloNeighbours.dat SuperCaloNeighbours_H6.dat SuperCaloNeighbours_H8.dat FCal2DNeighbors-DC3-05-Comm-01.txt FCal3DNeighborsNext-DC3-05-Comm-01.txt FCal3DNeighborsPrev-DC3-05-Comm-01.txt SuperCaloNeighbours-DC3-05-Comm-01.dat FCal2DNeighbors-April2011.txt FCal3DNeighborsNext-April2011.txt FCal3DNeighborsPrev-April2011.txt SuperCaloNeighbours-April2011.dat" + + +apply_pattern declare_python_modules files="*.py" + + +private + +use IdDictParser IdDictParser-* DetectorDescription +use StoreGate StoreGate-* Control +use PathResolver PathResolver-* Tools + +application test_lar_id ../test/test_lar_id.cxx +application test_calo_dm_id ../test/test_calo_dm_id.cxx +application test_cell_id ../test/test_cell_id.cxx +application test_lvl1_id ../test/test_lvl1_id.cxx +macro_append test_lar_id_dependencies CaloIdentifier +macro_append test_calo_dm_id_dependencies CaloIdentifier +macro_append test_cell_id_dependencies CaloIdentifier +macro_append test_lvl1_id_dependencies CaloIdentifier + +macro ep "mask/zero|Reading file|^AtlasDetectorID(Helper)?::" + +use TestTools TestTools-* AtlasTest +apply_pattern UnitTest_run unit_test=LArEM_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=LArEM_SuperCell_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=LArHEC_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=LArHEC_SuperCell_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=LArFCAL_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=LArFCAL_SuperCell_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=LArMiniFCAL_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=TileID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=Tile_SuperCell_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=CaloCell_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=CaloCell_SuperCell_ID extrapatterns="$(ep)" +apply_pattern UnitTest_run unit_test=CaloIDHelper extrapatterns="$(ep)" + +# Make dict for idhelpers +use AtlasReflex AtlasReflex-* External -no_auto_imports +apply_pattern lcgdict dict=CaloIdentifier selectionfile=selection.xml headerfiles="../CaloIdentifier/CaloIdentifierDict.h" diff --git a/Calorimeter/CaloIdentifier/doc/mainpage.h b/Calorimeter/CaloIdentifier/doc/mainpage.h new file mode 100644 index 0000000000000000000000000000000000000000..ea1e379c658c175af3856957889569e4e0b4ebff --- /dev/null +++ b/Calorimeter/CaloIdentifier/doc/mainpage.h @@ -0,0 +1,40 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/** + +@mainpage + + There are two types of identifiers for the ATLAS calorimeters:<br> + offline identifiers (type= Identifier), and online identifiers (type= HWIdentifier). <br> + <br> + And there are two 'families' of identifiers: <br> + detector specific identifiers (for EM, HEC, FCAL and TILES) <br> + calorimeter-wide identifiers (for Trigger Towers, for Dead Material and for EM/HEC/FCAL/Tile wrapped together in CaloCell) <br> + + All identifiers are decoded by specific classes called "Helpers", all deriving from base class AtlasDetectorID. <br> + The field content of the identifiers is described in xlm files called dictionaries which can be found in the data folder + of the DetectorDescription/IdDictParser package. <br> + + + + The offline identifiers are decoded by the following helper classes: LArEM_ID , LArHEC_ID , LArFCAL_ID , TileID + and CaloLVL1_ID , CaloDM_ID , CaloCell_ID of the present package. <br> + The corresponding dictionaries are IdDictLArCalorimeter_xxx.xml (LArEM_ID, LArHEC_ID, LArFCAL_ID), IdDictTileCalorimeter_yyy.xml (TileID), + and IdDictCalorimeter_zzz.xml (CaloLVL1_ID, CaloDM_ID); there is no dictionary for CaloCell_ID. <br> + + The online identifiers are decoded by the following helper classes (release 13 onwards): <br> + TTOnlineID of the present package <br> + LArOnlineID , LArReadoutModuleID of package LArCalorimeter/LArIdentifier <br> + and TileHWID of package TileCalorimeter/TileIdentifier. <br> + The corresponding dictionaries are IdDictLArCalorimeter_xxx.xml (LArOnline_ID,), IdDictTileCalorimeter_yyy.xml (TileHWID) + and IdDictCalorimeter_zzz.xml (TTOnline_ID); there is no dictionary for LArReadoutModuleID. <br> + There are also identifiers/helpers for calibration lines and High Voltages, see package LArCalorimeter/LArIdentifier. <br> + +@htmlinclude used_packages.html + +@include requirements + + +*/ diff --git a/Calorimeter/CaloIdentifier/python/SUBCALO.py b/Calorimeter/CaloIdentifier/python/SUBCALO.py new file mode 100755 index 0000000000000000000000000000000000000000..388e0c471f01b0d7dfca8b48689f3017dcd58866 --- /dev/null +++ b/Calorimeter/CaloIdentifier/python/SUBCALO.py @@ -0,0 +1,14 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# python equivalent of the subcalo enum in +# Calorimeter/CaloIdentifier/CaloIdentifier/CaloCell_ID.h +# to use it in a python script: +# from CaloIdentifier import SUBCALO +# print SUBCALO.LAREM to use it +LAREM=0 +LARHEC=1 +LARFCAL=2 +TILE=3 +LARMINIFCAL = 4 +NSUBCALO=5 +NOT_VALID=999999 diff --git a/Calorimeter/CaloIdentifier/python/__init__.py b/Calorimeter/CaloIdentifier/python/__init__.py new file mode 100755 index 0000000000000000000000000000000000000000..f215be4623e764a1bb5b768867f5c8a0ca1739f1 --- /dev/null +++ b/Calorimeter/CaloIdentifier/python/__init__.py @@ -0,0 +1,9 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# File: CaloIdentifier/python/__init__.py +# Author: Wim Lavrijsen (WLavrijsen@lbl.gov) + +__version__ = '1.0.0' +__author__ = 'David Rousseau (rousseau@lal.in2p3.fr) ' + + diff --git a/Calorimeter/CaloIdentifier/share/CaloCell_ID_test.ref b/Calorimeter/CaloIdentifier/share/CaloCell_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..68880769bf02a94e167452983c8f11c78e419573 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/CaloCell_ID_test.ref @@ -0,0 +1,271 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/1 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/2/0 + channel range -> 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 + disconected region range -> 4/-1/-1,1/0/0 | 4/-1/-1,1/1/0 | 4/-1/-1,1/3/0 | 4/-1/-2,2/0/0 | 4/-1/-2,2/1/1 | 4/-1/-2,2/1/3 | 4/-1/-2,2/1/5 | 4/-1/-3,3/1/0 | 4/-1/-3,3/2/0 + disconnected channel range -> 4/-1/-1,1/0/0/61:63/0:63 | 4/-1/-1,1/1/0/0/0:63 | 4/-1/-1,1/3/0/27/0:255 | 4/-1/-2,2/0/0/12:19/0:63 | 4/-1/-2,2/1/1/3:6/0:63 | 4/-1/-2,2/1/3/48:63/0:63 | 4/-1/-2,2/1/5/4:7/0:63 | 4/-1/-3,3/1/0/7/0:63 | 4/-1/-3,3/2/0/7/0:63 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/0 | 4/2/-2,2/1/0/0:9/0:63/0 | 4/2/-2,2/2/0/1:9/0:63/0 | 4/2/-2,2/3/0/2:9/0:63/0 | 4/2/-2,2/0/1/0:3/0:31/0 | 4/2/-2,2/1/1/0:2/0:31/0 | 4/2/-2,2/2/1/0:2/0:31/0 | 4/2/-2,2/3/1/0:3/0:31/0 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/1/0 | 4/2/-2,2/2/0 | 4/2/-2,2/3/0 | 4/2/-2,2/0/1 | 4/2/-2,2/1/1 | 4/2/-2,2/2/1 | 4/2/-2,2/3/1 + disconnected channel range -> 4/-2/-2,2/2/0/0/0:63 | 4/-2/-2,2/3/0/0:1/0:63 | 4/-2/-2,2/1/1/3/0:31 | 4/-2/-2,2/2/1/3/0:31 + disconnected region range -> 4/-2/-2,2/2/0 | 4/-2/-2,2/3/0 | 4/-2/-2,2/1/1 | 4/-2/-2,2/2/1 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 1 vals 1:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +eta decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f ff81ffffffffffff 49 6 9 indexes mode both_bounded +phi decode 0 vals 0:15 mask/zero mask/shift/bits/offset f fffe1fffffffffff 45 4 15 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffffefffffffffff 44 1 19 indexes mode both_bounded + initialize_from_dict : + channel range -> 4/3/-2,2/1/0:62/0:15/0 | 4/3/-2,2/2/0:29/0,7,8,15/0 | 4/3/-2,2/2/0:30/3,4,11,12/0 | 4/3/-2,2/2/0:31/1,2,5,6,9,10,13,14/0 | 4/3/-2,2/3/0:14/2,10/0 | 4/3/-2,2/3/0:14/0,1,3,4,5,6,7,8,9,11,12,13,14,15/0 | 4/3/-2,2/3/15/0,1,2,3,4,6,7,8,9,10,11,12,14,15/0 + module range -> 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 + disconnected channel range -> 4/-3/-2,2/1/63/0:15 | 4/-3/-2,2/2/30:31/0,7,8,15 | 4/-3/-2,2/2/31/3,4,11,12 | 4/-3/-2,2/3/15/5,13 + disconnected module range -> 4/-3/-2,2/1 | 4/-3/-2,2/2 | 4/-3/-2,2/3 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/1 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/2/0 + channel range -> 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 + disconected region range -> 4/-1/-1,1/0/0 | 4/-1/-1,1/1/0 | 4/-1/-1,1/3/0 | 4/-1/-2,2/0/0 | 4/-1/-2,2/1/1 | 4/-1/-2,2/1/3 | 4/-1/-2,2/1/5 | 4/-1/-3,3/1/0 | 4/-1/-3,3/2/0 + disconnected channel range -> 4/-1/-1,1/0/0/61:63/0:63 | 4/-1/-1,1/1/0/0/0:63 | 4/-1/-1,1/3/0/27/0:255 | 4/-1/-2,2/0/0/12:19/0:63 | 4/-1/-2,2/1/1/3:6/0:63 | 4/-1/-2,2/1/3/48:63/0:63 | 4/-1/-2,2/1/5/4:7/0:63 | 4/-1/-3,3/1/0/7/0:63 | 4/-1/-3,3/2/0/7/0:63 + LArEM_Base_ID::init_neighbors +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/0 | 4/2/-2,2/1/0/0:9/0:63/0 | 4/2/-2,2/2/0/1:9/0:63/0 | 4/2/-2,2/3/0/2:9/0:63/0 | 4/2/-2,2/0/1/0:3/0:31/0 | 4/2/-2,2/1/1/0:2/0:31/0 | 4/2/-2,2/2/1/0:2/0:31/0 | 4/2/-2,2/3/1/0:3/0:31/0 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/1/0 | 4/2/-2,2/2/0 | 4/2/-2,2/3/0 | 4/2/-2,2/0/1 | 4/2/-2,2/1/1 | 4/2/-2,2/2/1 | 4/2/-2,2/3/1 + disconnected channel range -> 4/-2/-2,2/2/0/0/0:63 | 4/-2/-2,2/3/0/0:1/0:63 | 4/-2/-2,2/1/1/3/0:31 | 4/-2/-2,2/2/1/3/0:31 + disconnected region range -> 4/-2/-2,2/2/0 | 4/-2/-2,2/3/0 | 4/-2/-2,2/1/1 | 4/-2/-2,2/2/1 + LArHEC_Base_ID::init_neighbors +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 1 vals 1:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +eta decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f ff81ffffffffffff 49 6 9 indexes mode both_bounded +phi decode 0 vals 0:15 mask/zero mask/shift/bits/offset f fffe1fffffffffff 45 4 15 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffffefffffffffff 44 1 19 indexes mode both_bounded + initialize_from_dict : + channel range -> 4/3/-2,2/1/0:62/0:15/0 | 4/3/-2,2/2/0:29/0,7,8,15/0 | 4/3/-2,2/2/0:30/3,4,11,12/0 | 4/3/-2,2/2/0:31/1,2,5,6,9,10,13,14/0 | 4/3/-2,2/3/0:14/2,10/0 | 4/3/-2,2/3/0:14/0,1,3,4,5,6,7,8,9,11,12,13,14,15/0 | 4/3/-2,2/3/15/0,1,2,3,4,6,7,8,9,10,11,12,14,15/0 + module range -> 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 + disconnected channel range -> 4/-3/-2,2/1/63/0:15 | 4/-3/-2,2/2/30:31/0,7,8,15 | 4/-3/-2,2/2/31/3,4,11,12 | 4/-3/-2,2/3/15/5,13 + disconnected module range -> 4/-3/-2,2/1 | 4/-3/-2,2/2 | 4/-3/-2,2/3 +LarFCal_Base_ID::init_neighbours +LArFCAL_Base_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal2DNeighbors-DC3-05-Comm-01.txt +LArFCAL_Base_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal3DNeighborsNext-DC3-05-Comm-01.txt +LArFCAL_Base_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal3DNeighborsPrev-DC3-05-Comm-01.txt +LarFCal_Base_ID::init_neighbours status: 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +TileNeighbour INFO Reading file /home/sss/atlas/supercell2/build/share/TileNeighbour_reduced.txt +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +test_cells +[4.1.-3.1.0.0.0.0] +====== +EM +Sampling Barrel Outer wheel Inner wheel +0 7808 1536 0 +1 58752 27648 896 +2 29184 22528 896 +3 13824 10240 0 +Total 109568 61952 1792 Grand total: 173312 + +====== +FCAL +Sampling Barrel Outer wheel Inner wheel +0 0 0 0 +1 0 2016 0 +2 0 1000 0 +3 0 508 0 +Total 0 3524 0 Grand total: 3524 + +====== +HEC +Sampling Barrel Outer wheel Inner wheel +0 0 1536 0 +1 0 1472 0 +2 0 1344 0 +3 0 1280 0 +Total 0 5632 0 Grand total: 5632 + +====== +Tile +Side Barrel Extended Barrel Gap Ancillary +0 1408 768 384 0 +1 1472 768 384 0 +Total 2880 1536 768 0 Grand total: 5184 + +test_sample +test_subcalo +test_regions +Region [4.1.-3.1.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.1.-3.2.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.1.-2.0.0.0.0.0] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.1.0.0.0] eta: 1.425000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.2.0.0.0] eta: 1.500000 0.003125 0 95 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.3.0.0.0] eta: 1.800000 0.004167 0 47 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.4.0.0.0] eta: 2.000000 0.006250 0 63 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.5.0.0.0] eta: 2.400000 0.025000 0 3 phi: 0.0 0.098175 0 63 +Region [4.1.-2.2.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.-2.2.1.0.0.0] eta: 1.425000 0.025000 0 42 phi: 0.0 0.024544 0 255 +Region [4.1.-2.3.0.0.0.0] eta: 1.500000 0.050000 0 19 phi: 0.0 0.024544 0 255 +Region [4.1.-1.0.0.0.0.0] eta: 0.000000 0.025000 0 60 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.0.0.0] eta: 0.003125 0.003125 1 447 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.1.0.0.0] eta: 1.400000 0.025000 0 2 phi: 0.0 0.024544 0 255 +Region [4.1.-1.2.0.0.0.0] eta: 0.000000 0.025000 0 55 phi: 0.0 0.024544 0 255 +Region [4.1.-1.2.1.0.0.0] eta: 1.400000 0.075000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.-1.3.0.0.0.0] eta: 0.000000 0.050000 0 26 phi: 0.0 0.024544 0 255 +Region [4.1.1.0.0.0.0.0] eta: 0.000000 0.025000 0 60 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.0.0.0] eta: 0.003125 0.003125 1 447 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.1.0.0.0] eta: 1.400000 0.025000 0 2 phi: 0.0 0.024544 0 255 +Region [4.1.1.2.0.0.0.0] eta: 0.000000 0.025000 0 55 phi: 0.0 0.024544 0 255 +Region [4.1.1.2.1.0.0.0] eta: 1.400000 0.075000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.1.3.0.0.0.0] eta: 0.000000 0.050000 0 26 phi: 0.0 0.024544 0 255 +Region [4.1.2.0.0.0.0.0] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.1.0.0.0] eta: 1.425000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.2.0.0.0] eta: 1.500000 0.003125 0 95 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.3.0.0.0] eta: 1.800000 0.004167 0 47 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.4.0.0.0] eta: 2.000000 0.006250 0 63 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.5.0.0.0] eta: 2.400000 0.025000 0 3 phi: 0.0 0.098175 0 63 +Region [4.1.2.2.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.2.2.1.0.0.0] eta: 1.425000 0.025000 0 42 phi: 0.0 0.024544 0 255 +Region [4.1.2.3.0.0.0.0] eta: 1.500000 0.050000 0 19 phi: 0.0 0.024544 0 255 +Region [4.1.3.1.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.1.3.2.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.2.-2.0.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.0.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.-2.1.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.1.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.-2.2.0] eta: 1.600000 0.100000 1 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.2.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.-2.3.0] eta: 1.700000 0.100000 2 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.3.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.2.0.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.0.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.2.1.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.1.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.2.2.0] eta: 1.600000 0.100000 1 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.2.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.2.3.0] eta: 1.700000 0.100000 2 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.3.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.3.-2.1.0.0.0] eta: 3.200000 0.025000 0 62 phi: 0.0 0.392699 0 15 +Region [4.3.-2.2.0.0.0] eta: 3.200000 0.050000 0 31 phi: 0.0 0.392699 0 15 +Region [4.3.-2.3.0.0.0] eta: 3.200000 0.100000 0 15 phi: 0.0 0.392699 0 15 +Region [4.3.2.1.0.0.0] eta: 3.200000 0.025000 0 62 phi: 0.0 0.392699 0 15 +Region [4.3.2.2.0.0.0] eta: 3.200000 0.050000 0 31 phi: 0.0 0.392699 0 15 +Region [4.3.2.3.0.0.0] eta: 3.200000 0.100000 0 15 phi: 0.0 0.392699 0 15 +Region [5.1.-1.0.0.0.0.0] eta: 999999.000000 999999.000000 0 0 phi: 999999.0 999999.000000 999999 63 +Region [5.1.1.0.0.0.0.0] eta: 999999.000000 999999.000000 0 0 phi: 999999.0 999999.000000 999999 63 +Region [5.2.-1.0] eta: 999999.000000 999999.000000 10 15 phi: 999999.0 999999.000000 999999 63 +Region [5.2.1.0] eta: 999999.000000 999999.000000 10 15 phi: 999999.0 999999.000000 999999 63 +Region [5.3.-1.0] eta: 999999.000000 999999.000000 8 15 phi: 999999.0 999999.000000 999999 63 +Region [5.3.1.0] eta: 999999.000000 999999.000000 8 15 phi: 999999.0 999999.000000 999999 63 +test_neighbours +test_exceptions +Exception 1: LArID_Exception - Error code: 6 + LArEM_Base_ID::channel_id_checks() result is not OK: ID, range = 4/1/99/0/0/0/0/0 , 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 diff --git a/Calorimeter/CaloIdentifier/share/CaloCell_SuperCell_ID_test.ref b/Calorimeter/CaloIdentifier/share/CaloCell_SuperCell_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..2d9e18f6b07f7124f7890b273be83f9c57a70dd6 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/CaloCell_SuperCell_ID_test.ref @@ -0,0 +1,172 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/1/1 | 4/1/-3,3/2/0 | 4/1/-3,3/2/1 + channel range -> 4/1/-1,1/0/0/0:14/0:63/1 | 4/1/-1,1/1/0/0:55/0:63/1 | 4/1/-1,1/1/1/0:2/0:63/1 | 4/1/-1,1/2/0/0:55/0:63/1 | 4/1/-1,1/2/1/0/0:63/1 | 4/1/-1,1/3/0/0:13/0:63/1 | 4/1/-2,2/0/0/0:2/0:63/1 | 4/1/-2,2/1/0/0/0:63/1 | 4/1/-2,2/1/2/0:11/0:63/1 | 4/1/-2,2/1/3/0:11/0:63/1 | 4/1/-2,2/1/4/0:15/0:63/1 | 4/1/-2,2/1/5/0/0:63/1 | 4/1/-2,2/2/0/0/0:63/1 | 4/1/-2,2/2/1/0:42/0:63/1 | 4/1/-2,2/3/0/0:9/0:63/1 | 4/1/-3,3/1/0/0:2/0:31/1 | 4/1/-3,3/1/1/0/0:31/1 | 4/1/-3,3/2/0/0:2/0:31/1 | 4/1/-3,3/2/1/0/0:31/1 + disconected region range -> + disconnected channel range -> +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/1 | 4/2/-2,2/0/1/0:3/0:31/1 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/0/1 + disconnected channel range -> + disconnected region range -> +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 1 vals 1:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +eta decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f ff81ffffffffffff 49 6 9 indexes mode both_bounded +phi decode 0 vals 0:15 mask/zero mask/shift/bits/offset f fffe1fffffffffff 45 4 15 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffffefffffffffff 44 1 19 indexes mode both_bounded + initialize_from_dict : + channel range -> 4/3/-2,2/1/0:11/0:15/1 | 4/3/-2,2/2/0:7/0:15/1 | 4/3/-2,2/3/0:3/0:15/1 + module range -> 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 + disconnected channel range -> + disconnected module range -> +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +test_cells +[4.1.-3.1.0.0.0.1] +====== +EM +Sampling Barrel Outer wheel Inner wheel +0 1920 384 0 +1 7552 5376 256 +2 7296 5632 256 +3 1792 1280 0 +Total 18560 12672 512 Grand total: 31744 + +====== +FCAL +Sampling Barrel Outer wheel Inner wheel +0 0 0 0 +1 0 384 0 +2 0 256 0 +3 0 128 0 +Total 0 768 0 Grand total: 768 + +====== +HEC +Sampling Barrel Outer wheel Inner wheel +0 0 1536 0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +Total 0 1536 0 Grand total: 1536 + +====== +Tile +Side Barrel Extended Barrel Gap Ancillary +0 768 576 0 0 +1 832 576 0 0 +Total 1600 1152 0 0 Grand total: 2752 + +test_sample +test_subcalo +test_regions +Region [4.1.-3.1.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.-3.1.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.1.-3.2.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.-3.2.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.1.-2.0.0.0.0.1] eta: 1.500000 0.100000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.0.0.0.1] eta: 1.375000 0.125000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.2.0.0.1] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.3.0.0.1] eta: 1.800000 0.016667 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.4.0.0.1] eta: 2.000000 0.025000 0 15 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.5.0.0.1] eta: 2.400000 0.100000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.2.0.0.0.1] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.2.1.0.0.1] eta: 1.425000 0.025000 0 42 phi: 0.0 0.098175 0 63 +Region [4.1.-2.3.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.1.-1.0.0.0.0.1] eta: 0.000000 0.100000 0 14 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.1.0.0.1] eta: 1.400000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.-1.2.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.-1.2.1.0.0.1] eta: 1.400000 0.075000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-1.3.0.0.0.1] eta: 0.000000 0.100000 0 13 phi: 0.0 0.098175 0 63 +Region [4.1.1.0.0.0.0.1] eta: 0.000000 0.100000 0 14 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.1.0.0.1] eta: 1.400000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.1.2.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.1.2.1.0.0.1] eta: 1.400000 0.075000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.1.3.0.0.0.1] eta: 0.000000 0.100000 0 13 phi: 0.0 0.098175 0 63 +Region [4.1.2.0.0.0.0.1] eta: 1.500000 0.100000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.0.0.0.1] eta: 1.375000 0.125000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.2.0.0.1] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.3.0.0.1] eta: 1.800000 0.016667 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.4.0.0.1] eta: 2.000000 0.025000 0 15 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.5.0.0.1] eta: 2.400000 0.100000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.2.0.0.0.1] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.2.1.0.0.1] eta: 1.425000 0.025000 0 42 phi: 0.0 0.098175 0 63 +Region [4.1.2.3.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.1.3.1.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.3.1.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.1.3.2.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.3.2.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.2.-2.0.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.0.1.0.0.1] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.2.0.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.0.1.0.0.1] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.3.-2.1.0.0.1] eta: 3.200000 0.140000 0 11 phi: 0.0 0.392699 0 15 +Region [4.3.-2.2.0.0.1] eta: 3.200000 0.160000 0 7 phi: 0.0 0.392699 0 15 +Region [4.3.-2.3.0.0.1] eta: 3.200000 0.320000 0 3 phi: 0.0 0.392699 0 15 +Region [4.3.2.1.0.0.1] eta: 3.200000 0.140000 0 11 phi: 0.0 0.392699 0 15 +Region [4.3.2.2.0.0.1] eta: 3.200000 0.160000 0 7 phi: 0.0 0.392699 0 15 +Region [4.3.2.3.0.0.1] eta: 3.200000 0.320000 0 3 phi: 0.0 0.392699 0 15 +Region [5.5.-1.0.0.0.0.0] eta: 999999.000000 999999.000000 0 0 phi: 999999.0 999999.000000 999999 63 +Region [5.5.1.0.0.0.0.0] eta: 999999.000000 999999.000000 0 0 phi: 999999.0 999999.000000 999999 63 +Region [5.6.-1.0] eta: 999999.000000 999999.000000 9 15 phi: 999999.0 999999.000000 999999 63 +Region [5.6.1.0] eta: 999999.000000 999999.000000 9 15 phi: 999999.0 999999.000000 999999 63 +test_exceptions +Exception 1: LArID_Exception - Error code: 6 + LArEM_Base_ID::channel_id_checks() result is not OK: ID, range = 4/1/99/0/0/0/0/1 , 4/1/-1,1/0/0/0:14/0:63/1 | 4/1/-1,1/1/0/0:55/0:63/1 | 4/1/-1,1/1/1/0:2/0:63/1 | 4/1/-1,1/2/0/0:55/0:63/1 | 4/1/-1,1/2/1/0/0:63/1 | 4/1/-1,1/3/0/0:13/0:63/1 | 4/1/-2,2/0/0/0:2/0:63/1 | 4/1/-2,2/1/0/0/0:63/1 | 4/1/-2,2/1/2/0:11/0:63/1 | 4/1/-2,2/1/3/0:11/0:63/1 | 4/1/-2,2/1/4/0:15/0:63/1 | 4/1/-2,2/1/5/0/0:63/1 | 4/1/-2,2/2/0/0/0:63/1 | 4/1/-2,2/2/1/0:42/0:63/1 | 4/1/-2,2/3/0/0:9/0:63/1 | 4/1/-3,3/1/0/0:2/0:31/1 | 4/1/-3,3/1/1/0/0:31/1 | 4/1/-3,3/2/0/0:2/0:31/1 | 4/1/-3,3/2/1/0/0:31/1 diff --git a/Calorimeter/CaloIdentifier/share/CaloIDHelper_test.ref b/Calorimeter/CaloIdentifier/share/CaloIDHelper_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a6c43c65a4250c7478a154d5613d9909815c362b --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/CaloIDHelper_test.ref @@ -0,0 +1,19 @@ +test_hashgroup +10 +CaloIDHelper::H... ERROR helperinit_hashes duplicated id for channel id. nids= 9 compact Id Unable to decode id +CaloIDHelper ERROR helper. set size 9 not equal to hash max 10 +test_helper +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +100 0 0 0.025 0.0981748 +110 0.003125 0 0.003125 0.0981748 +120 0 0 0.025 0.0245437 +130 0 0 0.05 0.0245437 +140 1.4 0 0.025 0.0245437 +150 0 0 0.025 0.0981748 +160 0.003125 0 0.003125 0.0981748 +170 0 0 0.025 0.0245437 +180 0 0 0.05 0.0245437 +190 1.4 0 0.025 0.0245437 diff --git a/Calorimeter/CaloIdentifier/share/FCal2DNeighbors-April2011.txt b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors-April2011.txt new file mode 100644 index 0000000000000000000000000000000000000000..c6ab268e4c4bbf046e1da57f1de7e3dac9e8ee45 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors-April2011.txt @@ -0,0 +1,3533 @@ +# 2D FCal Neighbors +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Apr 20 10:35:58 2011 +# +# 2d neighbors are all touching neighbors including corners. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# +A1.00.00 A1.00.07 A1.00.12 +A1.00.01 A1.00.02 A1.00.10 A1.00.11 A1.15.02 A1.15.12 +A1.00.02 A1.00.01 A1.00.03 A1.00.06 A1.00.09 A1.00.10 +A1.00.03 A1.00.02 A1.00.05 A1.00.06 A1.00.14 A1.00.15 +A1.00.04 A1.00.05 A1.00.12 A1.00.13 A1.00.14 +A1.00.05 A1.00.03 A1.00.04 A1.00.13 A1.00.14 +A1.00.06 A1.00.02 A1.00.03 A1.00.09 A1.00.14 A1.00.15 +A1.00.07 A1.00.00 A1.00.08 A1.00.12 A1.00.17 A1.00.18 A1.01.13 +A1.00.08 A1.00.07 A1.00.17 A1.01.02 A1.01.13 +A1.00.09 A1.00.02 A1.00.06 A1.00.10 A1.00.15 A1.00.16 +A1.00.10 A1.00.01 A1.00.02 A1.00.09 A1.00.11 A1.00.15 A1.00.16 +A1.00.11 A1.00.01 A1.00.10 A1.00.16 A1.15.02 A1.15.12 A1.15.17 +A1.00.12 A1.00.00 A1.00.04 A1.00.07 A1.00.13 A1.00.17 A1.00.18 A1.00.19 +A1.00.13 A1.00.04 A1.00.05 A1.00.12 A1.00.14 A1.00.18 A1.00.19 A1.00.20 +A1.00.14 A1.00.03 A1.00.04 A1.00.05 A1.00.06 A1.00.13 A1.00.15 A1.00.19 A1.00.20 A1.00.21 +A1.00.15 A1.00.03 A1.00.06 A1.00.09 A1.00.10 A1.00.14 A1.00.16 A1.00.20 A1.00.21 A1.00.22 +A1.00.16 A1.00.09 A1.00.10 A1.00.11 A1.00.15 A1.00.21 A1.00.22 A1.15.12 A1.15.17 A1.15.23 +A1.00.17 A1.00.07 A1.00.08 A1.00.12 A1.00.18 A1.00.23 A1.01.13 A1.01.19 A1.01.21 +A1.00.18 A1.00.07 A1.00.12 A1.00.13 A1.00.17 A1.00.19 A1.00.23 A1.00.24 A1.01.21 +A1.00.19 A1.00.12 A1.00.13 A1.00.14 A1.00.18 A1.00.20 A1.00.23 A1.00.24 A1.00.25 +A1.00.20 A1.00.13 A1.00.14 A1.00.15 A1.00.19 A1.00.21 A1.00.24 A1.00.25 A1.00.26 +A1.00.21 A1.00.14 A1.00.15 A1.00.16 A1.00.20 A1.00.22 A1.00.25 A1.00.26 A1.00.27 +A1.00.22 A1.00.15 A1.00.16 A1.00.21 A1.00.26 A1.00.27 A1.15.17 A1.15.23 A1.15.28 +A1.00.23 A1.00.17 A1.00.18 A1.00.19 A1.00.24 A1.00.28 A1.00.29 A1.01.21 A1.01.26 +A1.00.24 A1.00.18 A1.00.19 A1.00.20 A1.00.23 A1.00.25 A1.00.28 A1.00.29 A1.00.30 +A1.00.25 A1.00.19 A1.00.20 A1.00.21 A1.00.24 A1.00.26 A1.00.29 A1.00.30 A1.00.31 +A1.00.26 A1.00.20 A1.00.21 A1.00.22 A1.00.25 A1.00.27 A1.00.30 A1.00.31 A1.00.32 +A1.00.27 A1.00.21 A1.00.22 A1.00.26 A1.00.31 A1.00.32 A1.15.23 A1.15.28 A1.15.33 +A1.00.28 A1.00.23 A1.00.24 A1.00.29 A1.00.33 A1.01.21 A1.01.26 A1.01.31 A1.01.33 +A1.00.29 A1.00.23 A1.00.24 A1.00.25 A1.00.28 A1.00.30 A1.00.33 A1.00.34 A1.01.33 +A1.00.30 A1.00.24 A1.00.25 A1.00.26 A1.00.29 A1.00.31 A1.00.33 A1.00.34 A1.00.35 +A1.00.31 A1.00.25 A1.00.26 A1.00.27 A1.00.30 A1.00.32 A1.00.34 A1.00.35 A1.00.36 +A1.00.32 A1.00.26 A1.00.27 A1.00.31 A1.00.35 A1.00.36 A1.15.28 A1.15.33 A1.15.37 +A1.00.33 A1.00.28 A1.00.29 A1.00.30 A1.00.34 A1.00.37 A1.00.38 A1.01.33 A1.01.38 +A1.00.34 A1.00.29 A1.00.30 A1.00.31 A1.00.33 A1.00.35 A1.00.37 A1.00.38 A1.00.39 +A1.00.35 A1.00.30 A1.00.31 A1.00.32 A1.00.34 A1.00.36 A1.00.38 A1.00.39 A1.00.40 +A1.00.36 A1.00.31 A1.00.32 A1.00.35 A1.00.39 A1.00.40 A1.15.33 A1.15.37 A1.15.41 +A1.00.37 A1.00.33 A1.00.34 A1.00.38 A1.00.41 A1.00.42 A1.01.33 A1.01.38 A1.01.41 +A1.00.38 A1.00.33 A1.00.34 A1.00.35 A1.00.37 A1.00.39 A1.00.41 A1.00.42 A1.00.43 +A1.00.39 A1.00.34 A1.00.35 A1.00.36 A1.00.38 A1.00.40 A1.00.42 A1.00.43 A1.00.44 +A1.00.40 A1.00.35 A1.00.36 A1.00.39 A1.00.43 A1.00.44 A1.15.37 A1.15.41 A1.15.45 +A1.00.41 A1.00.37 A1.00.38 A1.00.42 A1.00.45 A1.01.38 A1.01.41 A1.01.43 A1.01.45 +A1.00.42 A1.00.37 A1.00.38 A1.00.39 A1.00.41 A1.00.43 A1.00.45 A1.00.46 A1.01.45 +A1.00.43 A1.00.38 A1.00.39 A1.00.40 A1.00.42 A1.00.44 A1.00.45 A1.00.46 A1.00.47 +A1.00.44 A1.00.39 A1.00.40 A1.00.43 A1.00.46 A1.00.47 A1.15.41 A1.15.45 A1.15.48 +A1.00.45 A1.00.41 A1.00.42 A1.00.43 A1.00.46 A1.00.48 A1.00.49 A1.01.45 A1.01.47 +A1.00.46 A1.00.42 A1.00.43 A1.00.44 A1.00.45 A1.00.47 A1.00.48 A1.00.49 A1.00.50 +A1.00.47 A1.00.43 A1.00.44 A1.00.46 A1.00.49 A1.00.50 A1.15.45 A1.15.48 A1.15.51 +A1.00.48 A1.00.45 A1.00.46 A1.00.49 A1.00.51 A1.01.45 A1.01.47 A1.01.49 A1.01.50 +A1.00.49 A1.00.45 A1.00.46 A1.00.47 A1.00.48 A1.00.50 A1.00.51 A1.00.52 A1.01.50 +A1.00.50 A1.00.46 A1.00.47 A1.00.49 A1.00.51 A1.00.52 A1.15.48 A1.15.51 A1.15.53 +A1.00.51 A1.00.48 A1.00.49 A1.00.50 A1.00.52 A1.00.53 A1.00.54 A1.00.55 A1.01.50 A1.01.53 +A1.00.52 A1.00.49 A1.00.50 A1.00.51 A1.00.54 A1.00.55 A1.00.56 A1.15.51 A1.15.53 A1.15.56 +A1.00.53 A1.00.51 A1.00.54 A1.00.57 A1.01.50 A1.01.53 A1.01.55 A1.01.57 +A1.00.54 A1.00.51 A1.00.52 A1.00.53 A1.00.55 A1.00.57 A1.00.58 A1.01.57 +A1.00.55 A1.00.51 A1.00.52 A1.00.54 A1.00.56 A1.00.57 A1.00.58 A1.00.59 +A1.00.56 A1.00.52 A1.00.55 A1.00.58 A1.00.59 A1.15.53 A1.15.56 A1.15.59 +A1.00.57 A1.00.53 A1.00.54 A1.00.55 A1.00.58 A1.00.60 A1.00.61 A1.01.57 A1.01.59 +A1.00.58 A1.00.54 A1.00.55 A1.00.56 A1.00.57 A1.00.59 A1.00.60 A1.00.61 A1.00.62 +A1.00.59 A1.00.55 A1.00.56 A1.00.58 A1.00.61 A1.00.62 A1.15.56 A1.15.59 A1.15.62 +A1.00.60 A1.00.57 A1.00.58 A1.00.61 A1.01.57 A1.01.59 A1.01.62 +A1.00.61 A1.00.57 A1.00.58 A1.00.59 A1.00.60 A1.00.62 A1.01.62 +A1.00.62 A1.00.58 A1.00.59 A1.00.61 A1.15.59 A1.15.62 +A1.01.00 A1.01.04 A1.01.06 A1.01.08 A1.01.12 +A1.01.01 A1.01.03 A1.01.05 A1.01.11 +A1.01.02 A1.00.08 A1.01.05 A1.01.13 +A1.01.03 A1.01.01 A1.01.07 A1.01.09 A1.01.11 +A1.01.04 A1.01.00 A1.01.08 A1.01.10 +A1.01.05 A1.01.01 A1.01.02 A1.01.11 A1.01.13 +A1.01.06 A1.01.00 A1.01.12 A1.01.17 A1.02.06 A1.02.13 +A1.01.07 A1.01.03 A1.01.09 A1.01.10 A1.01.14 +A1.01.08 A1.01.00 A1.01.04 A1.01.10 A1.01.12 A1.01.15 +A1.01.09 A1.01.03 A1.01.07 A1.01.11 A1.01.14 A1.01.16 +A1.01.10 A1.01.04 A1.01.07 A1.01.08 A1.01.12 A1.01.14 A1.01.15 A1.01.18 +A1.01.11 A1.01.01 A1.01.03 A1.01.05 A1.01.09 A1.01.13 A1.01.14 A1.01.16 A1.01.19 +A1.01.12 A1.01.00 A1.01.06 A1.01.08 A1.01.10 A1.01.15 A1.01.17 A1.01.20 A1.02.13 +A1.01.13 A1.00.07 A1.00.08 A1.00.17 A1.01.02 A1.01.05 A1.01.11 A1.01.16 A1.01.19 A1.01.21 +A1.01.14 A1.01.07 A1.01.09 A1.01.10 A1.01.11 A1.01.15 A1.01.16 A1.01.18 A1.01.22 +A1.01.15 A1.01.08 A1.01.10 A1.01.12 A1.01.14 A1.01.17 A1.01.18 A1.01.20 A1.01.23 +A1.01.16 A1.01.09 A1.01.11 A1.01.13 A1.01.14 A1.01.18 A1.01.19 A1.01.22 A1.01.24 +A1.01.17 A1.01.06 A1.01.12 A1.01.15 A1.01.20 A1.01.25 A1.02.13 A1.02.17 A1.02.21 +A1.01.18 A1.01.10 A1.01.14 A1.01.15 A1.01.16 A1.01.20 A1.01.22 A1.01.23 A1.01.27 +A1.01.19 A1.00.17 A1.01.11 A1.01.13 A1.01.16 A1.01.21 A1.01.22 A1.01.24 A1.01.26 +A1.01.20 A1.01.12 A1.01.15 A1.01.17 A1.01.18 A1.01.23 A1.01.25 A1.01.28 A1.02.21 +A1.01.21 A1.00.17 A1.00.18 A1.00.23 A1.00.28 A1.01.13 A1.01.19 A1.01.24 A1.01.26 +A1.01.22 A1.01.14 A1.01.16 A1.01.18 A1.01.19 A1.01.23 A1.01.24 A1.01.27 A1.01.29 +A1.01.23 A1.01.15 A1.01.18 A1.01.20 A1.01.22 A1.01.25 A1.01.27 A1.01.28 A1.01.30 +A1.01.24 A1.01.16 A1.01.19 A1.01.21 A1.01.22 A1.01.26 A1.01.27 A1.01.29 A1.01.31 +A1.01.25 A1.01.17 A1.01.20 A1.01.23 A1.01.28 A1.01.32 A1.02.21 A1.02.24 A1.02.28 +A1.01.26 A1.00.23 A1.00.28 A1.01.19 A1.01.21 A1.01.24 A1.01.29 A1.01.31 A1.01.33 +A1.01.27 A1.01.18 A1.01.22 A1.01.23 A1.01.24 A1.01.28 A1.01.29 A1.01.30 A1.01.34 +A1.01.28 A1.01.20 A1.01.23 A1.01.25 A1.01.27 A1.01.30 A1.01.32 A1.01.35 A1.02.28 +A1.01.29 A1.01.22 A1.01.24 A1.01.26 A1.01.27 A1.01.30 A1.01.31 A1.01.34 A1.01.36 +A1.01.30 A1.01.23 A1.01.27 A1.01.28 A1.01.29 A1.01.32 A1.01.34 A1.01.35 A1.01.37 +A1.01.31 A1.00.28 A1.01.24 A1.01.26 A1.01.29 A1.01.33 A1.01.34 A1.01.36 A1.01.38 +A1.01.32 A1.01.25 A1.01.28 A1.01.30 A1.01.35 A1.02.28 A1.02.31 A1.02.34 A1.02.37 +A1.01.33 A1.00.28 A1.00.29 A1.00.33 A1.00.37 A1.01.26 A1.01.31 A1.01.36 A1.01.38 +A1.01.34 A1.01.27 A1.01.29 A1.01.30 A1.01.31 A1.01.35 A1.01.36 A1.01.37 A1.01.39 +A1.01.35 A1.01.28 A1.01.30 A1.01.32 A1.01.34 A1.01.37 A1.01.40 A1.02.34 A1.02.37 +A1.01.36 A1.01.29 A1.01.31 A1.01.33 A1.01.34 A1.01.37 A1.01.38 A1.01.39 A1.01.41 +A1.01.37 A1.01.30 A1.01.34 A1.01.35 A1.01.36 A1.01.39 A1.01.40 A1.01.42 A1.02.37 +A1.01.38 A1.00.33 A1.00.37 A1.00.41 A1.01.31 A1.01.33 A1.01.36 A1.01.39 A1.01.41 +A1.01.39 A1.01.34 A1.01.36 A1.01.37 A1.01.38 A1.01.40 A1.01.41 A1.01.42 A1.01.43 +A1.01.40 A1.01.35 A1.01.37 A1.01.39 A1.01.42 A1.01.44 A1.02.37 A1.02.40 A1.02.43 +A1.01.41 A1.00.37 A1.00.41 A1.01.36 A1.01.38 A1.01.39 A1.01.42 A1.01.43 A1.01.45 +A1.01.42 A1.01.37 A1.01.39 A1.01.40 A1.01.41 A1.01.43 A1.01.44 A1.01.46 A1.02.43 +A1.01.43 A1.00.41 A1.01.39 A1.01.41 A1.01.42 A1.01.44 A1.01.45 A1.01.46 A1.01.47 +A1.01.44 A1.01.40 A1.01.42 A1.01.43 A1.01.46 A1.01.48 A1.02.43 A1.02.45 A1.02.47 +A1.01.45 A1.00.41 A1.00.42 A1.00.45 A1.00.48 A1.01.41 A1.01.43 A1.01.46 A1.01.47 +A1.01.46 A1.01.42 A1.01.43 A1.01.44 A1.01.45 A1.01.47 A1.01.48 A1.01.49 A1.02.47 +A1.01.47 A1.00.45 A1.00.48 A1.01.43 A1.01.45 A1.01.46 A1.01.48 A1.01.49 A1.01.50 +A1.01.48 A1.01.44 A1.01.46 A1.01.47 A1.01.49 A1.01.51 A1.02.47 A1.02.49 A1.02.51 +A1.01.49 A1.00.48 A1.01.46 A1.01.47 A1.01.48 A1.01.50 A1.01.51 A1.01.52 A1.02.51 +A1.01.50 A1.00.48 A1.00.49 A1.00.51 A1.00.53 A1.01.47 A1.01.49 A1.01.51 A1.01.52 A1.01.53 +A1.01.51 A1.01.48 A1.01.49 A1.01.50 A1.01.52 A1.01.54 A1.01.56 A1.02.51 A1.02.52 A1.02.53 A1.02.55 +A1.01.52 A1.01.49 A1.01.50 A1.01.51 A1.01.53 A1.01.54 A1.01.55 +A1.01.53 A1.00.51 A1.00.53 A1.01.50 A1.01.52 A1.01.54 A1.01.55 A1.01.57 +A1.01.54 A1.01.51 A1.01.52 A1.01.53 A1.01.55 A1.01.56 A1.01.58 A1.02.55 +A1.01.55 A1.00.53 A1.01.52 A1.01.53 A1.01.54 A1.01.56 A1.01.57 A1.01.58 A1.01.59 +A1.01.56 A1.01.51 A1.01.54 A1.01.55 A1.01.58 A1.01.60 A1.02.55 A1.02.57 A1.02.59 +A1.01.57 A1.00.53 A1.00.54 A1.00.57 A1.00.60 A1.01.53 A1.01.55 A1.01.58 A1.01.59 +A1.01.58 A1.01.54 A1.01.55 A1.01.56 A1.01.57 A1.01.59 A1.01.60 A1.01.61 A1.02.59 +A1.01.59 A1.00.57 A1.00.60 A1.01.55 A1.01.57 A1.01.58 A1.01.60 A1.01.61 A1.01.62 +A1.01.60 A1.01.56 A1.01.58 A1.01.59 A1.01.61 A1.02.59 A1.02.61 +A1.01.61 A1.01.58 A1.01.59 A1.01.60 A1.01.62 A1.02.59 A1.02.61 +A1.01.62 A1.00.60 A1.00.61 A1.01.59 A1.01.61 +A1.02.00 A1.02.03 A1.02.06 +A1.02.01 A1.02.02 A1.02.04 A1.02.10 A1.02.14 +A1.02.02 A1.02.01 A1.02.07 A1.02.10 +A1.02.03 A1.02.00 A1.02.06 A1.02.09 A1.02.12 +A1.02.04 A1.02.01 A1.02.05 A1.02.10 A1.02.14 A1.03.02 +A1.02.05 A1.02.04 A1.02.14 A1.03.02 A1.03.08 +A1.02.06 A1.01.06 A1.02.00 A1.02.03 A1.02.12 A1.02.13 A1.02.17 +A1.02.07 A1.02.02 A1.02.10 A1.02.11 A1.02.15 +A1.02.08 A1.02.09 A1.02.11 +A1.02.09 A1.02.03 A1.02.08 A1.02.11 A1.02.12 A1.02.16 +A1.02.10 A1.02.01 A1.02.02 A1.02.04 A1.02.07 A1.02.11 A1.02.14 A1.02.15 A1.02.18 +A1.02.11 A1.02.07 A1.02.08 A1.02.09 A1.02.10 A1.02.12 A1.02.15 A1.02.16 A1.02.19 +A1.02.12 A1.02.03 A1.02.06 A1.02.09 A1.02.11 A1.02.13 A1.02.16 A1.02.17 A1.02.20 +A1.02.13 A1.01.06 A1.01.12 A1.01.17 A1.02.06 A1.02.12 A1.02.17 A1.02.21 +A1.02.14 A1.02.01 A1.02.04 A1.02.05 A1.02.10 A1.02.15 A1.02.18 A1.03.08 A1.03.10 A1.03.15 A1.03.20 +A1.02.15 A1.02.07 A1.02.10 A1.02.11 A1.02.14 A1.02.16 A1.02.18 A1.02.19 A1.02.22 +A1.02.16 A1.02.09 A1.02.11 A1.02.12 A1.02.15 A1.02.17 A1.02.19 A1.02.20 A1.02.23 +A1.02.17 A1.01.17 A1.02.06 A1.02.12 A1.02.13 A1.02.16 A1.02.20 A1.02.21 A1.02.24 +A1.02.18 A1.02.10 A1.02.14 A1.02.15 A1.02.19 A1.02.22 A1.02.25 A1.03.15 A1.03.20 +A1.02.19 A1.02.11 A1.02.15 A1.02.16 A1.02.18 A1.02.20 A1.02.22 A1.02.23 A1.02.26 +A1.02.20 A1.02.12 A1.02.16 A1.02.17 A1.02.19 A1.02.21 A1.02.23 A1.02.24 A1.02.27 +A1.02.21 A1.01.17 A1.01.20 A1.01.25 A1.02.13 A1.02.17 A1.02.20 A1.02.24 A1.02.28 +A1.02.22 A1.02.15 A1.02.18 A1.02.19 A1.02.23 A1.02.25 A1.02.26 A1.02.29 A1.03.20 +A1.02.23 A1.02.16 A1.02.19 A1.02.20 A1.02.22 A1.02.24 A1.02.26 A1.02.27 A1.02.30 +A1.02.24 A1.01.25 A1.02.17 A1.02.20 A1.02.21 A1.02.23 A1.02.27 A1.02.28 A1.02.31 +A1.02.25 A1.02.18 A1.02.22 A1.02.26 A1.02.29 A1.03.20 A1.03.21 A1.03.25 A1.03.29 +A1.02.26 A1.02.19 A1.02.22 A1.02.23 A1.02.25 A1.02.27 A1.02.29 A1.02.30 A1.02.32 +A1.02.27 A1.02.20 A1.02.23 A1.02.24 A1.02.26 A1.02.28 A1.02.30 A1.02.31 A1.02.33 +A1.02.28 A1.01.25 A1.01.28 A1.01.32 A1.02.21 A1.02.24 A1.02.27 A1.02.31 A1.02.34 +A1.02.29 A1.02.22 A1.02.25 A1.02.26 A1.02.30 A1.02.32 A1.03.25 A1.03.29 A1.03.33 +A1.02.30 A1.02.23 A1.02.26 A1.02.27 A1.02.29 A1.02.31 A1.02.32 A1.02.33 A1.02.35 +A1.02.31 A1.01.32 A1.02.24 A1.02.27 A1.02.28 A1.02.30 A1.02.33 A1.02.34 A1.02.36 +A1.02.32 A1.02.26 A1.02.29 A1.02.30 A1.02.33 A1.02.35 A1.02.38 A1.03.29 A1.03.33 +A1.02.33 A1.02.27 A1.02.30 A1.02.31 A1.02.32 A1.02.34 A1.02.35 A1.02.36 A1.02.39 +A1.02.34 A1.01.32 A1.01.35 A1.02.28 A1.02.31 A1.02.33 A1.02.36 A1.02.37 A1.02.40 +A1.02.35 A1.02.30 A1.02.32 A1.02.33 A1.02.36 A1.02.38 A1.02.39 A1.02.41 A1.03.33 +A1.02.36 A1.02.31 A1.02.33 A1.02.34 A1.02.35 A1.02.37 A1.02.39 A1.02.40 A1.02.42 +A1.02.37 A1.01.32 A1.01.35 A1.01.37 A1.01.40 A1.02.34 A1.02.36 A1.02.40 A1.02.43 +A1.02.38 A1.02.32 A1.02.35 A1.02.39 A1.02.41 A1.03.33 A1.03.34 A1.03.37 A1.03.40 +A1.02.39 A1.02.33 A1.02.35 A1.02.36 A1.02.38 A1.02.40 A1.02.41 A1.02.42 A1.02.44 +A1.02.40 A1.01.40 A1.02.34 A1.02.36 A1.02.37 A1.02.39 A1.02.42 A1.02.43 A1.02.45 +A1.02.41 A1.02.35 A1.02.38 A1.02.39 A1.02.42 A1.02.44 A1.03.37 A1.03.40 A1.03.43 +A1.02.42 A1.02.36 A1.02.39 A1.02.40 A1.02.41 A1.02.43 A1.02.44 A1.02.45 A1.02.46 +A1.02.43 A1.01.40 A1.01.42 A1.01.44 A1.02.37 A1.02.40 A1.02.42 A1.02.45 A1.02.47 +A1.02.44 A1.02.39 A1.02.41 A1.02.42 A1.02.45 A1.02.46 A1.02.48 A1.03.40 A1.03.43 +A1.02.45 A1.01.44 A1.02.40 A1.02.42 A1.02.43 A1.02.44 A1.02.46 A1.02.47 A1.02.49 +A1.02.46 A1.02.42 A1.02.44 A1.02.45 A1.02.47 A1.02.48 A1.02.49 A1.02.50 A1.03.43 +A1.02.47 A1.01.44 A1.01.46 A1.01.48 A1.02.43 A1.02.45 A1.02.46 A1.02.49 A1.02.51 +A1.02.48 A1.02.44 A1.02.46 A1.02.49 A1.02.50 A1.03.43 A1.03.44 A1.03.46 A1.03.48 +A1.02.49 A1.01.48 A1.02.45 A1.02.46 A1.02.47 A1.02.48 A1.02.50 A1.02.51 A1.02.52 +A1.02.50 A1.02.46 A1.02.48 A1.02.49 A1.02.51 A1.02.52 A1.03.46 A1.03.48 A1.03.50 +A1.02.51 A1.01.48 A1.01.49 A1.01.51 A1.02.47 A1.02.49 A1.02.50 A1.02.52 A1.02.53 +A1.02.52 A1.01.51 A1.02.49 A1.02.50 A1.02.51 A1.02.53 A1.02.54 A1.02.56 A1.03.48 A1.03.50 A1.03.54 +A1.02.53 A1.01.51 A1.02.51 A1.02.52 A1.02.54 A1.02.55 A1.02.57 +A1.02.54 A1.02.52 A1.02.53 A1.02.55 A1.02.56 A1.02.57 A1.02.58 A1.03.54 +A1.02.55 A1.01.51 A1.01.54 A1.01.56 A1.02.53 A1.02.54 A1.02.57 A1.02.59 +A1.02.56 A1.02.52 A1.02.54 A1.02.57 A1.02.58 A1.02.60 A1.03.54 A1.03.55 A1.03.58 +A1.02.57 A1.01.56 A1.02.53 A1.02.54 A1.02.55 A1.02.56 A1.02.58 A1.02.59 A1.02.61 +A1.02.58 A1.02.54 A1.02.56 A1.02.57 A1.02.59 A1.02.60 A1.02.61 A1.02.62 A1.03.58 +A1.02.59 A1.01.56 A1.01.58 A1.01.60 A1.01.61 A1.02.55 A1.02.57 A1.02.58 A1.02.61 +A1.02.60 A1.02.56 A1.02.58 A1.02.61 A1.02.62 A1.03.58 A1.03.59 A1.03.61 +A1.02.61 A1.01.60 A1.01.61 A1.02.57 A1.02.58 A1.02.59 A1.02.60 A1.02.62 +A1.02.62 A1.02.58 A1.02.60 A1.02.61 A1.03.61 +A1.03.00 A1.03.05 A1.03.07 A1.04.00 A1.04.08 +A1.03.01 A1.03.02 A1.03.03 A1.03.10 +A1.03.02 A1.02.04 A1.02.05 A1.03.01 A1.03.08 A1.03.10 +A1.03.03 A1.03.01 A1.03.04 A1.03.10 A1.03.11 +A1.03.04 A1.03.03 A1.03.06 A1.03.11 A1.03.12 +A1.03.05 A1.03.00 A1.03.07 A1.03.09 A1.03.12 A1.03.13 A1.03.14 +A1.03.06 A1.03.04 A1.03.09 A1.03.11 A1.03.12 +A1.03.07 A1.03.00 A1.03.05 A1.03.13 A1.03.14 A1.04.00 A1.04.08 A1.04.14 +A1.03.08 A1.02.05 A1.02.14 A1.03.02 A1.03.10 A1.03.15 +A1.03.09 A1.03.05 A1.03.06 A1.03.12 A1.03.13 +A1.03.10 A1.02.14 A1.03.01 A1.03.02 A1.03.03 A1.03.08 A1.03.11 A1.03.15 A1.03.16 +A1.03.11 A1.03.03 A1.03.04 A1.03.06 A1.03.10 A1.03.12 A1.03.15 A1.03.16 A1.03.17 +A1.03.12 A1.03.04 A1.03.05 A1.03.06 A1.03.09 A1.03.11 A1.03.13 A1.03.16 A1.03.17 A1.03.18 +A1.03.13 A1.03.05 A1.03.07 A1.03.09 A1.03.12 A1.03.14 A1.03.17 A1.03.18 A1.03.19 +A1.03.14 A1.03.05 A1.03.07 A1.03.13 A1.03.18 A1.03.19 A1.04.08 A1.04.14 A1.04.19 +A1.03.15 A1.02.14 A1.02.18 A1.03.08 A1.03.10 A1.03.11 A1.03.16 A1.03.20 A1.03.21 +A1.03.16 A1.03.10 A1.03.11 A1.03.12 A1.03.15 A1.03.17 A1.03.20 A1.03.21 A1.03.22 +A1.03.17 A1.03.11 A1.03.12 A1.03.13 A1.03.16 A1.03.18 A1.03.21 A1.03.22 A1.03.23 +A1.03.18 A1.03.12 A1.03.13 A1.03.14 A1.03.17 A1.03.19 A1.03.22 A1.03.23 A1.03.24 +A1.03.19 A1.03.13 A1.03.14 A1.03.18 A1.03.23 A1.03.24 A1.04.14 A1.04.19 A1.04.24 +A1.03.20 A1.02.14 A1.02.18 A1.02.22 A1.02.25 A1.03.15 A1.03.16 A1.03.21 A1.03.25 +A1.03.21 A1.02.25 A1.03.15 A1.03.16 A1.03.17 A1.03.20 A1.03.22 A1.03.25 A1.03.26 +A1.03.22 A1.03.16 A1.03.17 A1.03.18 A1.03.21 A1.03.23 A1.03.25 A1.03.26 A1.03.27 +A1.03.23 A1.03.17 A1.03.18 A1.03.19 A1.03.22 A1.03.24 A1.03.26 A1.03.27 A1.03.28 +A1.03.24 A1.03.18 A1.03.19 A1.03.23 A1.03.27 A1.03.28 A1.04.19 A1.04.24 A1.04.28 +A1.03.25 A1.02.25 A1.02.29 A1.03.20 A1.03.21 A1.03.22 A1.03.26 A1.03.29 A1.03.30 +A1.03.26 A1.03.21 A1.03.22 A1.03.23 A1.03.25 A1.03.27 A1.03.29 A1.03.30 A1.03.31 +A1.03.27 A1.03.22 A1.03.23 A1.03.24 A1.03.26 A1.03.28 A1.03.30 A1.03.31 A1.03.32 +A1.03.28 A1.03.23 A1.03.24 A1.03.27 A1.03.31 A1.03.32 A1.04.24 A1.04.28 A1.04.32 +A1.03.29 A1.02.25 A1.02.29 A1.02.32 A1.03.25 A1.03.26 A1.03.30 A1.03.33 A1.03.34 +A1.03.30 A1.03.25 A1.03.26 A1.03.27 A1.03.29 A1.03.31 A1.03.33 A1.03.34 A1.03.35 +A1.03.31 A1.03.26 A1.03.27 A1.03.28 A1.03.30 A1.03.32 A1.03.34 A1.03.35 A1.03.36 +A1.03.32 A1.03.27 A1.03.28 A1.03.31 A1.03.35 A1.03.36 A1.04.28 A1.04.32 A1.04.36 +A1.03.33 A1.02.29 A1.02.32 A1.02.35 A1.02.38 A1.03.29 A1.03.30 A1.03.34 A1.03.37 +A1.03.34 A1.02.38 A1.03.29 A1.03.30 A1.03.31 A1.03.33 A1.03.35 A1.03.37 A1.03.38 +A1.03.35 A1.03.30 A1.03.31 A1.03.32 A1.03.34 A1.03.36 A1.03.37 A1.03.38 A1.03.39 +A1.03.36 A1.03.31 A1.03.32 A1.03.35 A1.03.38 A1.03.39 A1.04.32 A1.04.36 A1.04.39 +A1.03.37 A1.02.38 A1.02.41 A1.03.33 A1.03.34 A1.03.35 A1.03.38 A1.03.40 A1.03.41 +A1.03.38 A1.03.34 A1.03.35 A1.03.36 A1.03.37 A1.03.39 A1.03.40 A1.03.41 A1.03.42 +A1.03.39 A1.03.35 A1.03.36 A1.03.38 A1.03.41 A1.03.42 A1.04.36 A1.04.39 A1.04.42 +A1.03.40 A1.02.38 A1.02.41 A1.02.44 A1.03.37 A1.03.38 A1.03.41 A1.03.43 A1.03.44 +A1.03.41 A1.03.37 A1.03.38 A1.03.39 A1.03.40 A1.03.42 A1.03.43 A1.03.44 A1.03.45 +A1.03.42 A1.03.38 A1.03.39 A1.03.41 A1.03.44 A1.03.45 A1.04.39 A1.04.42 A1.04.45 +A1.03.43 A1.02.41 A1.02.44 A1.02.46 A1.02.48 A1.03.40 A1.03.41 A1.03.44 A1.03.46 +A1.03.44 A1.02.48 A1.03.40 A1.03.41 A1.03.42 A1.03.43 A1.03.45 A1.03.46 A1.03.47 +A1.03.45 A1.03.41 A1.03.42 A1.03.44 A1.03.46 A1.03.47 A1.04.42 A1.04.45 A1.04.47 +A1.03.46 A1.02.48 A1.02.50 A1.03.43 A1.03.44 A1.03.45 A1.03.47 A1.03.48 A1.03.49 +A1.03.47 A1.03.44 A1.03.45 A1.03.46 A1.03.48 A1.03.49 A1.04.45 A1.04.47 A1.04.49 +A1.03.48 A1.02.48 A1.02.50 A1.02.52 A1.03.46 A1.03.47 A1.03.49 A1.03.50 A1.03.51 A1.03.52 +A1.03.49 A1.03.46 A1.03.47 A1.03.48 A1.03.51 A1.03.52 A1.03.53 A1.04.47 A1.04.49 A1.04.53 +A1.03.50 A1.02.50 A1.02.52 A1.03.48 A1.03.51 A1.03.54 A1.03.55 +A1.03.51 A1.03.48 A1.03.49 A1.03.50 A1.03.52 A1.03.54 A1.03.55 A1.03.56 +A1.03.52 A1.03.48 A1.03.49 A1.03.51 A1.03.53 A1.03.55 A1.03.56 A1.03.57 +A1.03.53 A1.03.49 A1.03.52 A1.03.56 A1.03.57 A1.04.49 A1.04.53 A1.04.57 +A1.03.54 A1.02.52 A1.02.54 A1.02.56 A1.03.50 A1.03.51 A1.03.55 A1.03.58 +A1.03.55 A1.02.56 A1.03.50 A1.03.51 A1.03.52 A1.03.54 A1.03.56 A1.03.58 A1.03.59 +A1.03.56 A1.03.51 A1.03.52 A1.03.53 A1.03.55 A1.03.57 A1.03.58 A1.03.59 A1.03.60 +A1.03.57 A1.03.52 A1.03.53 A1.03.56 A1.03.59 A1.03.60 A1.04.53 A1.04.57 A1.04.60 +A1.03.58 A1.02.56 A1.02.58 A1.02.60 A1.03.54 A1.03.55 A1.03.56 A1.03.59 A1.03.61 +A1.03.59 A1.02.60 A1.03.55 A1.03.56 A1.03.57 A1.03.58 A1.03.60 A1.03.61 A1.03.62 +A1.03.60 A1.03.56 A1.03.57 A1.03.59 A1.03.61 A1.03.62 A1.04.57 A1.04.60 A1.04.62 +A1.03.61 A1.02.60 A1.02.62 A1.03.58 A1.03.59 A1.03.60 A1.03.62 +A1.03.62 A1.03.59 A1.03.60 A1.03.61 A1.04.60 A1.04.62 +A1.04.00 A1.03.00 A1.03.07 A1.04.06 A1.04.08 +A1.04.01 A1.04.02 A1.04.04 A1.04.10 +A1.04.02 A1.04.01 A1.04.03 A1.04.10 A1.04.11 +A1.04.03 A1.04.02 A1.04.05 A1.04.10 A1.04.11 +A1.04.04 A1.04.01 A1.04.10 A1.04.15 A1.05.02 A1.05.09 A1.05.13 +A1.04.05 A1.04.03 A1.04.07 A1.04.11 A1.04.12 +A1.04.06 A1.04.00 A1.04.08 A1.04.09 A1.04.12 A1.04.13 A1.04.14 +A1.04.07 A1.04.05 A1.04.09 A1.04.11 A1.04.12 +A1.04.08 A1.03.00 A1.03.07 A1.03.14 A1.04.00 A1.04.06 A1.04.13 A1.04.14 +A1.04.09 A1.04.06 A1.04.07 A1.04.12 A1.04.13 +A1.04.10 A1.04.01 A1.04.02 A1.04.03 A1.04.04 A1.04.11 A1.04.15 A1.04.16 A1.05.13 +A1.04.11 A1.04.02 A1.04.03 A1.04.05 A1.04.07 A1.04.10 A1.04.12 A1.04.15 A1.04.16 A1.04.17 +A1.04.12 A1.04.05 A1.04.06 A1.04.07 A1.04.09 A1.04.11 A1.04.13 A1.04.16 A1.04.17 A1.04.18 +A1.04.13 A1.04.06 A1.04.08 A1.04.09 A1.04.12 A1.04.14 A1.04.17 A1.04.18 A1.04.19 +A1.04.14 A1.03.07 A1.03.14 A1.03.19 A1.04.06 A1.04.08 A1.04.13 A1.04.18 A1.04.19 +A1.04.15 A1.04.04 A1.04.10 A1.04.11 A1.04.16 A1.04.20 A1.04.21 A1.05.13 A1.05.17 +A1.04.16 A1.04.10 A1.04.11 A1.04.12 A1.04.15 A1.04.17 A1.04.20 A1.04.21 A1.04.22 +A1.04.17 A1.04.11 A1.04.12 A1.04.13 A1.04.16 A1.04.18 A1.04.21 A1.04.22 A1.04.23 +A1.04.18 A1.04.12 A1.04.13 A1.04.14 A1.04.17 A1.04.19 A1.04.22 A1.04.23 A1.04.24 +A1.04.19 A1.03.14 A1.03.19 A1.03.24 A1.04.13 A1.04.14 A1.04.18 A1.04.23 A1.04.24 +A1.04.20 A1.04.15 A1.04.16 A1.04.21 A1.04.25 A1.05.13 A1.05.17 A1.05.21 A1.05.24 +A1.04.21 A1.04.15 A1.04.16 A1.04.17 A1.04.20 A1.04.22 A1.04.25 A1.04.26 A1.05.24 +A1.04.22 A1.04.16 A1.04.17 A1.04.18 A1.04.21 A1.04.23 A1.04.25 A1.04.26 A1.04.27 +A1.04.23 A1.04.17 A1.04.18 A1.04.19 A1.04.22 A1.04.24 A1.04.26 A1.04.27 A1.04.28 +A1.04.24 A1.03.19 A1.03.24 A1.03.28 A1.04.18 A1.04.19 A1.04.23 A1.04.27 A1.04.28 +A1.04.25 A1.04.20 A1.04.21 A1.04.22 A1.04.26 A1.04.29 A1.04.30 A1.05.24 A1.05.28 +A1.04.26 A1.04.21 A1.04.22 A1.04.23 A1.04.25 A1.04.27 A1.04.29 A1.04.30 A1.04.31 +A1.04.27 A1.04.22 A1.04.23 A1.04.24 A1.04.26 A1.04.28 A1.04.30 A1.04.31 A1.04.32 +A1.04.28 A1.03.24 A1.03.28 A1.03.32 A1.04.23 A1.04.24 A1.04.27 A1.04.31 A1.04.32 +A1.04.29 A1.04.25 A1.04.26 A1.04.30 A1.04.33 A1.04.34 A1.05.24 A1.05.28 A1.05.31 +A1.04.30 A1.04.25 A1.04.26 A1.04.27 A1.04.29 A1.04.31 A1.04.33 A1.04.34 A1.04.35 +A1.04.31 A1.04.26 A1.04.27 A1.04.28 A1.04.30 A1.04.32 A1.04.34 A1.04.35 A1.04.36 +A1.04.32 A1.03.28 A1.03.32 A1.03.36 A1.04.27 A1.04.28 A1.04.31 A1.04.35 A1.04.36 +A1.04.33 A1.04.29 A1.04.30 A1.04.34 A1.04.37 A1.05.28 A1.05.31 A1.05.34 A1.05.37 +A1.04.34 A1.04.29 A1.04.30 A1.04.31 A1.04.33 A1.04.35 A1.04.37 A1.04.38 A1.05.37 +A1.04.35 A1.04.30 A1.04.31 A1.04.32 A1.04.34 A1.04.36 A1.04.37 A1.04.38 A1.04.39 +A1.04.36 A1.03.32 A1.03.36 A1.03.39 A1.04.31 A1.04.32 A1.04.35 A1.04.38 A1.04.39 +A1.04.37 A1.04.33 A1.04.34 A1.04.35 A1.04.38 A1.04.40 A1.04.41 A1.05.37 A1.05.40 +A1.04.38 A1.04.34 A1.04.35 A1.04.36 A1.04.37 A1.04.39 A1.04.40 A1.04.41 A1.04.42 +A1.04.39 A1.03.36 A1.03.39 A1.03.42 A1.04.35 A1.04.36 A1.04.38 A1.04.41 A1.04.42 +A1.04.40 A1.04.37 A1.04.38 A1.04.41 A1.04.43 A1.04.44 A1.05.37 A1.05.40 A1.05.43 +A1.04.41 A1.04.37 A1.04.38 A1.04.39 A1.04.40 A1.04.42 A1.04.43 A1.04.44 A1.04.45 +A1.04.42 A1.03.39 A1.03.42 A1.03.45 A1.04.38 A1.04.39 A1.04.41 A1.04.44 A1.04.45 +A1.04.43 A1.04.40 A1.04.41 A1.04.44 A1.04.46 A1.05.40 A1.05.43 A1.05.45 A1.05.47 +A1.04.44 A1.04.40 A1.04.41 A1.04.42 A1.04.43 A1.04.45 A1.04.46 A1.04.47 A1.05.47 +A1.04.45 A1.03.42 A1.03.45 A1.03.47 A1.04.41 A1.04.42 A1.04.44 A1.04.46 A1.04.47 +A1.04.46 A1.04.43 A1.04.44 A1.04.45 A1.04.47 A1.04.48 A1.04.49 A1.05.47 A1.05.49 +A1.04.47 A1.03.45 A1.03.47 A1.03.49 A1.04.44 A1.04.45 A1.04.46 A1.04.48 A1.04.49 +A1.04.48 A1.04.46 A1.04.47 A1.04.49 A1.04.50 A1.04.51 A1.04.52 A1.05.47 A1.05.49 A1.05.51 +A1.04.49 A1.03.47 A1.03.49 A1.03.53 A1.04.46 A1.04.47 A1.04.48 A1.04.51 A1.04.52 A1.04.53 +A1.04.50 A1.04.48 A1.04.51 A1.04.54 A1.04.55 A1.05.49 A1.05.51 +A1.04.51 A1.04.48 A1.04.49 A1.04.50 A1.04.52 A1.04.54 A1.04.55 A1.04.56 +A1.04.52 A1.04.48 A1.04.49 A1.04.51 A1.04.53 A1.04.55 A1.04.56 A1.04.57 +A1.04.53 A1.03.49 A1.03.53 A1.03.57 A1.04.49 A1.04.52 A1.04.56 A1.04.57 +A1.04.54 A1.04.50 A1.04.51 A1.04.55 A1.04.58 A1.05.51 A1.05.53 A1.05.55 +A1.04.55 A1.04.50 A1.04.51 A1.04.52 A1.04.54 A1.04.56 A1.04.58 A1.04.59 A1.05.55 +A1.04.56 A1.04.51 A1.04.52 A1.04.53 A1.04.55 A1.04.57 A1.04.58 A1.04.59 A1.04.60 +A1.04.57 A1.03.53 A1.03.57 A1.03.60 A1.04.52 A1.04.53 A1.04.56 A1.04.59 A1.04.60 +A1.04.58 A1.04.54 A1.04.55 A1.04.56 A1.04.59 A1.04.61 A1.05.55 A1.05.57 A1.05.59 +A1.04.59 A1.04.55 A1.04.56 A1.04.57 A1.04.58 A1.04.60 A1.04.61 A1.04.62 A1.05.59 +A1.04.60 A1.03.57 A1.03.60 A1.03.62 A1.04.56 A1.04.57 A1.04.59 A1.04.61 A1.04.62 +A1.04.61 A1.04.58 A1.04.59 A1.04.60 A1.04.62 A1.05.59 A1.05.62 +A1.04.62 A1.03.60 A1.03.62 A1.04.59 A1.04.60 A1.04.61 A1.05.62 +A1.05.00 A1.05.02 A1.05.05 A1.05.09 +A1.05.01 A1.05.03 A1.05.06 A1.05.12 +A1.05.02 A1.04.04 A1.05.00 A1.05.09 A1.05.13 +A1.05.03 A1.05.01 A1.05.06 A1.05.07 A1.05.08 A1.05.12 +A1.05.04 A1.05.05 A1.05.07 A1.05.10 +A1.05.05 A1.05.00 A1.05.04 A1.05.09 A1.05.10 A1.05.14 +A1.05.06 A1.05.01 A1.05.03 A1.05.11 A1.05.12 A1.05.16 A1.06.06 +A1.05.07 A1.05.03 A1.05.04 A1.05.08 A1.05.10 +A1.05.08 A1.05.03 A1.05.07 A1.05.10 A1.05.12 A1.05.15 +A1.05.09 A1.04.04 A1.05.00 A1.05.02 A1.05.05 A1.05.10 A1.05.13 A1.05.14 A1.05.17 +A1.05.10 A1.05.04 A1.05.05 A1.05.07 A1.05.08 A1.05.09 A1.05.12 A1.05.14 A1.05.15 A1.05.18 +A1.05.11 A1.05.06 A1.05.12 A1.05.16 A1.05.20 A1.06.06 A1.06.12 A1.06.17 +A1.05.12 A1.05.01 A1.05.03 A1.05.06 A1.05.08 A1.05.10 A1.05.11 A1.05.15 A1.05.16 A1.05.19 +A1.05.13 A1.04.04 A1.04.10 A1.04.15 A1.04.20 A1.05.02 A1.05.09 A1.05.14 A1.05.17 +A1.05.14 A1.05.05 A1.05.09 A1.05.10 A1.05.13 A1.05.15 A1.05.17 A1.05.18 A1.05.21 +A1.05.15 A1.05.08 A1.05.10 A1.05.12 A1.05.14 A1.05.16 A1.05.18 A1.05.19 A1.05.22 +A1.05.16 A1.05.06 A1.05.11 A1.05.12 A1.05.15 A1.05.19 A1.05.20 A1.05.23 A1.06.17 +A1.05.17 A1.04.15 A1.04.20 A1.05.09 A1.05.13 A1.05.14 A1.05.18 A1.05.21 A1.05.24 +A1.05.18 A1.05.10 A1.05.14 A1.05.15 A1.05.17 A1.05.19 A1.05.21 A1.05.22 A1.05.25 +A1.05.19 A1.05.12 A1.05.15 A1.05.16 A1.05.18 A1.05.20 A1.05.22 A1.05.23 A1.05.26 +A1.05.20 A1.05.11 A1.05.16 A1.05.19 A1.05.23 A1.05.27 A1.06.17 A1.06.20 A1.06.25 +A1.05.21 A1.04.20 A1.05.14 A1.05.17 A1.05.18 A1.05.22 A1.05.24 A1.05.25 A1.05.28 +A1.05.22 A1.05.15 A1.05.18 A1.05.19 A1.05.21 A1.05.23 A1.05.25 A1.05.26 A1.05.29 +A1.05.23 A1.05.16 A1.05.19 A1.05.20 A1.05.22 A1.05.26 A1.05.27 A1.05.30 A1.06.25 +A1.05.24 A1.04.20 A1.04.21 A1.04.25 A1.04.29 A1.05.17 A1.05.21 A1.05.25 A1.05.28 +A1.05.25 A1.05.18 A1.05.21 A1.05.22 A1.05.24 A1.05.26 A1.05.28 A1.05.29 A1.05.31 +A1.05.26 A1.05.19 A1.05.22 A1.05.23 A1.05.25 A1.05.27 A1.05.29 A1.05.30 A1.05.32 +A1.05.27 A1.05.20 A1.05.23 A1.05.26 A1.05.30 A1.05.33 A1.06.25 A1.06.28 A1.06.32 +A1.05.28 A1.04.25 A1.04.29 A1.04.33 A1.05.21 A1.05.24 A1.05.25 A1.05.29 A1.05.31 +A1.05.29 A1.05.22 A1.05.25 A1.05.26 A1.05.28 A1.05.30 A1.05.31 A1.05.32 A1.05.34 +A1.05.30 A1.05.23 A1.05.26 A1.05.27 A1.05.29 A1.05.32 A1.05.33 A1.05.36 A1.06.32 +A1.05.31 A1.04.29 A1.04.33 A1.05.25 A1.05.28 A1.05.29 A1.05.32 A1.05.34 A1.05.37 +A1.05.32 A1.05.26 A1.05.29 A1.05.30 A1.05.31 A1.05.33 A1.05.34 A1.05.36 A1.05.38 +A1.05.33 A1.05.27 A1.05.30 A1.05.32 A1.05.35 A1.05.36 A1.05.39 A1.06.32 A1.06.35 +A1.05.34 A1.04.33 A1.05.29 A1.05.31 A1.05.32 A1.05.36 A1.05.37 A1.05.38 A1.05.40 +A1.05.35 A1.05.33 A1.05.36 A1.05.39 A1.05.42 A1.06.32 A1.06.35 A1.06.37 A1.06.40 +A1.05.36 A1.05.30 A1.05.32 A1.05.33 A1.05.34 A1.05.35 A1.05.38 A1.05.39 A1.05.41 +A1.05.37 A1.04.33 A1.04.34 A1.04.37 A1.04.40 A1.05.31 A1.05.34 A1.05.38 A1.05.40 +A1.05.38 A1.05.32 A1.05.34 A1.05.36 A1.05.37 A1.05.39 A1.05.40 A1.05.41 A1.05.43 +A1.05.39 A1.05.33 A1.05.35 A1.05.36 A1.05.38 A1.05.41 A1.05.42 A1.05.44 A1.06.40 +A1.05.40 A1.04.37 A1.04.40 A1.04.43 A1.05.34 A1.05.37 A1.05.38 A1.05.41 A1.05.43 +A1.05.41 A1.05.36 A1.05.38 A1.05.39 A1.05.40 A1.05.42 A1.05.43 A1.05.44 A1.05.45 +A1.05.42 A1.05.35 A1.05.39 A1.05.41 A1.05.44 A1.05.46 A1.06.40 A1.06.42 A1.06.44 +A1.05.43 A1.04.40 A1.04.43 A1.05.38 A1.05.40 A1.05.41 A1.05.44 A1.05.45 A1.05.47 +A1.05.44 A1.05.39 A1.05.41 A1.05.42 A1.05.43 A1.05.45 A1.05.46 A1.05.48 A1.06.44 +A1.05.45 A1.04.43 A1.05.41 A1.05.43 A1.05.44 A1.05.46 A1.05.47 A1.05.48 A1.05.49 +A1.05.46 A1.05.42 A1.05.44 A1.05.45 A1.05.48 A1.05.50 A1.06.44 A1.06.46 A1.06.48 +A1.05.47 A1.04.43 A1.04.44 A1.04.46 A1.04.48 A1.05.43 A1.05.45 A1.05.48 A1.05.49 +A1.05.48 A1.05.44 A1.05.45 A1.05.46 A1.05.47 A1.05.49 A1.05.50 A1.05.51 A1.06.48 +A1.05.49 A1.04.46 A1.04.48 A1.04.50 A1.05.45 A1.05.47 A1.05.48 A1.05.50 A1.05.51 +A1.05.50 A1.05.46 A1.05.48 A1.05.49 A1.05.51 A1.05.52 A1.06.48 A1.06.49 A1.06.51 +A1.05.51 A1.04.48 A1.04.50 A1.04.54 A1.05.48 A1.05.49 A1.05.50 A1.05.52 A1.05.53 A1.05.55 A1.06.51 +A1.05.52 A1.05.50 A1.05.51 A1.05.53 A1.05.54 A1.05.56 A1.06.51 +A1.05.53 A1.04.54 A1.05.51 A1.05.52 A1.05.54 A1.05.55 A1.05.56 A1.05.57 +A1.05.54 A1.05.52 A1.05.53 A1.05.56 A1.05.58 A1.06.51 A1.06.55 A1.06.57 +A1.05.55 A1.04.54 A1.04.55 A1.04.58 A1.05.51 A1.05.53 A1.05.56 A1.05.57 A1.05.59 +A1.05.56 A1.05.52 A1.05.53 A1.05.54 A1.05.55 A1.05.57 A1.05.58 A1.05.60 A1.06.57 +A1.05.57 A1.04.58 A1.05.53 A1.05.55 A1.05.56 A1.05.58 A1.05.59 A1.05.60 +A1.05.58 A1.05.54 A1.05.56 A1.05.57 A1.05.60 A1.05.61 A1.06.57 A1.06.59 A1.06.61 +A1.05.59 A1.04.58 A1.04.59 A1.04.61 A1.05.55 A1.05.57 A1.05.60 A1.05.62 +A1.05.60 A1.05.56 A1.05.57 A1.05.58 A1.05.59 A1.05.61 A1.05.62 A1.06.61 +A1.05.61 A1.05.58 A1.05.60 A1.05.62 A1.06.61 A1.06.62 +A1.05.62 A1.04.61 A1.04.62 A1.05.59 A1.05.60 A1.05.61 +A1.06.00 A1.06.02 A1.06.03 A1.06.11 +A1.06.01 A1.06.04 A1.06.06 A1.06.08 A1.06.12 +A1.06.02 A1.06.00 A1.06.05 A1.06.11 A1.06.13 +A1.06.03 A1.06.00 A1.06.07 A1.06.09 A1.06.11 +A1.06.04 A1.06.01 A1.06.08 A1.06.10 +A1.06.05 A1.06.02 A1.06.11 A1.06.13 A1.07.00 A1.07.08 +A1.06.06 A1.05.06 A1.05.11 A1.06.01 A1.06.12 A1.06.17 +A1.06.07 A1.06.03 A1.06.09 A1.06.10 A1.06.14 +A1.06.08 A1.06.01 A1.06.04 A1.06.10 A1.06.12 A1.06.15 +A1.06.09 A1.06.03 A1.06.07 A1.06.11 A1.06.14 A1.06.16 +A1.06.10 A1.06.04 A1.06.07 A1.06.08 A1.06.12 A1.06.14 A1.06.15 A1.06.18 +A1.06.11 A1.06.00 A1.06.02 A1.06.03 A1.06.05 A1.06.09 A1.06.13 A1.06.14 A1.06.16 A1.06.19 +A1.06.12 A1.05.11 A1.06.01 A1.06.06 A1.06.08 A1.06.10 A1.06.15 A1.06.17 A1.06.20 +A1.06.13 A1.06.02 A1.06.05 A1.06.11 A1.06.16 A1.06.19 A1.06.21 A1.07.07 A1.07.08 A1.07.18 +A1.06.14 A1.06.07 A1.06.09 A1.06.10 A1.06.11 A1.06.15 A1.06.16 A1.06.18 A1.06.22 +A1.06.15 A1.06.08 A1.06.10 A1.06.12 A1.06.14 A1.06.17 A1.06.18 A1.06.20 A1.06.23 +A1.06.16 A1.06.09 A1.06.11 A1.06.13 A1.06.14 A1.06.18 A1.06.19 A1.06.22 A1.06.24 +A1.06.17 A1.05.11 A1.05.16 A1.05.20 A1.06.06 A1.06.12 A1.06.15 A1.06.20 A1.06.25 +A1.06.18 A1.06.10 A1.06.14 A1.06.15 A1.06.16 A1.06.20 A1.06.22 A1.06.23 A1.06.27 +A1.06.19 A1.06.11 A1.06.13 A1.06.16 A1.06.21 A1.06.22 A1.06.24 A1.06.26 A1.07.18 +A1.06.20 A1.05.20 A1.06.12 A1.06.15 A1.06.17 A1.06.18 A1.06.23 A1.06.25 A1.06.28 +A1.06.21 A1.06.13 A1.06.19 A1.06.24 A1.06.26 A1.07.18 A1.07.19 A1.07.24 A1.07.29 +A1.06.22 A1.06.14 A1.06.16 A1.06.18 A1.06.19 A1.06.23 A1.06.24 A1.06.27 A1.06.29 +A1.06.23 A1.06.15 A1.06.18 A1.06.20 A1.06.22 A1.06.25 A1.06.27 A1.06.28 A1.06.30 +A1.06.24 A1.06.16 A1.06.19 A1.06.21 A1.06.22 A1.06.26 A1.06.27 A1.06.29 A1.06.31 +A1.06.25 A1.05.20 A1.05.23 A1.05.27 A1.06.17 A1.06.20 A1.06.23 A1.06.28 A1.06.32 +A1.06.26 A1.06.19 A1.06.21 A1.06.24 A1.06.29 A1.06.31 A1.06.33 A1.07.24 A1.07.29 +A1.06.27 A1.06.18 A1.06.22 A1.06.23 A1.06.24 A1.06.28 A1.06.29 A1.06.30 A1.06.34 +A1.06.28 A1.05.27 A1.06.20 A1.06.23 A1.06.25 A1.06.27 A1.06.30 A1.06.32 A1.06.35 +A1.06.29 A1.06.22 A1.06.24 A1.06.26 A1.06.27 A1.06.30 A1.06.31 A1.06.34 A1.06.36 +A1.06.30 A1.06.23 A1.06.27 A1.06.28 A1.06.29 A1.06.32 A1.06.34 A1.06.35 A1.06.37 +A1.06.31 A1.06.24 A1.06.26 A1.06.29 A1.06.33 A1.06.34 A1.06.36 A1.06.38 A1.07.29 +A1.06.32 A1.05.27 A1.05.30 A1.05.33 A1.05.35 A1.06.25 A1.06.28 A1.06.30 A1.06.35 +A1.06.33 A1.06.26 A1.06.31 A1.06.36 A1.06.38 A1.07.29 A1.07.30 A1.07.34 A1.07.38 +A1.06.34 A1.06.27 A1.06.29 A1.06.30 A1.06.31 A1.06.35 A1.06.36 A1.06.37 A1.06.39 +A1.06.35 A1.05.33 A1.05.35 A1.06.28 A1.06.30 A1.06.32 A1.06.34 A1.06.37 A1.06.40 +A1.06.36 A1.06.29 A1.06.31 A1.06.33 A1.06.34 A1.06.37 A1.06.38 A1.06.39 A1.06.41 +A1.06.37 A1.05.35 A1.06.30 A1.06.34 A1.06.35 A1.06.36 A1.06.39 A1.06.40 A1.06.42 +A1.06.38 A1.06.31 A1.06.33 A1.06.36 A1.06.39 A1.06.41 A1.07.34 A1.07.38 A1.07.42 +A1.06.39 A1.06.34 A1.06.36 A1.06.37 A1.06.38 A1.06.40 A1.06.41 A1.06.42 A1.06.43 +A1.06.40 A1.05.35 A1.05.39 A1.05.42 A1.06.35 A1.06.37 A1.06.39 A1.06.42 A1.06.44 +A1.06.41 A1.06.36 A1.06.38 A1.06.39 A1.06.42 A1.06.43 A1.06.45 A1.07.38 A1.07.42 +A1.06.42 A1.05.42 A1.06.37 A1.06.39 A1.06.40 A1.06.41 A1.06.43 A1.06.44 A1.06.46 +A1.06.43 A1.06.39 A1.06.41 A1.06.42 A1.06.44 A1.06.45 A1.06.46 A1.06.47 A1.07.42 +A1.06.44 A1.05.42 A1.05.44 A1.05.46 A1.06.40 A1.06.42 A1.06.43 A1.06.46 A1.06.48 +A1.06.45 A1.06.41 A1.06.43 A1.06.46 A1.06.47 A1.07.42 A1.07.43 A1.07.46 A1.07.49 +A1.06.46 A1.05.46 A1.06.42 A1.06.43 A1.06.44 A1.06.45 A1.06.47 A1.06.48 A1.06.49 +A1.06.47 A1.06.43 A1.06.45 A1.06.46 A1.06.48 A1.06.49 A1.06.50 A1.07.46 A1.07.49 +A1.06.48 A1.05.46 A1.05.48 A1.05.50 A1.06.44 A1.06.46 A1.06.47 A1.06.49 A1.06.51 +A1.06.49 A1.05.50 A1.06.46 A1.06.47 A1.06.48 A1.06.50 A1.06.51 A1.06.52 A1.07.49 +A1.06.50 A1.06.47 A1.06.49 A1.06.51 A1.06.52 A1.06.53 A1.06.54 A1.07.49 A1.07.50 A1.07.52 +A1.06.51 A1.05.50 A1.05.51 A1.05.52 A1.05.54 A1.06.48 A1.06.49 A1.06.50 A1.06.52 A1.06.55 A1.06.57 +A1.06.52 A1.06.49 A1.06.50 A1.06.51 A1.06.53 A1.06.55 A1.06.56 +A1.06.53 A1.06.50 A1.06.52 A1.06.54 A1.06.55 A1.06.56 A1.06.58 A1.07.52 +A1.06.54 A1.06.50 A1.06.53 A1.06.56 A1.06.58 A1.07.52 A1.07.54 A1.07.57 +A1.06.55 A1.05.54 A1.06.51 A1.06.52 A1.06.53 A1.06.56 A1.06.57 A1.06.59 +A1.06.56 A1.06.52 A1.06.53 A1.06.54 A1.06.55 A1.06.57 A1.06.58 A1.06.59 A1.06.60 +A1.06.57 A1.05.54 A1.05.56 A1.05.58 A1.06.51 A1.06.55 A1.06.56 A1.06.59 A1.06.61 +A1.06.58 A1.06.53 A1.06.54 A1.06.56 A1.06.59 A1.06.60 A1.07.54 A1.07.57 A1.07.60 +A1.06.59 A1.05.58 A1.06.55 A1.06.56 A1.06.57 A1.06.58 A1.06.60 A1.06.61 A1.06.62 +A1.06.60 A1.06.56 A1.06.58 A1.06.59 A1.06.61 A1.06.62 A1.07.57 A1.07.60 +A1.06.61 A1.05.58 A1.05.60 A1.05.61 A1.06.57 A1.06.59 A1.06.60 A1.06.62 +A1.06.62 A1.05.61 A1.06.59 A1.06.60 A1.06.61 A1.07.60 +A1.07.00 A1.06.05 A1.07.07 A1.07.08 +A1.07.01 A1.07.02 A1.07.04 A1.07.06 A1.07.10 A1.07.11 +A1.07.02 A1.07.01 A1.07.11 A1.07.12 A1.08.01 A1.08.11 +A1.07.03 A1.07.07 A1.07.13 A1.07.14 +A1.07.04 A1.07.01 A1.07.05 A1.07.06 A1.07.09 +A1.07.05 A1.07.04 A1.07.09 A1.07.14 A1.07.15 +A1.07.06 A1.07.01 A1.07.04 A1.07.09 A1.07.10 A1.07.15 A1.07.16 +A1.07.07 A1.06.13 A1.07.00 A1.07.03 A1.07.08 A1.07.13 A1.07.18 A1.07.19 +A1.07.08 A1.06.05 A1.06.13 A1.07.00 A1.07.07 A1.07.18 +A1.07.09 A1.07.04 A1.07.05 A1.07.06 A1.07.15 A1.07.16 +A1.07.10 A1.07.01 A1.07.06 A1.07.11 A1.07.16 A1.07.17 +A1.07.11 A1.07.01 A1.07.02 A1.07.10 A1.07.12 A1.07.16 A1.07.17 +A1.07.12 A1.07.02 A1.07.11 A1.07.17 A1.08.01 A1.08.11 A1.08.16 +A1.07.13 A1.07.03 A1.07.07 A1.07.14 A1.07.18 A1.07.19 A1.07.20 +A1.07.14 A1.07.03 A1.07.05 A1.07.13 A1.07.15 A1.07.19 A1.07.20 A1.07.21 +A1.07.15 A1.07.05 A1.07.06 A1.07.09 A1.07.14 A1.07.16 A1.07.20 A1.07.21 A1.07.22 +A1.07.16 A1.07.06 A1.07.09 A1.07.10 A1.07.11 A1.07.15 A1.07.17 A1.07.21 A1.07.22 A1.07.23 +A1.07.17 A1.07.10 A1.07.11 A1.07.12 A1.07.16 A1.07.22 A1.07.23 A1.08.11 A1.08.16 A1.08.22 +A1.07.18 A1.06.13 A1.06.19 A1.06.21 A1.07.07 A1.07.08 A1.07.13 A1.07.19 A1.07.24 +A1.07.19 A1.06.21 A1.07.07 A1.07.13 A1.07.14 A1.07.18 A1.07.20 A1.07.24 A1.07.25 +A1.07.20 A1.07.13 A1.07.14 A1.07.15 A1.07.19 A1.07.21 A1.07.24 A1.07.25 A1.07.26 +A1.07.21 A1.07.14 A1.07.15 A1.07.16 A1.07.20 A1.07.22 A1.07.25 A1.07.26 A1.07.27 +A1.07.22 A1.07.15 A1.07.16 A1.07.17 A1.07.21 A1.07.23 A1.07.26 A1.07.27 A1.07.28 +A1.07.23 A1.07.16 A1.07.17 A1.07.22 A1.07.27 A1.07.28 A1.08.16 A1.08.22 A1.08.27 +A1.07.24 A1.06.21 A1.06.26 A1.07.18 A1.07.19 A1.07.20 A1.07.25 A1.07.29 A1.07.30 +A1.07.25 A1.07.19 A1.07.20 A1.07.21 A1.07.24 A1.07.26 A1.07.29 A1.07.30 A1.07.31 +A1.07.26 A1.07.20 A1.07.21 A1.07.22 A1.07.25 A1.07.27 A1.07.30 A1.07.31 A1.07.32 +A1.07.27 A1.07.21 A1.07.22 A1.07.23 A1.07.26 A1.07.28 A1.07.31 A1.07.32 A1.07.33 +A1.07.28 A1.07.22 A1.07.23 A1.07.27 A1.07.32 A1.07.33 A1.08.22 A1.08.27 A1.08.32 +A1.07.29 A1.06.21 A1.06.26 A1.06.31 A1.06.33 A1.07.24 A1.07.25 A1.07.30 A1.07.34 +A1.07.30 A1.06.33 A1.07.24 A1.07.25 A1.07.26 A1.07.29 A1.07.31 A1.07.34 A1.07.35 +A1.07.31 A1.07.25 A1.07.26 A1.07.27 A1.07.30 A1.07.32 A1.07.34 A1.07.35 A1.07.36 +A1.07.32 A1.07.26 A1.07.27 A1.07.28 A1.07.31 A1.07.33 A1.07.35 A1.07.36 A1.07.37 +A1.07.33 A1.07.27 A1.07.28 A1.07.32 A1.07.36 A1.07.37 A1.08.27 A1.08.32 A1.08.36 +A1.07.34 A1.06.33 A1.06.38 A1.07.29 A1.07.30 A1.07.31 A1.07.35 A1.07.38 A1.07.39 +A1.07.35 A1.07.30 A1.07.31 A1.07.32 A1.07.34 A1.07.36 A1.07.38 A1.07.39 A1.07.40 +A1.07.36 A1.07.31 A1.07.32 A1.07.33 A1.07.35 A1.07.37 A1.07.39 A1.07.40 A1.07.41 +A1.07.37 A1.07.32 A1.07.33 A1.07.36 A1.07.40 A1.07.41 A1.08.32 A1.08.36 A1.08.40 +A1.07.38 A1.06.33 A1.06.38 A1.06.41 A1.07.34 A1.07.35 A1.07.39 A1.07.42 A1.07.43 +A1.07.39 A1.07.34 A1.07.35 A1.07.36 A1.07.38 A1.07.40 A1.07.42 A1.07.43 A1.07.44 +A1.07.40 A1.07.35 A1.07.36 A1.07.37 A1.07.39 A1.07.41 A1.07.43 A1.07.44 A1.07.45 +A1.07.41 A1.07.36 A1.07.37 A1.07.40 A1.07.44 A1.07.45 A1.08.36 A1.08.40 A1.08.44 +A1.07.42 A1.06.38 A1.06.41 A1.06.43 A1.06.45 A1.07.38 A1.07.39 A1.07.43 A1.07.46 +A1.07.43 A1.06.45 A1.07.38 A1.07.39 A1.07.40 A1.07.42 A1.07.44 A1.07.46 A1.07.47 +A1.07.44 A1.07.39 A1.07.40 A1.07.41 A1.07.43 A1.07.45 A1.07.46 A1.07.47 A1.07.48 +A1.07.45 A1.07.40 A1.07.41 A1.07.44 A1.07.47 A1.07.48 A1.08.40 A1.08.44 A1.08.47 +A1.07.46 A1.06.45 A1.06.47 A1.07.42 A1.07.43 A1.07.44 A1.07.47 A1.07.49 A1.07.50 +A1.07.47 A1.07.43 A1.07.44 A1.07.45 A1.07.46 A1.07.48 A1.07.49 A1.07.50 A1.07.51 +A1.07.48 A1.07.44 A1.07.45 A1.07.47 A1.07.50 A1.07.51 A1.08.44 A1.08.47 A1.08.50 +A1.07.49 A1.06.45 A1.06.47 A1.06.49 A1.06.50 A1.07.46 A1.07.47 A1.07.50 A1.07.52 +A1.07.50 A1.06.50 A1.07.46 A1.07.47 A1.07.48 A1.07.49 A1.07.51 A1.07.52 A1.07.53 +A1.07.51 A1.07.47 A1.07.48 A1.07.50 A1.07.52 A1.07.53 A1.08.47 A1.08.50 A1.08.52 +A1.07.52 A1.06.50 A1.06.53 A1.06.54 A1.07.49 A1.07.50 A1.07.51 A1.07.53 A1.07.54 A1.07.55 +A1.07.53 A1.07.50 A1.07.51 A1.07.52 A1.07.54 A1.07.55 A1.07.56 A1.08.50 A1.08.52 A1.08.56 +A1.07.54 A1.06.54 A1.06.58 A1.07.52 A1.07.53 A1.07.55 A1.07.57 A1.07.58 +A1.07.55 A1.07.52 A1.07.53 A1.07.54 A1.07.56 A1.07.57 A1.07.58 A1.07.59 +A1.07.56 A1.07.53 A1.07.55 A1.07.58 A1.07.59 A1.08.52 A1.08.56 A1.08.59 +A1.07.57 A1.06.54 A1.06.58 A1.06.60 A1.07.54 A1.07.55 A1.07.58 A1.07.60 A1.07.61 +A1.07.58 A1.07.54 A1.07.55 A1.07.56 A1.07.57 A1.07.59 A1.07.60 A1.07.61 A1.07.62 +A1.07.59 A1.07.55 A1.07.56 A1.07.58 A1.07.61 A1.07.62 A1.08.56 A1.08.59 A1.08.62 +A1.07.60 A1.06.58 A1.06.60 A1.06.62 A1.07.57 A1.07.58 A1.07.61 +A1.07.61 A1.07.57 A1.07.58 A1.07.59 A1.07.60 A1.07.62 +A1.07.62 A1.07.58 A1.07.59 A1.07.61 A1.08.59 A1.08.62 +A1.08.00 A1.08.07 A1.08.12 +A1.08.01 A1.07.02 A1.07.12 A1.08.02 A1.08.10 A1.08.11 +A1.08.02 A1.08.01 A1.08.03 A1.08.06 A1.08.09 A1.08.10 +A1.08.03 A1.08.02 A1.08.05 A1.08.06 A1.08.14 A1.08.15 +A1.08.04 A1.08.05 A1.08.12 A1.08.13 A1.08.14 +A1.08.05 A1.08.03 A1.08.04 A1.08.13 A1.08.14 +A1.08.06 A1.08.02 A1.08.03 A1.08.09 A1.08.14 A1.08.15 +A1.08.07 A1.08.00 A1.08.08 A1.08.12 A1.08.17 A1.08.18 A1.09.13 +A1.08.08 A1.08.07 A1.08.17 A1.09.02 A1.09.13 +A1.08.09 A1.08.02 A1.08.06 A1.08.10 A1.08.15 A1.08.16 +A1.08.10 A1.08.01 A1.08.02 A1.08.09 A1.08.11 A1.08.15 A1.08.16 +A1.08.11 A1.07.02 A1.07.12 A1.07.17 A1.08.01 A1.08.10 A1.08.16 +A1.08.12 A1.08.00 A1.08.04 A1.08.07 A1.08.13 A1.08.17 A1.08.18 A1.08.19 +A1.08.13 A1.08.04 A1.08.05 A1.08.12 A1.08.14 A1.08.18 A1.08.19 A1.08.20 +A1.08.14 A1.08.03 A1.08.04 A1.08.05 A1.08.06 A1.08.13 A1.08.15 A1.08.19 A1.08.20 A1.08.21 +A1.08.15 A1.08.03 A1.08.06 A1.08.09 A1.08.10 A1.08.14 A1.08.16 A1.08.20 A1.08.21 A1.08.22 +A1.08.16 A1.07.12 A1.07.17 A1.07.23 A1.08.09 A1.08.10 A1.08.11 A1.08.15 A1.08.21 A1.08.22 +A1.08.17 A1.08.07 A1.08.08 A1.08.12 A1.08.18 A1.08.23 A1.09.13 A1.09.19 A1.09.21 +A1.08.18 A1.08.07 A1.08.12 A1.08.13 A1.08.17 A1.08.19 A1.08.23 A1.08.24 A1.09.21 +A1.08.19 A1.08.12 A1.08.13 A1.08.14 A1.08.18 A1.08.20 A1.08.23 A1.08.24 A1.08.25 +A1.08.20 A1.08.13 A1.08.14 A1.08.15 A1.08.19 A1.08.21 A1.08.24 A1.08.25 A1.08.26 +A1.08.21 A1.08.14 A1.08.15 A1.08.16 A1.08.20 A1.08.22 A1.08.25 A1.08.26 A1.08.27 +A1.08.22 A1.07.17 A1.07.23 A1.07.28 A1.08.15 A1.08.16 A1.08.21 A1.08.26 A1.08.27 +A1.08.23 A1.08.17 A1.08.18 A1.08.19 A1.08.24 A1.08.28 A1.08.29 A1.09.21 A1.09.26 +A1.08.24 A1.08.18 A1.08.19 A1.08.20 A1.08.23 A1.08.25 A1.08.28 A1.08.29 A1.08.30 +A1.08.25 A1.08.19 A1.08.20 A1.08.21 A1.08.24 A1.08.26 A1.08.29 A1.08.30 A1.08.31 +A1.08.26 A1.08.20 A1.08.21 A1.08.22 A1.08.25 A1.08.27 A1.08.30 A1.08.31 A1.08.32 +A1.08.27 A1.07.23 A1.07.28 A1.07.33 A1.08.21 A1.08.22 A1.08.26 A1.08.31 A1.08.32 +A1.08.28 A1.08.23 A1.08.24 A1.08.29 A1.08.33 A1.09.21 A1.09.26 A1.09.31 A1.09.33 +A1.08.29 A1.08.23 A1.08.24 A1.08.25 A1.08.28 A1.08.30 A1.08.33 A1.08.34 A1.09.33 +A1.08.30 A1.08.24 A1.08.25 A1.08.26 A1.08.29 A1.08.31 A1.08.33 A1.08.34 A1.08.35 +A1.08.31 A1.08.25 A1.08.26 A1.08.27 A1.08.30 A1.08.32 A1.08.34 A1.08.35 A1.08.36 +A1.08.32 A1.07.28 A1.07.33 A1.07.37 A1.08.26 A1.08.27 A1.08.31 A1.08.35 A1.08.36 +A1.08.33 A1.08.28 A1.08.29 A1.08.30 A1.08.34 A1.08.37 A1.08.38 A1.09.33 A1.09.38 +A1.08.34 A1.08.29 A1.08.30 A1.08.31 A1.08.33 A1.08.35 A1.08.37 A1.08.38 A1.08.39 +A1.08.35 A1.08.30 A1.08.31 A1.08.32 A1.08.34 A1.08.36 A1.08.38 A1.08.39 A1.08.40 +A1.08.36 A1.07.33 A1.07.37 A1.07.41 A1.08.31 A1.08.32 A1.08.35 A1.08.39 A1.08.40 +A1.08.37 A1.08.33 A1.08.34 A1.08.38 A1.08.41 A1.08.42 A1.09.33 A1.09.38 A1.09.41 +A1.08.38 A1.08.33 A1.08.34 A1.08.35 A1.08.37 A1.08.39 A1.08.41 A1.08.42 A1.08.43 +A1.08.39 A1.08.34 A1.08.35 A1.08.36 A1.08.38 A1.08.40 A1.08.42 A1.08.43 A1.08.44 +A1.08.40 A1.07.37 A1.07.41 A1.07.45 A1.08.35 A1.08.36 A1.08.39 A1.08.43 A1.08.44 +A1.08.41 A1.08.37 A1.08.38 A1.08.42 A1.08.45 A1.09.38 A1.09.41 A1.09.43 A1.09.45 +A1.08.42 A1.08.37 A1.08.38 A1.08.39 A1.08.41 A1.08.43 A1.08.45 A1.08.46 A1.09.45 +A1.08.43 A1.08.38 A1.08.39 A1.08.40 A1.08.42 A1.08.44 A1.08.45 A1.08.46 A1.08.47 +A1.08.44 A1.07.41 A1.07.45 A1.07.48 A1.08.39 A1.08.40 A1.08.43 A1.08.46 A1.08.47 +A1.08.45 A1.08.41 A1.08.42 A1.08.43 A1.08.46 A1.08.48 A1.08.49 A1.09.45 A1.09.47 +A1.08.46 A1.08.42 A1.08.43 A1.08.44 A1.08.45 A1.08.47 A1.08.48 A1.08.49 A1.08.50 +A1.08.47 A1.07.45 A1.07.48 A1.07.51 A1.08.43 A1.08.44 A1.08.46 A1.08.49 A1.08.50 +A1.08.48 A1.08.45 A1.08.46 A1.08.49 A1.08.51 A1.09.45 A1.09.47 A1.09.49 A1.09.50 +A1.08.49 A1.08.45 A1.08.46 A1.08.47 A1.08.48 A1.08.50 A1.08.51 A1.08.52 A1.09.50 +A1.08.50 A1.07.48 A1.07.51 A1.07.53 A1.08.46 A1.08.47 A1.08.49 A1.08.51 A1.08.52 +A1.08.51 A1.08.48 A1.08.49 A1.08.50 A1.08.52 A1.08.53 A1.08.54 A1.08.55 A1.09.50 A1.09.53 +A1.08.52 A1.07.51 A1.07.53 A1.07.56 A1.08.49 A1.08.50 A1.08.51 A1.08.54 A1.08.55 A1.08.56 +A1.08.53 A1.08.51 A1.08.54 A1.08.57 A1.09.50 A1.09.53 A1.09.55 A1.09.57 +A1.08.54 A1.08.51 A1.08.52 A1.08.53 A1.08.55 A1.08.57 A1.08.58 A1.09.57 +A1.08.55 A1.08.51 A1.08.52 A1.08.54 A1.08.56 A1.08.57 A1.08.58 A1.08.59 +A1.08.56 A1.07.53 A1.07.56 A1.07.59 A1.08.52 A1.08.55 A1.08.58 A1.08.59 +A1.08.57 A1.08.53 A1.08.54 A1.08.55 A1.08.58 A1.08.60 A1.08.61 A1.09.57 A1.09.59 +A1.08.58 A1.08.54 A1.08.55 A1.08.56 A1.08.57 A1.08.59 A1.08.60 A1.08.61 A1.08.62 +A1.08.59 A1.07.56 A1.07.59 A1.07.62 A1.08.55 A1.08.56 A1.08.58 A1.08.61 A1.08.62 +A1.08.60 A1.08.57 A1.08.58 A1.08.61 A1.09.57 A1.09.59 A1.09.62 +A1.08.61 A1.08.57 A1.08.58 A1.08.59 A1.08.60 A1.08.62 A1.09.62 +A1.08.62 A1.07.59 A1.07.62 A1.08.58 A1.08.59 A1.08.61 +A1.09.00 A1.09.04 A1.09.06 A1.09.08 A1.09.12 +A1.09.01 A1.09.03 A1.09.05 A1.09.11 +A1.09.02 A1.08.08 A1.09.05 A1.09.13 +A1.09.03 A1.09.01 A1.09.07 A1.09.09 A1.09.11 +A1.09.04 A1.09.00 A1.09.08 A1.09.10 +A1.09.05 A1.09.01 A1.09.02 A1.09.11 A1.09.13 +A1.09.06 A1.09.00 A1.09.12 A1.09.17 A1.10.06 A1.10.12 +A1.09.07 A1.09.03 A1.09.09 A1.09.10 A1.09.14 +A1.09.08 A1.09.00 A1.09.04 A1.09.10 A1.09.12 A1.09.15 +A1.09.09 A1.09.03 A1.09.07 A1.09.11 A1.09.14 A1.09.16 +A1.09.10 A1.09.04 A1.09.07 A1.09.08 A1.09.12 A1.09.14 A1.09.15 A1.09.18 +A1.09.11 A1.09.01 A1.09.03 A1.09.05 A1.09.09 A1.09.13 A1.09.14 A1.09.16 A1.09.19 +A1.09.12 A1.09.00 A1.09.06 A1.09.08 A1.09.10 A1.09.15 A1.09.17 A1.09.20 A1.10.12 +A1.09.13 A1.08.07 A1.08.08 A1.08.17 A1.09.02 A1.09.05 A1.09.11 A1.09.16 A1.09.19 A1.09.21 +A1.09.14 A1.09.07 A1.09.09 A1.09.10 A1.09.11 A1.09.15 A1.09.16 A1.09.18 A1.09.22 +A1.09.15 A1.09.08 A1.09.10 A1.09.12 A1.09.14 A1.09.17 A1.09.18 A1.09.20 A1.09.23 +A1.09.16 A1.09.09 A1.09.11 A1.09.13 A1.09.14 A1.09.18 A1.09.19 A1.09.22 A1.09.24 +A1.09.17 A1.09.06 A1.09.12 A1.09.15 A1.09.20 A1.09.25 A1.10.12 A1.10.17 A1.10.21 +A1.09.18 A1.09.10 A1.09.14 A1.09.15 A1.09.16 A1.09.20 A1.09.22 A1.09.23 A1.09.27 +A1.09.19 A1.08.17 A1.09.11 A1.09.13 A1.09.16 A1.09.21 A1.09.22 A1.09.24 A1.09.26 +A1.09.20 A1.09.12 A1.09.15 A1.09.17 A1.09.18 A1.09.23 A1.09.25 A1.09.28 A1.10.21 +A1.09.21 A1.08.17 A1.08.18 A1.08.23 A1.08.28 A1.09.13 A1.09.19 A1.09.24 A1.09.26 +A1.09.22 A1.09.14 A1.09.16 A1.09.18 A1.09.19 A1.09.23 A1.09.24 A1.09.27 A1.09.29 +A1.09.23 A1.09.15 A1.09.18 A1.09.20 A1.09.22 A1.09.25 A1.09.27 A1.09.28 A1.09.30 +A1.09.24 A1.09.16 A1.09.19 A1.09.21 A1.09.22 A1.09.26 A1.09.27 A1.09.29 A1.09.31 +A1.09.25 A1.09.17 A1.09.20 A1.09.23 A1.09.28 A1.09.32 A1.10.21 A1.10.24 A1.10.28 +A1.09.26 A1.08.23 A1.08.28 A1.09.19 A1.09.21 A1.09.24 A1.09.29 A1.09.31 A1.09.33 +A1.09.27 A1.09.18 A1.09.22 A1.09.23 A1.09.24 A1.09.28 A1.09.29 A1.09.30 A1.09.34 +A1.09.28 A1.09.20 A1.09.23 A1.09.25 A1.09.27 A1.09.30 A1.09.32 A1.09.35 A1.10.28 +A1.09.29 A1.09.22 A1.09.24 A1.09.26 A1.09.27 A1.09.30 A1.09.31 A1.09.34 A1.09.36 +A1.09.30 A1.09.23 A1.09.27 A1.09.28 A1.09.29 A1.09.32 A1.09.34 A1.09.35 A1.09.37 +A1.09.31 A1.08.28 A1.09.24 A1.09.26 A1.09.29 A1.09.33 A1.09.34 A1.09.36 A1.09.38 +A1.09.32 A1.09.25 A1.09.28 A1.09.30 A1.09.35 A1.10.28 A1.10.31 A1.10.34 A1.10.36 +A1.09.33 A1.08.28 A1.08.29 A1.08.33 A1.08.37 A1.09.26 A1.09.31 A1.09.36 A1.09.38 +A1.09.34 A1.09.27 A1.09.29 A1.09.30 A1.09.31 A1.09.35 A1.09.36 A1.09.37 A1.09.39 +A1.09.35 A1.09.28 A1.09.30 A1.09.32 A1.09.34 A1.09.37 A1.09.40 A1.10.34 A1.10.36 +A1.09.36 A1.09.29 A1.09.31 A1.09.33 A1.09.34 A1.09.37 A1.09.38 A1.09.39 A1.09.41 +A1.09.37 A1.09.30 A1.09.34 A1.09.35 A1.09.36 A1.09.39 A1.09.40 A1.09.42 A1.10.36 +A1.09.38 A1.08.33 A1.08.37 A1.08.41 A1.09.31 A1.09.33 A1.09.36 A1.09.39 A1.09.41 +A1.09.39 A1.09.34 A1.09.36 A1.09.37 A1.09.38 A1.09.40 A1.09.41 A1.09.42 A1.09.43 +A1.09.40 A1.09.35 A1.09.37 A1.09.39 A1.09.42 A1.09.44 A1.10.36 A1.10.40 A1.10.43 +A1.09.41 A1.08.37 A1.08.41 A1.09.36 A1.09.38 A1.09.39 A1.09.42 A1.09.43 A1.09.45 +A1.09.42 A1.09.37 A1.09.39 A1.09.40 A1.09.41 A1.09.43 A1.09.44 A1.09.46 A1.10.43 +A1.09.43 A1.08.41 A1.09.39 A1.09.41 A1.09.42 A1.09.44 A1.09.45 A1.09.46 A1.09.47 +A1.09.44 A1.09.40 A1.09.42 A1.09.43 A1.09.46 A1.09.48 A1.10.43 A1.10.45 A1.10.47 +A1.09.45 A1.08.41 A1.08.42 A1.08.45 A1.08.48 A1.09.41 A1.09.43 A1.09.46 A1.09.47 +A1.09.46 A1.09.42 A1.09.43 A1.09.44 A1.09.45 A1.09.47 A1.09.48 A1.09.49 A1.10.47 +A1.09.47 A1.08.45 A1.08.48 A1.09.43 A1.09.45 A1.09.46 A1.09.48 A1.09.49 A1.09.50 +A1.09.48 A1.09.44 A1.09.46 A1.09.47 A1.09.49 A1.09.51 A1.10.47 A1.10.49 A1.10.51 +A1.09.49 A1.08.48 A1.09.46 A1.09.47 A1.09.48 A1.09.50 A1.09.51 A1.09.52 A1.10.51 +A1.09.50 A1.08.48 A1.08.49 A1.08.51 A1.08.53 A1.09.47 A1.09.49 A1.09.51 A1.09.52 A1.09.53 +A1.09.51 A1.09.48 A1.09.49 A1.09.50 A1.09.52 A1.09.54 A1.09.56 A1.10.51 A1.10.52 A1.10.53 A1.10.55 +A1.09.52 A1.09.49 A1.09.50 A1.09.51 A1.09.53 A1.09.54 A1.09.55 +A1.09.53 A1.08.51 A1.08.53 A1.09.50 A1.09.52 A1.09.54 A1.09.55 A1.09.57 +A1.09.54 A1.09.51 A1.09.52 A1.09.53 A1.09.55 A1.09.56 A1.09.58 A1.10.55 +A1.09.55 A1.08.53 A1.09.52 A1.09.53 A1.09.54 A1.09.56 A1.09.57 A1.09.58 A1.09.59 +A1.09.56 A1.09.51 A1.09.54 A1.09.55 A1.09.58 A1.09.60 A1.10.55 A1.10.57 A1.10.59 +A1.09.57 A1.08.53 A1.08.54 A1.08.57 A1.08.60 A1.09.53 A1.09.55 A1.09.58 A1.09.59 +A1.09.58 A1.09.54 A1.09.55 A1.09.56 A1.09.57 A1.09.59 A1.09.60 A1.09.61 A1.10.59 +A1.09.59 A1.08.57 A1.08.60 A1.09.55 A1.09.57 A1.09.58 A1.09.60 A1.09.61 A1.09.62 +A1.09.60 A1.09.56 A1.09.58 A1.09.59 A1.09.61 A1.10.59 A1.10.61 +A1.09.61 A1.09.58 A1.09.59 A1.09.60 A1.09.62 A1.10.59 A1.10.61 +A1.09.62 A1.08.60 A1.08.61 A1.09.59 A1.09.61 +A1.10.00 A1.10.03 A1.10.06 +A1.10.01 A1.10.02 A1.10.04 A1.10.10 A1.10.14 +A1.10.02 A1.10.01 A1.10.07 A1.10.10 +A1.10.03 A1.10.00 A1.10.06 A1.10.09 A1.10.13 +A1.10.04 A1.10.01 A1.10.05 A1.10.10 A1.10.14 A1.11.02 +A1.10.05 A1.10.04 A1.10.14 A1.11.02 A1.11.08 +A1.10.06 A1.09.06 A1.10.00 A1.10.03 A1.10.12 A1.10.13 A1.10.17 +A1.10.07 A1.10.02 A1.10.10 A1.10.11 A1.10.15 +A1.10.08 A1.10.09 A1.10.11 +A1.10.09 A1.10.03 A1.10.08 A1.10.11 A1.10.13 A1.10.16 +A1.10.10 A1.10.01 A1.10.02 A1.10.04 A1.10.07 A1.10.11 A1.10.14 A1.10.15 A1.10.18 +A1.10.11 A1.10.07 A1.10.08 A1.10.09 A1.10.10 A1.10.13 A1.10.15 A1.10.16 A1.10.19 +A1.10.12 A1.09.06 A1.09.12 A1.09.17 A1.10.06 A1.10.13 A1.10.17 A1.10.21 +A1.10.13 A1.10.03 A1.10.06 A1.10.09 A1.10.11 A1.10.12 A1.10.16 A1.10.17 A1.10.20 +A1.10.14 A1.10.01 A1.10.04 A1.10.05 A1.10.10 A1.10.15 A1.10.18 A1.11.08 A1.11.10 A1.11.15 A1.11.20 +A1.10.15 A1.10.07 A1.10.10 A1.10.11 A1.10.14 A1.10.16 A1.10.18 A1.10.19 A1.10.22 +A1.10.16 A1.10.09 A1.10.11 A1.10.13 A1.10.15 A1.10.17 A1.10.19 A1.10.20 A1.10.23 +A1.10.17 A1.09.17 A1.10.06 A1.10.12 A1.10.13 A1.10.16 A1.10.20 A1.10.21 A1.10.24 +A1.10.18 A1.10.10 A1.10.14 A1.10.15 A1.10.19 A1.10.22 A1.10.25 A1.11.15 A1.11.20 +A1.10.19 A1.10.11 A1.10.15 A1.10.16 A1.10.18 A1.10.20 A1.10.22 A1.10.23 A1.10.26 +A1.10.20 A1.10.13 A1.10.16 A1.10.17 A1.10.19 A1.10.21 A1.10.23 A1.10.24 A1.10.27 +A1.10.21 A1.09.17 A1.09.20 A1.09.25 A1.10.12 A1.10.17 A1.10.20 A1.10.24 A1.10.28 +A1.10.22 A1.10.15 A1.10.18 A1.10.19 A1.10.23 A1.10.25 A1.10.26 A1.10.29 A1.11.20 +A1.10.23 A1.10.16 A1.10.19 A1.10.20 A1.10.22 A1.10.24 A1.10.26 A1.10.27 A1.10.30 +A1.10.24 A1.09.25 A1.10.17 A1.10.20 A1.10.21 A1.10.23 A1.10.27 A1.10.28 A1.10.31 +A1.10.25 A1.10.18 A1.10.22 A1.10.26 A1.10.29 A1.11.20 A1.11.21 A1.11.25 A1.11.29 +A1.10.26 A1.10.19 A1.10.22 A1.10.23 A1.10.25 A1.10.27 A1.10.29 A1.10.30 A1.10.32 +A1.10.27 A1.10.20 A1.10.23 A1.10.24 A1.10.26 A1.10.28 A1.10.30 A1.10.31 A1.10.33 +A1.10.28 A1.09.25 A1.09.28 A1.09.32 A1.10.21 A1.10.24 A1.10.27 A1.10.31 A1.10.34 +A1.10.29 A1.10.22 A1.10.25 A1.10.26 A1.10.30 A1.10.32 A1.11.25 A1.11.29 A1.11.33 +A1.10.30 A1.10.23 A1.10.26 A1.10.27 A1.10.29 A1.10.31 A1.10.32 A1.10.33 A1.10.35 +A1.10.31 A1.09.32 A1.10.24 A1.10.27 A1.10.28 A1.10.30 A1.10.33 A1.10.34 A1.10.37 +A1.10.32 A1.10.26 A1.10.29 A1.10.30 A1.10.33 A1.10.35 A1.10.38 A1.11.29 A1.11.33 +A1.10.33 A1.10.27 A1.10.30 A1.10.31 A1.10.32 A1.10.34 A1.10.35 A1.10.37 A1.10.39 +A1.10.34 A1.09.32 A1.09.35 A1.10.28 A1.10.31 A1.10.33 A1.10.36 A1.10.37 A1.10.40 +A1.10.35 A1.10.30 A1.10.32 A1.10.33 A1.10.37 A1.10.38 A1.10.39 A1.10.41 A1.11.33 +A1.10.36 A1.09.32 A1.09.35 A1.09.37 A1.09.40 A1.10.34 A1.10.37 A1.10.40 A1.10.43 +A1.10.37 A1.10.31 A1.10.33 A1.10.34 A1.10.35 A1.10.36 A1.10.39 A1.10.40 A1.10.42 +A1.10.38 A1.10.32 A1.10.35 A1.10.39 A1.10.41 A1.11.33 A1.11.34 A1.11.37 A1.11.40 +A1.10.39 A1.10.33 A1.10.35 A1.10.37 A1.10.38 A1.10.40 A1.10.41 A1.10.42 A1.10.44 +A1.10.40 A1.09.40 A1.10.34 A1.10.36 A1.10.37 A1.10.39 A1.10.42 A1.10.43 A1.10.45 +A1.10.41 A1.10.35 A1.10.38 A1.10.39 A1.10.42 A1.10.44 A1.11.37 A1.11.40 A1.11.43 +A1.10.42 A1.10.37 A1.10.39 A1.10.40 A1.10.41 A1.10.43 A1.10.44 A1.10.45 A1.10.46 +A1.10.43 A1.09.40 A1.09.42 A1.09.44 A1.10.36 A1.10.40 A1.10.42 A1.10.45 A1.10.47 +A1.10.44 A1.10.39 A1.10.41 A1.10.42 A1.10.45 A1.10.46 A1.10.48 A1.11.40 A1.11.43 +A1.10.45 A1.09.44 A1.10.40 A1.10.42 A1.10.43 A1.10.44 A1.10.46 A1.10.47 A1.10.49 +A1.10.46 A1.10.42 A1.10.44 A1.10.45 A1.10.47 A1.10.48 A1.10.49 A1.10.50 A1.11.43 +A1.10.47 A1.09.44 A1.09.46 A1.09.48 A1.10.43 A1.10.45 A1.10.46 A1.10.49 A1.10.51 +A1.10.48 A1.10.44 A1.10.46 A1.10.49 A1.10.50 A1.11.43 A1.11.44 A1.11.46 A1.11.48 +A1.10.49 A1.09.48 A1.10.45 A1.10.46 A1.10.47 A1.10.48 A1.10.50 A1.10.51 A1.10.52 +A1.10.50 A1.10.46 A1.10.48 A1.10.49 A1.10.51 A1.10.52 A1.11.46 A1.11.48 A1.11.50 +A1.10.51 A1.09.48 A1.09.49 A1.09.51 A1.10.47 A1.10.49 A1.10.50 A1.10.52 A1.10.53 +A1.10.52 A1.09.51 A1.10.49 A1.10.50 A1.10.51 A1.10.53 A1.10.54 A1.10.56 A1.11.48 A1.11.50 A1.11.54 +A1.10.53 A1.09.51 A1.10.51 A1.10.52 A1.10.54 A1.10.55 A1.10.57 +A1.10.54 A1.10.52 A1.10.53 A1.10.55 A1.10.56 A1.10.57 A1.10.58 A1.11.54 +A1.10.55 A1.09.51 A1.09.54 A1.09.56 A1.10.53 A1.10.54 A1.10.57 A1.10.59 +A1.10.56 A1.10.52 A1.10.54 A1.10.57 A1.10.58 A1.10.60 A1.11.54 A1.11.55 A1.11.58 +A1.10.57 A1.09.56 A1.10.53 A1.10.54 A1.10.55 A1.10.56 A1.10.58 A1.10.59 A1.10.61 +A1.10.58 A1.10.54 A1.10.56 A1.10.57 A1.10.59 A1.10.60 A1.10.61 A1.10.62 A1.11.58 +A1.10.59 A1.09.56 A1.09.58 A1.09.60 A1.09.61 A1.10.55 A1.10.57 A1.10.58 A1.10.61 +A1.10.60 A1.10.56 A1.10.58 A1.10.61 A1.10.62 A1.11.58 A1.11.59 A1.11.61 +A1.10.61 A1.09.60 A1.09.61 A1.10.57 A1.10.58 A1.10.59 A1.10.60 A1.10.62 +A1.10.62 A1.10.58 A1.10.60 A1.10.61 A1.11.61 +A1.11.00 A1.11.05 A1.11.07 A1.12.00 A1.12.08 +A1.11.01 A1.11.02 A1.11.03 A1.11.10 +A1.11.02 A1.10.04 A1.10.05 A1.11.01 A1.11.08 A1.11.10 +A1.11.03 A1.11.01 A1.11.04 A1.11.10 A1.11.11 +A1.11.04 A1.11.03 A1.11.06 A1.11.11 A1.11.12 +A1.11.05 A1.11.00 A1.11.07 A1.11.09 A1.11.12 A1.11.13 A1.11.14 +A1.11.06 A1.11.04 A1.11.09 A1.11.11 A1.11.12 +A1.11.07 A1.11.00 A1.11.05 A1.11.13 A1.11.14 A1.12.00 A1.12.08 A1.12.14 +A1.11.08 A1.10.05 A1.10.14 A1.11.02 A1.11.10 A1.11.15 +A1.11.09 A1.11.05 A1.11.06 A1.11.12 A1.11.13 +A1.11.10 A1.10.14 A1.11.01 A1.11.02 A1.11.03 A1.11.08 A1.11.11 A1.11.15 A1.11.16 +A1.11.11 A1.11.03 A1.11.04 A1.11.06 A1.11.10 A1.11.12 A1.11.15 A1.11.16 A1.11.17 +A1.11.12 A1.11.04 A1.11.05 A1.11.06 A1.11.09 A1.11.11 A1.11.13 A1.11.16 A1.11.17 A1.11.18 +A1.11.13 A1.11.05 A1.11.07 A1.11.09 A1.11.12 A1.11.14 A1.11.17 A1.11.18 A1.11.19 +A1.11.14 A1.11.05 A1.11.07 A1.11.13 A1.11.18 A1.11.19 A1.12.08 A1.12.14 A1.12.19 +A1.11.15 A1.10.14 A1.10.18 A1.11.08 A1.11.10 A1.11.11 A1.11.16 A1.11.20 A1.11.21 +A1.11.16 A1.11.10 A1.11.11 A1.11.12 A1.11.15 A1.11.17 A1.11.20 A1.11.21 A1.11.22 +A1.11.17 A1.11.11 A1.11.12 A1.11.13 A1.11.16 A1.11.18 A1.11.21 A1.11.22 A1.11.23 +A1.11.18 A1.11.12 A1.11.13 A1.11.14 A1.11.17 A1.11.19 A1.11.22 A1.11.23 A1.11.24 +A1.11.19 A1.11.13 A1.11.14 A1.11.18 A1.11.23 A1.11.24 A1.12.14 A1.12.19 A1.12.24 +A1.11.20 A1.10.14 A1.10.18 A1.10.22 A1.10.25 A1.11.15 A1.11.16 A1.11.21 A1.11.25 +A1.11.21 A1.10.25 A1.11.15 A1.11.16 A1.11.17 A1.11.20 A1.11.22 A1.11.25 A1.11.26 +A1.11.22 A1.11.16 A1.11.17 A1.11.18 A1.11.21 A1.11.23 A1.11.25 A1.11.26 A1.11.27 +A1.11.23 A1.11.17 A1.11.18 A1.11.19 A1.11.22 A1.11.24 A1.11.26 A1.11.27 A1.11.28 +A1.11.24 A1.11.18 A1.11.19 A1.11.23 A1.11.27 A1.11.28 A1.12.19 A1.12.24 A1.12.28 +A1.11.25 A1.10.25 A1.10.29 A1.11.20 A1.11.21 A1.11.22 A1.11.26 A1.11.29 A1.11.30 +A1.11.26 A1.11.21 A1.11.22 A1.11.23 A1.11.25 A1.11.27 A1.11.29 A1.11.30 A1.11.31 +A1.11.27 A1.11.22 A1.11.23 A1.11.24 A1.11.26 A1.11.28 A1.11.30 A1.11.31 A1.11.32 +A1.11.28 A1.11.23 A1.11.24 A1.11.27 A1.11.31 A1.11.32 A1.12.24 A1.12.28 A1.12.32 +A1.11.29 A1.10.25 A1.10.29 A1.10.32 A1.11.25 A1.11.26 A1.11.30 A1.11.33 A1.11.34 +A1.11.30 A1.11.25 A1.11.26 A1.11.27 A1.11.29 A1.11.31 A1.11.33 A1.11.34 A1.11.35 +A1.11.31 A1.11.26 A1.11.27 A1.11.28 A1.11.30 A1.11.32 A1.11.34 A1.11.35 A1.11.36 +A1.11.32 A1.11.27 A1.11.28 A1.11.31 A1.11.35 A1.11.36 A1.12.28 A1.12.32 A1.12.36 +A1.11.33 A1.10.29 A1.10.32 A1.10.35 A1.10.38 A1.11.29 A1.11.30 A1.11.34 A1.11.37 +A1.11.34 A1.10.38 A1.11.29 A1.11.30 A1.11.31 A1.11.33 A1.11.35 A1.11.37 A1.11.38 +A1.11.35 A1.11.30 A1.11.31 A1.11.32 A1.11.34 A1.11.36 A1.11.37 A1.11.38 A1.11.39 +A1.11.36 A1.11.31 A1.11.32 A1.11.35 A1.11.38 A1.11.39 A1.12.32 A1.12.36 A1.12.39 +A1.11.37 A1.10.38 A1.10.41 A1.11.33 A1.11.34 A1.11.35 A1.11.38 A1.11.40 A1.11.41 +A1.11.38 A1.11.34 A1.11.35 A1.11.36 A1.11.37 A1.11.39 A1.11.40 A1.11.41 A1.11.42 +A1.11.39 A1.11.35 A1.11.36 A1.11.38 A1.11.41 A1.11.42 A1.12.36 A1.12.39 A1.12.42 +A1.11.40 A1.10.38 A1.10.41 A1.10.44 A1.11.37 A1.11.38 A1.11.41 A1.11.43 A1.11.44 +A1.11.41 A1.11.37 A1.11.38 A1.11.39 A1.11.40 A1.11.42 A1.11.43 A1.11.44 A1.11.45 +A1.11.42 A1.11.38 A1.11.39 A1.11.41 A1.11.44 A1.11.45 A1.12.39 A1.12.42 A1.12.45 +A1.11.43 A1.10.41 A1.10.44 A1.10.46 A1.10.48 A1.11.40 A1.11.41 A1.11.44 A1.11.46 +A1.11.44 A1.10.48 A1.11.40 A1.11.41 A1.11.42 A1.11.43 A1.11.45 A1.11.46 A1.11.47 +A1.11.45 A1.11.41 A1.11.42 A1.11.44 A1.11.46 A1.11.47 A1.12.42 A1.12.45 A1.12.47 +A1.11.46 A1.10.48 A1.10.50 A1.11.43 A1.11.44 A1.11.45 A1.11.47 A1.11.48 A1.11.49 +A1.11.47 A1.11.44 A1.11.45 A1.11.46 A1.11.48 A1.11.49 A1.12.45 A1.12.47 A1.12.49 +A1.11.48 A1.10.48 A1.10.50 A1.10.52 A1.11.46 A1.11.47 A1.11.49 A1.11.50 A1.11.51 A1.11.52 +A1.11.49 A1.11.46 A1.11.47 A1.11.48 A1.11.51 A1.11.52 A1.11.53 A1.12.47 A1.12.49 A1.12.53 +A1.11.50 A1.10.50 A1.10.52 A1.11.48 A1.11.51 A1.11.54 A1.11.55 +A1.11.51 A1.11.48 A1.11.49 A1.11.50 A1.11.52 A1.11.54 A1.11.55 A1.11.56 +A1.11.52 A1.11.48 A1.11.49 A1.11.51 A1.11.53 A1.11.55 A1.11.56 A1.11.57 +A1.11.53 A1.11.49 A1.11.52 A1.11.56 A1.11.57 A1.12.49 A1.12.53 A1.12.57 +A1.11.54 A1.10.52 A1.10.54 A1.10.56 A1.11.50 A1.11.51 A1.11.55 A1.11.58 +A1.11.55 A1.10.56 A1.11.50 A1.11.51 A1.11.52 A1.11.54 A1.11.56 A1.11.58 A1.11.59 +A1.11.56 A1.11.51 A1.11.52 A1.11.53 A1.11.55 A1.11.57 A1.11.58 A1.11.59 A1.11.60 +A1.11.57 A1.11.52 A1.11.53 A1.11.56 A1.11.59 A1.11.60 A1.12.53 A1.12.57 A1.12.60 +A1.11.58 A1.10.56 A1.10.58 A1.10.60 A1.11.54 A1.11.55 A1.11.56 A1.11.59 A1.11.61 +A1.11.59 A1.10.60 A1.11.55 A1.11.56 A1.11.57 A1.11.58 A1.11.60 A1.11.61 A1.11.62 +A1.11.60 A1.11.56 A1.11.57 A1.11.59 A1.11.61 A1.11.62 A1.12.57 A1.12.60 A1.12.62 +A1.11.61 A1.10.60 A1.10.62 A1.11.58 A1.11.59 A1.11.60 A1.11.62 +A1.11.62 A1.11.59 A1.11.60 A1.11.61 A1.12.60 A1.12.62 +A1.12.00 A1.11.00 A1.11.07 A1.12.06 A1.12.08 +A1.12.01 A1.12.02 A1.12.04 A1.12.10 +A1.12.02 A1.12.01 A1.12.03 A1.12.10 A1.12.11 +A1.12.03 A1.12.02 A1.12.05 A1.12.10 A1.12.11 +A1.12.04 A1.12.01 A1.12.10 A1.12.15 A1.13.02 A1.13.09 A1.13.13 +A1.12.05 A1.12.03 A1.12.07 A1.12.11 A1.12.12 +A1.12.06 A1.12.00 A1.12.08 A1.12.09 A1.12.12 A1.12.13 A1.12.14 +A1.12.07 A1.12.05 A1.12.09 A1.12.11 A1.12.12 +A1.12.08 A1.11.00 A1.11.07 A1.11.14 A1.12.00 A1.12.06 A1.12.13 A1.12.14 +A1.12.09 A1.12.06 A1.12.07 A1.12.12 A1.12.13 +A1.12.10 A1.12.01 A1.12.02 A1.12.03 A1.12.04 A1.12.11 A1.12.15 A1.12.16 A1.13.13 +A1.12.11 A1.12.02 A1.12.03 A1.12.05 A1.12.07 A1.12.10 A1.12.12 A1.12.15 A1.12.16 A1.12.17 +A1.12.12 A1.12.05 A1.12.06 A1.12.07 A1.12.09 A1.12.11 A1.12.13 A1.12.16 A1.12.17 A1.12.18 +A1.12.13 A1.12.06 A1.12.08 A1.12.09 A1.12.12 A1.12.14 A1.12.17 A1.12.18 A1.12.19 +A1.12.14 A1.11.07 A1.11.14 A1.11.19 A1.12.06 A1.12.08 A1.12.13 A1.12.18 A1.12.19 +A1.12.15 A1.12.04 A1.12.10 A1.12.11 A1.12.16 A1.12.20 A1.12.21 A1.13.13 A1.13.17 +A1.12.16 A1.12.10 A1.12.11 A1.12.12 A1.12.15 A1.12.17 A1.12.20 A1.12.21 A1.12.22 +A1.12.17 A1.12.11 A1.12.12 A1.12.13 A1.12.16 A1.12.18 A1.12.21 A1.12.22 A1.12.23 +A1.12.18 A1.12.12 A1.12.13 A1.12.14 A1.12.17 A1.12.19 A1.12.22 A1.12.23 A1.12.24 +A1.12.19 A1.11.14 A1.11.19 A1.11.24 A1.12.13 A1.12.14 A1.12.18 A1.12.23 A1.12.24 +A1.12.20 A1.12.15 A1.12.16 A1.12.21 A1.12.25 A1.13.13 A1.13.17 A1.13.21 A1.13.24 +A1.12.21 A1.12.15 A1.12.16 A1.12.17 A1.12.20 A1.12.22 A1.12.25 A1.12.26 A1.13.24 +A1.12.22 A1.12.16 A1.12.17 A1.12.18 A1.12.21 A1.12.23 A1.12.25 A1.12.26 A1.12.27 +A1.12.23 A1.12.17 A1.12.18 A1.12.19 A1.12.22 A1.12.24 A1.12.26 A1.12.27 A1.12.28 +A1.12.24 A1.11.19 A1.11.24 A1.11.28 A1.12.18 A1.12.19 A1.12.23 A1.12.27 A1.12.28 +A1.12.25 A1.12.20 A1.12.21 A1.12.22 A1.12.26 A1.12.29 A1.12.30 A1.13.24 A1.13.28 +A1.12.26 A1.12.21 A1.12.22 A1.12.23 A1.12.25 A1.12.27 A1.12.29 A1.12.30 A1.12.31 +A1.12.27 A1.12.22 A1.12.23 A1.12.24 A1.12.26 A1.12.28 A1.12.30 A1.12.31 A1.12.32 +A1.12.28 A1.11.24 A1.11.28 A1.11.32 A1.12.23 A1.12.24 A1.12.27 A1.12.31 A1.12.32 +A1.12.29 A1.12.25 A1.12.26 A1.12.30 A1.12.33 A1.12.34 A1.13.24 A1.13.28 A1.13.31 +A1.12.30 A1.12.25 A1.12.26 A1.12.27 A1.12.29 A1.12.31 A1.12.33 A1.12.34 A1.12.35 +A1.12.31 A1.12.26 A1.12.27 A1.12.28 A1.12.30 A1.12.32 A1.12.34 A1.12.35 A1.12.36 +A1.12.32 A1.11.28 A1.11.32 A1.11.36 A1.12.27 A1.12.28 A1.12.31 A1.12.35 A1.12.36 +A1.12.33 A1.12.29 A1.12.30 A1.12.34 A1.12.37 A1.13.28 A1.13.31 A1.13.34 A1.13.37 +A1.12.34 A1.12.29 A1.12.30 A1.12.31 A1.12.33 A1.12.35 A1.12.37 A1.12.38 A1.13.37 +A1.12.35 A1.12.30 A1.12.31 A1.12.32 A1.12.34 A1.12.36 A1.12.37 A1.12.38 A1.12.39 +A1.12.36 A1.11.32 A1.11.36 A1.11.39 A1.12.31 A1.12.32 A1.12.35 A1.12.38 A1.12.39 +A1.12.37 A1.12.33 A1.12.34 A1.12.35 A1.12.38 A1.12.40 A1.12.41 A1.13.37 A1.13.40 +A1.12.38 A1.12.34 A1.12.35 A1.12.36 A1.12.37 A1.12.39 A1.12.40 A1.12.41 A1.12.42 +A1.12.39 A1.11.36 A1.11.39 A1.11.42 A1.12.35 A1.12.36 A1.12.38 A1.12.41 A1.12.42 +A1.12.40 A1.12.37 A1.12.38 A1.12.41 A1.12.43 A1.12.44 A1.13.37 A1.13.40 A1.13.43 +A1.12.41 A1.12.37 A1.12.38 A1.12.39 A1.12.40 A1.12.42 A1.12.43 A1.12.44 A1.12.45 +A1.12.42 A1.11.39 A1.11.42 A1.11.45 A1.12.38 A1.12.39 A1.12.41 A1.12.44 A1.12.45 +A1.12.43 A1.12.40 A1.12.41 A1.12.44 A1.12.46 A1.13.40 A1.13.43 A1.13.45 A1.13.47 +A1.12.44 A1.12.40 A1.12.41 A1.12.42 A1.12.43 A1.12.45 A1.12.46 A1.12.47 A1.13.47 +A1.12.45 A1.11.42 A1.11.45 A1.11.47 A1.12.41 A1.12.42 A1.12.44 A1.12.46 A1.12.47 +A1.12.46 A1.12.43 A1.12.44 A1.12.45 A1.12.47 A1.12.48 A1.12.49 A1.13.47 A1.13.49 +A1.12.47 A1.11.45 A1.11.47 A1.11.49 A1.12.44 A1.12.45 A1.12.46 A1.12.48 A1.12.49 +A1.12.48 A1.12.46 A1.12.47 A1.12.49 A1.12.50 A1.12.51 A1.12.52 A1.13.47 A1.13.49 A1.13.51 +A1.12.49 A1.11.47 A1.11.49 A1.11.53 A1.12.46 A1.12.47 A1.12.48 A1.12.51 A1.12.52 A1.12.53 +A1.12.50 A1.12.48 A1.12.51 A1.12.54 A1.12.55 A1.13.49 A1.13.51 +A1.12.51 A1.12.48 A1.12.49 A1.12.50 A1.12.52 A1.12.54 A1.12.55 A1.12.56 +A1.12.52 A1.12.48 A1.12.49 A1.12.51 A1.12.53 A1.12.55 A1.12.56 A1.12.57 +A1.12.53 A1.11.49 A1.11.53 A1.11.57 A1.12.49 A1.12.52 A1.12.56 A1.12.57 +A1.12.54 A1.12.50 A1.12.51 A1.12.55 A1.12.58 A1.13.51 A1.13.53 A1.13.55 +A1.12.55 A1.12.50 A1.12.51 A1.12.52 A1.12.54 A1.12.56 A1.12.58 A1.12.59 A1.13.55 +A1.12.56 A1.12.51 A1.12.52 A1.12.53 A1.12.55 A1.12.57 A1.12.58 A1.12.59 A1.12.60 +A1.12.57 A1.11.53 A1.11.57 A1.11.60 A1.12.52 A1.12.53 A1.12.56 A1.12.59 A1.12.60 +A1.12.58 A1.12.54 A1.12.55 A1.12.56 A1.12.59 A1.12.61 A1.13.55 A1.13.57 A1.13.59 +A1.12.59 A1.12.55 A1.12.56 A1.12.57 A1.12.58 A1.12.60 A1.12.61 A1.12.62 A1.13.59 +A1.12.60 A1.11.57 A1.11.60 A1.11.62 A1.12.56 A1.12.57 A1.12.59 A1.12.61 A1.12.62 +A1.12.61 A1.12.58 A1.12.59 A1.12.60 A1.12.62 A1.13.59 A1.13.62 +A1.12.62 A1.11.60 A1.11.62 A1.12.59 A1.12.60 A1.12.61 A1.13.62 +A1.13.00 A1.13.02 A1.13.05 A1.13.09 +A1.13.01 A1.13.03 A1.13.06 A1.13.11 +A1.13.02 A1.12.04 A1.13.00 A1.13.09 A1.13.13 +A1.13.03 A1.13.01 A1.13.06 A1.13.07 A1.13.08 A1.13.11 +A1.13.04 A1.13.05 A1.13.07 A1.13.10 +A1.13.05 A1.13.00 A1.13.04 A1.13.09 A1.13.10 A1.13.14 +A1.13.06 A1.13.01 A1.13.03 A1.13.11 A1.13.12 A1.13.16 A1.14.06 +A1.13.07 A1.13.03 A1.13.04 A1.13.08 A1.13.10 +A1.13.08 A1.13.03 A1.13.07 A1.13.10 A1.13.11 A1.13.15 +A1.13.09 A1.12.04 A1.13.00 A1.13.02 A1.13.05 A1.13.10 A1.13.13 A1.13.14 A1.13.17 +A1.13.10 A1.13.04 A1.13.05 A1.13.07 A1.13.08 A1.13.09 A1.13.11 A1.13.14 A1.13.15 A1.13.18 +A1.13.11 A1.13.01 A1.13.03 A1.13.06 A1.13.08 A1.13.10 A1.13.12 A1.13.15 A1.13.16 A1.13.19 +A1.13.12 A1.13.06 A1.13.11 A1.13.16 A1.13.20 A1.14.06 A1.14.12 A1.14.17 +A1.13.13 A1.12.04 A1.12.10 A1.12.15 A1.12.20 A1.13.02 A1.13.09 A1.13.14 A1.13.17 +A1.13.14 A1.13.05 A1.13.09 A1.13.10 A1.13.13 A1.13.15 A1.13.17 A1.13.18 A1.13.21 +A1.13.15 A1.13.08 A1.13.10 A1.13.11 A1.13.14 A1.13.16 A1.13.18 A1.13.19 A1.13.22 +A1.13.16 A1.13.06 A1.13.11 A1.13.12 A1.13.15 A1.13.19 A1.13.20 A1.13.23 A1.14.17 +A1.13.17 A1.12.15 A1.12.20 A1.13.09 A1.13.13 A1.13.14 A1.13.18 A1.13.21 A1.13.24 +A1.13.18 A1.13.10 A1.13.14 A1.13.15 A1.13.17 A1.13.19 A1.13.21 A1.13.22 A1.13.25 +A1.13.19 A1.13.11 A1.13.15 A1.13.16 A1.13.18 A1.13.20 A1.13.22 A1.13.23 A1.13.26 +A1.13.20 A1.13.12 A1.13.16 A1.13.19 A1.13.23 A1.13.27 A1.14.17 A1.14.20 A1.14.25 +A1.13.21 A1.12.20 A1.13.14 A1.13.17 A1.13.18 A1.13.22 A1.13.24 A1.13.25 A1.13.28 +A1.13.22 A1.13.15 A1.13.18 A1.13.19 A1.13.21 A1.13.23 A1.13.25 A1.13.26 A1.13.29 +A1.13.23 A1.13.16 A1.13.19 A1.13.20 A1.13.22 A1.13.26 A1.13.27 A1.13.30 A1.14.25 +A1.13.24 A1.12.20 A1.12.21 A1.12.25 A1.12.29 A1.13.17 A1.13.21 A1.13.25 A1.13.28 +A1.13.25 A1.13.18 A1.13.21 A1.13.22 A1.13.24 A1.13.26 A1.13.28 A1.13.29 A1.13.31 +A1.13.26 A1.13.19 A1.13.22 A1.13.23 A1.13.25 A1.13.27 A1.13.29 A1.13.30 A1.13.32 +A1.13.27 A1.13.20 A1.13.23 A1.13.26 A1.13.30 A1.13.33 A1.14.25 A1.14.28 A1.14.32 +A1.13.28 A1.12.25 A1.12.29 A1.12.33 A1.13.21 A1.13.24 A1.13.25 A1.13.29 A1.13.31 +A1.13.29 A1.13.22 A1.13.25 A1.13.26 A1.13.28 A1.13.30 A1.13.31 A1.13.32 A1.13.34 +A1.13.30 A1.13.23 A1.13.26 A1.13.27 A1.13.29 A1.13.32 A1.13.33 A1.13.36 A1.14.32 +A1.13.31 A1.12.29 A1.12.33 A1.13.25 A1.13.28 A1.13.29 A1.13.32 A1.13.34 A1.13.37 +A1.13.32 A1.13.26 A1.13.29 A1.13.30 A1.13.31 A1.13.33 A1.13.34 A1.13.36 A1.13.38 +A1.13.33 A1.13.27 A1.13.30 A1.13.32 A1.13.35 A1.13.36 A1.13.39 A1.14.32 A1.14.35 +A1.13.34 A1.12.33 A1.13.29 A1.13.31 A1.13.32 A1.13.36 A1.13.37 A1.13.38 A1.13.40 +A1.13.35 A1.13.33 A1.13.36 A1.13.39 A1.13.42 A1.14.32 A1.14.35 A1.14.37 A1.14.40 +A1.13.36 A1.13.30 A1.13.32 A1.13.33 A1.13.34 A1.13.35 A1.13.38 A1.13.39 A1.13.41 +A1.13.37 A1.12.33 A1.12.34 A1.12.37 A1.12.40 A1.13.31 A1.13.34 A1.13.38 A1.13.40 +A1.13.38 A1.13.32 A1.13.34 A1.13.36 A1.13.37 A1.13.39 A1.13.40 A1.13.41 A1.13.43 +A1.13.39 A1.13.33 A1.13.35 A1.13.36 A1.13.38 A1.13.41 A1.13.42 A1.13.44 A1.14.40 +A1.13.40 A1.12.37 A1.12.40 A1.12.43 A1.13.34 A1.13.37 A1.13.38 A1.13.41 A1.13.43 +A1.13.41 A1.13.36 A1.13.38 A1.13.39 A1.13.40 A1.13.42 A1.13.43 A1.13.44 A1.13.45 +A1.13.42 A1.13.35 A1.13.39 A1.13.41 A1.13.44 A1.13.46 A1.14.40 A1.14.42 A1.14.44 +A1.13.43 A1.12.40 A1.12.43 A1.13.38 A1.13.40 A1.13.41 A1.13.44 A1.13.45 A1.13.47 +A1.13.44 A1.13.39 A1.13.41 A1.13.42 A1.13.43 A1.13.45 A1.13.46 A1.13.48 A1.14.44 +A1.13.45 A1.12.43 A1.13.41 A1.13.43 A1.13.44 A1.13.46 A1.13.47 A1.13.48 A1.13.49 +A1.13.46 A1.13.42 A1.13.44 A1.13.45 A1.13.48 A1.13.50 A1.14.44 A1.14.46 A1.14.48 +A1.13.47 A1.12.43 A1.12.44 A1.12.46 A1.12.48 A1.13.43 A1.13.45 A1.13.48 A1.13.49 +A1.13.48 A1.13.44 A1.13.45 A1.13.46 A1.13.47 A1.13.49 A1.13.50 A1.13.51 A1.14.48 +A1.13.49 A1.12.46 A1.12.48 A1.12.50 A1.13.45 A1.13.47 A1.13.48 A1.13.50 A1.13.51 +A1.13.50 A1.13.46 A1.13.48 A1.13.49 A1.13.51 A1.13.52 A1.14.48 A1.14.49 A1.14.51 +A1.13.51 A1.12.48 A1.12.50 A1.12.54 A1.13.48 A1.13.49 A1.13.50 A1.13.52 A1.13.53 A1.13.55 A1.14.51 +A1.13.52 A1.13.50 A1.13.51 A1.13.53 A1.13.54 A1.13.56 A1.14.51 +A1.13.53 A1.12.54 A1.13.51 A1.13.52 A1.13.54 A1.13.55 A1.13.56 A1.13.57 +A1.13.54 A1.13.52 A1.13.53 A1.13.56 A1.13.58 A1.14.51 A1.14.55 A1.14.57 +A1.13.55 A1.12.54 A1.12.55 A1.12.58 A1.13.51 A1.13.53 A1.13.56 A1.13.57 A1.13.59 +A1.13.56 A1.13.52 A1.13.53 A1.13.54 A1.13.55 A1.13.57 A1.13.58 A1.13.60 A1.14.57 +A1.13.57 A1.12.58 A1.13.53 A1.13.55 A1.13.56 A1.13.58 A1.13.59 A1.13.60 +A1.13.58 A1.13.54 A1.13.56 A1.13.57 A1.13.60 A1.13.61 A1.14.57 A1.14.59 A1.14.61 +A1.13.59 A1.12.58 A1.12.59 A1.12.61 A1.13.55 A1.13.57 A1.13.60 A1.13.62 +A1.13.60 A1.13.56 A1.13.57 A1.13.58 A1.13.59 A1.13.61 A1.13.62 A1.14.61 +A1.13.61 A1.13.58 A1.13.60 A1.13.62 A1.14.61 A1.14.62 +A1.13.62 A1.12.61 A1.12.62 A1.13.59 A1.13.60 A1.13.61 +A1.14.00 A1.14.02 A1.14.03 A1.14.11 +A1.14.01 A1.14.04 A1.14.06 A1.14.08 A1.14.12 +A1.14.02 A1.14.00 A1.14.05 A1.14.11 A1.14.13 +A1.14.03 A1.14.00 A1.14.07 A1.14.09 A1.14.11 +A1.14.04 A1.14.01 A1.14.08 A1.14.10 +A1.14.05 A1.14.02 A1.14.11 A1.14.13 A1.15.00 A1.15.08 +A1.14.06 A1.13.06 A1.13.12 A1.14.01 A1.14.12 A1.14.17 +A1.14.07 A1.14.03 A1.14.09 A1.14.10 A1.14.14 +A1.14.08 A1.14.01 A1.14.04 A1.14.10 A1.14.12 A1.14.15 +A1.14.09 A1.14.03 A1.14.07 A1.14.11 A1.14.14 A1.14.16 +A1.14.10 A1.14.04 A1.14.07 A1.14.08 A1.14.12 A1.14.14 A1.14.15 A1.14.18 +A1.14.11 A1.14.00 A1.14.02 A1.14.03 A1.14.05 A1.14.09 A1.14.13 A1.14.14 A1.14.16 A1.14.19 +A1.14.12 A1.13.12 A1.14.01 A1.14.06 A1.14.08 A1.14.10 A1.14.15 A1.14.17 A1.14.20 +A1.14.13 A1.14.02 A1.14.05 A1.14.11 A1.14.16 A1.14.19 A1.14.21 A1.15.07 A1.15.08 A1.15.18 +A1.14.14 A1.14.07 A1.14.09 A1.14.10 A1.14.11 A1.14.15 A1.14.16 A1.14.18 A1.14.22 +A1.14.15 A1.14.08 A1.14.10 A1.14.12 A1.14.14 A1.14.17 A1.14.18 A1.14.20 A1.14.23 +A1.14.16 A1.14.09 A1.14.11 A1.14.13 A1.14.14 A1.14.18 A1.14.19 A1.14.22 A1.14.24 +A1.14.17 A1.13.12 A1.13.16 A1.13.20 A1.14.06 A1.14.12 A1.14.15 A1.14.20 A1.14.25 +A1.14.18 A1.14.10 A1.14.14 A1.14.15 A1.14.16 A1.14.20 A1.14.22 A1.14.23 A1.14.27 +A1.14.19 A1.14.11 A1.14.13 A1.14.16 A1.14.21 A1.14.22 A1.14.24 A1.14.26 A1.15.18 +A1.14.20 A1.13.20 A1.14.12 A1.14.15 A1.14.17 A1.14.18 A1.14.23 A1.14.25 A1.14.28 +A1.14.21 A1.14.13 A1.14.19 A1.14.24 A1.14.26 A1.15.18 A1.15.19 A1.15.24 A1.15.29 +A1.14.22 A1.14.14 A1.14.16 A1.14.18 A1.14.19 A1.14.23 A1.14.24 A1.14.27 A1.14.29 +A1.14.23 A1.14.15 A1.14.18 A1.14.20 A1.14.22 A1.14.25 A1.14.27 A1.14.28 A1.14.30 +A1.14.24 A1.14.16 A1.14.19 A1.14.21 A1.14.22 A1.14.26 A1.14.27 A1.14.29 A1.14.31 +A1.14.25 A1.13.20 A1.13.23 A1.13.27 A1.14.17 A1.14.20 A1.14.23 A1.14.28 A1.14.32 +A1.14.26 A1.14.19 A1.14.21 A1.14.24 A1.14.29 A1.14.31 A1.14.33 A1.15.24 A1.15.29 +A1.14.27 A1.14.18 A1.14.22 A1.14.23 A1.14.24 A1.14.28 A1.14.29 A1.14.30 A1.14.34 +A1.14.28 A1.13.27 A1.14.20 A1.14.23 A1.14.25 A1.14.27 A1.14.30 A1.14.32 A1.14.35 +A1.14.29 A1.14.22 A1.14.24 A1.14.26 A1.14.27 A1.14.30 A1.14.31 A1.14.34 A1.14.36 +A1.14.30 A1.14.23 A1.14.27 A1.14.28 A1.14.29 A1.14.32 A1.14.34 A1.14.35 A1.14.37 +A1.14.31 A1.14.24 A1.14.26 A1.14.29 A1.14.33 A1.14.34 A1.14.36 A1.14.38 A1.15.29 +A1.14.32 A1.13.27 A1.13.30 A1.13.33 A1.13.35 A1.14.25 A1.14.28 A1.14.30 A1.14.35 +A1.14.33 A1.14.26 A1.14.31 A1.14.36 A1.14.38 A1.15.29 A1.15.30 A1.15.34 A1.15.38 +A1.14.34 A1.14.27 A1.14.29 A1.14.30 A1.14.31 A1.14.35 A1.14.36 A1.14.37 A1.14.39 +A1.14.35 A1.13.33 A1.13.35 A1.14.28 A1.14.30 A1.14.32 A1.14.34 A1.14.37 A1.14.40 +A1.14.36 A1.14.29 A1.14.31 A1.14.33 A1.14.34 A1.14.37 A1.14.38 A1.14.39 A1.14.41 +A1.14.37 A1.13.35 A1.14.30 A1.14.34 A1.14.35 A1.14.36 A1.14.39 A1.14.40 A1.14.42 +A1.14.38 A1.14.31 A1.14.33 A1.14.36 A1.14.39 A1.14.41 A1.15.34 A1.15.38 A1.15.42 +A1.14.39 A1.14.34 A1.14.36 A1.14.37 A1.14.38 A1.14.40 A1.14.41 A1.14.42 A1.14.43 +A1.14.40 A1.13.35 A1.13.39 A1.13.42 A1.14.35 A1.14.37 A1.14.39 A1.14.42 A1.14.44 +A1.14.41 A1.14.36 A1.14.38 A1.14.39 A1.14.42 A1.14.43 A1.14.45 A1.15.38 A1.15.42 +A1.14.42 A1.13.42 A1.14.37 A1.14.39 A1.14.40 A1.14.41 A1.14.43 A1.14.44 A1.14.46 +A1.14.43 A1.14.39 A1.14.41 A1.14.42 A1.14.44 A1.14.45 A1.14.46 A1.14.47 A1.15.42 +A1.14.44 A1.13.42 A1.13.44 A1.13.46 A1.14.40 A1.14.42 A1.14.43 A1.14.46 A1.14.48 +A1.14.45 A1.14.41 A1.14.43 A1.14.46 A1.14.47 A1.15.42 A1.15.43 A1.15.46 A1.15.49 +A1.14.46 A1.13.46 A1.14.42 A1.14.43 A1.14.44 A1.14.45 A1.14.47 A1.14.48 A1.14.49 +A1.14.47 A1.14.43 A1.14.45 A1.14.46 A1.14.48 A1.14.49 A1.14.50 A1.15.46 A1.15.49 +A1.14.48 A1.13.46 A1.13.48 A1.13.50 A1.14.44 A1.14.46 A1.14.47 A1.14.49 A1.14.51 +A1.14.49 A1.13.50 A1.14.46 A1.14.47 A1.14.48 A1.14.50 A1.14.51 A1.14.52 A1.15.49 +A1.14.50 A1.14.47 A1.14.49 A1.14.51 A1.14.52 A1.14.53 A1.14.54 A1.15.49 A1.15.50 A1.15.52 +A1.14.51 A1.13.50 A1.13.51 A1.13.52 A1.13.54 A1.14.48 A1.14.49 A1.14.50 A1.14.52 A1.14.55 A1.14.57 +A1.14.52 A1.14.49 A1.14.50 A1.14.51 A1.14.53 A1.14.55 A1.14.56 +A1.14.53 A1.14.50 A1.14.52 A1.14.54 A1.14.55 A1.14.56 A1.14.58 A1.15.52 +A1.14.54 A1.14.50 A1.14.53 A1.14.56 A1.14.58 A1.15.52 A1.15.54 A1.15.57 +A1.14.55 A1.13.54 A1.14.51 A1.14.52 A1.14.53 A1.14.56 A1.14.57 A1.14.59 +A1.14.56 A1.14.52 A1.14.53 A1.14.54 A1.14.55 A1.14.57 A1.14.58 A1.14.59 A1.14.60 +A1.14.57 A1.13.54 A1.13.56 A1.13.58 A1.14.51 A1.14.55 A1.14.56 A1.14.59 A1.14.61 +A1.14.58 A1.14.53 A1.14.54 A1.14.56 A1.14.59 A1.14.60 A1.15.54 A1.15.57 A1.15.60 +A1.14.59 A1.13.58 A1.14.55 A1.14.56 A1.14.57 A1.14.58 A1.14.60 A1.14.61 A1.14.62 +A1.14.60 A1.14.56 A1.14.58 A1.14.59 A1.14.61 A1.14.62 A1.15.57 A1.15.60 +A1.14.61 A1.13.58 A1.13.60 A1.13.61 A1.14.57 A1.14.59 A1.14.60 A1.14.62 +A1.14.62 A1.13.61 A1.14.59 A1.14.60 A1.14.61 A1.15.60 +A1.15.00 A1.14.05 A1.15.07 A1.15.08 +A1.15.01 A1.15.02 A1.15.04 A1.15.06 A1.15.10 A1.15.11 +A1.15.02 A1.00.01 A1.00.11 A1.15.01 A1.15.11 A1.15.12 +A1.15.03 A1.15.07 A1.15.13 A1.15.14 +A1.15.04 A1.15.01 A1.15.05 A1.15.06 A1.15.09 +A1.15.05 A1.15.04 A1.15.09 A1.15.14 A1.15.15 +A1.15.06 A1.15.01 A1.15.04 A1.15.09 A1.15.10 A1.15.15 A1.15.16 +A1.15.07 A1.14.13 A1.15.00 A1.15.03 A1.15.08 A1.15.13 A1.15.18 A1.15.19 +A1.15.08 A1.14.05 A1.14.13 A1.15.00 A1.15.07 A1.15.18 +A1.15.09 A1.15.04 A1.15.05 A1.15.06 A1.15.15 A1.15.16 +A1.15.10 A1.15.01 A1.15.06 A1.15.11 A1.15.16 A1.15.17 +A1.15.11 A1.15.01 A1.15.02 A1.15.10 A1.15.12 A1.15.16 A1.15.17 +A1.15.12 A1.00.01 A1.00.11 A1.00.16 A1.15.02 A1.15.11 A1.15.17 +A1.15.13 A1.15.03 A1.15.07 A1.15.14 A1.15.18 A1.15.19 A1.15.20 +A1.15.14 A1.15.03 A1.15.05 A1.15.13 A1.15.15 A1.15.19 A1.15.20 A1.15.21 +A1.15.15 A1.15.05 A1.15.06 A1.15.09 A1.15.14 A1.15.16 A1.15.20 A1.15.21 A1.15.22 +A1.15.16 A1.15.06 A1.15.09 A1.15.10 A1.15.11 A1.15.15 A1.15.17 A1.15.21 A1.15.22 A1.15.23 +A1.15.17 A1.00.11 A1.00.16 A1.00.22 A1.15.10 A1.15.11 A1.15.12 A1.15.16 A1.15.22 A1.15.23 +A1.15.18 A1.14.13 A1.14.19 A1.14.21 A1.15.07 A1.15.08 A1.15.13 A1.15.19 A1.15.24 +A1.15.19 A1.14.21 A1.15.07 A1.15.13 A1.15.14 A1.15.18 A1.15.20 A1.15.24 A1.15.25 +A1.15.20 A1.15.13 A1.15.14 A1.15.15 A1.15.19 A1.15.21 A1.15.24 A1.15.25 A1.15.26 +A1.15.21 A1.15.14 A1.15.15 A1.15.16 A1.15.20 A1.15.22 A1.15.25 A1.15.26 A1.15.27 +A1.15.22 A1.15.15 A1.15.16 A1.15.17 A1.15.21 A1.15.23 A1.15.26 A1.15.27 A1.15.28 +A1.15.23 A1.00.16 A1.00.22 A1.00.27 A1.15.16 A1.15.17 A1.15.22 A1.15.27 A1.15.28 +A1.15.24 A1.14.21 A1.14.26 A1.15.18 A1.15.19 A1.15.20 A1.15.25 A1.15.29 A1.15.30 +A1.15.25 A1.15.19 A1.15.20 A1.15.21 A1.15.24 A1.15.26 A1.15.29 A1.15.30 A1.15.31 +A1.15.26 A1.15.20 A1.15.21 A1.15.22 A1.15.25 A1.15.27 A1.15.30 A1.15.31 A1.15.32 +A1.15.27 A1.15.21 A1.15.22 A1.15.23 A1.15.26 A1.15.28 A1.15.31 A1.15.32 A1.15.33 +A1.15.28 A1.00.22 A1.00.27 A1.00.32 A1.15.22 A1.15.23 A1.15.27 A1.15.32 A1.15.33 +A1.15.29 A1.14.21 A1.14.26 A1.14.31 A1.14.33 A1.15.24 A1.15.25 A1.15.30 A1.15.34 +A1.15.30 A1.14.33 A1.15.24 A1.15.25 A1.15.26 A1.15.29 A1.15.31 A1.15.34 A1.15.35 +A1.15.31 A1.15.25 A1.15.26 A1.15.27 A1.15.30 A1.15.32 A1.15.34 A1.15.35 A1.15.36 +A1.15.32 A1.15.26 A1.15.27 A1.15.28 A1.15.31 A1.15.33 A1.15.35 A1.15.36 A1.15.37 +A1.15.33 A1.00.27 A1.00.32 A1.00.36 A1.15.27 A1.15.28 A1.15.32 A1.15.36 A1.15.37 +A1.15.34 A1.14.33 A1.14.38 A1.15.29 A1.15.30 A1.15.31 A1.15.35 A1.15.38 A1.15.39 +A1.15.35 A1.15.30 A1.15.31 A1.15.32 A1.15.34 A1.15.36 A1.15.38 A1.15.39 A1.15.40 +A1.15.36 A1.15.31 A1.15.32 A1.15.33 A1.15.35 A1.15.37 A1.15.39 A1.15.40 A1.15.41 +A1.15.37 A1.00.32 A1.00.36 A1.00.40 A1.15.32 A1.15.33 A1.15.36 A1.15.40 A1.15.41 +A1.15.38 A1.14.33 A1.14.38 A1.14.41 A1.15.34 A1.15.35 A1.15.39 A1.15.42 A1.15.43 +A1.15.39 A1.15.34 A1.15.35 A1.15.36 A1.15.38 A1.15.40 A1.15.42 A1.15.43 A1.15.44 +A1.15.40 A1.15.35 A1.15.36 A1.15.37 A1.15.39 A1.15.41 A1.15.43 A1.15.44 A1.15.45 +A1.15.41 A1.00.36 A1.00.40 A1.00.44 A1.15.36 A1.15.37 A1.15.40 A1.15.44 A1.15.45 +A1.15.42 A1.14.38 A1.14.41 A1.14.43 A1.14.45 A1.15.38 A1.15.39 A1.15.43 A1.15.46 +A1.15.43 A1.14.45 A1.15.38 A1.15.39 A1.15.40 A1.15.42 A1.15.44 A1.15.46 A1.15.47 +A1.15.44 A1.15.39 A1.15.40 A1.15.41 A1.15.43 A1.15.45 A1.15.46 A1.15.47 A1.15.48 +A1.15.45 A1.00.40 A1.00.44 A1.00.47 A1.15.40 A1.15.41 A1.15.44 A1.15.47 A1.15.48 +A1.15.46 A1.14.45 A1.14.47 A1.15.42 A1.15.43 A1.15.44 A1.15.47 A1.15.49 A1.15.50 +A1.15.47 A1.15.43 A1.15.44 A1.15.45 A1.15.46 A1.15.48 A1.15.49 A1.15.50 A1.15.51 +A1.15.48 A1.00.44 A1.00.47 A1.00.50 A1.15.44 A1.15.45 A1.15.47 A1.15.50 A1.15.51 +A1.15.49 A1.14.45 A1.14.47 A1.14.49 A1.14.50 A1.15.46 A1.15.47 A1.15.50 A1.15.52 +A1.15.50 A1.14.50 A1.15.46 A1.15.47 A1.15.48 A1.15.49 A1.15.51 A1.15.52 A1.15.53 +A1.15.51 A1.00.47 A1.00.50 A1.00.52 A1.15.47 A1.15.48 A1.15.50 A1.15.52 A1.15.53 +A1.15.52 A1.14.50 A1.14.53 A1.14.54 A1.15.49 A1.15.50 A1.15.51 A1.15.53 A1.15.54 A1.15.55 +A1.15.53 A1.00.50 A1.00.52 A1.00.56 A1.15.50 A1.15.51 A1.15.52 A1.15.54 A1.15.55 A1.15.56 +A1.15.54 A1.14.54 A1.14.58 A1.15.52 A1.15.53 A1.15.55 A1.15.57 A1.15.58 +A1.15.55 A1.15.52 A1.15.53 A1.15.54 A1.15.56 A1.15.57 A1.15.58 A1.15.59 +A1.15.56 A1.00.52 A1.00.56 A1.00.59 A1.15.53 A1.15.55 A1.15.58 A1.15.59 +A1.15.57 A1.14.54 A1.14.58 A1.14.60 A1.15.54 A1.15.55 A1.15.58 A1.15.60 A1.15.61 +A1.15.58 A1.15.54 A1.15.55 A1.15.56 A1.15.57 A1.15.59 A1.15.60 A1.15.61 A1.15.62 +A1.15.59 A1.00.56 A1.00.59 A1.00.62 A1.15.55 A1.15.56 A1.15.58 A1.15.61 A1.15.62 +A1.15.60 A1.14.58 A1.14.60 A1.14.62 A1.15.57 A1.15.58 A1.15.61 +A1.15.61 A1.15.57 A1.15.58 A1.15.59 A1.15.60 A1.15.62 +A1.15.62 A1.00.59 A1.00.62 A1.15.58 A1.15.59 A1.15.61 +A2.00.00 A2.00.02 A2.00.05 A2.00.06 +A2.00.01 A2.00.02 A2.00.06 A2.15.00 A2.15.06 +A2.00.02 A2.00.00 A2.00.01 A2.00.05 A2.00.06 +A2.00.03 A2.00.04 A2.00.07 A2.00.08 A2.01.04 +A2.00.04 A2.00.03 A2.00.05 A2.00.07 A2.00.08 A2.00.09 +A2.00.05 A2.00.00 A2.00.02 A2.00.04 A2.00.06 A2.00.08 A2.00.09 A2.00.10 +A2.00.06 A2.00.00 A2.00.01 A2.00.02 A2.00.05 A2.00.09 A2.00.10 A2.15.00 A2.15.06 A2.15.10 +A2.00.07 A2.00.03 A2.00.04 A2.00.08 A2.00.11 A2.01.04 A2.01.07 A2.01.10 +A2.00.08 A2.00.03 A2.00.04 A2.00.05 A2.00.07 A2.00.09 A2.00.11 A2.00.12 A2.01.10 +A2.00.09 A2.00.04 A2.00.05 A2.00.06 A2.00.08 A2.00.10 A2.00.11 A2.00.12 A2.00.13 +A2.00.10 A2.00.05 A2.00.06 A2.00.09 A2.00.12 A2.00.13 A2.15.06 A2.15.10 A2.15.13 +A2.00.11 A2.00.07 A2.00.08 A2.00.09 A2.00.12 A2.00.14 A2.00.15 A2.01.10 A2.01.13 +A2.00.12 A2.00.08 A2.00.09 A2.00.10 A2.00.11 A2.00.13 A2.00.14 A2.00.15 A2.00.16 +A2.00.13 A2.00.09 A2.00.10 A2.00.12 A2.00.15 A2.00.16 A2.15.10 A2.15.13 A2.15.16 +A2.00.14 A2.00.11 A2.00.12 A2.00.15 A2.00.17 A2.00.18 A2.01.10 A2.01.13 A2.01.16 +A2.00.15 A2.00.11 A2.00.12 A2.00.13 A2.00.14 A2.00.16 A2.00.17 A2.00.18 A2.00.19 +A2.00.16 A2.00.12 A2.00.13 A2.00.15 A2.00.18 A2.00.19 A2.15.13 A2.15.16 A2.15.19 +A2.00.17 A2.00.14 A2.00.15 A2.00.18 A2.00.20 A2.01.13 A2.01.16 A2.01.18 A2.01.20 +A2.00.18 A2.00.14 A2.00.15 A2.00.16 A2.00.17 A2.00.19 A2.00.20 A2.00.21 A2.01.20 +A2.00.19 A2.00.15 A2.00.16 A2.00.18 A2.00.20 A2.00.21 A2.15.16 A2.15.19 A2.15.21 +A2.00.20 A2.00.17 A2.00.18 A2.00.19 A2.00.21 A2.00.22 A2.00.23 A2.01.20 A2.01.22 +A2.00.21 A2.00.18 A2.00.19 A2.00.20 A2.00.22 A2.00.23 A2.15.19 A2.15.21 A2.15.23 +A2.00.22 A2.00.20 A2.00.21 A2.00.23 A2.00.24 A2.00.25 A2.01.20 A2.01.22 A2.01.24 +A2.00.23 A2.00.20 A2.00.21 A2.00.22 A2.00.24 A2.00.25 A2.15.21 A2.15.23 A2.15.25 +A2.00.24 A2.00.22 A2.00.23 A2.00.25 A2.00.26 A2.01.22 A2.01.24 A2.01.25 A2.01.26 +A2.00.25 A2.00.22 A2.00.23 A2.00.24 A2.00.26 A2.01.26 A2.15.23 A2.15.25 A2.15.26 +A2.00.26 A2.00.24 A2.00.25 A2.00.27 A2.01.26 A2.01.28 A2.15.25 A2.15.26 A2.15.27 +A2.00.27 A2.00.26 A2.00.28 A2.00.29 A2.01.26 A2.01.28 A2.01.30 A2.15.26 A2.15.27 A2.15.29 +A2.00.28 A2.00.27 A2.00.29 A2.01.28 A2.01.30 A2.01.31 +A2.00.29 A2.00.27 A2.00.28 A2.15.27 A2.15.29 +A2.01.00 A2.01.03 A2.01.05 A2.02.01 +A2.01.01 A2.01.05 A2.01.06 +A2.01.02 A2.01.04 A2.01.06 A2.01.07 +A2.01.03 A2.01.00 A2.01.05 A2.01.08 A2.02.01 A2.02.06 +A2.01.04 A2.00.03 A2.00.07 A2.01.02 A2.01.06 A2.01.07 A2.01.10 +A2.01.05 A2.01.00 A2.01.01 A2.01.03 A2.01.06 A2.01.08 A2.01.09 A2.01.12 +A2.01.06 A2.01.01 A2.01.02 A2.01.04 A2.01.05 A2.01.07 A2.01.09 A2.01.11 +A2.01.07 A2.00.07 A2.01.02 A2.01.04 A2.01.06 A2.01.09 A2.01.10 A2.01.11 A2.01.13 +A2.01.08 A2.01.03 A2.01.05 A2.01.09 A2.01.12 A2.01.14 A2.02.06 A2.02.09 A2.02.11 +A2.01.09 A2.01.05 A2.01.06 A2.01.07 A2.01.08 A2.01.11 A2.01.12 A2.01.15 +A2.01.10 A2.00.07 A2.00.08 A2.00.11 A2.00.14 A2.01.04 A2.01.07 A2.01.11 A2.01.13 +A2.01.11 A2.01.06 A2.01.07 A2.01.09 A2.01.10 A2.01.12 A2.01.13 A2.01.15 A2.01.16 +A2.01.12 A2.01.05 A2.01.08 A2.01.09 A2.01.11 A2.01.14 A2.01.15 A2.01.17 A2.02.11 +A2.01.13 A2.00.11 A2.00.14 A2.00.17 A2.01.07 A2.01.10 A2.01.11 A2.01.15 A2.01.16 +A2.01.14 A2.01.08 A2.01.12 A2.01.15 A2.01.17 A2.01.19 A2.02.11 A2.02.14 A2.02.16 +A2.01.15 A2.01.09 A2.01.11 A2.01.12 A2.01.13 A2.01.14 A2.01.16 A2.01.17 A2.01.18 +A2.01.16 A2.00.14 A2.00.17 A2.01.11 A2.01.13 A2.01.15 A2.01.17 A2.01.18 A2.01.20 +A2.01.17 A2.01.12 A2.01.14 A2.01.15 A2.01.16 A2.01.18 A2.01.19 A2.01.21 A2.02.16 +A2.01.18 A2.00.17 A2.01.15 A2.01.16 A2.01.17 A2.01.19 A2.01.20 A2.01.21 A2.01.22 +A2.01.19 A2.01.14 A2.01.17 A2.01.18 A2.01.21 A2.01.23 A2.02.16 A2.02.18 A2.02.20 +A2.01.20 A2.00.17 A2.00.18 A2.00.20 A2.00.22 A2.01.16 A2.01.18 A2.01.21 A2.01.22 +A2.01.21 A2.01.17 A2.01.18 A2.01.19 A2.01.20 A2.01.22 A2.01.23 A2.01.24 A2.02.20 +A2.01.22 A2.00.20 A2.00.22 A2.00.24 A2.01.18 A2.01.20 A2.01.21 A2.01.23 A2.01.24 +A2.01.23 A2.01.19 A2.01.21 A2.01.22 A2.01.24 A2.01.25 A2.02.20 A2.02.22 A2.02.24 +A2.01.24 A2.00.22 A2.00.24 A2.01.21 A2.01.22 A2.01.23 A2.01.25 A2.01.26 A2.02.24 +A2.01.25 A2.00.24 A2.01.23 A2.01.24 A2.01.26 A2.01.27 A2.01.28 A2.02.24 A2.02.25 +A2.01.26 A2.00.24 A2.00.25 A2.00.26 A2.00.27 A2.01.24 A2.01.25 A2.01.27 A2.01.28 +A2.01.27 A2.01.25 A2.01.26 A2.01.28 A2.02.24 A2.02.25 A2.02.26 A2.02.27 A2.02.29 +A2.01.28 A2.00.26 A2.00.27 A2.00.28 A2.01.25 A2.01.26 A2.01.27 A2.01.29 A2.01.30 A2.02.27 A2.02.29 +A2.01.29 A2.01.28 A2.01.30 A2.01.31 A2.02.29 A2.02.30 +A2.01.30 A2.00.27 A2.00.28 A2.01.28 A2.01.29 A2.01.31 +A2.01.31 A2.00.28 A2.01.29 A2.01.30 A2.02.29 A2.02.30 +A2.02.00 A2.02.02 A2.02.07 A2.02.08 +A2.02.01 A2.01.00 A2.01.03 A2.02.06 +A2.02.02 A2.02.00 A2.02.04 A2.02.07 A2.02.08 A2.03.01 +A2.02.03 A2.02.05 A2.02.06 A2.02.09 +A2.02.04 A2.02.02 A2.02.08 A2.03.01 A2.03.06 +A2.02.05 A2.02.03 A2.02.07 A2.02.09 A2.02.10 +A2.02.06 A2.01.03 A2.01.08 A2.02.01 A2.02.03 A2.02.09 A2.02.11 +A2.02.07 A2.02.00 A2.02.02 A2.02.05 A2.02.08 A2.02.09 A2.02.10 A2.02.12 +A2.02.08 A2.02.00 A2.02.02 A2.02.04 A2.02.07 A2.02.10 A2.02.12 A2.02.13 A2.03.01 A2.03.06 +A2.02.09 A2.01.08 A2.02.03 A2.02.05 A2.02.06 A2.02.07 A2.02.10 A2.02.11 A2.02.14 +A2.02.10 A2.02.05 A2.02.07 A2.02.08 A2.02.09 A2.02.11 A2.02.12 A2.02.14 A2.02.15 +A2.02.11 A2.01.08 A2.01.12 A2.01.14 A2.02.06 A2.02.09 A2.02.10 A2.02.14 A2.02.16 +A2.02.12 A2.02.07 A2.02.08 A2.02.10 A2.02.13 A2.02.14 A2.02.15 A2.02.17 A2.03.06 +A2.02.13 A2.02.08 A2.02.12 A2.02.15 A2.02.17 A2.03.06 A2.03.07 A2.03.11 A2.03.15 +A2.02.14 A2.01.14 A2.02.09 A2.02.10 A2.02.11 A2.02.12 A2.02.15 A2.02.16 A2.02.18 +A2.02.15 A2.02.10 A2.02.12 A2.02.13 A2.02.14 A2.02.16 A2.02.17 A2.02.18 A2.02.19 +A2.02.16 A2.01.14 A2.01.17 A2.01.19 A2.02.11 A2.02.14 A2.02.15 A2.02.18 A2.02.20 +A2.02.17 A2.02.12 A2.02.13 A2.02.15 A2.02.18 A2.02.19 A2.02.21 A2.03.11 A2.03.15 +A2.02.18 A2.01.19 A2.02.14 A2.02.15 A2.02.16 A2.02.17 A2.02.19 A2.02.20 A2.02.22 +A2.02.19 A2.02.15 A2.02.17 A2.02.18 A2.02.20 A2.02.21 A2.02.22 A2.02.23 A2.03.15 +A2.02.20 A2.01.19 A2.01.21 A2.01.23 A2.02.16 A2.02.18 A2.02.19 A2.02.22 A2.02.24 +A2.02.21 A2.02.17 A2.02.19 A2.02.22 A2.02.23 A2.03.15 A2.03.16 A2.03.19 A2.03.22 +A2.02.22 A2.01.23 A2.02.18 A2.02.19 A2.02.20 A2.02.21 A2.02.23 A2.02.24 A2.02.25 +A2.02.23 A2.02.19 A2.02.21 A2.02.22 A2.02.24 A2.02.25 A2.02.26 A2.03.19 A2.03.22 +A2.02.24 A2.01.23 A2.01.24 A2.01.25 A2.01.27 A2.02.20 A2.02.22 A2.02.23 A2.02.25 +A2.02.25 A2.01.25 A2.01.27 A2.02.22 A2.02.23 A2.02.24 A2.02.26 A2.02.27 A2.03.22 +A2.02.26 A2.01.27 A2.02.23 A2.02.25 A2.02.27 A2.02.28 A2.03.22 A2.03.23 A2.03.25 +A2.02.27 A2.01.27 A2.01.28 A2.02.25 A2.02.26 A2.02.28 A2.02.29 A2.02.30 A2.03.25 +A2.02.28 A2.02.26 A2.02.27 A2.02.30 A2.02.31 A2.03.25 A2.03.26 A2.03.27 A2.03.29 +A2.02.29 A2.01.27 A2.01.28 A2.01.29 A2.01.31 A2.02.27 A2.02.30 +A2.02.30 A2.01.29 A2.01.31 A2.02.27 A2.02.28 A2.02.29 A2.02.31 +A2.02.31 A2.02.28 A2.02.30 A2.03.29 +A2.03.00 A2.03.03 A2.03.04 A2.03.05 A2.04.00 A2.04.05 +A2.03.01 A2.02.02 A2.02.04 A2.02.08 A2.03.02 A2.03.06 A2.03.07 +A2.03.02 A2.03.01 A2.03.03 A2.03.06 A2.03.07 A2.03.08 +A2.03.03 A2.03.00 A2.03.02 A2.03.04 A2.03.07 A2.03.08 A2.03.09 +A2.03.04 A2.03.00 A2.03.03 A2.03.05 A2.03.08 A2.03.09 A2.03.10 +A2.03.05 A2.03.00 A2.03.04 A2.03.09 A2.03.10 A2.04.00 A2.04.05 A2.04.10 +A2.03.06 A2.02.04 A2.02.08 A2.02.12 A2.02.13 A2.03.01 A2.03.02 A2.03.07 A2.03.11 +A2.03.07 A2.02.13 A2.03.01 A2.03.02 A2.03.03 A2.03.06 A2.03.08 A2.03.11 A2.03.12 +A2.03.08 A2.03.02 A2.03.03 A2.03.04 A2.03.07 A2.03.09 A2.03.11 A2.03.12 A2.03.13 +A2.03.09 A2.03.03 A2.03.04 A2.03.05 A2.03.08 A2.03.10 A2.03.12 A2.03.13 A2.03.14 +A2.03.10 A2.03.04 A2.03.05 A2.03.09 A2.03.13 A2.03.14 A2.04.05 A2.04.10 A2.04.14 +A2.03.11 A2.02.13 A2.02.17 A2.03.06 A2.03.07 A2.03.08 A2.03.12 A2.03.15 A2.03.16 +A2.03.12 A2.03.07 A2.03.08 A2.03.09 A2.03.11 A2.03.13 A2.03.15 A2.03.16 A2.03.17 +A2.03.13 A2.03.08 A2.03.09 A2.03.10 A2.03.12 A2.03.14 A2.03.16 A2.03.17 A2.03.18 +A2.03.14 A2.03.09 A2.03.10 A2.03.13 A2.03.17 A2.03.18 A2.04.10 A2.04.14 A2.04.18 +A2.03.15 A2.02.13 A2.02.17 A2.02.19 A2.02.21 A2.03.11 A2.03.12 A2.03.16 A2.03.19 +A2.03.16 A2.02.21 A2.03.11 A2.03.12 A2.03.13 A2.03.15 A2.03.17 A2.03.19 A2.03.20 +A2.03.17 A2.03.12 A2.03.13 A2.03.14 A2.03.16 A2.03.18 A2.03.19 A2.03.20 A2.03.21 +A2.03.18 A2.03.13 A2.03.14 A2.03.17 A2.03.20 A2.03.21 A2.04.14 A2.04.18 A2.04.21 +A2.03.19 A2.02.21 A2.02.23 A2.03.15 A2.03.16 A2.03.17 A2.03.20 A2.03.22 A2.03.23 +A2.03.20 A2.03.16 A2.03.17 A2.03.18 A2.03.19 A2.03.21 A2.03.22 A2.03.23 A2.03.24 +A2.03.21 A2.03.17 A2.03.18 A2.03.20 A2.03.23 A2.03.24 A2.04.18 A2.04.21 A2.04.24 +A2.03.22 A2.02.21 A2.02.23 A2.02.25 A2.02.26 A2.03.19 A2.03.20 A2.03.23 A2.03.25 +A2.03.23 A2.02.26 A2.03.19 A2.03.20 A2.03.21 A2.03.22 A2.03.24 A2.03.25 A2.03.26 +A2.03.24 A2.03.20 A2.03.21 A2.03.23 A2.03.25 A2.03.26 A2.04.21 A2.04.24 A2.04.26 +A2.03.25 A2.02.26 A2.02.27 A2.02.28 A2.03.22 A2.03.23 A2.03.24 A2.03.26 A2.03.27 +A2.03.26 A2.02.28 A2.03.23 A2.03.24 A2.03.25 A2.03.27 A2.03.28 A2.04.24 A2.04.26 A2.04.28 +A2.03.27 A2.02.28 A2.03.25 A2.03.26 A2.03.28 A2.03.29 A2.03.30 +A2.03.28 A2.03.26 A2.03.27 A2.03.29 A2.03.30 A2.04.26 A2.04.28 A2.04.30 +A2.03.29 A2.02.28 A2.02.31 A2.03.27 A2.03.28 A2.03.30 +A2.03.30 A2.03.27 A2.03.28 A2.03.29 A2.04.28 A2.04.30 +A2.04.00 A2.03.00 A2.03.05 A2.04.03 A2.04.04 A2.04.05 +A2.04.01 A2.04.02 A2.04.06 A2.04.07 A2.05.02 A2.05.04 A2.05.08 +A2.04.02 A2.04.01 A2.04.03 A2.04.06 A2.04.07 A2.04.08 +A2.04.03 A2.04.00 A2.04.02 A2.04.04 A2.04.07 A2.04.08 A2.04.09 +A2.04.04 A2.04.00 A2.04.03 A2.04.05 A2.04.08 A2.04.09 A2.04.10 +A2.04.05 A2.03.00 A2.03.05 A2.03.10 A2.04.00 A2.04.04 A2.04.09 A2.04.10 +A2.04.06 A2.04.01 A2.04.02 A2.04.07 A2.04.11 A2.05.04 A2.05.08 A2.05.12 A2.05.13 +A2.04.07 A2.04.01 A2.04.02 A2.04.03 A2.04.06 A2.04.08 A2.04.11 A2.04.12 A2.05.13 +A2.04.08 A2.04.02 A2.04.03 A2.04.04 A2.04.07 A2.04.09 A2.04.11 A2.04.12 A2.04.13 +A2.04.09 A2.04.03 A2.04.04 A2.04.05 A2.04.08 A2.04.10 A2.04.12 A2.04.13 A2.04.14 +A2.04.10 A2.03.05 A2.03.10 A2.03.14 A2.04.04 A2.04.05 A2.04.09 A2.04.13 A2.04.14 +A2.04.11 A2.04.06 A2.04.07 A2.04.08 A2.04.12 A2.04.15 A2.04.16 A2.05.13 A2.05.17 +A2.04.12 A2.04.07 A2.04.08 A2.04.09 A2.04.11 A2.04.13 A2.04.15 A2.04.16 A2.04.17 +A2.04.13 A2.04.08 A2.04.09 A2.04.10 A2.04.12 A2.04.14 A2.04.16 A2.04.17 A2.04.18 +A2.04.14 A2.03.10 A2.03.14 A2.03.18 A2.04.09 A2.04.10 A2.04.13 A2.04.17 A2.04.18 +A2.04.15 A2.04.11 A2.04.12 A2.04.16 A2.04.19 A2.05.13 A2.05.17 A2.05.19 A2.05.21 +A2.04.16 A2.04.11 A2.04.12 A2.04.13 A2.04.15 A2.04.17 A2.04.19 A2.04.20 A2.05.21 +A2.04.17 A2.04.12 A2.04.13 A2.04.14 A2.04.16 A2.04.18 A2.04.19 A2.04.20 A2.04.21 +A2.04.18 A2.03.14 A2.03.18 A2.03.21 A2.04.13 A2.04.14 A2.04.17 A2.04.20 A2.04.21 +A2.04.19 A2.04.15 A2.04.16 A2.04.17 A2.04.20 A2.04.22 A2.04.23 A2.05.21 A2.05.23 +A2.04.20 A2.04.16 A2.04.17 A2.04.18 A2.04.19 A2.04.21 A2.04.22 A2.04.23 A2.04.24 +A2.04.21 A2.03.18 A2.03.21 A2.03.24 A2.04.17 A2.04.18 A2.04.20 A2.04.23 A2.04.24 +A2.04.22 A2.04.19 A2.04.20 A2.04.23 A2.04.25 A2.05.21 A2.05.23 A2.05.25 A2.05.26 +A2.04.23 A2.04.19 A2.04.20 A2.04.21 A2.04.22 A2.04.24 A2.04.25 A2.04.26 A2.05.26 +A2.04.24 A2.03.21 A2.03.24 A2.03.26 A2.04.20 A2.04.21 A2.04.23 A2.04.25 A2.04.26 +A2.04.25 A2.04.22 A2.04.23 A2.04.24 A2.04.26 A2.04.27 A2.05.26 A2.05.27 A2.05.28 +A2.04.26 A2.03.24 A2.03.26 A2.03.28 A2.04.23 A2.04.24 A2.04.25 A2.04.27 A2.04.28 A2.05.28 +A2.04.27 A2.04.25 A2.04.26 A2.04.28 A2.04.29 A2.04.30 A2.05.28 +A2.04.28 A2.03.26 A2.03.28 A2.03.30 A2.04.26 A2.04.27 A2.04.29 A2.04.30 +A2.04.29 A2.04.27 A2.04.28 A2.04.30 A2.05.28 A2.05.31 +A2.04.30 A2.03.28 A2.03.30 A2.04.27 A2.04.28 A2.04.29 A2.05.31 +A2.05.00 A2.05.03 A2.05.06 A2.06.00 +A2.05.01 A2.05.02 A2.05.07 A2.05.08 +A2.05.02 A2.04.01 A2.05.01 A2.05.04 A2.05.07 A2.05.08 +A2.05.03 A2.05.00 A2.05.05 A2.05.06 A2.05.09 +A2.05.04 A2.04.01 A2.04.06 A2.05.02 A2.05.08 +A2.05.05 A2.05.03 A2.05.07 A2.05.09 A2.05.10 +A2.05.06 A2.05.00 A2.05.03 A2.05.09 A2.05.11 A2.06.00 A2.06.05 A2.06.08 +A2.05.07 A2.05.01 A2.05.02 A2.05.05 A2.05.08 A2.05.09 A2.05.10 A2.05.12 +A2.05.08 A2.04.01 A2.04.06 A2.05.01 A2.05.02 A2.05.04 A2.05.07 A2.05.10 A2.05.12 A2.05.13 +A2.05.09 A2.05.03 A2.05.05 A2.05.06 A2.05.07 A2.05.10 A2.05.11 A2.05.14 A2.06.08 +A2.05.10 A2.05.05 A2.05.07 A2.05.08 A2.05.09 A2.05.11 A2.05.12 A2.05.14 A2.05.15 +A2.05.11 A2.05.06 A2.05.09 A2.05.10 A2.05.14 A2.05.16 A2.06.08 A2.06.12 A2.06.14 +A2.05.12 A2.04.06 A2.05.07 A2.05.08 A2.05.10 A2.05.13 A2.05.14 A2.05.15 A2.05.17 +A2.05.13 A2.04.06 A2.04.07 A2.04.11 A2.04.15 A2.05.08 A2.05.12 A2.05.15 A2.05.17 +A2.05.14 A2.05.09 A2.05.10 A2.05.11 A2.05.12 A2.05.15 A2.05.16 A2.05.18 A2.06.14 +A2.05.15 A2.05.10 A2.05.12 A2.05.13 A2.05.14 A2.05.16 A2.05.17 A2.05.18 A2.05.19 +A2.05.16 A2.05.11 A2.05.14 A2.05.15 A2.05.18 A2.05.20 A2.06.14 A2.06.17 A2.06.19 +A2.05.17 A2.04.11 A2.04.15 A2.05.12 A2.05.13 A2.05.15 A2.05.18 A2.05.19 A2.05.21 +A2.05.18 A2.05.14 A2.05.15 A2.05.16 A2.05.17 A2.05.19 A2.05.20 A2.05.22 A2.06.19 +A2.05.19 A2.04.15 A2.05.15 A2.05.17 A2.05.18 A2.05.20 A2.05.21 A2.05.22 A2.05.23 +A2.05.20 A2.05.16 A2.05.18 A2.05.19 A2.05.22 A2.05.24 A2.06.19 A2.06.21 A2.06.23 +A2.05.21 A2.04.15 A2.04.16 A2.04.19 A2.04.22 A2.05.17 A2.05.19 A2.05.22 A2.05.23 +A2.05.22 A2.05.18 A2.05.19 A2.05.20 A2.05.21 A2.05.23 A2.05.24 A2.05.25 A2.06.23 +A2.05.23 A2.04.19 A2.04.22 A2.05.19 A2.05.21 A2.05.22 A2.05.24 A2.05.25 A2.05.26 +A2.05.24 A2.05.20 A2.05.22 A2.05.23 A2.05.25 A2.06.23 A2.06.24 A2.06.25 A2.06.27 +A2.05.25 A2.04.22 A2.05.22 A2.05.23 A2.05.24 A2.05.26 A2.05.27 A2.06.25 A2.06.27 +A2.05.26 A2.04.22 A2.04.23 A2.04.25 A2.05.23 A2.05.25 A2.05.27 A2.05.28 A2.06.27 +A2.05.27 A2.04.25 A2.05.25 A2.05.26 A2.05.28 A2.05.29 A2.05.30 A2.06.27 A2.06.28 A2.06.29 +A2.05.28 A2.04.25 A2.04.26 A2.04.27 A2.04.29 A2.05.26 A2.05.27 A2.05.29 A2.05.30 A2.05.31 +A2.05.29 A2.05.27 A2.05.28 A2.05.30 A2.06.29 A2.06.30 A2.06.31 +A2.05.30 A2.05.27 A2.05.28 A2.05.29 A2.05.31 A2.06.31 +A2.05.31 A2.04.29 A2.04.30 A2.05.28 A2.05.30 +A2.06.00 A2.05.00 A2.05.06 A2.06.05 +A2.06.01 A2.06.03 A2.06.05 +A2.06.02 A2.06.04 A2.06.06 A2.06.07 +A2.06.03 A2.06.01 A2.06.05 A2.06.06 A2.06.09 +A2.06.04 A2.06.02 A2.06.06 A2.06.07 A2.06.10 A2.07.03 A2.07.07 +A2.06.05 A2.05.06 A2.06.00 A2.06.01 A2.06.03 A2.06.06 A2.06.08 A2.06.09 A2.06.12 +A2.06.06 A2.06.02 A2.06.03 A2.06.04 A2.06.05 A2.06.07 A2.06.09 A2.06.11 +A2.06.07 A2.06.02 A2.06.04 A2.06.06 A2.06.09 A2.06.10 A2.06.11 A2.06.13 A2.07.07 +A2.06.08 A2.05.06 A2.05.09 A2.05.11 A2.06.05 A2.06.09 A2.06.12 A2.06.14 +A2.06.09 A2.06.03 A2.06.05 A2.06.06 A2.06.07 A2.06.08 A2.06.11 A2.06.12 A2.06.15 +A2.06.10 A2.06.04 A2.06.07 A2.06.11 A2.06.13 A2.07.07 A2.07.08 A2.07.11 A2.07.14 +A2.06.11 A2.06.06 A2.06.07 A2.06.09 A2.06.10 A2.06.12 A2.06.13 A2.06.15 A2.06.16 +A2.06.12 A2.05.11 A2.06.05 A2.06.08 A2.06.09 A2.06.11 A2.06.14 A2.06.15 A2.06.17 +A2.06.13 A2.06.07 A2.06.10 A2.06.11 A2.06.15 A2.06.16 A2.07.11 A2.07.14 A2.07.17 +A2.06.14 A2.05.11 A2.05.14 A2.05.16 A2.06.08 A2.06.12 A2.06.15 A2.06.17 A2.06.19 +A2.06.15 A2.06.09 A2.06.11 A2.06.12 A2.06.13 A2.06.14 A2.06.16 A2.06.17 A2.06.18 +A2.06.16 A2.06.11 A2.06.13 A2.06.15 A2.06.17 A2.06.18 A2.06.20 A2.07.14 A2.07.17 +A2.06.17 A2.05.16 A2.06.12 A2.06.14 A2.06.15 A2.06.16 A2.06.18 A2.06.19 A2.06.21 +A2.06.18 A2.06.15 A2.06.16 A2.06.17 A2.06.19 A2.06.20 A2.06.21 A2.06.22 A2.07.17 +A2.06.19 A2.05.16 A2.05.18 A2.05.20 A2.06.14 A2.06.17 A2.06.18 A2.06.21 A2.06.23 +A2.06.20 A2.06.16 A2.06.18 A2.06.21 A2.06.22 A2.07.17 A2.07.18 A2.07.20 A2.07.22 +A2.06.21 A2.05.20 A2.06.17 A2.06.18 A2.06.19 A2.06.20 A2.06.22 A2.06.23 A2.06.24 +A2.06.22 A2.06.18 A2.06.20 A2.06.21 A2.06.23 A2.06.24 A2.07.20 A2.07.22 A2.07.24 +A2.06.23 A2.05.20 A2.05.22 A2.05.24 A2.06.19 A2.06.21 A2.06.22 A2.06.24 A2.06.25 +A2.06.24 A2.05.24 A2.06.21 A2.06.22 A2.06.23 A2.06.25 A2.06.26 A2.07.22 A2.07.24 +A2.06.25 A2.05.24 A2.05.25 A2.06.23 A2.06.24 A2.06.26 A2.06.27 A2.06.28 A2.07.24 +A2.06.26 A2.06.24 A2.06.25 A2.06.27 A2.06.28 A2.07.24 A2.07.25 A2.07.26 A2.07.27 +A2.06.27 A2.05.24 A2.05.25 A2.05.26 A2.05.27 A2.06.25 A2.06.26 A2.06.28 A2.06.29 +A2.06.28 A2.05.27 A2.06.25 A2.06.26 A2.06.27 A2.06.29 A2.06.30 A2.07.26 A2.07.27 A2.07.28 +A2.06.29 A2.05.27 A2.05.29 A2.06.27 A2.06.28 A2.06.30 A2.06.31 +A2.06.30 A2.05.29 A2.06.28 A2.06.29 A2.06.31 A2.07.27 A2.07.28 +A2.06.31 A2.05.29 A2.05.30 A2.06.29 A2.06.30 A2.07.28 +A2.07.00 A2.07.01 A2.07.05 A2.07.06 +A2.07.01 A2.07.00 A2.07.02 A2.07.05 A2.07.06 +A2.07.02 A2.07.01 A2.07.06 A2.08.01 A2.08.06 +A2.07.03 A2.06.04 A2.07.04 A2.07.07 A2.07.08 +A2.07.04 A2.07.03 A2.07.05 A2.07.07 A2.07.08 A2.07.09 +A2.07.05 A2.07.00 A2.07.01 A2.07.04 A2.07.06 A2.07.08 A2.07.09 A2.07.10 +A2.07.06 A2.07.00 A2.07.01 A2.07.02 A2.07.05 A2.07.09 A2.07.10 A2.08.01 A2.08.06 A2.08.10 +A2.07.07 A2.06.04 A2.06.07 A2.06.10 A2.07.03 A2.07.04 A2.07.08 A2.07.11 +A2.07.08 A2.06.10 A2.07.03 A2.07.04 A2.07.05 A2.07.07 A2.07.09 A2.07.11 A2.07.12 +A2.07.09 A2.07.04 A2.07.05 A2.07.06 A2.07.08 A2.07.10 A2.07.11 A2.07.12 A2.07.13 +A2.07.10 A2.07.05 A2.07.06 A2.07.09 A2.07.12 A2.07.13 A2.08.06 A2.08.10 A2.08.13 +A2.07.11 A2.06.10 A2.06.13 A2.07.07 A2.07.08 A2.07.09 A2.07.12 A2.07.14 A2.07.15 +A2.07.12 A2.07.08 A2.07.09 A2.07.10 A2.07.11 A2.07.13 A2.07.14 A2.07.15 A2.07.16 +A2.07.13 A2.07.09 A2.07.10 A2.07.12 A2.07.15 A2.07.16 A2.08.10 A2.08.13 A2.08.16 +A2.07.14 A2.06.10 A2.06.13 A2.06.16 A2.07.11 A2.07.12 A2.07.15 A2.07.17 A2.07.18 +A2.07.15 A2.07.11 A2.07.12 A2.07.13 A2.07.14 A2.07.16 A2.07.17 A2.07.18 A2.07.19 +A2.07.16 A2.07.12 A2.07.13 A2.07.15 A2.07.18 A2.07.19 A2.08.13 A2.08.16 A2.08.19 +A2.07.17 A2.06.13 A2.06.16 A2.06.18 A2.06.20 A2.07.14 A2.07.15 A2.07.18 A2.07.20 +A2.07.18 A2.06.20 A2.07.14 A2.07.15 A2.07.16 A2.07.17 A2.07.19 A2.07.20 A2.07.21 +A2.07.19 A2.07.15 A2.07.16 A2.07.18 A2.07.20 A2.07.21 A2.08.16 A2.08.19 A2.08.21 +A2.07.20 A2.06.20 A2.06.22 A2.07.17 A2.07.18 A2.07.19 A2.07.21 A2.07.22 A2.07.23 +A2.07.21 A2.07.18 A2.07.19 A2.07.20 A2.07.22 A2.07.23 A2.08.19 A2.08.21 A2.08.23 +A2.07.22 A2.06.20 A2.06.22 A2.06.24 A2.07.20 A2.07.21 A2.07.23 A2.07.24 A2.07.25 +A2.07.23 A2.07.20 A2.07.21 A2.07.22 A2.07.24 A2.07.25 A2.08.21 A2.08.23 A2.08.25 +A2.07.24 A2.06.22 A2.06.24 A2.06.25 A2.06.26 A2.07.22 A2.07.23 A2.07.25 A2.07.26 +A2.07.25 A2.06.26 A2.07.22 A2.07.23 A2.07.24 A2.07.26 A2.08.23 A2.08.25 A2.08.26 +A2.07.26 A2.06.26 A2.06.28 A2.07.24 A2.07.25 A2.07.27 A2.08.25 A2.08.26 A2.08.27 +A2.07.27 A2.06.26 A2.06.28 A2.06.30 A2.07.26 A2.07.28 A2.07.29 A2.08.26 A2.08.27 A2.08.29 +A2.07.28 A2.06.28 A2.06.30 A2.06.31 A2.07.27 A2.07.29 +A2.07.29 A2.07.27 A2.07.28 A2.08.27 A2.08.29 +A2.08.00 A2.08.02 A2.08.05 A2.08.06 +A2.08.01 A2.07.02 A2.07.06 A2.08.02 A2.08.06 +A2.08.02 A2.08.00 A2.08.01 A2.08.05 A2.08.06 +A2.08.03 A2.08.04 A2.08.07 A2.08.08 A2.09.04 +A2.08.04 A2.08.03 A2.08.05 A2.08.07 A2.08.08 A2.08.09 +A2.08.05 A2.08.00 A2.08.02 A2.08.04 A2.08.06 A2.08.08 A2.08.09 A2.08.10 +A2.08.06 A2.07.02 A2.07.06 A2.07.10 A2.08.00 A2.08.01 A2.08.02 A2.08.05 A2.08.09 A2.08.10 +A2.08.07 A2.08.03 A2.08.04 A2.08.08 A2.08.11 A2.09.04 A2.09.07 A2.09.10 +A2.08.08 A2.08.03 A2.08.04 A2.08.05 A2.08.07 A2.08.09 A2.08.11 A2.08.12 A2.09.10 +A2.08.09 A2.08.04 A2.08.05 A2.08.06 A2.08.08 A2.08.10 A2.08.11 A2.08.12 A2.08.13 +A2.08.10 A2.07.06 A2.07.10 A2.07.13 A2.08.05 A2.08.06 A2.08.09 A2.08.12 A2.08.13 +A2.08.11 A2.08.07 A2.08.08 A2.08.09 A2.08.12 A2.08.14 A2.08.15 A2.09.10 A2.09.13 +A2.08.12 A2.08.08 A2.08.09 A2.08.10 A2.08.11 A2.08.13 A2.08.14 A2.08.15 A2.08.16 +A2.08.13 A2.07.10 A2.07.13 A2.07.16 A2.08.09 A2.08.10 A2.08.12 A2.08.15 A2.08.16 +A2.08.14 A2.08.11 A2.08.12 A2.08.15 A2.08.17 A2.08.18 A2.09.10 A2.09.13 A2.09.16 +A2.08.15 A2.08.11 A2.08.12 A2.08.13 A2.08.14 A2.08.16 A2.08.17 A2.08.18 A2.08.19 +A2.08.16 A2.07.13 A2.07.16 A2.07.19 A2.08.12 A2.08.13 A2.08.15 A2.08.18 A2.08.19 +A2.08.17 A2.08.14 A2.08.15 A2.08.18 A2.08.20 A2.09.13 A2.09.16 A2.09.18 A2.09.20 +A2.08.18 A2.08.14 A2.08.15 A2.08.16 A2.08.17 A2.08.19 A2.08.20 A2.08.21 A2.09.20 +A2.08.19 A2.07.16 A2.07.19 A2.07.21 A2.08.15 A2.08.16 A2.08.18 A2.08.20 A2.08.21 +A2.08.20 A2.08.17 A2.08.18 A2.08.19 A2.08.21 A2.08.22 A2.08.23 A2.09.20 A2.09.22 +A2.08.21 A2.07.19 A2.07.21 A2.07.23 A2.08.18 A2.08.19 A2.08.20 A2.08.22 A2.08.23 +A2.08.22 A2.08.20 A2.08.21 A2.08.23 A2.08.24 A2.08.25 A2.09.20 A2.09.22 A2.09.24 +A2.08.23 A2.07.21 A2.07.23 A2.07.25 A2.08.20 A2.08.21 A2.08.22 A2.08.24 A2.08.25 +A2.08.24 A2.08.22 A2.08.23 A2.08.25 A2.08.26 A2.09.22 A2.09.24 A2.09.25 A2.09.26 +A2.08.25 A2.07.23 A2.07.25 A2.07.26 A2.08.22 A2.08.23 A2.08.24 A2.08.26 A2.09.26 +A2.08.26 A2.07.25 A2.07.26 A2.07.27 A2.08.24 A2.08.25 A2.08.27 A2.09.26 A2.09.28 +A2.08.27 A2.07.26 A2.07.27 A2.07.29 A2.08.26 A2.08.28 A2.08.29 A2.09.26 A2.09.28 A2.09.30 +A2.08.28 A2.08.27 A2.08.29 A2.09.28 A2.09.30 A2.09.31 +A2.08.29 A2.07.27 A2.07.29 A2.08.27 A2.08.28 +A2.09.00 A2.09.03 A2.09.05 A2.10.01 +A2.09.01 A2.09.05 A2.09.06 +A2.09.02 A2.09.04 A2.09.06 A2.09.07 +A2.09.03 A2.09.00 A2.09.05 A2.09.08 A2.10.01 A2.10.06 +A2.09.04 A2.08.03 A2.08.07 A2.09.02 A2.09.06 A2.09.07 A2.09.10 +A2.09.05 A2.09.00 A2.09.01 A2.09.03 A2.09.06 A2.09.08 A2.09.09 A2.09.12 +A2.09.06 A2.09.01 A2.09.02 A2.09.04 A2.09.05 A2.09.07 A2.09.09 A2.09.11 +A2.09.07 A2.08.07 A2.09.02 A2.09.04 A2.09.06 A2.09.09 A2.09.10 A2.09.11 A2.09.13 +A2.09.08 A2.09.03 A2.09.05 A2.09.09 A2.09.12 A2.09.14 A2.10.06 A2.10.09 A2.10.11 +A2.09.09 A2.09.05 A2.09.06 A2.09.07 A2.09.08 A2.09.11 A2.09.12 A2.09.15 +A2.09.10 A2.08.07 A2.08.08 A2.08.11 A2.08.14 A2.09.04 A2.09.07 A2.09.11 A2.09.13 +A2.09.11 A2.09.06 A2.09.07 A2.09.09 A2.09.10 A2.09.12 A2.09.13 A2.09.15 A2.09.16 +A2.09.12 A2.09.05 A2.09.08 A2.09.09 A2.09.11 A2.09.14 A2.09.15 A2.09.17 A2.10.11 +A2.09.13 A2.08.11 A2.08.14 A2.08.17 A2.09.07 A2.09.10 A2.09.11 A2.09.15 A2.09.16 +A2.09.14 A2.09.08 A2.09.12 A2.09.15 A2.09.17 A2.09.19 A2.10.11 A2.10.14 A2.10.16 +A2.09.15 A2.09.09 A2.09.11 A2.09.12 A2.09.13 A2.09.14 A2.09.16 A2.09.17 A2.09.18 +A2.09.16 A2.08.14 A2.08.17 A2.09.11 A2.09.13 A2.09.15 A2.09.17 A2.09.18 A2.09.20 +A2.09.17 A2.09.12 A2.09.14 A2.09.15 A2.09.16 A2.09.18 A2.09.19 A2.09.21 A2.10.16 +A2.09.18 A2.08.17 A2.09.15 A2.09.16 A2.09.17 A2.09.19 A2.09.20 A2.09.21 A2.09.22 +A2.09.19 A2.09.14 A2.09.17 A2.09.18 A2.09.21 A2.09.23 A2.10.16 A2.10.18 A2.10.20 +A2.09.20 A2.08.17 A2.08.18 A2.08.20 A2.08.22 A2.09.16 A2.09.18 A2.09.21 A2.09.22 +A2.09.21 A2.09.17 A2.09.18 A2.09.19 A2.09.20 A2.09.22 A2.09.23 A2.09.24 A2.10.20 +A2.09.22 A2.08.20 A2.08.22 A2.08.24 A2.09.18 A2.09.20 A2.09.21 A2.09.23 A2.09.24 +A2.09.23 A2.09.19 A2.09.21 A2.09.22 A2.09.24 A2.09.25 A2.10.20 A2.10.22 A2.10.24 +A2.09.24 A2.08.22 A2.08.24 A2.09.21 A2.09.22 A2.09.23 A2.09.25 A2.09.26 A2.10.24 +A2.09.25 A2.08.24 A2.09.23 A2.09.24 A2.09.26 A2.09.27 A2.09.28 A2.10.24 A2.10.25 +A2.09.26 A2.08.24 A2.08.25 A2.08.26 A2.08.27 A2.09.24 A2.09.25 A2.09.27 A2.09.28 +A2.09.27 A2.09.25 A2.09.26 A2.09.28 A2.10.24 A2.10.25 A2.10.26 A2.10.27 A2.10.29 +A2.09.28 A2.08.26 A2.08.27 A2.08.28 A2.09.25 A2.09.26 A2.09.27 A2.09.29 A2.09.30 A2.10.27 A2.10.29 +A2.09.29 A2.09.28 A2.09.30 A2.09.31 A2.10.29 A2.10.30 +A2.09.30 A2.08.27 A2.08.28 A2.09.28 A2.09.29 A2.09.31 +A2.09.31 A2.08.28 A2.09.29 A2.09.30 A2.10.29 A2.10.30 +A2.10.00 A2.10.02 A2.10.07 A2.10.08 +A2.10.01 A2.09.00 A2.09.03 A2.10.06 +A2.10.02 A2.10.00 A2.10.04 A2.10.07 A2.10.08 A2.11.01 +A2.10.03 A2.10.05 A2.10.06 A2.10.09 +A2.10.04 A2.10.02 A2.10.08 A2.11.01 A2.11.06 +A2.10.05 A2.10.03 A2.10.07 A2.10.09 A2.10.10 +A2.10.06 A2.09.03 A2.09.08 A2.10.01 A2.10.03 A2.10.09 A2.10.11 +A2.10.07 A2.10.00 A2.10.02 A2.10.05 A2.10.08 A2.10.09 A2.10.10 A2.10.12 +A2.10.08 A2.10.00 A2.10.02 A2.10.04 A2.10.07 A2.10.10 A2.10.12 A2.10.13 A2.11.01 A2.11.06 +A2.10.09 A2.09.08 A2.10.03 A2.10.05 A2.10.06 A2.10.07 A2.10.10 A2.10.11 A2.10.14 +A2.10.10 A2.10.05 A2.10.07 A2.10.08 A2.10.09 A2.10.11 A2.10.12 A2.10.14 A2.10.15 +A2.10.11 A2.09.08 A2.09.12 A2.09.14 A2.10.06 A2.10.09 A2.10.10 A2.10.14 A2.10.16 +A2.10.12 A2.10.07 A2.10.08 A2.10.10 A2.10.13 A2.10.14 A2.10.15 A2.10.17 A2.11.06 +A2.10.13 A2.10.08 A2.10.12 A2.10.15 A2.10.17 A2.11.06 A2.11.07 A2.11.11 A2.11.15 +A2.10.14 A2.09.14 A2.10.09 A2.10.10 A2.10.11 A2.10.12 A2.10.15 A2.10.16 A2.10.18 +A2.10.15 A2.10.10 A2.10.12 A2.10.13 A2.10.14 A2.10.16 A2.10.17 A2.10.18 A2.10.19 +A2.10.16 A2.09.14 A2.09.17 A2.09.19 A2.10.11 A2.10.14 A2.10.15 A2.10.18 A2.10.20 +A2.10.17 A2.10.12 A2.10.13 A2.10.15 A2.10.18 A2.10.19 A2.10.21 A2.11.11 A2.11.15 +A2.10.18 A2.09.19 A2.10.14 A2.10.15 A2.10.16 A2.10.17 A2.10.19 A2.10.20 A2.10.22 +A2.10.19 A2.10.15 A2.10.17 A2.10.18 A2.10.20 A2.10.21 A2.10.22 A2.10.23 A2.11.15 +A2.10.20 A2.09.19 A2.09.21 A2.09.23 A2.10.16 A2.10.18 A2.10.19 A2.10.22 A2.10.24 +A2.10.21 A2.10.17 A2.10.19 A2.10.22 A2.10.23 A2.11.15 A2.11.16 A2.11.19 A2.11.22 +A2.10.22 A2.09.23 A2.10.18 A2.10.19 A2.10.20 A2.10.21 A2.10.23 A2.10.24 A2.10.25 +A2.10.23 A2.10.19 A2.10.21 A2.10.22 A2.10.24 A2.10.25 A2.10.26 A2.11.19 A2.11.22 +A2.10.24 A2.09.23 A2.09.24 A2.09.25 A2.09.27 A2.10.20 A2.10.22 A2.10.23 A2.10.25 +A2.10.25 A2.09.25 A2.09.27 A2.10.22 A2.10.23 A2.10.24 A2.10.26 A2.10.27 A2.11.22 +A2.10.26 A2.09.27 A2.10.23 A2.10.25 A2.10.27 A2.10.28 A2.11.22 A2.11.23 A2.11.25 +A2.10.27 A2.09.27 A2.09.28 A2.10.25 A2.10.26 A2.10.28 A2.10.29 A2.10.30 A2.11.25 +A2.10.28 A2.10.26 A2.10.27 A2.10.30 A2.10.31 A2.11.25 A2.11.26 A2.11.27 A2.11.29 +A2.10.29 A2.09.27 A2.09.28 A2.09.29 A2.09.31 A2.10.27 A2.10.30 +A2.10.30 A2.09.29 A2.09.31 A2.10.27 A2.10.28 A2.10.29 A2.10.31 +A2.10.31 A2.10.28 A2.10.30 A2.11.29 +A2.11.00 A2.11.03 A2.11.04 A2.11.05 A2.12.00 A2.12.05 +A2.11.01 A2.10.02 A2.10.04 A2.10.08 A2.11.02 A2.11.06 A2.11.07 +A2.11.02 A2.11.01 A2.11.03 A2.11.06 A2.11.07 A2.11.08 +A2.11.03 A2.11.00 A2.11.02 A2.11.04 A2.11.07 A2.11.08 A2.11.09 +A2.11.04 A2.11.00 A2.11.03 A2.11.05 A2.11.08 A2.11.09 A2.11.10 +A2.11.05 A2.11.00 A2.11.04 A2.11.09 A2.11.10 A2.12.00 A2.12.05 A2.12.10 +A2.11.06 A2.10.04 A2.10.08 A2.10.12 A2.10.13 A2.11.01 A2.11.02 A2.11.07 A2.11.11 +A2.11.07 A2.10.13 A2.11.01 A2.11.02 A2.11.03 A2.11.06 A2.11.08 A2.11.11 A2.11.12 +A2.11.08 A2.11.02 A2.11.03 A2.11.04 A2.11.07 A2.11.09 A2.11.11 A2.11.12 A2.11.13 +A2.11.09 A2.11.03 A2.11.04 A2.11.05 A2.11.08 A2.11.10 A2.11.12 A2.11.13 A2.11.14 +A2.11.10 A2.11.04 A2.11.05 A2.11.09 A2.11.13 A2.11.14 A2.12.05 A2.12.10 A2.12.14 +A2.11.11 A2.10.13 A2.10.17 A2.11.06 A2.11.07 A2.11.08 A2.11.12 A2.11.15 A2.11.16 +A2.11.12 A2.11.07 A2.11.08 A2.11.09 A2.11.11 A2.11.13 A2.11.15 A2.11.16 A2.11.17 +A2.11.13 A2.11.08 A2.11.09 A2.11.10 A2.11.12 A2.11.14 A2.11.16 A2.11.17 A2.11.18 +A2.11.14 A2.11.09 A2.11.10 A2.11.13 A2.11.17 A2.11.18 A2.12.10 A2.12.14 A2.12.18 +A2.11.15 A2.10.13 A2.10.17 A2.10.19 A2.10.21 A2.11.11 A2.11.12 A2.11.16 A2.11.19 +A2.11.16 A2.10.21 A2.11.11 A2.11.12 A2.11.13 A2.11.15 A2.11.17 A2.11.19 A2.11.20 +A2.11.17 A2.11.12 A2.11.13 A2.11.14 A2.11.16 A2.11.18 A2.11.19 A2.11.20 A2.11.21 +A2.11.18 A2.11.13 A2.11.14 A2.11.17 A2.11.20 A2.11.21 A2.12.14 A2.12.18 A2.12.21 +A2.11.19 A2.10.21 A2.10.23 A2.11.15 A2.11.16 A2.11.17 A2.11.20 A2.11.22 A2.11.23 +A2.11.20 A2.11.16 A2.11.17 A2.11.18 A2.11.19 A2.11.21 A2.11.22 A2.11.23 A2.11.24 +A2.11.21 A2.11.17 A2.11.18 A2.11.20 A2.11.23 A2.11.24 A2.12.18 A2.12.21 A2.12.24 +A2.11.22 A2.10.21 A2.10.23 A2.10.25 A2.10.26 A2.11.19 A2.11.20 A2.11.23 A2.11.25 +A2.11.23 A2.10.26 A2.11.19 A2.11.20 A2.11.21 A2.11.22 A2.11.24 A2.11.25 A2.11.26 +A2.11.24 A2.11.20 A2.11.21 A2.11.23 A2.11.25 A2.11.26 A2.12.21 A2.12.24 A2.12.26 +A2.11.25 A2.10.26 A2.10.27 A2.10.28 A2.11.22 A2.11.23 A2.11.24 A2.11.26 A2.11.27 +A2.11.26 A2.10.28 A2.11.23 A2.11.24 A2.11.25 A2.11.27 A2.11.28 A2.12.24 A2.12.26 A2.12.28 +A2.11.27 A2.10.28 A2.11.25 A2.11.26 A2.11.28 A2.11.29 A2.11.30 +A2.11.28 A2.11.26 A2.11.27 A2.11.29 A2.11.30 A2.12.26 A2.12.28 A2.12.30 +A2.11.29 A2.10.28 A2.10.31 A2.11.27 A2.11.28 A2.11.30 +A2.11.30 A2.11.27 A2.11.28 A2.11.29 A2.12.28 A2.12.30 +A2.12.00 A2.11.00 A2.11.05 A2.12.03 A2.12.04 A2.12.05 +A2.12.01 A2.12.02 A2.12.06 A2.12.07 A2.13.02 A2.13.04 A2.13.08 +A2.12.02 A2.12.01 A2.12.03 A2.12.06 A2.12.07 A2.12.08 +A2.12.03 A2.12.00 A2.12.02 A2.12.04 A2.12.07 A2.12.08 A2.12.09 +A2.12.04 A2.12.00 A2.12.03 A2.12.05 A2.12.08 A2.12.09 A2.12.10 +A2.12.05 A2.11.00 A2.11.05 A2.11.10 A2.12.00 A2.12.04 A2.12.09 A2.12.10 +A2.12.06 A2.12.01 A2.12.02 A2.12.07 A2.12.11 A2.13.04 A2.13.08 A2.13.12 A2.13.13 +A2.12.07 A2.12.01 A2.12.02 A2.12.03 A2.12.06 A2.12.08 A2.12.11 A2.12.12 A2.13.13 +A2.12.08 A2.12.02 A2.12.03 A2.12.04 A2.12.07 A2.12.09 A2.12.11 A2.12.12 A2.12.13 +A2.12.09 A2.12.03 A2.12.04 A2.12.05 A2.12.08 A2.12.10 A2.12.12 A2.12.13 A2.12.14 +A2.12.10 A2.11.05 A2.11.10 A2.11.14 A2.12.04 A2.12.05 A2.12.09 A2.12.13 A2.12.14 +A2.12.11 A2.12.06 A2.12.07 A2.12.08 A2.12.12 A2.12.15 A2.12.16 A2.13.13 A2.13.17 +A2.12.12 A2.12.07 A2.12.08 A2.12.09 A2.12.11 A2.12.13 A2.12.15 A2.12.16 A2.12.17 +A2.12.13 A2.12.08 A2.12.09 A2.12.10 A2.12.12 A2.12.14 A2.12.16 A2.12.17 A2.12.18 +A2.12.14 A2.11.10 A2.11.14 A2.11.18 A2.12.09 A2.12.10 A2.12.13 A2.12.17 A2.12.18 +A2.12.15 A2.12.11 A2.12.12 A2.12.16 A2.12.19 A2.13.13 A2.13.17 A2.13.19 A2.13.21 +A2.12.16 A2.12.11 A2.12.12 A2.12.13 A2.12.15 A2.12.17 A2.12.19 A2.12.20 A2.13.21 +A2.12.17 A2.12.12 A2.12.13 A2.12.14 A2.12.16 A2.12.18 A2.12.19 A2.12.20 A2.12.21 +A2.12.18 A2.11.14 A2.11.18 A2.11.21 A2.12.13 A2.12.14 A2.12.17 A2.12.20 A2.12.21 +A2.12.19 A2.12.15 A2.12.16 A2.12.17 A2.12.20 A2.12.22 A2.12.23 A2.13.21 A2.13.23 +A2.12.20 A2.12.16 A2.12.17 A2.12.18 A2.12.19 A2.12.21 A2.12.22 A2.12.23 A2.12.24 +A2.12.21 A2.11.18 A2.11.21 A2.11.24 A2.12.17 A2.12.18 A2.12.20 A2.12.23 A2.12.24 +A2.12.22 A2.12.19 A2.12.20 A2.12.23 A2.12.25 A2.13.21 A2.13.23 A2.13.25 A2.13.26 +A2.12.23 A2.12.19 A2.12.20 A2.12.21 A2.12.22 A2.12.24 A2.12.25 A2.12.26 A2.13.26 +A2.12.24 A2.11.21 A2.11.24 A2.11.26 A2.12.20 A2.12.21 A2.12.23 A2.12.25 A2.12.26 +A2.12.25 A2.12.22 A2.12.23 A2.12.24 A2.12.26 A2.12.27 A2.13.26 A2.13.27 A2.13.28 +A2.12.26 A2.11.24 A2.11.26 A2.11.28 A2.12.23 A2.12.24 A2.12.25 A2.12.27 A2.12.28 A2.13.28 +A2.12.27 A2.12.25 A2.12.26 A2.12.28 A2.12.29 A2.12.30 A2.13.28 +A2.12.28 A2.11.26 A2.11.28 A2.11.30 A2.12.26 A2.12.27 A2.12.29 A2.12.30 +A2.12.29 A2.12.27 A2.12.28 A2.12.30 A2.13.28 A2.13.31 +A2.12.30 A2.11.28 A2.11.30 A2.12.27 A2.12.28 A2.12.29 A2.13.31 +A2.13.00 A2.13.03 A2.13.06 A2.14.00 +A2.13.01 A2.13.02 A2.13.07 A2.13.08 +A2.13.02 A2.12.01 A2.13.01 A2.13.04 A2.13.07 A2.13.08 +A2.13.03 A2.13.00 A2.13.05 A2.13.06 A2.13.09 +A2.13.04 A2.12.01 A2.12.06 A2.13.02 A2.13.08 +A2.13.05 A2.13.03 A2.13.07 A2.13.09 A2.13.10 +A2.13.06 A2.13.00 A2.13.03 A2.13.09 A2.13.11 A2.14.00 A2.14.05 A2.14.08 +A2.13.07 A2.13.01 A2.13.02 A2.13.05 A2.13.08 A2.13.09 A2.13.10 A2.13.12 +A2.13.08 A2.12.01 A2.12.06 A2.13.01 A2.13.02 A2.13.04 A2.13.07 A2.13.10 A2.13.12 A2.13.13 +A2.13.09 A2.13.03 A2.13.05 A2.13.06 A2.13.07 A2.13.10 A2.13.11 A2.13.14 A2.14.08 +A2.13.10 A2.13.05 A2.13.07 A2.13.08 A2.13.09 A2.13.11 A2.13.12 A2.13.14 A2.13.15 +A2.13.11 A2.13.06 A2.13.09 A2.13.10 A2.13.14 A2.13.16 A2.14.08 A2.14.12 A2.14.14 +A2.13.12 A2.12.06 A2.13.07 A2.13.08 A2.13.10 A2.13.13 A2.13.14 A2.13.15 A2.13.17 +A2.13.13 A2.12.06 A2.12.07 A2.12.11 A2.12.15 A2.13.08 A2.13.12 A2.13.15 A2.13.17 +A2.13.14 A2.13.09 A2.13.10 A2.13.11 A2.13.12 A2.13.15 A2.13.16 A2.13.18 A2.14.14 +A2.13.15 A2.13.10 A2.13.12 A2.13.13 A2.13.14 A2.13.16 A2.13.17 A2.13.18 A2.13.19 +A2.13.16 A2.13.11 A2.13.14 A2.13.15 A2.13.18 A2.13.20 A2.14.14 A2.14.17 A2.14.19 +A2.13.17 A2.12.11 A2.12.15 A2.13.12 A2.13.13 A2.13.15 A2.13.18 A2.13.19 A2.13.21 +A2.13.18 A2.13.14 A2.13.15 A2.13.16 A2.13.17 A2.13.19 A2.13.20 A2.13.22 A2.14.19 +A2.13.19 A2.12.15 A2.13.15 A2.13.17 A2.13.18 A2.13.20 A2.13.21 A2.13.22 A2.13.23 +A2.13.20 A2.13.16 A2.13.18 A2.13.19 A2.13.22 A2.13.24 A2.14.19 A2.14.21 A2.14.23 +A2.13.21 A2.12.15 A2.12.16 A2.12.19 A2.12.22 A2.13.17 A2.13.19 A2.13.22 A2.13.23 +A2.13.22 A2.13.18 A2.13.19 A2.13.20 A2.13.21 A2.13.23 A2.13.24 A2.13.25 A2.14.23 +A2.13.23 A2.12.19 A2.12.22 A2.13.19 A2.13.21 A2.13.22 A2.13.24 A2.13.25 A2.13.26 +A2.13.24 A2.13.20 A2.13.22 A2.13.23 A2.13.25 A2.14.23 A2.14.24 A2.14.25 A2.14.27 +A2.13.25 A2.12.22 A2.13.22 A2.13.23 A2.13.24 A2.13.26 A2.13.27 A2.14.25 A2.14.27 +A2.13.26 A2.12.22 A2.12.23 A2.12.25 A2.13.23 A2.13.25 A2.13.27 A2.13.28 A2.14.27 +A2.13.27 A2.12.25 A2.13.25 A2.13.26 A2.13.28 A2.13.29 A2.13.30 A2.14.27 A2.14.28 A2.14.29 +A2.13.28 A2.12.25 A2.12.26 A2.12.27 A2.12.29 A2.13.26 A2.13.27 A2.13.29 A2.13.30 A2.13.31 +A2.13.29 A2.13.27 A2.13.28 A2.13.30 A2.14.29 A2.14.30 A2.14.31 +A2.13.30 A2.13.27 A2.13.28 A2.13.29 A2.13.31 A2.14.31 +A2.13.31 A2.12.29 A2.12.30 A2.13.28 A2.13.30 +A2.14.00 A2.13.00 A2.13.06 A2.14.05 +A2.14.01 A2.14.03 A2.14.05 +A2.14.02 A2.14.04 A2.14.06 A2.14.07 +A2.14.03 A2.14.01 A2.14.05 A2.14.06 A2.14.09 +A2.14.04 A2.14.02 A2.14.06 A2.14.07 A2.14.10 A2.15.03 A2.15.07 +A2.14.05 A2.13.06 A2.14.00 A2.14.01 A2.14.03 A2.14.06 A2.14.08 A2.14.09 A2.14.12 +A2.14.06 A2.14.02 A2.14.03 A2.14.04 A2.14.05 A2.14.07 A2.14.09 A2.14.11 +A2.14.07 A2.14.02 A2.14.04 A2.14.06 A2.14.09 A2.14.10 A2.14.11 A2.14.13 A2.15.07 +A2.14.08 A2.13.06 A2.13.09 A2.13.11 A2.14.05 A2.14.09 A2.14.12 A2.14.14 +A2.14.09 A2.14.03 A2.14.05 A2.14.06 A2.14.07 A2.14.08 A2.14.11 A2.14.12 A2.14.15 +A2.14.10 A2.14.04 A2.14.07 A2.14.11 A2.14.13 A2.15.07 A2.15.08 A2.15.11 A2.15.14 +A2.14.11 A2.14.06 A2.14.07 A2.14.09 A2.14.10 A2.14.12 A2.14.13 A2.14.15 A2.14.16 +A2.14.12 A2.13.11 A2.14.05 A2.14.08 A2.14.09 A2.14.11 A2.14.14 A2.14.15 A2.14.17 +A2.14.13 A2.14.07 A2.14.10 A2.14.11 A2.14.15 A2.14.16 A2.15.11 A2.15.14 A2.15.17 +A2.14.14 A2.13.11 A2.13.14 A2.13.16 A2.14.08 A2.14.12 A2.14.15 A2.14.17 A2.14.19 +A2.14.15 A2.14.09 A2.14.11 A2.14.12 A2.14.13 A2.14.14 A2.14.16 A2.14.17 A2.14.18 +A2.14.16 A2.14.11 A2.14.13 A2.14.15 A2.14.17 A2.14.18 A2.14.20 A2.15.14 A2.15.17 +A2.14.17 A2.13.16 A2.14.12 A2.14.14 A2.14.15 A2.14.16 A2.14.18 A2.14.19 A2.14.21 +A2.14.18 A2.14.15 A2.14.16 A2.14.17 A2.14.19 A2.14.20 A2.14.21 A2.14.22 A2.15.17 +A2.14.19 A2.13.16 A2.13.18 A2.13.20 A2.14.14 A2.14.17 A2.14.18 A2.14.21 A2.14.23 +A2.14.20 A2.14.16 A2.14.18 A2.14.21 A2.14.22 A2.15.17 A2.15.18 A2.15.20 A2.15.22 +A2.14.21 A2.13.20 A2.14.17 A2.14.18 A2.14.19 A2.14.20 A2.14.22 A2.14.23 A2.14.24 +A2.14.22 A2.14.18 A2.14.20 A2.14.21 A2.14.23 A2.14.24 A2.15.20 A2.15.22 A2.15.24 +A2.14.23 A2.13.20 A2.13.22 A2.13.24 A2.14.19 A2.14.21 A2.14.22 A2.14.24 A2.14.25 +A2.14.24 A2.13.24 A2.14.21 A2.14.22 A2.14.23 A2.14.25 A2.14.26 A2.15.22 A2.15.24 +A2.14.25 A2.13.24 A2.13.25 A2.14.23 A2.14.24 A2.14.26 A2.14.27 A2.14.28 A2.15.24 +A2.14.26 A2.14.24 A2.14.25 A2.14.27 A2.14.28 A2.15.24 A2.15.25 A2.15.26 A2.15.27 +A2.14.27 A2.13.24 A2.13.25 A2.13.26 A2.13.27 A2.14.25 A2.14.26 A2.14.28 A2.14.29 +A2.14.28 A2.13.27 A2.14.25 A2.14.26 A2.14.27 A2.14.29 A2.14.30 A2.15.26 A2.15.27 A2.15.28 +A2.14.29 A2.13.27 A2.13.29 A2.14.27 A2.14.28 A2.14.30 A2.14.31 +A2.14.30 A2.13.29 A2.14.28 A2.14.29 A2.14.31 A2.15.27 A2.15.28 +A2.14.31 A2.13.29 A2.13.30 A2.14.29 A2.14.30 A2.15.28 +A2.15.00 A2.00.01 A2.00.06 A2.15.01 A2.15.06 +A2.15.01 A2.15.00 A2.15.02 A2.15.05 A2.15.06 +A2.15.02 A2.15.01 A2.15.05 A2.15.06 +A2.15.03 A2.14.04 A2.15.04 A2.15.07 A2.15.08 +A2.15.04 A2.15.03 A2.15.05 A2.15.07 A2.15.08 A2.15.09 +A2.15.05 A2.15.01 A2.15.02 A2.15.04 A2.15.06 A2.15.08 A2.15.09 A2.15.10 +A2.15.06 A2.00.01 A2.00.06 A2.00.10 A2.15.00 A2.15.01 A2.15.02 A2.15.05 A2.15.09 A2.15.10 +A2.15.07 A2.14.04 A2.14.07 A2.14.10 A2.15.03 A2.15.04 A2.15.08 A2.15.11 +A2.15.08 A2.14.10 A2.15.03 A2.15.04 A2.15.05 A2.15.07 A2.15.09 A2.15.11 A2.15.12 +A2.15.09 A2.15.04 A2.15.05 A2.15.06 A2.15.08 A2.15.10 A2.15.11 A2.15.12 A2.15.13 +A2.15.10 A2.00.06 A2.00.10 A2.00.13 A2.15.05 A2.15.06 A2.15.09 A2.15.12 A2.15.13 +A2.15.11 A2.14.10 A2.14.13 A2.15.07 A2.15.08 A2.15.09 A2.15.12 A2.15.14 A2.15.15 +A2.15.12 A2.15.08 A2.15.09 A2.15.10 A2.15.11 A2.15.13 A2.15.14 A2.15.15 A2.15.16 +A2.15.13 A2.00.10 A2.00.13 A2.00.16 A2.15.09 A2.15.10 A2.15.12 A2.15.15 A2.15.16 +A2.15.14 A2.14.10 A2.14.13 A2.14.16 A2.15.11 A2.15.12 A2.15.15 A2.15.17 A2.15.18 +A2.15.15 A2.15.11 A2.15.12 A2.15.13 A2.15.14 A2.15.16 A2.15.17 A2.15.18 A2.15.19 +A2.15.16 A2.00.13 A2.00.16 A2.00.19 A2.15.12 A2.15.13 A2.15.15 A2.15.18 A2.15.19 +A2.15.17 A2.14.13 A2.14.16 A2.14.18 A2.14.20 A2.15.14 A2.15.15 A2.15.18 A2.15.20 +A2.15.18 A2.14.20 A2.15.14 A2.15.15 A2.15.16 A2.15.17 A2.15.19 A2.15.20 A2.15.21 +A2.15.19 A2.00.16 A2.00.19 A2.00.21 A2.15.15 A2.15.16 A2.15.18 A2.15.20 A2.15.21 +A2.15.20 A2.14.20 A2.14.22 A2.15.17 A2.15.18 A2.15.19 A2.15.21 A2.15.22 A2.15.23 +A2.15.21 A2.00.19 A2.00.21 A2.00.23 A2.15.18 A2.15.19 A2.15.20 A2.15.22 A2.15.23 +A2.15.22 A2.14.20 A2.14.22 A2.14.24 A2.15.20 A2.15.21 A2.15.23 A2.15.24 A2.15.25 +A2.15.23 A2.00.21 A2.00.23 A2.00.25 A2.15.20 A2.15.21 A2.15.22 A2.15.24 A2.15.25 +A2.15.24 A2.14.22 A2.14.24 A2.14.25 A2.14.26 A2.15.22 A2.15.23 A2.15.25 A2.15.26 +A2.15.25 A2.00.23 A2.00.25 A2.00.26 A2.14.26 A2.15.22 A2.15.23 A2.15.24 A2.15.26 +A2.15.26 A2.00.25 A2.00.26 A2.00.27 A2.14.26 A2.14.28 A2.15.24 A2.15.25 A2.15.27 +A2.15.27 A2.00.26 A2.00.27 A2.00.29 A2.14.26 A2.14.28 A2.14.30 A2.15.26 A2.15.28 A2.15.29 +A2.15.28 A2.14.28 A2.14.30 A2.14.31 A2.15.27 A2.15.29 +A2.15.29 A2.00.27 A2.00.29 A2.15.27 A2.15.28 +A3.00.00 A3.00.02 A3.00.03 A3.15.00 A3.15.03 +A3.00.01 A3.00.02 A3.00.04 A3.00.05 A3.01.00 A3.01.04 +A3.00.02 A3.00.00 A3.00.01 A3.00.03 A3.00.04 A3.00.05 A3.00.06 +A3.00.03 A3.00.00 A3.00.02 A3.00.05 A3.00.06 A3.15.00 A3.15.03 A3.15.06 +A3.00.04 A3.00.01 A3.00.02 A3.00.05 A3.00.07 A3.00.08 A3.01.04 A3.01.06 +A3.00.05 A3.00.01 A3.00.02 A3.00.03 A3.00.04 A3.00.06 A3.00.07 A3.00.08 A3.00.09 +A3.00.06 A3.00.02 A3.00.03 A3.00.05 A3.00.08 A3.00.09 A3.15.03 A3.15.06 A3.15.09 +A3.00.07 A3.00.04 A3.00.05 A3.00.08 A3.00.10 A3.01.04 A3.01.06 A3.01.08 A3.01.09 +A3.00.08 A3.00.04 A3.00.05 A3.00.06 A3.00.07 A3.00.09 A3.00.10 A3.00.11 A3.01.09 +A3.00.09 A3.00.05 A3.00.06 A3.00.08 A3.00.10 A3.00.11 A3.15.06 A3.15.09 A3.15.11 +A3.00.10 A3.00.07 A3.00.08 A3.00.09 A3.00.11 A3.00.12 A3.00.13 A3.01.09 A3.01.11 +A3.00.11 A3.00.08 A3.00.09 A3.00.10 A3.00.12 A3.00.13 A3.15.09 A3.15.11 A3.15.13 +A3.00.12 A3.00.10 A3.00.11 A3.00.13 A3.00.14 A3.01.09 A3.01.11 A3.01.12 A3.01.13 +A3.00.13 A3.00.10 A3.00.11 A3.00.12 A3.00.14 A3.01.13 A3.15.11 A3.15.13 A3.15.14 +A3.00.14 A3.00.12 A3.00.13 A3.00.15 A3.01.13 A3.01.15 A3.15.13 A3.15.14 A3.15.15 +A3.00.15 A3.00.14 A3.01.15 A3.15.14 A3.15.15 +A3.01.00 A3.00.01 A3.01.02 A3.01.04 +A3.01.01 A3.01.02 A3.01.03 A3.01.05 A3.02.00 +A3.01.02 A3.01.00 A3.01.01 A3.01.04 A3.01.05 A3.01.06 +A3.01.03 A3.01.01 A3.01.05 A3.01.07 A3.02.00 A3.02.03 A3.02.05 +A3.01.04 A3.00.01 A3.00.04 A3.00.07 A3.01.00 A3.01.02 A3.01.05 A3.01.06 +A3.01.05 A3.01.01 A3.01.02 A3.01.03 A3.01.04 A3.01.06 A3.01.07 A3.01.08 A3.02.05 +A3.01.06 A3.00.04 A3.00.07 A3.01.02 A3.01.04 A3.01.05 A3.01.07 A3.01.08 A3.01.09 +A3.01.07 A3.01.03 A3.01.05 A3.01.06 A3.01.08 A3.01.10 A3.02.05 A3.02.07 A3.02.09 +A3.01.08 A3.00.07 A3.01.05 A3.01.06 A3.01.07 A3.01.09 A3.01.10 A3.01.11 A3.02.09 +A3.01.09 A3.00.07 A3.00.08 A3.00.10 A3.00.12 A3.01.06 A3.01.08 A3.01.10 A3.01.11 +A3.01.10 A3.01.07 A3.01.08 A3.01.09 A3.01.11 A3.01.12 A3.02.09 A3.02.10 A3.02.11 +A3.01.11 A3.00.10 A3.00.12 A3.01.08 A3.01.09 A3.01.10 A3.01.12 A3.01.13 A3.02.11 +A3.01.12 A3.00.12 A3.01.10 A3.01.11 A3.01.13 A3.01.14 A3.02.11 A3.02.12 A3.02.13 +A3.01.13 A3.00.12 A3.00.13 A3.00.14 A3.01.11 A3.01.12 A3.01.14 A3.01.15 A3.02.13 +A3.01.14 A3.01.12 A3.01.13 A3.01.15 A3.02.13 A3.02.14 +A3.01.15 A3.00.14 A3.00.15 A3.01.13 A3.01.14 A3.02.14 +A3.02.00 A3.01.01 A3.01.03 A3.02.02 A3.02.03 A3.02.05 +A3.02.01 A3.02.02 A3.03.02 A3.03.05 +A3.02.02 A3.02.00 A3.02.01 A3.02.03 A3.02.04 A3.02.06 A3.03.05 +A3.02.03 A3.01.03 A3.02.00 A3.02.02 A3.02.04 A3.02.05 A3.02.07 +A3.02.04 A3.02.02 A3.02.03 A3.02.05 A3.02.06 A3.02.07 A3.02.08 A3.03.05 +A3.02.05 A3.01.03 A3.01.05 A3.01.07 A3.02.00 A3.02.03 A3.02.04 A3.02.07 A3.02.09 +A3.02.06 A3.02.02 A3.02.04 A3.02.07 A3.02.08 A3.03.05 A3.03.06 A3.03.08 A3.03.10 +A3.02.07 A3.01.07 A3.02.03 A3.02.04 A3.02.05 A3.02.06 A3.02.08 A3.02.09 A3.02.10 +A3.02.08 A3.02.04 A3.02.06 A3.02.07 A3.02.09 A3.02.10 A3.03.08 A3.03.10 A3.03.12 +A3.02.09 A3.01.07 A3.01.08 A3.01.10 A3.02.05 A3.02.07 A3.02.08 A3.02.10 A3.02.11 +A3.02.10 A3.01.10 A3.02.07 A3.02.08 A3.02.09 A3.02.11 A3.02.12 A3.03.10 A3.03.12 +A3.02.11 A3.01.10 A3.01.11 A3.01.12 A3.02.09 A3.02.10 A3.02.12 A3.02.13 A3.03.12 +A3.02.12 A3.01.12 A3.02.10 A3.02.11 A3.02.13 A3.03.12 A3.03.13 A3.03.14 A3.03.15 +A3.02.13 A3.01.12 A3.01.13 A3.01.14 A3.02.11 A3.02.12 A3.02.14 A3.02.15 A3.03.14 A3.03.15 +A3.02.14 A3.01.14 A3.01.15 A3.02.13 A3.02.15 +A3.02.15 A3.02.13 A3.02.14 A3.03.15 +A3.03.00 A3.03.01 A3.03.03 A3.03.04 +A3.03.01 A3.03.00 A3.03.04 A3.04.01 A3.04.04 +A3.03.02 A3.02.01 A3.03.03 A3.03.05 A3.03.06 +A3.03.03 A3.03.00 A3.03.02 A3.03.04 A3.03.05 A3.03.06 A3.03.07 +A3.03.04 A3.03.00 A3.03.01 A3.03.03 A3.03.06 A3.03.07 A3.04.01 A3.04.04 A3.04.07 +A3.03.05 A3.02.01 A3.02.02 A3.02.04 A3.02.06 A3.03.02 A3.03.03 A3.03.06 A3.03.08 +A3.03.06 A3.02.06 A3.03.02 A3.03.03 A3.03.04 A3.03.05 A3.03.07 A3.03.08 A3.03.09 +A3.03.07 A3.03.03 A3.03.04 A3.03.06 A3.03.08 A3.03.09 A3.04.04 A3.04.07 A3.04.09 +A3.03.08 A3.02.06 A3.02.08 A3.03.05 A3.03.06 A3.03.07 A3.03.09 A3.03.10 A3.03.11 +A3.03.09 A3.03.06 A3.03.07 A3.03.08 A3.03.10 A3.03.11 A3.04.07 A3.04.09 A3.04.11 +A3.03.10 A3.02.06 A3.02.08 A3.02.10 A3.03.08 A3.03.09 A3.03.11 A3.03.12 A3.03.13 +A3.03.11 A3.03.08 A3.03.09 A3.03.10 A3.03.12 A3.03.13 A3.04.09 A3.04.11 A3.04.13 +A3.03.12 A3.02.08 A3.02.10 A3.02.11 A3.02.12 A3.03.10 A3.03.11 A3.03.13 A3.03.14 +A3.03.13 A3.02.12 A3.03.10 A3.03.11 A3.03.12 A3.03.14 A3.04.11 A3.04.13 A3.04.14 +A3.03.14 A3.02.12 A3.02.13 A3.03.12 A3.03.13 A3.03.15 A3.04.13 A3.04.14 A3.04.15 +A3.03.15 A3.02.12 A3.02.13 A3.02.15 A3.03.14 A3.04.14 A3.04.15 +A3.04.00 A3.04.01 A3.04.03 A3.04.04 +A3.04.01 A3.03.01 A3.03.04 A3.04.00 A3.04.04 +A3.04.02 A3.04.03 A3.04.05 A3.04.06 A3.05.02 +A3.04.03 A3.04.00 A3.04.02 A3.04.04 A3.04.05 A3.04.06 A3.04.07 +A3.04.04 A3.03.01 A3.03.04 A3.03.07 A3.04.00 A3.04.01 A3.04.03 A3.04.06 A3.04.07 +A3.04.05 A3.04.02 A3.04.03 A3.04.06 A3.04.08 A3.05.02 A3.05.04 A3.05.06 +A3.04.06 A3.04.02 A3.04.03 A3.04.04 A3.04.05 A3.04.07 A3.04.08 A3.04.09 A3.05.06 +A3.04.07 A3.03.04 A3.03.07 A3.03.09 A3.04.03 A3.04.04 A3.04.06 A3.04.08 A3.04.09 +A3.04.08 A3.04.05 A3.04.06 A3.04.07 A3.04.09 A3.04.10 A3.04.11 A3.05.06 A3.05.08 +A3.04.09 A3.03.07 A3.03.09 A3.03.11 A3.04.06 A3.04.07 A3.04.08 A3.04.10 A3.04.11 +A3.04.10 A3.04.08 A3.04.09 A3.04.11 A3.04.12 A3.04.13 A3.05.06 A3.05.08 A3.05.10 +A3.04.11 A3.03.09 A3.03.11 A3.03.13 A3.04.08 A3.04.09 A3.04.10 A3.04.12 A3.04.13 +A3.04.12 A3.04.10 A3.04.11 A3.04.13 A3.04.14 A3.05.08 A3.05.10 A3.05.11 A3.05.12 +A3.04.13 A3.03.11 A3.03.13 A3.03.14 A3.04.10 A3.04.11 A3.04.12 A3.04.14 A3.05.12 +A3.04.14 A3.03.13 A3.03.14 A3.03.15 A3.04.12 A3.04.13 A3.04.15 A3.05.12 A3.05.13 +A3.04.15 A3.03.14 A3.03.15 A3.04.14 A3.05.12 A3.05.13 A3.05.14 +A3.05.00 A3.05.01 A3.05.03 A3.05.05 A3.06.00 A3.06.02 +A3.05.01 A3.05.00 A3.05.02 A3.05.03 A3.05.04 +A3.05.02 A3.04.02 A3.04.05 A3.05.01 A3.05.03 A3.05.04 A3.05.06 +A3.05.03 A3.05.00 A3.05.01 A3.05.02 A3.05.04 A3.05.05 A3.05.07 A3.06.02 +A3.05.04 A3.04.05 A3.05.01 A3.05.02 A3.05.03 A3.05.05 A3.05.06 A3.05.07 A3.05.08 +A3.05.05 A3.05.00 A3.05.03 A3.05.04 A3.05.07 A3.05.09 A3.06.02 A3.06.04 A3.06.06 +A3.05.06 A3.04.05 A3.04.06 A3.04.08 A3.04.10 A3.05.02 A3.05.04 A3.05.07 A3.05.08 +A3.05.07 A3.05.03 A3.05.04 A3.05.05 A3.05.06 A3.05.08 A3.05.09 A3.05.10 A3.06.06 +A3.05.08 A3.04.08 A3.04.10 A3.04.12 A3.05.04 A3.05.06 A3.05.07 A3.05.09 A3.05.10 +A3.05.09 A3.05.05 A3.05.07 A3.05.08 A3.05.10 A3.05.11 A3.06.06 A3.06.07 A3.06.09 +A3.05.10 A3.04.10 A3.04.12 A3.05.07 A3.05.08 A3.05.09 A3.05.11 A3.05.12 A3.06.09 +A3.05.11 A3.04.12 A3.05.09 A3.05.10 A3.05.12 A3.05.13 A3.06.09 A3.06.10 A3.06.11 +A3.05.12 A3.04.12 A3.04.13 A3.04.14 A3.04.15 A3.05.10 A3.05.11 A3.05.13 A3.06.11 +A3.05.13 A3.04.14 A3.04.15 A3.05.11 A3.05.12 A3.05.14 A3.06.11 A3.06.12 A3.06.13 +A3.05.14 A3.04.15 A3.05.13 A3.06.13 A3.06.15 +A3.06.00 A3.05.00 A3.06.01 A3.06.02 A3.06.04 +A3.06.01 A3.06.00 A3.06.03 A3.06.04 A3.06.05 A3.07.01 +A3.06.02 A3.05.00 A3.05.03 A3.05.05 A3.06.00 A3.06.04 A3.06.06 +A3.06.03 A3.06.01 A3.06.04 A3.06.05 A3.07.01 A3.07.04 A3.07.07 +A3.06.04 A3.05.05 A3.06.00 A3.06.01 A3.06.02 A3.06.03 A3.06.05 A3.06.06 A3.06.07 +A3.06.05 A3.06.01 A3.06.03 A3.06.04 A3.06.06 A3.06.07 A3.06.08 A3.07.04 A3.07.07 +A3.06.06 A3.05.05 A3.05.07 A3.05.09 A3.06.02 A3.06.04 A3.06.05 A3.06.07 A3.06.09 +A3.06.07 A3.05.09 A3.06.04 A3.06.05 A3.06.06 A3.06.08 A3.06.09 A3.06.10 A3.07.07 +A3.06.08 A3.06.05 A3.06.07 A3.06.09 A3.06.10 A3.07.07 A3.07.08 A3.07.10 A3.07.12 +A3.06.09 A3.05.09 A3.05.10 A3.05.11 A3.06.06 A3.06.07 A3.06.08 A3.06.10 A3.06.11 +A3.06.10 A3.05.11 A3.06.07 A3.06.08 A3.06.09 A3.06.11 A3.06.12 A3.07.10 A3.07.12 +A3.06.11 A3.05.11 A3.05.12 A3.05.13 A3.06.09 A3.06.10 A3.06.12 A3.06.13 A3.07.12 +A3.06.12 A3.05.13 A3.06.10 A3.06.11 A3.06.13 A3.06.14 A3.07.12 A3.07.13 A3.07.14 +A3.06.13 A3.05.13 A3.05.14 A3.06.11 A3.06.12 A3.06.14 A3.06.15 +A3.06.14 A3.06.12 A3.06.13 A3.06.15 A3.07.14 A3.07.15 +A3.06.15 A3.05.14 A3.06.13 A3.06.14 +A3.07.00 A3.07.02 A3.07.03 A3.08.00 A3.08.03 +A3.07.01 A3.06.01 A3.06.03 A3.07.02 A3.07.04 A3.07.05 +A3.07.02 A3.07.00 A3.07.01 A3.07.03 A3.07.04 A3.07.05 A3.07.06 +A3.07.03 A3.07.00 A3.07.02 A3.07.05 A3.07.06 A3.08.00 A3.08.03 A3.08.06 +A3.07.04 A3.06.03 A3.06.05 A3.07.01 A3.07.02 A3.07.05 A3.07.07 A3.07.08 +A3.07.05 A3.07.01 A3.07.02 A3.07.03 A3.07.04 A3.07.06 A3.07.07 A3.07.08 A3.07.09 +A3.07.06 A3.07.02 A3.07.03 A3.07.05 A3.07.08 A3.07.09 A3.08.03 A3.08.06 A3.08.09 +A3.07.07 A3.06.03 A3.06.05 A3.06.07 A3.06.08 A3.07.04 A3.07.05 A3.07.08 A3.07.10 +A3.07.08 A3.06.08 A3.07.04 A3.07.05 A3.07.06 A3.07.07 A3.07.09 A3.07.10 A3.07.11 +A3.07.09 A3.07.05 A3.07.06 A3.07.08 A3.07.10 A3.07.11 A3.08.06 A3.08.09 A3.08.11 +A3.07.10 A3.06.08 A3.06.10 A3.07.07 A3.07.08 A3.07.09 A3.07.11 A3.07.12 A3.07.13 +A3.07.11 A3.07.08 A3.07.09 A3.07.10 A3.07.12 A3.07.13 A3.08.09 A3.08.11 A3.08.13 +A3.07.12 A3.06.08 A3.06.10 A3.06.11 A3.06.12 A3.07.10 A3.07.11 A3.07.13 A3.07.14 +A3.07.13 A3.06.12 A3.07.10 A3.07.11 A3.07.12 A3.07.14 A3.08.11 A3.08.13 A3.08.14 +A3.07.14 A3.06.12 A3.06.14 A3.07.12 A3.07.13 A3.07.15 A3.08.13 A3.08.14 A3.08.15 +A3.07.15 A3.06.14 A3.07.14 A3.08.14 A3.08.15 +A3.08.00 A3.07.00 A3.07.03 A3.08.02 A3.08.03 +A3.08.01 A3.08.02 A3.08.04 A3.08.05 A3.09.00 A3.09.04 +A3.08.02 A3.08.00 A3.08.01 A3.08.03 A3.08.04 A3.08.05 A3.08.06 +A3.08.03 A3.07.00 A3.07.03 A3.07.06 A3.08.00 A3.08.02 A3.08.05 A3.08.06 +A3.08.04 A3.08.01 A3.08.02 A3.08.05 A3.08.07 A3.08.08 A3.09.04 A3.09.06 +A3.08.05 A3.08.01 A3.08.02 A3.08.03 A3.08.04 A3.08.06 A3.08.07 A3.08.08 A3.08.09 +A3.08.06 A3.07.03 A3.07.06 A3.07.09 A3.08.02 A3.08.03 A3.08.05 A3.08.08 A3.08.09 +A3.08.07 A3.08.04 A3.08.05 A3.08.08 A3.08.10 A3.09.04 A3.09.06 A3.09.08 A3.09.09 +A3.08.08 A3.08.04 A3.08.05 A3.08.06 A3.08.07 A3.08.09 A3.08.10 A3.08.11 A3.09.09 +A3.08.09 A3.07.06 A3.07.09 A3.07.11 A3.08.05 A3.08.06 A3.08.08 A3.08.10 A3.08.11 +A3.08.10 A3.08.07 A3.08.08 A3.08.09 A3.08.11 A3.08.12 A3.08.13 A3.09.09 A3.09.11 +A3.08.11 A3.07.09 A3.07.11 A3.07.13 A3.08.08 A3.08.09 A3.08.10 A3.08.12 A3.08.13 +A3.08.12 A3.08.10 A3.08.11 A3.08.13 A3.08.14 A3.09.09 A3.09.11 A3.09.12 A3.09.13 +A3.08.13 A3.07.11 A3.07.13 A3.07.14 A3.08.10 A3.08.11 A3.08.12 A3.08.14 A3.09.13 +A3.08.14 A3.07.13 A3.07.14 A3.07.15 A3.08.12 A3.08.13 A3.08.15 A3.09.13 A3.09.15 +A3.08.15 A3.07.14 A3.07.15 A3.08.14 A3.09.15 +A3.09.00 A3.08.01 A3.09.02 A3.09.04 +A3.09.01 A3.09.02 A3.09.03 A3.09.05 A3.10.00 +A3.09.02 A3.09.00 A3.09.01 A3.09.04 A3.09.05 A3.09.06 +A3.09.03 A3.09.01 A3.09.05 A3.09.07 A3.10.00 A3.10.03 A3.10.05 +A3.09.04 A3.08.01 A3.08.04 A3.08.07 A3.09.00 A3.09.02 A3.09.05 A3.09.06 +A3.09.05 A3.09.01 A3.09.02 A3.09.03 A3.09.04 A3.09.06 A3.09.07 A3.09.08 A3.10.05 +A3.09.06 A3.08.04 A3.08.07 A3.09.02 A3.09.04 A3.09.05 A3.09.07 A3.09.08 A3.09.09 +A3.09.07 A3.09.03 A3.09.05 A3.09.06 A3.09.08 A3.09.10 A3.10.05 A3.10.07 A3.10.09 +A3.09.08 A3.08.07 A3.09.05 A3.09.06 A3.09.07 A3.09.09 A3.09.10 A3.09.11 A3.10.09 +A3.09.09 A3.08.07 A3.08.08 A3.08.10 A3.08.12 A3.09.06 A3.09.08 A3.09.10 A3.09.11 +A3.09.10 A3.09.07 A3.09.08 A3.09.09 A3.09.11 A3.09.12 A3.10.09 A3.10.10 A3.10.11 +A3.09.11 A3.08.10 A3.08.12 A3.09.08 A3.09.09 A3.09.10 A3.09.12 A3.09.13 A3.10.11 +A3.09.12 A3.08.12 A3.09.10 A3.09.11 A3.09.13 A3.09.14 A3.10.11 A3.10.12 A3.10.13 +A3.09.13 A3.08.12 A3.08.13 A3.08.14 A3.09.11 A3.09.12 A3.09.14 A3.09.15 A3.10.13 +A3.09.14 A3.09.12 A3.09.13 A3.09.15 A3.10.13 A3.10.14 +A3.09.15 A3.08.14 A3.08.15 A3.09.13 A3.09.14 A3.10.14 +A3.10.00 A3.09.01 A3.09.03 A3.10.02 A3.10.03 A3.10.05 +A3.10.01 A3.10.02 A3.11.02 A3.11.05 +A3.10.02 A3.10.00 A3.10.01 A3.10.03 A3.10.04 A3.10.06 A3.11.05 +A3.10.03 A3.09.03 A3.10.00 A3.10.02 A3.10.04 A3.10.05 A3.10.07 +A3.10.04 A3.10.02 A3.10.03 A3.10.05 A3.10.06 A3.10.07 A3.10.08 A3.11.05 +A3.10.05 A3.09.03 A3.09.05 A3.09.07 A3.10.00 A3.10.03 A3.10.04 A3.10.07 A3.10.09 +A3.10.06 A3.10.02 A3.10.04 A3.10.07 A3.10.08 A3.11.05 A3.11.06 A3.11.08 A3.11.10 +A3.10.07 A3.09.07 A3.10.03 A3.10.04 A3.10.05 A3.10.06 A3.10.08 A3.10.09 A3.10.10 +A3.10.08 A3.10.04 A3.10.06 A3.10.07 A3.10.09 A3.10.10 A3.11.08 A3.11.10 A3.11.12 +A3.10.09 A3.09.07 A3.09.08 A3.09.10 A3.10.05 A3.10.07 A3.10.08 A3.10.10 A3.10.11 +A3.10.10 A3.09.10 A3.10.07 A3.10.08 A3.10.09 A3.10.11 A3.10.12 A3.11.10 A3.11.12 +A3.10.11 A3.09.10 A3.09.11 A3.09.12 A3.10.09 A3.10.10 A3.10.12 A3.10.13 A3.11.12 +A3.10.12 A3.09.12 A3.10.10 A3.10.11 A3.10.13 A3.11.12 A3.11.13 A3.11.14 A3.11.15 +A3.10.13 A3.09.12 A3.09.13 A3.09.14 A3.10.11 A3.10.12 A3.10.14 A3.10.15 A3.11.14 A3.11.15 +A3.10.14 A3.09.14 A3.09.15 A3.10.13 A3.10.15 +A3.10.15 A3.10.13 A3.10.14 A3.11.15 +A3.11.00 A3.11.01 A3.11.03 A3.11.04 +A3.11.01 A3.11.00 A3.11.04 A3.12.01 A3.12.04 +A3.11.02 A3.10.01 A3.11.03 A3.11.05 A3.11.06 +A3.11.03 A3.11.00 A3.11.02 A3.11.04 A3.11.05 A3.11.06 A3.11.07 +A3.11.04 A3.11.00 A3.11.01 A3.11.03 A3.11.06 A3.11.07 A3.12.01 A3.12.04 A3.12.07 +A3.11.05 A3.10.01 A3.10.02 A3.10.04 A3.10.06 A3.11.02 A3.11.03 A3.11.06 A3.11.08 +A3.11.06 A3.10.06 A3.11.02 A3.11.03 A3.11.04 A3.11.05 A3.11.07 A3.11.08 A3.11.09 +A3.11.07 A3.11.03 A3.11.04 A3.11.06 A3.11.08 A3.11.09 A3.12.04 A3.12.07 A3.12.09 +A3.11.08 A3.10.06 A3.10.08 A3.11.05 A3.11.06 A3.11.07 A3.11.09 A3.11.10 A3.11.11 +A3.11.09 A3.11.06 A3.11.07 A3.11.08 A3.11.10 A3.11.11 A3.12.07 A3.12.09 A3.12.11 +A3.11.10 A3.10.06 A3.10.08 A3.10.10 A3.11.08 A3.11.09 A3.11.11 A3.11.12 A3.11.13 +A3.11.11 A3.11.08 A3.11.09 A3.11.10 A3.11.12 A3.11.13 A3.12.09 A3.12.11 A3.12.13 +A3.11.12 A3.10.08 A3.10.10 A3.10.11 A3.10.12 A3.11.10 A3.11.11 A3.11.13 A3.11.14 +A3.11.13 A3.10.12 A3.11.10 A3.11.11 A3.11.12 A3.11.14 A3.12.11 A3.12.13 A3.12.14 +A3.11.14 A3.10.12 A3.10.13 A3.11.12 A3.11.13 A3.11.15 A3.12.13 A3.12.14 A3.12.15 +A3.11.15 A3.10.12 A3.10.13 A3.10.15 A3.11.14 A3.12.14 A3.12.15 +A3.12.00 A3.12.01 A3.12.03 A3.12.04 +A3.12.01 A3.11.01 A3.11.04 A3.12.00 A3.12.04 +A3.12.02 A3.12.03 A3.12.05 A3.12.06 A3.13.02 +A3.12.03 A3.12.00 A3.12.02 A3.12.04 A3.12.05 A3.12.06 A3.12.07 +A3.12.04 A3.11.01 A3.11.04 A3.11.07 A3.12.00 A3.12.01 A3.12.03 A3.12.06 A3.12.07 +A3.12.05 A3.12.02 A3.12.03 A3.12.06 A3.12.08 A3.13.02 A3.13.04 A3.13.06 +A3.12.06 A3.12.02 A3.12.03 A3.12.04 A3.12.05 A3.12.07 A3.12.08 A3.12.09 A3.13.06 +A3.12.07 A3.11.04 A3.11.07 A3.11.09 A3.12.03 A3.12.04 A3.12.06 A3.12.08 A3.12.09 +A3.12.08 A3.12.05 A3.12.06 A3.12.07 A3.12.09 A3.12.10 A3.12.11 A3.13.06 A3.13.08 +A3.12.09 A3.11.07 A3.11.09 A3.11.11 A3.12.06 A3.12.07 A3.12.08 A3.12.10 A3.12.11 +A3.12.10 A3.12.08 A3.12.09 A3.12.11 A3.12.12 A3.12.13 A3.13.06 A3.13.08 A3.13.10 +A3.12.11 A3.11.09 A3.11.11 A3.11.13 A3.12.08 A3.12.09 A3.12.10 A3.12.12 A3.12.13 +A3.12.12 A3.12.10 A3.12.11 A3.12.13 A3.12.14 A3.13.08 A3.13.10 A3.13.11 A3.13.12 +A3.12.13 A3.11.11 A3.11.13 A3.11.14 A3.12.10 A3.12.11 A3.12.12 A3.12.14 A3.13.12 +A3.12.14 A3.11.13 A3.11.14 A3.11.15 A3.12.12 A3.12.13 A3.12.15 A3.13.12 A3.13.13 +A3.12.15 A3.11.14 A3.11.15 A3.12.14 A3.13.12 A3.13.13 A3.13.14 +A3.13.00 A3.13.01 A3.13.03 A3.13.05 A3.14.00 A3.14.02 +A3.13.01 A3.13.00 A3.13.02 A3.13.03 A3.13.04 +A3.13.02 A3.12.02 A3.12.05 A3.13.01 A3.13.03 A3.13.04 A3.13.06 +A3.13.03 A3.13.00 A3.13.01 A3.13.02 A3.13.04 A3.13.05 A3.13.07 A3.14.02 +A3.13.04 A3.12.05 A3.13.01 A3.13.02 A3.13.03 A3.13.05 A3.13.06 A3.13.07 A3.13.08 +A3.13.05 A3.13.00 A3.13.03 A3.13.04 A3.13.07 A3.13.09 A3.14.02 A3.14.04 A3.14.06 +A3.13.06 A3.12.05 A3.12.06 A3.12.08 A3.12.10 A3.13.02 A3.13.04 A3.13.07 A3.13.08 +A3.13.07 A3.13.03 A3.13.04 A3.13.05 A3.13.06 A3.13.08 A3.13.09 A3.13.10 A3.14.06 +A3.13.08 A3.12.08 A3.12.10 A3.12.12 A3.13.04 A3.13.06 A3.13.07 A3.13.09 A3.13.10 +A3.13.09 A3.13.05 A3.13.07 A3.13.08 A3.13.10 A3.13.11 A3.14.06 A3.14.07 A3.14.09 +A3.13.10 A3.12.10 A3.12.12 A3.13.07 A3.13.08 A3.13.09 A3.13.11 A3.13.12 A3.14.09 +A3.13.11 A3.12.12 A3.13.09 A3.13.10 A3.13.12 A3.13.13 A3.14.09 A3.14.10 A3.14.11 +A3.13.12 A3.12.12 A3.12.13 A3.12.14 A3.12.15 A3.13.10 A3.13.11 A3.13.13 A3.14.11 +A3.13.13 A3.12.14 A3.12.15 A3.13.11 A3.13.12 A3.13.14 A3.14.11 A3.14.12 A3.14.13 +A3.13.14 A3.12.15 A3.13.13 A3.14.13 A3.14.15 +A3.14.00 A3.13.00 A3.14.01 A3.14.02 A3.14.04 +A3.14.01 A3.14.00 A3.14.03 A3.14.04 A3.14.05 A3.15.01 +A3.14.02 A3.13.00 A3.13.03 A3.13.05 A3.14.00 A3.14.04 A3.14.06 +A3.14.03 A3.14.01 A3.14.04 A3.14.05 A3.15.01 A3.15.04 A3.15.07 +A3.14.04 A3.13.05 A3.14.00 A3.14.01 A3.14.02 A3.14.03 A3.14.05 A3.14.06 A3.14.07 +A3.14.05 A3.14.01 A3.14.03 A3.14.04 A3.14.06 A3.14.07 A3.14.08 A3.15.04 A3.15.07 +A3.14.06 A3.13.05 A3.13.07 A3.13.09 A3.14.02 A3.14.04 A3.14.05 A3.14.07 A3.14.09 +A3.14.07 A3.13.09 A3.14.04 A3.14.05 A3.14.06 A3.14.08 A3.14.09 A3.14.10 A3.15.07 +A3.14.08 A3.14.05 A3.14.07 A3.14.09 A3.14.10 A3.15.07 A3.15.08 A3.15.10 A3.15.12 +A3.14.09 A3.13.09 A3.13.10 A3.13.11 A3.14.06 A3.14.07 A3.14.08 A3.14.10 A3.14.11 +A3.14.10 A3.13.11 A3.14.07 A3.14.08 A3.14.09 A3.14.11 A3.14.12 A3.15.10 A3.15.12 +A3.14.11 A3.13.11 A3.13.12 A3.13.13 A3.14.09 A3.14.10 A3.14.12 A3.14.13 A3.15.12 +A3.14.12 A3.13.13 A3.14.10 A3.14.11 A3.14.13 A3.14.14 A3.15.12 A3.15.13 A3.15.14 +A3.14.13 A3.13.13 A3.13.14 A3.14.11 A3.14.12 A3.14.14 A3.14.15 +A3.14.14 A3.14.12 A3.14.13 A3.14.15 A3.15.14 A3.15.15 +A3.14.15 A3.13.14 A3.14.13 A3.14.14 +A3.15.00 A3.00.00 A3.00.03 A3.15.02 A3.15.03 +A3.15.01 A3.14.01 A3.14.03 A3.15.02 A3.15.04 A3.15.05 +A3.15.02 A3.15.00 A3.15.01 A3.15.03 A3.15.04 A3.15.05 A3.15.06 +A3.15.03 A3.00.00 A3.00.03 A3.00.06 A3.15.00 A3.15.02 A3.15.05 A3.15.06 +A3.15.04 A3.14.03 A3.14.05 A3.15.01 A3.15.02 A3.15.05 A3.15.07 A3.15.08 +A3.15.05 A3.15.01 A3.15.02 A3.15.03 A3.15.04 A3.15.06 A3.15.07 A3.15.08 A3.15.09 +A3.15.06 A3.00.03 A3.00.06 A3.00.09 A3.15.02 A3.15.03 A3.15.05 A3.15.08 A3.15.09 +A3.15.07 A3.14.03 A3.14.05 A3.14.07 A3.14.08 A3.15.04 A3.15.05 A3.15.08 A3.15.10 +A3.15.08 A3.14.08 A3.15.04 A3.15.05 A3.15.06 A3.15.07 A3.15.09 A3.15.10 A3.15.11 +A3.15.09 A3.00.06 A3.00.09 A3.00.11 A3.15.05 A3.15.06 A3.15.08 A3.15.10 A3.15.11 +A3.15.10 A3.14.08 A3.14.10 A3.15.07 A3.15.08 A3.15.09 A3.15.11 A3.15.12 A3.15.13 +A3.15.11 A3.00.09 A3.00.11 A3.00.13 A3.15.08 A3.15.09 A3.15.10 A3.15.12 A3.15.13 +A3.15.12 A3.14.08 A3.14.10 A3.14.11 A3.14.12 A3.15.10 A3.15.11 A3.15.13 A3.15.14 +A3.15.13 A3.00.11 A3.00.13 A3.00.14 A3.14.12 A3.15.10 A3.15.11 A3.15.12 A3.15.14 +A3.15.14 A3.00.13 A3.00.14 A3.00.15 A3.14.12 A3.14.14 A3.15.12 A3.15.13 A3.15.15 +A3.15.15 A3.00.14 A3.00.15 A3.14.14 A3.15.14 +C1.00.00 C1.00.07 C1.00.12 +C1.00.01 C1.00.02 C1.00.10 C1.00.11 C1.15.02 C1.15.12 +C1.00.02 C1.00.01 C1.00.03 C1.00.06 C1.00.09 C1.00.10 +C1.00.03 C1.00.02 C1.00.05 C1.00.06 C1.00.14 C1.00.15 +C1.00.04 C1.00.05 C1.00.12 C1.00.13 C1.00.14 +C1.00.05 C1.00.03 C1.00.04 C1.00.13 C1.00.14 +C1.00.06 C1.00.02 C1.00.03 C1.00.09 C1.00.14 C1.00.15 +C1.00.07 C1.00.00 C1.00.08 C1.00.12 C1.00.17 C1.00.18 C1.01.13 +C1.00.08 C1.00.07 C1.00.17 C1.01.02 C1.01.13 +C1.00.09 C1.00.02 C1.00.06 C1.00.10 C1.00.15 C1.00.16 +C1.00.10 C1.00.01 C1.00.02 C1.00.09 C1.00.11 C1.00.15 C1.00.16 +C1.00.11 C1.00.01 C1.00.10 C1.00.16 C1.15.02 C1.15.12 C1.15.17 +C1.00.12 C1.00.00 C1.00.04 C1.00.07 C1.00.13 C1.00.17 C1.00.18 C1.00.19 +C1.00.13 C1.00.04 C1.00.05 C1.00.12 C1.00.14 C1.00.18 C1.00.19 C1.00.20 +C1.00.14 C1.00.03 C1.00.04 C1.00.05 C1.00.06 C1.00.13 C1.00.15 C1.00.19 C1.00.20 C1.00.21 +C1.00.15 C1.00.03 C1.00.06 C1.00.09 C1.00.10 C1.00.14 C1.00.16 C1.00.20 C1.00.21 C1.00.22 +C1.00.16 C1.00.09 C1.00.10 C1.00.11 C1.00.15 C1.00.21 C1.00.22 C1.15.12 C1.15.17 C1.15.23 +C1.00.17 C1.00.07 C1.00.08 C1.00.12 C1.00.18 C1.00.23 C1.01.13 C1.01.19 C1.01.21 +C1.00.18 C1.00.07 C1.00.12 C1.00.13 C1.00.17 C1.00.19 C1.00.23 C1.00.24 C1.01.21 +C1.00.19 C1.00.12 C1.00.13 C1.00.14 C1.00.18 C1.00.20 C1.00.23 C1.00.24 C1.00.25 +C1.00.20 C1.00.13 C1.00.14 C1.00.15 C1.00.19 C1.00.21 C1.00.24 C1.00.25 C1.00.26 +C1.00.21 C1.00.14 C1.00.15 C1.00.16 C1.00.20 C1.00.22 C1.00.25 C1.00.26 C1.00.27 +C1.00.22 C1.00.15 C1.00.16 C1.00.21 C1.00.26 C1.00.27 C1.15.17 C1.15.23 C1.15.28 +C1.00.23 C1.00.17 C1.00.18 C1.00.19 C1.00.24 C1.00.28 C1.00.29 C1.01.21 C1.01.26 +C1.00.24 C1.00.18 C1.00.19 C1.00.20 C1.00.23 C1.00.25 C1.00.28 C1.00.29 C1.00.30 +C1.00.25 C1.00.19 C1.00.20 C1.00.21 C1.00.24 C1.00.26 C1.00.29 C1.00.30 C1.00.31 +C1.00.26 C1.00.20 C1.00.21 C1.00.22 C1.00.25 C1.00.27 C1.00.30 C1.00.31 C1.00.32 +C1.00.27 C1.00.21 C1.00.22 C1.00.26 C1.00.31 C1.00.32 C1.15.23 C1.15.28 C1.15.33 +C1.00.28 C1.00.23 C1.00.24 C1.00.29 C1.00.33 C1.01.21 C1.01.26 C1.01.31 C1.01.33 +C1.00.29 C1.00.23 C1.00.24 C1.00.25 C1.00.28 C1.00.30 C1.00.33 C1.00.34 C1.01.33 +C1.00.30 C1.00.24 C1.00.25 C1.00.26 C1.00.29 C1.00.31 C1.00.33 C1.00.34 C1.00.35 +C1.00.31 C1.00.25 C1.00.26 C1.00.27 C1.00.30 C1.00.32 C1.00.34 C1.00.35 C1.00.36 +C1.00.32 C1.00.26 C1.00.27 C1.00.31 C1.00.35 C1.00.36 C1.15.28 C1.15.33 C1.15.37 +C1.00.33 C1.00.28 C1.00.29 C1.00.30 C1.00.34 C1.00.37 C1.00.38 C1.01.33 C1.01.38 +C1.00.34 C1.00.29 C1.00.30 C1.00.31 C1.00.33 C1.00.35 C1.00.37 C1.00.38 C1.00.39 +C1.00.35 C1.00.30 C1.00.31 C1.00.32 C1.00.34 C1.00.36 C1.00.38 C1.00.39 C1.00.40 +C1.00.36 C1.00.31 C1.00.32 C1.00.35 C1.00.39 C1.00.40 C1.15.33 C1.15.37 C1.15.41 +C1.00.37 C1.00.33 C1.00.34 C1.00.38 C1.00.41 C1.00.42 C1.01.33 C1.01.38 C1.01.41 +C1.00.38 C1.00.33 C1.00.34 C1.00.35 C1.00.37 C1.00.39 C1.00.41 C1.00.42 C1.00.43 +C1.00.39 C1.00.34 C1.00.35 C1.00.36 C1.00.38 C1.00.40 C1.00.42 C1.00.43 C1.00.44 +C1.00.40 C1.00.35 C1.00.36 C1.00.39 C1.00.43 C1.00.44 C1.15.37 C1.15.41 C1.15.45 +C1.00.41 C1.00.37 C1.00.38 C1.00.42 C1.00.45 C1.01.38 C1.01.41 C1.01.43 C1.01.45 +C1.00.42 C1.00.37 C1.00.38 C1.00.39 C1.00.41 C1.00.43 C1.00.45 C1.00.46 C1.01.45 +C1.00.43 C1.00.38 C1.00.39 C1.00.40 C1.00.42 C1.00.44 C1.00.45 C1.00.46 C1.00.47 +C1.00.44 C1.00.39 C1.00.40 C1.00.43 C1.00.46 C1.00.47 C1.15.41 C1.15.45 C1.15.48 +C1.00.45 C1.00.41 C1.00.42 C1.00.43 C1.00.46 C1.00.48 C1.00.49 C1.01.45 C1.01.47 +C1.00.46 C1.00.42 C1.00.43 C1.00.44 C1.00.45 C1.00.47 C1.00.48 C1.00.49 C1.00.50 +C1.00.47 C1.00.43 C1.00.44 C1.00.46 C1.00.49 C1.00.50 C1.15.45 C1.15.48 C1.15.51 +C1.00.48 C1.00.45 C1.00.46 C1.00.49 C1.00.51 C1.01.45 C1.01.47 C1.01.49 C1.01.50 +C1.00.49 C1.00.45 C1.00.46 C1.00.47 C1.00.48 C1.00.50 C1.00.51 C1.00.52 C1.01.50 +C1.00.50 C1.00.46 C1.00.47 C1.00.49 C1.00.51 C1.00.52 C1.15.48 C1.15.51 C1.15.53 +C1.00.51 C1.00.48 C1.00.49 C1.00.50 C1.00.52 C1.00.53 C1.00.54 C1.00.55 C1.01.50 C1.01.53 +C1.00.52 C1.00.49 C1.00.50 C1.00.51 C1.00.54 C1.00.55 C1.00.56 C1.15.51 C1.15.53 C1.15.56 +C1.00.53 C1.00.51 C1.00.54 C1.00.57 C1.01.50 C1.01.53 C1.01.55 C1.01.57 +C1.00.54 C1.00.51 C1.00.52 C1.00.53 C1.00.55 C1.00.57 C1.00.58 C1.01.57 +C1.00.55 C1.00.51 C1.00.52 C1.00.54 C1.00.56 C1.00.57 C1.00.58 C1.00.59 +C1.00.56 C1.00.52 C1.00.55 C1.00.58 C1.00.59 C1.15.53 C1.15.56 C1.15.59 +C1.00.57 C1.00.53 C1.00.54 C1.00.55 C1.00.58 C1.00.60 C1.00.61 C1.01.57 C1.01.59 +C1.00.58 C1.00.54 C1.00.55 C1.00.56 C1.00.57 C1.00.59 C1.00.60 C1.00.61 C1.00.62 +C1.00.59 C1.00.55 C1.00.56 C1.00.58 C1.00.61 C1.00.62 C1.15.56 C1.15.59 C1.15.62 +C1.00.60 C1.00.57 C1.00.58 C1.00.61 C1.01.57 C1.01.59 C1.01.62 +C1.00.61 C1.00.57 C1.00.58 C1.00.59 C1.00.60 C1.00.62 C1.01.62 +C1.00.62 C1.00.58 C1.00.59 C1.00.61 C1.15.59 C1.15.62 +C1.01.00 C1.01.04 C1.01.06 C1.01.08 C1.01.12 +C1.01.01 C1.01.03 C1.01.05 C1.01.11 +C1.01.02 C1.00.08 C1.01.05 C1.01.13 +C1.01.03 C1.01.01 C1.01.07 C1.01.09 C1.01.11 +C1.01.04 C1.01.00 C1.01.08 C1.01.10 +C1.01.05 C1.01.01 C1.01.02 C1.01.11 C1.01.13 +C1.01.06 C1.01.00 C1.01.12 C1.01.17 C1.02.06 C1.02.13 +C1.01.07 C1.01.03 C1.01.09 C1.01.10 C1.01.14 +C1.01.08 C1.01.00 C1.01.04 C1.01.10 C1.01.12 C1.01.15 +C1.01.09 C1.01.03 C1.01.07 C1.01.11 C1.01.14 C1.01.16 +C1.01.10 C1.01.04 C1.01.07 C1.01.08 C1.01.12 C1.01.14 C1.01.15 C1.01.18 +C1.01.11 C1.01.01 C1.01.03 C1.01.05 C1.01.09 C1.01.13 C1.01.14 C1.01.16 C1.01.19 +C1.01.12 C1.01.00 C1.01.06 C1.01.08 C1.01.10 C1.01.15 C1.01.17 C1.01.20 C1.02.13 +C1.01.13 C1.00.07 C1.00.08 C1.00.17 C1.01.02 C1.01.05 C1.01.11 C1.01.16 C1.01.19 C1.01.21 +C1.01.14 C1.01.07 C1.01.09 C1.01.10 C1.01.11 C1.01.15 C1.01.16 C1.01.18 C1.01.22 +C1.01.15 C1.01.08 C1.01.10 C1.01.12 C1.01.14 C1.01.17 C1.01.18 C1.01.20 C1.01.23 +C1.01.16 C1.01.09 C1.01.11 C1.01.13 C1.01.14 C1.01.18 C1.01.19 C1.01.22 C1.01.24 +C1.01.17 C1.01.06 C1.01.12 C1.01.15 C1.01.20 C1.01.25 C1.02.13 C1.02.17 C1.02.21 +C1.01.18 C1.01.10 C1.01.14 C1.01.15 C1.01.16 C1.01.20 C1.01.22 C1.01.23 C1.01.27 +C1.01.19 C1.00.17 C1.01.11 C1.01.13 C1.01.16 C1.01.21 C1.01.22 C1.01.24 C1.01.26 +C1.01.20 C1.01.12 C1.01.15 C1.01.17 C1.01.18 C1.01.23 C1.01.25 C1.01.28 C1.02.21 +C1.01.21 C1.00.17 C1.00.18 C1.00.23 C1.00.28 C1.01.13 C1.01.19 C1.01.24 C1.01.26 +C1.01.22 C1.01.14 C1.01.16 C1.01.18 C1.01.19 C1.01.23 C1.01.24 C1.01.27 C1.01.29 +C1.01.23 C1.01.15 C1.01.18 C1.01.20 C1.01.22 C1.01.25 C1.01.27 C1.01.28 C1.01.30 +C1.01.24 C1.01.16 C1.01.19 C1.01.21 C1.01.22 C1.01.26 C1.01.27 C1.01.29 C1.01.31 +C1.01.25 C1.01.17 C1.01.20 C1.01.23 C1.01.28 C1.01.32 C1.02.21 C1.02.24 C1.02.28 +C1.01.26 C1.00.23 C1.00.28 C1.01.19 C1.01.21 C1.01.24 C1.01.29 C1.01.31 C1.01.33 +C1.01.27 C1.01.18 C1.01.22 C1.01.23 C1.01.24 C1.01.28 C1.01.29 C1.01.30 C1.01.34 +C1.01.28 C1.01.20 C1.01.23 C1.01.25 C1.01.27 C1.01.30 C1.01.32 C1.01.35 C1.02.28 +C1.01.29 C1.01.22 C1.01.24 C1.01.26 C1.01.27 C1.01.30 C1.01.31 C1.01.34 C1.01.36 +C1.01.30 C1.01.23 C1.01.27 C1.01.28 C1.01.29 C1.01.32 C1.01.34 C1.01.35 C1.01.37 +C1.01.31 C1.00.28 C1.01.24 C1.01.26 C1.01.29 C1.01.33 C1.01.34 C1.01.36 C1.01.38 +C1.01.32 C1.01.25 C1.01.28 C1.01.30 C1.01.35 C1.02.28 C1.02.31 C1.02.34 C1.02.37 +C1.01.33 C1.00.28 C1.00.29 C1.00.33 C1.00.37 C1.01.26 C1.01.31 C1.01.36 C1.01.38 +C1.01.34 C1.01.27 C1.01.29 C1.01.30 C1.01.31 C1.01.35 C1.01.36 C1.01.37 C1.01.39 +C1.01.35 C1.01.28 C1.01.30 C1.01.32 C1.01.34 C1.01.37 C1.01.40 C1.02.34 C1.02.37 +C1.01.36 C1.01.29 C1.01.31 C1.01.33 C1.01.34 C1.01.37 C1.01.38 C1.01.39 C1.01.41 +C1.01.37 C1.01.30 C1.01.34 C1.01.35 C1.01.36 C1.01.39 C1.01.40 C1.01.42 C1.02.37 +C1.01.38 C1.00.33 C1.00.37 C1.00.41 C1.01.31 C1.01.33 C1.01.36 C1.01.39 C1.01.41 +C1.01.39 C1.01.34 C1.01.36 C1.01.37 C1.01.38 C1.01.40 C1.01.41 C1.01.42 C1.01.43 +C1.01.40 C1.01.35 C1.01.37 C1.01.39 C1.01.42 C1.01.44 C1.02.37 C1.02.40 C1.02.43 +C1.01.41 C1.00.37 C1.00.41 C1.01.36 C1.01.38 C1.01.39 C1.01.42 C1.01.43 C1.01.45 +C1.01.42 C1.01.37 C1.01.39 C1.01.40 C1.01.41 C1.01.43 C1.01.44 C1.01.46 C1.02.43 +C1.01.43 C1.00.41 C1.01.39 C1.01.41 C1.01.42 C1.01.44 C1.01.45 C1.01.46 C1.01.47 +C1.01.44 C1.01.40 C1.01.42 C1.01.43 C1.01.46 C1.01.48 C1.02.43 C1.02.45 C1.02.47 +C1.01.45 C1.00.41 C1.00.42 C1.00.45 C1.00.48 C1.01.41 C1.01.43 C1.01.46 C1.01.47 +C1.01.46 C1.01.42 C1.01.43 C1.01.44 C1.01.45 C1.01.47 C1.01.48 C1.01.49 C1.02.47 +C1.01.47 C1.00.45 C1.00.48 C1.01.43 C1.01.45 C1.01.46 C1.01.48 C1.01.49 C1.01.50 +C1.01.48 C1.01.44 C1.01.46 C1.01.47 C1.01.49 C1.01.51 C1.02.47 C1.02.49 C1.02.51 +C1.01.49 C1.00.48 C1.01.46 C1.01.47 C1.01.48 C1.01.50 C1.01.51 C1.01.52 C1.02.51 +C1.01.50 C1.00.48 C1.00.49 C1.00.51 C1.00.53 C1.01.47 C1.01.49 C1.01.51 C1.01.52 C1.01.53 +C1.01.51 C1.01.48 C1.01.49 C1.01.50 C1.01.52 C1.01.54 C1.01.56 C1.02.51 C1.02.52 C1.02.53 C1.02.55 +C1.01.52 C1.01.49 C1.01.50 C1.01.51 C1.01.53 C1.01.54 C1.01.55 +C1.01.53 C1.00.51 C1.00.53 C1.01.50 C1.01.52 C1.01.54 C1.01.55 C1.01.57 +C1.01.54 C1.01.51 C1.01.52 C1.01.53 C1.01.55 C1.01.56 C1.01.58 C1.02.55 +C1.01.55 C1.00.53 C1.01.52 C1.01.53 C1.01.54 C1.01.56 C1.01.57 C1.01.58 C1.01.59 +C1.01.56 C1.01.51 C1.01.54 C1.01.55 C1.01.58 C1.01.60 C1.02.55 C1.02.57 C1.02.59 +C1.01.57 C1.00.53 C1.00.54 C1.00.57 C1.00.60 C1.01.53 C1.01.55 C1.01.58 C1.01.59 +C1.01.58 C1.01.54 C1.01.55 C1.01.56 C1.01.57 C1.01.59 C1.01.60 C1.01.61 C1.02.59 +C1.01.59 C1.00.57 C1.00.60 C1.01.55 C1.01.57 C1.01.58 C1.01.60 C1.01.61 C1.01.62 +C1.01.60 C1.01.56 C1.01.58 C1.01.59 C1.01.61 C1.02.59 C1.02.61 +C1.01.61 C1.01.58 C1.01.59 C1.01.60 C1.01.62 C1.02.59 C1.02.61 +C1.01.62 C1.00.60 C1.00.61 C1.01.59 C1.01.61 +C1.02.00 C1.02.03 C1.02.06 +C1.02.01 C1.02.02 C1.02.04 C1.02.10 C1.02.14 +C1.02.02 C1.02.01 C1.02.07 C1.02.10 +C1.02.03 C1.02.00 C1.02.06 C1.02.09 C1.02.12 +C1.02.04 C1.02.01 C1.02.05 C1.02.10 C1.02.14 C1.03.02 +C1.02.05 C1.02.04 C1.02.14 C1.03.02 C1.03.08 +C1.02.06 C1.01.06 C1.02.00 C1.02.03 C1.02.12 C1.02.13 C1.02.17 +C1.02.07 C1.02.02 C1.02.10 C1.02.11 C1.02.15 +C1.02.08 C1.02.09 C1.02.11 +C1.02.09 C1.02.03 C1.02.08 C1.02.11 C1.02.12 C1.02.16 +C1.02.10 C1.02.01 C1.02.02 C1.02.04 C1.02.07 C1.02.11 C1.02.14 C1.02.15 C1.02.18 +C1.02.11 C1.02.07 C1.02.08 C1.02.09 C1.02.10 C1.02.12 C1.02.15 C1.02.16 C1.02.19 +C1.02.12 C1.02.03 C1.02.06 C1.02.09 C1.02.11 C1.02.13 C1.02.16 C1.02.17 C1.02.20 +C1.02.13 C1.01.06 C1.01.12 C1.01.17 C1.02.06 C1.02.12 C1.02.17 C1.02.21 +C1.02.14 C1.02.01 C1.02.04 C1.02.05 C1.02.10 C1.02.15 C1.02.18 C1.03.08 C1.03.10 C1.03.15 C1.03.20 +C1.02.15 C1.02.07 C1.02.10 C1.02.11 C1.02.14 C1.02.16 C1.02.18 C1.02.19 C1.02.22 +C1.02.16 C1.02.09 C1.02.11 C1.02.12 C1.02.15 C1.02.17 C1.02.19 C1.02.20 C1.02.23 +C1.02.17 C1.01.17 C1.02.06 C1.02.12 C1.02.13 C1.02.16 C1.02.20 C1.02.21 C1.02.24 +C1.02.18 C1.02.10 C1.02.14 C1.02.15 C1.02.19 C1.02.22 C1.02.25 C1.03.15 C1.03.20 +C1.02.19 C1.02.11 C1.02.15 C1.02.16 C1.02.18 C1.02.20 C1.02.22 C1.02.23 C1.02.26 +C1.02.20 C1.02.12 C1.02.16 C1.02.17 C1.02.19 C1.02.21 C1.02.23 C1.02.24 C1.02.27 +C1.02.21 C1.01.17 C1.01.20 C1.01.25 C1.02.13 C1.02.17 C1.02.20 C1.02.24 C1.02.28 +C1.02.22 C1.02.15 C1.02.18 C1.02.19 C1.02.23 C1.02.25 C1.02.26 C1.02.29 C1.03.20 +C1.02.23 C1.02.16 C1.02.19 C1.02.20 C1.02.22 C1.02.24 C1.02.26 C1.02.27 C1.02.30 +C1.02.24 C1.01.25 C1.02.17 C1.02.20 C1.02.21 C1.02.23 C1.02.27 C1.02.28 C1.02.31 +C1.02.25 C1.02.18 C1.02.22 C1.02.26 C1.02.29 C1.03.20 C1.03.21 C1.03.25 C1.03.29 +C1.02.26 C1.02.19 C1.02.22 C1.02.23 C1.02.25 C1.02.27 C1.02.29 C1.02.30 C1.02.32 +C1.02.27 C1.02.20 C1.02.23 C1.02.24 C1.02.26 C1.02.28 C1.02.30 C1.02.31 C1.02.33 +C1.02.28 C1.01.25 C1.01.28 C1.01.32 C1.02.21 C1.02.24 C1.02.27 C1.02.31 C1.02.34 +C1.02.29 C1.02.22 C1.02.25 C1.02.26 C1.02.30 C1.02.32 C1.03.25 C1.03.29 C1.03.33 +C1.02.30 C1.02.23 C1.02.26 C1.02.27 C1.02.29 C1.02.31 C1.02.32 C1.02.33 C1.02.35 +C1.02.31 C1.01.32 C1.02.24 C1.02.27 C1.02.28 C1.02.30 C1.02.33 C1.02.34 C1.02.36 +C1.02.32 C1.02.26 C1.02.29 C1.02.30 C1.02.33 C1.02.35 C1.02.38 C1.03.29 C1.03.33 +C1.02.33 C1.02.27 C1.02.30 C1.02.31 C1.02.32 C1.02.34 C1.02.35 C1.02.36 C1.02.39 +C1.02.34 C1.01.32 C1.01.35 C1.02.28 C1.02.31 C1.02.33 C1.02.36 C1.02.37 C1.02.40 +C1.02.35 C1.02.30 C1.02.32 C1.02.33 C1.02.36 C1.02.38 C1.02.39 C1.02.41 C1.03.33 +C1.02.36 C1.02.31 C1.02.33 C1.02.34 C1.02.35 C1.02.37 C1.02.39 C1.02.40 C1.02.42 +C1.02.37 C1.01.32 C1.01.35 C1.01.37 C1.01.40 C1.02.34 C1.02.36 C1.02.40 C1.02.43 +C1.02.38 C1.02.32 C1.02.35 C1.02.39 C1.02.41 C1.03.33 C1.03.34 C1.03.37 C1.03.40 +C1.02.39 C1.02.33 C1.02.35 C1.02.36 C1.02.38 C1.02.40 C1.02.41 C1.02.42 C1.02.44 +C1.02.40 C1.01.40 C1.02.34 C1.02.36 C1.02.37 C1.02.39 C1.02.42 C1.02.43 C1.02.45 +C1.02.41 C1.02.35 C1.02.38 C1.02.39 C1.02.42 C1.02.44 C1.03.37 C1.03.40 C1.03.43 +C1.02.42 C1.02.36 C1.02.39 C1.02.40 C1.02.41 C1.02.43 C1.02.44 C1.02.45 C1.02.46 +C1.02.43 C1.01.40 C1.01.42 C1.01.44 C1.02.37 C1.02.40 C1.02.42 C1.02.45 C1.02.47 +C1.02.44 C1.02.39 C1.02.41 C1.02.42 C1.02.45 C1.02.46 C1.02.48 C1.03.40 C1.03.43 +C1.02.45 C1.01.44 C1.02.40 C1.02.42 C1.02.43 C1.02.44 C1.02.46 C1.02.47 C1.02.49 +C1.02.46 C1.02.42 C1.02.44 C1.02.45 C1.02.47 C1.02.48 C1.02.49 C1.02.50 C1.03.43 +C1.02.47 C1.01.44 C1.01.46 C1.01.48 C1.02.43 C1.02.45 C1.02.46 C1.02.49 C1.02.51 +C1.02.48 C1.02.44 C1.02.46 C1.02.49 C1.02.50 C1.03.43 C1.03.44 C1.03.46 C1.03.48 +C1.02.49 C1.01.48 C1.02.45 C1.02.46 C1.02.47 C1.02.48 C1.02.50 C1.02.51 C1.02.52 +C1.02.50 C1.02.46 C1.02.48 C1.02.49 C1.02.51 C1.02.52 C1.03.46 C1.03.48 C1.03.50 +C1.02.51 C1.01.48 C1.01.49 C1.01.51 C1.02.47 C1.02.49 C1.02.50 C1.02.52 C1.02.53 +C1.02.52 C1.01.51 C1.02.49 C1.02.50 C1.02.51 C1.02.53 C1.02.54 C1.02.56 C1.03.48 C1.03.50 C1.03.54 +C1.02.53 C1.01.51 C1.02.51 C1.02.52 C1.02.54 C1.02.55 C1.02.57 +C1.02.54 C1.02.52 C1.02.53 C1.02.55 C1.02.56 C1.02.57 C1.02.58 C1.03.54 +C1.02.55 C1.01.51 C1.01.54 C1.01.56 C1.02.53 C1.02.54 C1.02.57 C1.02.59 +C1.02.56 C1.02.52 C1.02.54 C1.02.57 C1.02.58 C1.02.60 C1.03.54 C1.03.55 C1.03.58 +C1.02.57 C1.01.56 C1.02.53 C1.02.54 C1.02.55 C1.02.56 C1.02.58 C1.02.59 C1.02.61 +C1.02.58 C1.02.54 C1.02.56 C1.02.57 C1.02.59 C1.02.60 C1.02.61 C1.02.62 C1.03.58 +C1.02.59 C1.01.56 C1.01.58 C1.01.60 C1.01.61 C1.02.55 C1.02.57 C1.02.58 C1.02.61 +C1.02.60 C1.02.56 C1.02.58 C1.02.61 C1.02.62 C1.03.58 C1.03.59 C1.03.61 +C1.02.61 C1.01.60 C1.01.61 C1.02.57 C1.02.58 C1.02.59 C1.02.60 C1.02.62 +C1.02.62 C1.02.58 C1.02.60 C1.02.61 C1.03.61 +C1.03.00 C1.03.05 C1.03.07 C1.04.00 C1.04.08 +C1.03.01 C1.03.02 C1.03.03 C1.03.10 +C1.03.02 C1.02.04 C1.02.05 C1.03.01 C1.03.08 C1.03.10 +C1.03.03 C1.03.01 C1.03.04 C1.03.10 C1.03.11 +C1.03.04 C1.03.03 C1.03.06 C1.03.11 C1.03.12 +C1.03.05 C1.03.00 C1.03.07 C1.03.09 C1.03.12 C1.03.13 C1.03.14 +C1.03.06 C1.03.04 C1.03.09 C1.03.11 C1.03.12 +C1.03.07 C1.03.00 C1.03.05 C1.03.13 C1.03.14 C1.04.00 C1.04.08 C1.04.14 +C1.03.08 C1.02.05 C1.02.14 C1.03.02 C1.03.10 C1.03.15 +C1.03.09 C1.03.05 C1.03.06 C1.03.12 C1.03.13 +C1.03.10 C1.02.14 C1.03.01 C1.03.02 C1.03.03 C1.03.08 C1.03.11 C1.03.15 C1.03.16 +C1.03.11 C1.03.03 C1.03.04 C1.03.06 C1.03.10 C1.03.12 C1.03.15 C1.03.16 C1.03.17 +C1.03.12 C1.03.04 C1.03.05 C1.03.06 C1.03.09 C1.03.11 C1.03.13 C1.03.16 C1.03.17 C1.03.18 +C1.03.13 C1.03.05 C1.03.07 C1.03.09 C1.03.12 C1.03.14 C1.03.17 C1.03.18 C1.03.19 +C1.03.14 C1.03.05 C1.03.07 C1.03.13 C1.03.18 C1.03.19 C1.04.08 C1.04.14 C1.04.19 +C1.03.15 C1.02.14 C1.02.18 C1.03.08 C1.03.10 C1.03.11 C1.03.16 C1.03.20 C1.03.21 +C1.03.16 C1.03.10 C1.03.11 C1.03.12 C1.03.15 C1.03.17 C1.03.20 C1.03.21 C1.03.22 +C1.03.17 C1.03.11 C1.03.12 C1.03.13 C1.03.16 C1.03.18 C1.03.21 C1.03.22 C1.03.23 +C1.03.18 C1.03.12 C1.03.13 C1.03.14 C1.03.17 C1.03.19 C1.03.22 C1.03.23 C1.03.24 +C1.03.19 C1.03.13 C1.03.14 C1.03.18 C1.03.23 C1.03.24 C1.04.14 C1.04.19 C1.04.24 +C1.03.20 C1.02.14 C1.02.18 C1.02.22 C1.02.25 C1.03.15 C1.03.16 C1.03.21 C1.03.25 +C1.03.21 C1.02.25 C1.03.15 C1.03.16 C1.03.17 C1.03.20 C1.03.22 C1.03.25 C1.03.26 +C1.03.22 C1.03.16 C1.03.17 C1.03.18 C1.03.21 C1.03.23 C1.03.25 C1.03.26 C1.03.27 +C1.03.23 C1.03.17 C1.03.18 C1.03.19 C1.03.22 C1.03.24 C1.03.26 C1.03.27 C1.03.28 +C1.03.24 C1.03.18 C1.03.19 C1.03.23 C1.03.27 C1.03.28 C1.04.19 C1.04.24 C1.04.28 +C1.03.25 C1.02.25 C1.02.29 C1.03.20 C1.03.21 C1.03.22 C1.03.26 C1.03.29 C1.03.30 +C1.03.26 C1.03.21 C1.03.22 C1.03.23 C1.03.25 C1.03.27 C1.03.29 C1.03.30 C1.03.31 +C1.03.27 C1.03.22 C1.03.23 C1.03.24 C1.03.26 C1.03.28 C1.03.30 C1.03.31 C1.03.32 +C1.03.28 C1.03.23 C1.03.24 C1.03.27 C1.03.31 C1.03.32 C1.04.24 C1.04.28 C1.04.32 +C1.03.29 C1.02.25 C1.02.29 C1.02.32 C1.03.25 C1.03.26 C1.03.30 C1.03.33 C1.03.34 +C1.03.30 C1.03.25 C1.03.26 C1.03.27 C1.03.29 C1.03.31 C1.03.33 C1.03.34 C1.03.35 +C1.03.31 C1.03.26 C1.03.27 C1.03.28 C1.03.30 C1.03.32 C1.03.34 C1.03.35 C1.03.36 +C1.03.32 C1.03.27 C1.03.28 C1.03.31 C1.03.35 C1.03.36 C1.04.28 C1.04.32 C1.04.36 +C1.03.33 C1.02.29 C1.02.32 C1.02.35 C1.02.38 C1.03.29 C1.03.30 C1.03.34 C1.03.37 +C1.03.34 C1.02.38 C1.03.29 C1.03.30 C1.03.31 C1.03.33 C1.03.35 C1.03.37 C1.03.38 +C1.03.35 C1.03.30 C1.03.31 C1.03.32 C1.03.34 C1.03.36 C1.03.37 C1.03.38 C1.03.39 +C1.03.36 C1.03.31 C1.03.32 C1.03.35 C1.03.38 C1.03.39 C1.04.32 C1.04.36 C1.04.39 +C1.03.37 C1.02.38 C1.02.41 C1.03.33 C1.03.34 C1.03.35 C1.03.38 C1.03.40 C1.03.41 +C1.03.38 C1.03.34 C1.03.35 C1.03.36 C1.03.37 C1.03.39 C1.03.40 C1.03.41 C1.03.42 +C1.03.39 C1.03.35 C1.03.36 C1.03.38 C1.03.41 C1.03.42 C1.04.36 C1.04.39 C1.04.42 +C1.03.40 C1.02.38 C1.02.41 C1.02.44 C1.03.37 C1.03.38 C1.03.41 C1.03.43 C1.03.44 +C1.03.41 C1.03.37 C1.03.38 C1.03.39 C1.03.40 C1.03.42 C1.03.43 C1.03.44 C1.03.45 +C1.03.42 C1.03.38 C1.03.39 C1.03.41 C1.03.44 C1.03.45 C1.04.39 C1.04.42 C1.04.45 +C1.03.43 C1.02.41 C1.02.44 C1.02.46 C1.02.48 C1.03.40 C1.03.41 C1.03.44 C1.03.46 +C1.03.44 C1.02.48 C1.03.40 C1.03.41 C1.03.42 C1.03.43 C1.03.45 C1.03.46 C1.03.47 +C1.03.45 C1.03.41 C1.03.42 C1.03.44 C1.03.46 C1.03.47 C1.04.42 C1.04.45 C1.04.47 +C1.03.46 C1.02.48 C1.02.50 C1.03.43 C1.03.44 C1.03.45 C1.03.47 C1.03.48 C1.03.49 +C1.03.47 C1.03.44 C1.03.45 C1.03.46 C1.03.48 C1.03.49 C1.04.45 C1.04.47 C1.04.49 +C1.03.48 C1.02.48 C1.02.50 C1.02.52 C1.03.46 C1.03.47 C1.03.49 C1.03.50 C1.03.51 C1.03.52 +C1.03.49 C1.03.46 C1.03.47 C1.03.48 C1.03.51 C1.03.52 C1.03.53 C1.04.47 C1.04.49 C1.04.53 +C1.03.50 C1.02.50 C1.02.52 C1.03.48 C1.03.51 C1.03.54 C1.03.55 +C1.03.51 C1.03.48 C1.03.49 C1.03.50 C1.03.52 C1.03.54 C1.03.55 C1.03.56 +C1.03.52 C1.03.48 C1.03.49 C1.03.51 C1.03.53 C1.03.55 C1.03.56 C1.03.57 +C1.03.53 C1.03.49 C1.03.52 C1.03.56 C1.03.57 C1.04.49 C1.04.53 C1.04.57 +C1.03.54 C1.02.52 C1.02.54 C1.02.56 C1.03.50 C1.03.51 C1.03.55 C1.03.58 +C1.03.55 C1.02.56 C1.03.50 C1.03.51 C1.03.52 C1.03.54 C1.03.56 C1.03.58 C1.03.59 +C1.03.56 C1.03.51 C1.03.52 C1.03.53 C1.03.55 C1.03.57 C1.03.58 C1.03.59 C1.03.60 +C1.03.57 C1.03.52 C1.03.53 C1.03.56 C1.03.59 C1.03.60 C1.04.53 C1.04.57 C1.04.60 +C1.03.58 C1.02.56 C1.02.58 C1.02.60 C1.03.54 C1.03.55 C1.03.56 C1.03.59 C1.03.61 +C1.03.59 C1.02.60 C1.03.55 C1.03.56 C1.03.57 C1.03.58 C1.03.60 C1.03.61 C1.03.62 +C1.03.60 C1.03.56 C1.03.57 C1.03.59 C1.03.61 C1.03.62 C1.04.57 C1.04.60 C1.04.62 +C1.03.61 C1.02.60 C1.02.62 C1.03.58 C1.03.59 C1.03.60 C1.03.62 +C1.03.62 C1.03.59 C1.03.60 C1.03.61 C1.04.60 C1.04.62 +C1.04.00 C1.03.00 C1.03.07 C1.04.06 C1.04.08 +C1.04.01 C1.04.02 C1.04.04 C1.04.10 +C1.04.02 C1.04.01 C1.04.03 C1.04.10 C1.04.11 +C1.04.03 C1.04.02 C1.04.05 C1.04.10 C1.04.11 +C1.04.04 C1.04.01 C1.04.10 C1.04.15 C1.05.02 C1.05.09 C1.05.13 +C1.04.05 C1.04.03 C1.04.07 C1.04.11 C1.04.12 +C1.04.06 C1.04.00 C1.04.08 C1.04.09 C1.04.12 C1.04.13 C1.04.14 +C1.04.07 C1.04.05 C1.04.09 C1.04.11 C1.04.12 +C1.04.08 C1.03.00 C1.03.07 C1.03.14 C1.04.00 C1.04.06 C1.04.13 C1.04.14 +C1.04.09 C1.04.06 C1.04.07 C1.04.12 C1.04.13 +C1.04.10 C1.04.01 C1.04.02 C1.04.03 C1.04.04 C1.04.11 C1.04.15 C1.04.16 C1.05.13 +C1.04.11 C1.04.02 C1.04.03 C1.04.05 C1.04.07 C1.04.10 C1.04.12 C1.04.15 C1.04.16 C1.04.17 +C1.04.12 C1.04.05 C1.04.06 C1.04.07 C1.04.09 C1.04.11 C1.04.13 C1.04.16 C1.04.17 C1.04.18 +C1.04.13 C1.04.06 C1.04.08 C1.04.09 C1.04.12 C1.04.14 C1.04.17 C1.04.18 C1.04.19 +C1.04.14 C1.03.07 C1.03.14 C1.03.19 C1.04.06 C1.04.08 C1.04.13 C1.04.18 C1.04.19 +C1.04.15 C1.04.04 C1.04.10 C1.04.11 C1.04.16 C1.04.20 C1.04.21 C1.05.13 C1.05.17 +C1.04.16 C1.04.10 C1.04.11 C1.04.12 C1.04.15 C1.04.17 C1.04.20 C1.04.21 C1.04.22 +C1.04.17 C1.04.11 C1.04.12 C1.04.13 C1.04.16 C1.04.18 C1.04.21 C1.04.22 C1.04.23 +C1.04.18 C1.04.12 C1.04.13 C1.04.14 C1.04.17 C1.04.19 C1.04.22 C1.04.23 C1.04.24 +C1.04.19 C1.03.14 C1.03.19 C1.03.24 C1.04.13 C1.04.14 C1.04.18 C1.04.23 C1.04.24 +C1.04.20 C1.04.15 C1.04.16 C1.04.21 C1.04.25 C1.05.13 C1.05.17 C1.05.21 C1.05.24 +C1.04.21 C1.04.15 C1.04.16 C1.04.17 C1.04.20 C1.04.22 C1.04.25 C1.04.26 C1.05.24 +C1.04.22 C1.04.16 C1.04.17 C1.04.18 C1.04.21 C1.04.23 C1.04.25 C1.04.26 C1.04.27 +C1.04.23 C1.04.17 C1.04.18 C1.04.19 C1.04.22 C1.04.24 C1.04.26 C1.04.27 C1.04.28 +C1.04.24 C1.03.19 C1.03.24 C1.03.28 C1.04.18 C1.04.19 C1.04.23 C1.04.27 C1.04.28 +C1.04.25 C1.04.20 C1.04.21 C1.04.22 C1.04.26 C1.04.29 C1.04.30 C1.05.24 C1.05.28 +C1.04.26 C1.04.21 C1.04.22 C1.04.23 C1.04.25 C1.04.27 C1.04.29 C1.04.30 C1.04.31 +C1.04.27 C1.04.22 C1.04.23 C1.04.24 C1.04.26 C1.04.28 C1.04.30 C1.04.31 C1.04.32 +C1.04.28 C1.03.24 C1.03.28 C1.03.32 C1.04.23 C1.04.24 C1.04.27 C1.04.31 C1.04.32 +C1.04.29 C1.04.25 C1.04.26 C1.04.30 C1.04.33 C1.04.34 C1.05.24 C1.05.28 C1.05.31 +C1.04.30 C1.04.25 C1.04.26 C1.04.27 C1.04.29 C1.04.31 C1.04.33 C1.04.34 C1.04.35 +C1.04.31 C1.04.26 C1.04.27 C1.04.28 C1.04.30 C1.04.32 C1.04.34 C1.04.35 C1.04.36 +C1.04.32 C1.03.28 C1.03.32 C1.03.36 C1.04.27 C1.04.28 C1.04.31 C1.04.35 C1.04.36 +C1.04.33 C1.04.29 C1.04.30 C1.04.34 C1.04.37 C1.05.28 C1.05.31 C1.05.34 C1.05.37 +C1.04.34 C1.04.29 C1.04.30 C1.04.31 C1.04.33 C1.04.35 C1.04.37 C1.04.38 C1.05.37 +C1.04.35 C1.04.30 C1.04.31 C1.04.32 C1.04.34 C1.04.36 C1.04.37 C1.04.38 C1.04.39 +C1.04.36 C1.03.32 C1.03.36 C1.03.39 C1.04.31 C1.04.32 C1.04.35 C1.04.38 C1.04.39 +C1.04.37 C1.04.33 C1.04.34 C1.04.35 C1.04.38 C1.04.40 C1.04.41 C1.05.37 C1.05.40 +C1.04.38 C1.04.34 C1.04.35 C1.04.36 C1.04.37 C1.04.39 C1.04.40 C1.04.41 C1.04.42 +C1.04.39 C1.03.36 C1.03.39 C1.03.42 C1.04.35 C1.04.36 C1.04.38 C1.04.41 C1.04.42 +C1.04.40 C1.04.37 C1.04.38 C1.04.41 C1.04.43 C1.04.44 C1.05.37 C1.05.40 C1.05.43 +C1.04.41 C1.04.37 C1.04.38 C1.04.39 C1.04.40 C1.04.42 C1.04.43 C1.04.44 C1.04.45 +C1.04.42 C1.03.39 C1.03.42 C1.03.45 C1.04.38 C1.04.39 C1.04.41 C1.04.44 C1.04.45 +C1.04.43 C1.04.40 C1.04.41 C1.04.44 C1.04.46 C1.05.40 C1.05.43 C1.05.45 C1.05.47 +C1.04.44 C1.04.40 C1.04.41 C1.04.42 C1.04.43 C1.04.45 C1.04.46 C1.04.47 C1.05.47 +C1.04.45 C1.03.42 C1.03.45 C1.03.47 C1.04.41 C1.04.42 C1.04.44 C1.04.46 C1.04.47 +C1.04.46 C1.04.43 C1.04.44 C1.04.45 C1.04.47 C1.04.48 C1.04.49 C1.05.47 C1.05.49 +C1.04.47 C1.03.45 C1.03.47 C1.03.49 C1.04.44 C1.04.45 C1.04.46 C1.04.48 C1.04.49 +C1.04.48 C1.04.46 C1.04.47 C1.04.49 C1.04.50 C1.04.51 C1.04.52 C1.05.47 C1.05.49 C1.05.51 +C1.04.49 C1.03.47 C1.03.49 C1.03.53 C1.04.46 C1.04.47 C1.04.48 C1.04.51 C1.04.52 C1.04.53 +C1.04.50 C1.04.48 C1.04.51 C1.04.54 C1.04.55 C1.05.49 C1.05.51 +C1.04.51 C1.04.48 C1.04.49 C1.04.50 C1.04.52 C1.04.54 C1.04.55 C1.04.56 +C1.04.52 C1.04.48 C1.04.49 C1.04.51 C1.04.53 C1.04.55 C1.04.56 C1.04.57 +C1.04.53 C1.03.49 C1.03.53 C1.03.57 C1.04.49 C1.04.52 C1.04.56 C1.04.57 +C1.04.54 C1.04.50 C1.04.51 C1.04.55 C1.04.58 C1.05.51 C1.05.53 C1.05.55 +C1.04.55 C1.04.50 C1.04.51 C1.04.52 C1.04.54 C1.04.56 C1.04.58 C1.04.59 C1.05.55 +C1.04.56 C1.04.51 C1.04.52 C1.04.53 C1.04.55 C1.04.57 C1.04.58 C1.04.59 C1.04.60 +C1.04.57 C1.03.53 C1.03.57 C1.03.60 C1.04.52 C1.04.53 C1.04.56 C1.04.59 C1.04.60 +C1.04.58 C1.04.54 C1.04.55 C1.04.56 C1.04.59 C1.04.61 C1.05.55 C1.05.57 C1.05.59 +C1.04.59 C1.04.55 C1.04.56 C1.04.57 C1.04.58 C1.04.60 C1.04.61 C1.04.62 C1.05.59 +C1.04.60 C1.03.57 C1.03.60 C1.03.62 C1.04.56 C1.04.57 C1.04.59 C1.04.61 C1.04.62 +C1.04.61 C1.04.58 C1.04.59 C1.04.60 C1.04.62 C1.05.59 C1.05.62 +C1.04.62 C1.03.60 C1.03.62 C1.04.59 C1.04.60 C1.04.61 C1.05.62 +C1.05.00 C1.05.02 C1.05.05 C1.05.09 +C1.05.01 C1.05.03 C1.05.06 C1.05.12 +C1.05.02 C1.04.04 C1.05.00 C1.05.09 C1.05.13 +C1.05.03 C1.05.01 C1.05.06 C1.05.07 C1.05.08 C1.05.12 +C1.05.04 C1.05.05 C1.05.07 C1.05.10 +C1.05.05 C1.05.00 C1.05.04 C1.05.09 C1.05.10 C1.05.14 +C1.05.06 C1.05.01 C1.05.03 C1.05.11 C1.05.12 C1.05.16 C1.06.06 +C1.05.07 C1.05.03 C1.05.04 C1.05.08 C1.05.10 +C1.05.08 C1.05.03 C1.05.07 C1.05.10 C1.05.12 C1.05.15 +C1.05.09 C1.04.04 C1.05.00 C1.05.02 C1.05.05 C1.05.10 C1.05.13 C1.05.14 C1.05.17 +C1.05.10 C1.05.04 C1.05.05 C1.05.07 C1.05.08 C1.05.09 C1.05.12 C1.05.14 C1.05.15 C1.05.18 +C1.05.11 C1.05.06 C1.05.12 C1.05.16 C1.05.20 C1.06.06 C1.06.12 C1.06.17 +C1.05.12 C1.05.01 C1.05.03 C1.05.06 C1.05.08 C1.05.10 C1.05.11 C1.05.15 C1.05.16 C1.05.19 +C1.05.13 C1.04.04 C1.04.10 C1.04.15 C1.04.20 C1.05.02 C1.05.09 C1.05.14 C1.05.17 +C1.05.14 C1.05.05 C1.05.09 C1.05.10 C1.05.13 C1.05.15 C1.05.17 C1.05.18 C1.05.21 +C1.05.15 C1.05.08 C1.05.10 C1.05.12 C1.05.14 C1.05.16 C1.05.18 C1.05.19 C1.05.22 +C1.05.16 C1.05.06 C1.05.11 C1.05.12 C1.05.15 C1.05.19 C1.05.20 C1.05.23 C1.06.17 +C1.05.17 C1.04.15 C1.04.20 C1.05.09 C1.05.13 C1.05.14 C1.05.18 C1.05.21 C1.05.24 +C1.05.18 C1.05.10 C1.05.14 C1.05.15 C1.05.17 C1.05.19 C1.05.21 C1.05.22 C1.05.25 +C1.05.19 C1.05.12 C1.05.15 C1.05.16 C1.05.18 C1.05.20 C1.05.22 C1.05.23 C1.05.26 +C1.05.20 C1.05.11 C1.05.16 C1.05.19 C1.05.23 C1.05.27 C1.06.17 C1.06.20 C1.06.25 +C1.05.21 C1.04.20 C1.05.14 C1.05.17 C1.05.18 C1.05.22 C1.05.24 C1.05.25 C1.05.28 +C1.05.22 C1.05.15 C1.05.18 C1.05.19 C1.05.21 C1.05.23 C1.05.25 C1.05.26 C1.05.29 +C1.05.23 C1.05.16 C1.05.19 C1.05.20 C1.05.22 C1.05.26 C1.05.27 C1.05.30 C1.06.25 +C1.05.24 C1.04.20 C1.04.21 C1.04.25 C1.04.29 C1.05.17 C1.05.21 C1.05.25 C1.05.28 +C1.05.25 C1.05.18 C1.05.21 C1.05.22 C1.05.24 C1.05.26 C1.05.28 C1.05.29 C1.05.31 +C1.05.26 C1.05.19 C1.05.22 C1.05.23 C1.05.25 C1.05.27 C1.05.29 C1.05.30 C1.05.32 +C1.05.27 C1.05.20 C1.05.23 C1.05.26 C1.05.30 C1.05.33 C1.06.25 C1.06.28 C1.06.32 +C1.05.28 C1.04.25 C1.04.29 C1.04.33 C1.05.21 C1.05.24 C1.05.25 C1.05.29 C1.05.31 +C1.05.29 C1.05.22 C1.05.25 C1.05.26 C1.05.28 C1.05.30 C1.05.31 C1.05.32 C1.05.34 +C1.05.30 C1.05.23 C1.05.26 C1.05.27 C1.05.29 C1.05.32 C1.05.33 C1.05.36 C1.06.32 +C1.05.31 C1.04.29 C1.04.33 C1.05.25 C1.05.28 C1.05.29 C1.05.32 C1.05.34 C1.05.37 +C1.05.32 C1.05.26 C1.05.29 C1.05.30 C1.05.31 C1.05.33 C1.05.34 C1.05.36 C1.05.38 +C1.05.33 C1.05.27 C1.05.30 C1.05.32 C1.05.35 C1.05.36 C1.05.39 C1.06.32 C1.06.35 +C1.05.34 C1.04.33 C1.05.29 C1.05.31 C1.05.32 C1.05.36 C1.05.37 C1.05.38 C1.05.40 +C1.05.35 C1.05.33 C1.05.36 C1.05.39 C1.05.42 C1.06.32 C1.06.35 C1.06.37 C1.06.40 +C1.05.36 C1.05.30 C1.05.32 C1.05.33 C1.05.34 C1.05.35 C1.05.38 C1.05.39 C1.05.41 +C1.05.37 C1.04.33 C1.04.34 C1.04.37 C1.04.40 C1.05.31 C1.05.34 C1.05.38 C1.05.40 +C1.05.38 C1.05.32 C1.05.34 C1.05.36 C1.05.37 C1.05.39 C1.05.40 C1.05.41 C1.05.43 +C1.05.39 C1.05.33 C1.05.35 C1.05.36 C1.05.38 C1.05.41 C1.05.42 C1.05.44 C1.06.40 +C1.05.40 C1.04.37 C1.04.40 C1.04.43 C1.05.34 C1.05.37 C1.05.38 C1.05.41 C1.05.43 +C1.05.41 C1.05.36 C1.05.38 C1.05.39 C1.05.40 C1.05.42 C1.05.43 C1.05.44 C1.05.45 +C1.05.42 C1.05.35 C1.05.39 C1.05.41 C1.05.44 C1.05.46 C1.06.40 C1.06.42 C1.06.44 +C1.05.43 C1.04.40 C1.04.43 C1.05.38 C1.05.40 C1.05.41 C1.05.44 C1.05.45 C1.05.47 +C1.05.44 C1.05.39 C1.05.41 C1.05.42 C1.05.43 C1.05.45 C1.05.46 C1.05.48 C1.06.44 +C1.05.45 C1.04.43 C1.05.41 C1.05.43 C1.05.44 C1.05.46 C1.05.47 C1.05.48 C1.05.49 +C1.05.46 C1.05.42 C1.05.44 C1.05.45 C1.05.48 C1.05.50 C1.06.44 C1.06.46 C1.06.48 +C1.05.47 C1.04.43 C1.04.44 C1.04.46 C1.04.48 C1.05.43 C1.05.45 C1.05.48 C1.05.49 +C1.05.48 C1.05.44 C1.05.45 C1.05.46 C1.05.47 C1.05.49 C1.05.50 C1.05.51 C1.06.48 +C1.05.49 C1.04.46 C1.04.48 C1.04.50 C1.05.45 C1.05.47 C1.05.48 C1.05.50 C1.05.51 +C1.05.50 C1.05.46 C1.05.48 C1.05.49 C1.05.51 C1.05.52 C1.06.48 C1.06.49 C1.06.51 +C1.05.51 C1.04.48 C1.04.50 C1.04.54 C1.05.48 C1.05.49 C1.05.50 C1.05.52 C1.05.53 C1.05.55 C1.06.51 +C1.05.52 C1.05.50 C1.05.51 C1.05.53 C1.05.54 C1.05.56 C1.06.51 +C1.05.53 C1.04.54 C1.05.51 C1.05.52 C1.05.54 C1.05.55 C1.05.56 C1.05.57 +C1.05.54 C1.05.52 C1.05.53 C1.05.56 C1.05.58 C1.06.51 C1.06.55 C1.06.57 +C1.05.55 C1.04.54 C1.04.55 C1.04.58 C1.05.51 C1.05.53 C1.05.56 C1.05.57 C1.05.59 +C1.05.56 C1.05.52 C1.05.53 C1.05.54 C1.05.55 C1.05.57 C1.05.58 C1.05.60 C1.06.57 +C1.05.57 C1.04.58 C1.05.53 C1.05.55 C1.05.56 C1.05.58 C1.05.59 C1.05.60 +C1.05.58 C1.05.54 C1.05.56 C1.05.57 C1.05.60 C1.05.61 C1.06.57 C1.06.59 C1.06.61 +C1.05.59 C1.04.58 C1.04.59 C1.04.61 C1.05.55 C1.05.57 C1.05.60 C1.05.62 +C1.05.60 C1.05.56 C1.05.57 C1.05.58 C1.05.59 C1.05.61 C1.05.62 C1.06.61 +C1.05.61 C1.05.58 C1.05.60 C1.05.62 C1.06.61 C1.06.62 +C1.05.62 C1.04.61 C1.04.62 C1.05.59 C1.05.60 C1.05.61 +C1.06.00 C1.06.02 C1.06.03 C1.06.11 +C1.06.01 C1.06.04 C1.06.06 C1.06.08 C1.06.12 +C1.06.02 C1.06.00 C1.06.05 C1.06.11 C1.06.13 +C1.06.03 C1.06.00 C1.06.07 C1.06.09 C1.06.11 +C1.06.04 C1.06.01 C1.06.08 C1.06.10 +C1.06.05 C1.06.02 C1.06.11 C1.06.13 C1.07.00 C1.07.08 +C1.06.06 C1.05.06 C1.05.11 C1.06.01 C1.06.12 C1.06.17 +C1.06.07 C1.06.03 C1.06.09 C1.06.10 C1.06.14 +C1.06.08 C1.06.01 C1.06.04 C1.06.10 C1.06.12 C1.06.15 +C1.06.09 C1.06.03 C1.06.07 C1.06.11 C1.06.14 C1.06.16 +C1.06.10 C1.06.04 C1.06.07 C1.06.08 C1.06.12 C1.06.14 C1.06.15 C1.06.18 +C1.06.11 C1.06.00 C1.06.02 C1.06.03 C1.06.05 C1.06.09 C1.06.13 C1.06.14 C1.06.16 C1.06.19 +C1.06.12 C1.05.11 C1.06.01 C1.06.06 C1.06.08 C1.06.10 C1.06.15 C1.06.17 C1.06.20 +C1.06.13 C1.06.02 C1.06.05 C1.06.11 C1.06.16 C1.06.19 C1.06.21 C1.07.07 C1.07.08 C1.07.18 +C1.06.14 C1.06.07 C1.06.09 C1.06.10 C1.06.11 C1.06.15 C1.06.16 C1.06.18 C1.06.22 +C1.06.15 C1.06.08 C1.06.10 C1.06.12 C1.06.14 C1.06.17 C1.06.18 C1.06.20 C1.06.23 +C1.06.16 C1.06.09 C1.06.11 C1.06.13 C1.06.14 C1.06.18 C1.06.19 C1.06.22 C1.06.24 +C1.06.17 C1.05.11 C1.05.16 C1.05.20 C1.06.06 C1.06.12 C1.06.15 C1.06.20 C1.06.25 +C1.06.18 C1.06.10 C1.06.14 C1.06.15 C1.06.16 C1.06.20 C1.06.22 C1.06.23 C1.06.27 +C1.06.19 C1.06.11 C1.06.13 C1.06.16 C1.06.21 C1.06.22 C1.06.24 C1.06.26 C1.07.18 +C1.06.20 C1.05.20 C1.06.12 C1.06.15 C1.06.17 C1.06.18 C1.06.23 C1.06.25 C1.06.28 +C1.06.21 C1.06.13 C1.06.19 C1.06.24 C1.06.26 C1.07.18 C1.07.19 C1.07.24 C1.07.29 +C1.06.22 C1.06.14 C1.06.16 C1.06.18 C1.06.19 C1.06.23 C1.06.24 C1.06.27 C1.06.29 +C1.06.23 C1.06.15 C1.06.18 C1.06.20 C1.06.22 C1.06.25 C1.06.27 C1.06.28 C1.06.30 +C1.06.24 C1.06.16 C1.06.19 C1.06.21 C1.06.22 C1.06.26 C1.06.27 C1.06.29 C1.06.31 +C1.06.25 C1.05.20 C1.05.23 C1.05.27 C1.06.17 C1.06.20 C1.06.23 C1.06.28 C1.06.32 +C1.06.26 C1.06.19 C1.06.21 C1.06.24 C1.06.29 C1.06.31 C1.06.33 C1.07.24 C1.07.29 +C1.06.27 C1.06.18 C1.06.22 C1.06.23 C1.06.24 C1.06.28 C1.06.29 C1.06.30 C1.06.34 +C1.06.28 C1.05.27 C1.06.20 C1.06.23 C1.06.25 C1.06.27 C1.06.30 C1.06.32 C1.06.35 +C1.06.29 C1.06.22 C1.06.24 C1.06.26 C1.06.27 C1.06.30 C1.06.31 C1.06.34 C1.06.36 +C1.06.30 C1.06.23 C1.06.27 C1.06.28 C1.06.29 C1.06.32 C1.06.34 C1.06.35 C1.06.37 +C1.06.31 C1.06.24 C1.06.26 C1.06.29 C1.06.33 C1.06.34 C1.06.36 C1.06.38 C1.07.29 +C1.06.32 C1.05.27 C1.05.30 C1.05.33 C1.05.35 C1.06.25 C1.06.28 C1.06.30 C1.06.35 +C1.06.33 C1.06.26 C1.06.31 C1.06.36 C1.06.38 C1.07.29 C1.07.30 C1.07.34 C1.07.38 +C1.06.34 C1.06.27 C1.06.29 C1.06.30 C1.06.31 C1.06.35 C1.06.36 C1.06.37 C1.06.39 +C1.06.35 C1.05.33 C1.05.35 C1.06.28 C1.06.30 C1.06.32 C1.06.34 C1.06.37 C1.06.40 +C1.06.36 C1.06.29 C1.06.31 C1.06.33 C1.06.34 C1.06.37 C1.06.38 C1.06.39 C1.06.41 +C1.06.37 C1.05.35 C1.06.30 C1.06.34 C1.06.35 C1.06.36 C1.06.39 C1.06.40 C1.06.42 +C1.06.38 C1.06.31 C1.06.33 C1.06.36 C1.06.39 C1.06.41 C1.07.34 C1.07.38 C1.07.42 +C1.06.39 C1.06.34 C1.06.36 C1.06.37 C1.06.38 C1.06.40 C1.06.41 C1.06.42 C1.06.43 +C1.06.40 C1.05.35 C1.05.39 C1.05.42 C1.06.35 C1.06.37 C1.06.39 C1.06.42 C1.06.44 +C1.06.41 C1.06.36 C1.06.38 C1.06.39 C1.06.42 C1.06.43 C1.06.45 C1.07.38 C1.07.42 +C1.06.42 C1.05.42 C1.06.37 C1.06.39 C1.06.40 C1.06.41 C1.06.43 C1.06.44 C1.06.46 +C1.06.43 C1.06.39 C1.06.41 C1.06.42 C1.06.44 C1.06.45 C1.06.46 C1.06.47 C1.07.42 +C1.06.44 C1.05.42 C1.05.44 C1.05.46 C1.06.40 C1.06.42 C1.06.43 C1.06.46 C1.06.48 +C1.06.45 C1.06.41 C1.06.43 C1.06.46 C1.06.47 C1.07.42 C1.07.43 C1.07.46 C1.07.49 +C1.06.46 C1.05.46 C1.06.42 C1.06.43 C1.06.44 C1.06.45 C1.06.47 C1.06.48 C1.06.49 +C1.06.47 C1.06.43 C1.06.45 C1.06.46 C1.06.48 C1.06.49 C1.06.50 C1.07.46 C1.07.49 +C1.06.48 C1.05.46 C1.05.48 C1.05.50 C1.06.44 C1.06.46 C1.06.47 C1.06.49 C1.06.51 +C1.06.49 C1.05.50 C1.06.46 C1.06.47 C1.06.48 C1.06.50 C1.06.51 C1.06.52 C1.07.49 +C1.06.50 C1.06.47 C1.06.49 C1.06.51 C1.06.52 C1.06.53 C1.06.54 C1.07.49 C1.07.50 C1.07.52 +C1.06.51 C1.05.50 C1.05.51 C1.05.52 C1.05.54 C1.06.48 C1.06.49 C1.06.50 C1.06.52 C1.06.55 C1.06.57 +C1.06.52 C1.06.49 C1.06.50 C1.06.51 C1.06.53 C1.06.55 C1.06.56 +C1.06.53 C1.06.50 C1.06.52 C1.06.54 C1.06.55 C1.06.56 C1.06.58 C1.07.52 +C1.06.54 C1.06.50 C1.06.53 C1.06.56 C1.06.58 C1.07.52 C1.07.54 C1.07.57 +C1.06.55 C1.05.54 C1.06.51 C1.06.52 C1.06.53 C1.06.56 C1.06.57 C1.06.59 +C1.06.56 C1.06.52 C1.06.53 C1.06.54 C1.06.55 C1.06.57 C1.06.58 C1.06.59 C1.06.60 +C1.06.57 C1.05.54 C1.05.56 C1.05.58 C1.06.51 C1.06.55 C1.06.56 C1.06.59 C1.06.61 +C1.06.58 C1.06.53 C1.06.54 C1.06.56 C1.06.59 C1.06.60 C1.07.54 C1.07.57 C1.07.60 +C1.06.59 C1.05.58 C1.06.55 C1.06.56 C1.06.57 C1.06.58 C1.06.60 C1.06.61 C1.06.62 +C1.06.60 C1.06.56 C1.06.58 C1.06.59 C1.06.61 C1.06.62 C1.07.57 C1.07.60 +C1.06.61 C1.05.58 C1.05.60 C1.05.61 C1.06.57 C1.06.59 C1.06.60 C1.06.62 +C1.06.62 C1.05.61 C1.06.59 C1.06.60 C1.06.61 C1.07.60 +C1.07.00 C1.06.05 C1.07.07 C1.07.08 +C1.07.01 C1.07.02 C1.07.04 C1.07.06 C1.07.10 C1.07.11 +C1.07.02 C1.07.01 C1.07.11 C1.07.12 C1.08.01 C1.08.11 +C1.07.03 C1.07.07 C1.07.13 C1.07.14 +C1.07.04 C1.07.01 C1.07.05 C1.07.06 C1.07.09 +C1.07.05 C1.07.04 C1.07.09 C1.07.14 C1.07.15 +C1.07.06 C1.07.01 C1.07.04 C1.07.09 C1.07.10 C1.07.15 C1.07.16 +C1.07.07 C1.06.13 C1.07.00 C1.07.03 C1.07.08 C1.07.13 C1.07.18 C1.07.19 +C1.07.08 C1.06.05 C1.06.13 C1.07.00 C1.07.07 C1.07.18 +C1.07.09 C1.07.04 C1.07.05 C1.07.06 C1.07.15 C1.07.16 +C1.07.10 C1.07.01 C1.07.06 C1.07.11 C1.07.16 C1.07.17 +C1.07.11 C1.07.01 C1.07.02 C1.07.10 C1.07.12 C1.07.16 C1.07.17 +C1.07.12 C1.07.02 C1.07.11 C1.07.17 C1.08.01 C1.08.11 C1.08.16 +C1.07.13 C1.07.03 C1.07.07 C1.07.14 C1.07.18 C1.07.19 C1.07.20 +C1.07.14 C1.07.03 C1.07.05 C1.07.13 C1.07.15 C1.07.19 C1.07.20 C1.07.21 +C1.07.15 C1.07.05 C1.07.06 C1.07.09 C1.07.14 C1.07.16 C1.07.20 C1.07.21 C1.07.22 +C1.07.16 C1.07.06 C1.07.09 C1.07.10 C1.07.11 C1.07.15 C1.07.17 C1.07.21 C1.07.22 C1.07.23 +C1.07.17 C1.07.10 C1.07.11 C1.07.12 C1.07.16 C1.07.22 C1.07.23 C1.08.11 C1.08.16 C1.08.22 +C1.07.18 C1.06.13 C1.06.19 C1.06.21 C1.07.07 C1.07.08 C1.07.13 C1.07.19 C1.07.24 +C1.07.19 C1.06.21 C1.07.07 C1.07.13 C1.07.14 C1.07.18 C1.07.20 C1.07.24 C1.07.25 +C1.07.20 C1.07.13 C1.07.14 C1.07.15 C1.07.19 C1.07.21 C1.07.24 C1.07.25 C1.07.26 +C1.07.21 C1.07.14 C1.07.15 C1.07.16 C1.07.20 C1.07.22 C1.07.25 C1.07.26 C1.07.27 +C1.07.22 C1.07.15 C1.07.16 C1.07.17 C1.07.21 C1.07.23 C1.07.26 C1.07.27 C1.07.28 +C1.07.23 C1.07.16 C1.07.17 C1.07.22 C1.07.27 C1.07.28 C1.08.16 C1.08.22 C1.08.27 +C1.07.24 C1.06.21 C1.06.26 C1.07.18 C1.07.19 C1.07.20 C1.07.25 C1.07.29 C1.07.30 +C1.07.25 C1.07.19 C1.07.20 C1.07.21 C1.07.24 C1.07.26 C1.07.29 C1.07.30 C1.07.31 +C1.07.26 C1.07.20 C1.07.21 C1.07.22 C1.07.25 C1.07.27 C1.07.30 C1.07.31 C1.07.32 +C1.07.27 C1.07.21 C1.07.22 C1.07.23 C1.07.26 C1.07.28 C1.07.31 C1.07.32 C1.07.33 +C1.07.28 C1.07.22 C1.07.23 C1.07.27 C1.07.32 C1.07.33 C1.08.22 C1.08.27 C1.08.32 +C1.07.29 C1.06.21 C1.06.26 C1.06.31 C1.06.33 C1.07.24 C1.07.25 C1.07.30 C1.07.34 +C1.07.30 C1.06.33 C1.07.24 C1.07.25 C1.07.26 C1.07.29 C1.07.31 C1.07.34 C1.07.35 +C1.07.31 C1.07.25 C1.07.26 C1.07.27 C1.07.30 C1.07.32 C1.07.34 C1.07.35 C1.07.36 +C1.07.32 C1.07.26 C1.07.27 C1.07.28 C1.07.31 C1.07.33 C1.07.35 C1.07.36 C1.07.37 +C1.07.33 C1.07.27 C1.07.28 C1.07.32 C1.07.36 C1.07.37 C1.08.27 C1.08.32 C1.08.36 +C1.07.34 C1.06.33 C1.06.38 C1.07.29 C1.07.30 C1.07.31 C1.07.35 C1.07.38 C1.07.39 +C1.07.35 C1.07.30 C1.07.31 C1.07.32 C1.07.34 C1.07.36 C1.07.38 C1.07.39 C1.07.40 +C1.07.36 C1.07.31 C1.07.32 C1.07.33 C1.07.35 C1.07.37 C1.07.39 C1.07.40 C1.07.41 +C1.07.37 C1.07.32 C1.07.33 C1.07.36 C1.07.40 C1.07.41 C1.08.32 C1.08.36 C1.08.40 +C1.07.38 C1.06.33 C1.06.38 C1.06.41 C1.07.34 C1.07.35 C1.07.39 C1.07.42 C1.07.43 +C1.07.39 C1.07.34 C1.07.35 C1.07.36 C1.07.38 C1.07.40 C1.07.42 C1.07.43 C1.07.44 +C1.07.40 C1.07.35 C1.07.36 C1.07.37 C1.07.39 C1.07.41 C1.07.43 C1.07.44 C1.07.45 +C1.07.41 C1.07.36 C1.07.37 C1.07.40 C1.07.44 C1.07.45 C1.08.36 C1.08.40 C1.08.44 +C1.07.42 C1.06.38 C1.06.41 C1.06.43 C1.06.45 C1.07.38 C1.07.39 C1.07.43 C1.07.46 +C1.07.43 C1.06.45 C1.07.38 C1.07.39 C1.07.40 C1.07.42 C1.07.44 C1.07.46 C1.07.47 +C1.07.44 C1.07.39 C1.07.40 C1.07.41 C1.07.43 C1.07.45 C1.07.46 C1.07.47 C1.07.48 +C1.07.45 C1.07.40 C1.07.41 C1.07.44 C1.07.47 C1.07.48 C1.08.40 C1.08.44 C1.08.47 +C1.07.46 C1.06.45 C1.06.47 C1.07.42 C1.07.43 C1.07.44 C1.07.47 C1.07.49 C1.07.50 +C1.07.47 C1.07.43 C1.07.44 C1.07.45 C1.07.46 C1.07.48 C1.07.49 C1.07.50 C1.07.51 +C1.07.48 C1.07.44 C1.07.45 C1.07.47 C1.07.50 C1.07.51 C1.08.44 C1.08.47 C1.08.50 +C1.07.49 C1.06.45 C1.06.47 C1.06.49 C1.06.50 C1.07.46 C1.07.47 C1.07.50 C1.07.52 +C1.07.50 C1.06.50 C1.07.46 C1.07.47 C1.07.48 C1.07.49 C1.07.51 C1.07.52 C1.07.53 +C1.07.51 C1.07.47 C1.07.48 C1.07.50 C1.07.52 C1.07.53 C1.08.47 C1.08.50 C1.08.52 +C1.07.52 C1.06.50 C1.06.53 C1.06.54 C1.07.49 C1.07.50 C1.07.51 C1.07.53 C1.07.54 C1.07.55 +C1.07.53 C1.07.50 C1.07.51 C1.07.52 C1.07.54 C1.07.55 C1.07.56 C1.08.50 C1.08.52 C1.08.56 +C1.07.54 C1.06.54 C1.06.58 C1.07.52 C1.07.53 C1.07.55 C1.07.57 C1.07.58 +C1.07.55 C1.07.52 C1.07.53 C1.07.54 C1.07.56 C1.07.57 C1.07.58 C1.07.59 +C1.07.56 C1.07.53 C1.07.55 C1.07.58 C1.07.59 C1.08.52 C1.08.56 C1.08.59 +C1.07.57 C1.06.54 C1.06.58 C1.06.60 C1.07.54 C1.07.55 C1.07.58 C1.07.60 C1.07.61 +C1.07.58 C1.07.54 C1.07.55 C1.07.56 C1.07.57 C1.07.59 C1.07.60 C1.07.61 C1.07.62 +C1.07.59 C1.07.55 C1.07.56 C1.07.58 C1.07.61 C1.07.62 C1.08.56 C1.08.59 C1.08.62 +C1.07.60 C1.06.58 C1.06.60 C1.06.62 C1.07.57 C1.07.58 C1.07.61 +C1.07.61 C1.07.57 C1.07.58 C1.07.59 C1.07.60 C1.07.62 +C1.07.62 C1.07.58 C1.07.59 C1.07.61 C1.08.59 C1.08.62 +C1.08.00 C1.08.07 C1.08.12 +C1.08.01 C1.07.02 C1.07.12 C1.08.02 C1.08.10 C1.08.11 +C1.08.02 C1.08.01 C1.08.03 C1.08.06 C1.08.09 C1.08.10 +C1.08.03 C1.08.02 C1.08.05 C1.08.06 C1.08.14 C1.08.15 +C1.08.04 C1.08.05 C1.08.12 C1.08.13 C1.08.14 +C1.08.05 C1.08.03 C1.08.04 C1.08.13 C1.08.14 +C1.08.06 C1.08.02 C1.08.03 C1.08.09 C1.08.14 C1.08.15 +C1.08.07 C1.08.00 C1.08.08 C1.08.12 C1.08.17 C1.08.18 C1.09.13 +C1.08.08 C1.08.07 C1.08.17 C1.09.02 C1.09.13 +C1.08.09 C1.08.02 C1.08.06 C1.08.10 C1.08.15 C1.08.16 +C1.08.10 C1.08.01 C1.08.02 C1.08.09 C1.08.11 C1.08.15 C1.08.16 +C1.08.11 C1.07.02 C1.07.12 C1.07.17 C1.08.01 C1.08.10 C1.08.16 +C1.08.12 C1.08.00 C1.08.04 C1.08.07 C1.08.13 C1.08.17 C1.08.18 C1.08.19 +C1.08.13 C1.08.04 C1.08.05 C1.08.12 C1.08.14 C1.08.18 C1.08.19 C1.08.20 +C1.08.14 C1.08.03 C1.08.04 C1.08.05 C1.08.06 C1.08.13 C1.08.15 C1.08.19 C1.08.20 C1.08.21 +C1.08.15 C1.08.03 C1.08.06 C1.08.09 C1.08.10 C1.08.14 C1.08.16 C1.08.20 C1.08.21 C1.08.22 +C1.08.16 C1.07.12 C1.07.17 C1.07.23 C1.08.09 C1.08.10 C1.08.11 C1.08.15 C1.08.21 C1.08.22 +C1.08.17 C1.08.07 C1.08.08 C1.08.12 C1.08.18 C1.08.23 C1.09.13 C1.09.19 C1.09.21 +C1.08.18 C1.08.07 C1.08.12 C1.08.13 C1.08.17 C1.08.19 C1.08.23 C1.08.24 C1.09.21 +C1.08.19 C1.08.12 C1.08.13 C1.08.14 C1.08.18 C1.08.20 C1.08.23 C1.08.24 C1.08.25 +C1.08.20 C1.08.13 C1.08.14 C1.08.15 C1.08.19 C1.08.21 C1.08.24 C1.08.25 C1.08.26 +C1.08.21 C1.08.14 C1.08.15 C1.08.16 C1.08.20 C1.08.22 C1.08.25 C1.08.26 C1.08.27 +C1.08.22 C1.07.17 C1.07.23 C1.07.28 C1.08.15 C1.08.16 C1.08.21 C1.08.26 C1.08.27 +C1.08.23 C1.08.17 C1.08.18 C1.08.19 C1.08.24 C1.08.28 C1.08.29 C1.09.21 C1.09.26 +C1.08.24 C1.08.18 C1.08.19 C1.08.20 C1.08.23 C1.08.25 C1.08.28 C1.08.29 C1.08.30 +C1.08.25 C1.08.19 C1.08.20 C1.08.21 C1.08.24 C1.08.26 C1.08.29 C1.08.30 C1.08.31 +C1.08.26 C1.08.20 C1.08.21 C1.08.22 C1.08.25 C1.08.27 C1.08.30 C1.08.31 C1.08.32 +C1.08.27 C1.07.23 C1.07.28 C1.07.33 C1.08.21 C1.08.22 C1.08.26 C1.08.31 C1.08.32 +C1.08.28 C1.08.23 C1.08.24 C1.08.29 C1.08.33 C1.09.21 C1.09.26 C1.09.31 C1.09.33 +C1.08.29 C1.08.23 C1.08.24 C1.08.25 C1.08.28 C1.08.30 C1.08.33 C1.08.34 C1.09.33 +C1.08.30 C1.08.24 C1.08.25 C1.08.26 C1.08.29 C1.08.31 C1.08.33 C1.08.34 C1.08.35 +C1.08.31 C1.08.25 C1.08.26 C1.08.27 C1.08.30 C1.08.32 C1.08.34 C1.08.35 C1.08.36 +C1.08.32 C1.07.28 C1.07.33 C1.07.37 C1.08.26 C1.08.27 C1.08.31 C1.08.35 C1.08.36 +C1.08.33 C1.08.28 C1.08.29 C1.08.30 C1.08.34 C1.08.37 C1.08.38 C1.09.33 C1.09.38 +C1.08.34 C1.08.29 C1.08.30 C1.08.31 C1.08.33 C1.08.35 C1.08.37 C1.08.38 C1.08.39 +C1.08.35 C1.08.30 C1.08.31 C1.08.32 C1.08.34 C1.08.36 C1.08.38 C1.08.39 C1.08.40 +C1.08.36 C1.07.33 C1.07.37 C1.07.41 C1.08.31 C1.08.32 C1.08.35 C1.08.39 C1.08.40 +C1.08.37 C1.08.33 C1.08.34 C1.08.38 C1.08.41 C1.08.42 C1.09.33 C1.09.38 C1.09.41 +C1.08.38 C1.08.33 C1.08.34 C1.08.35 C1.08.37 C1.08.39 C1.08.41 C1.08.42 C1.08.43 +C1.08.39 C1.08.34 C1.08.35 C1.08.36 C1.08.38 C1.08.40 C1.08.42 C1.08.43 C1.08.44 +C1.08.40 C1.07.37 C1.07.41 C1.07.45 C1.08.35 C1.08.36 C1.08.39 C1.08.43 C1.08.44 +C1.08.41 C1.08.37 C1.08.38 C1.08.42 C1.08.45 C1.09.38 C1.09.41 C1.09.43 C1.09.45 +C1.08.42 C1.08.37 C1.08.38 C1.08.39 C1.08.41 C1.08.43 C1.08.45 C1.08.46 C1.09.45 +C1.08.43 C1.08.38 C1.08.39 C1.08.40 C1.08.42 C1.08.44 C1.08.45 C1.08.46 C1.08.47 +C1.08.44 C1.07.41 C1.07.45 C1.07.48 C1.08.39 C1.08.40 C1.08.43 C1.08.46 C1.08.47 +C1.08.45 C1.08.41 C1.08.42 C1.08.43 C1.08.46 C1.08.48 C1.08.49 C1.09.45 C1.09.47 +C1.08.46 C1.08.42 C1.08.43 C1.08.44 C1.08.45 C1.08.47 C1.08.48 C1.08.49 C1.08.50 +C1.08.47 C1.07.45 C1.07.48 C1.07.51 C1.08.43 C1.08.44 C1.08.46 C1.08.49 C1.08.50 +C1.08.48 C1.08.45 C1.08.46 C1.08.49 C1.08.51 C1.09.45 C1.09.47 C1.09.49 C1.09.50 +C1.08.49 C1.08.45 C1.08.46 C1.08.47 C1.08.48 C1.08.50 C1.08.51 C1.08.52 C1.09.50 +C1.08.50 C1.07.48 C1.07.51 C1.07.53 C1.08.46 C1.08.47 C1.08.49 C1.08.51 C1.08.52 +C1.08.51 C1.08.48 C1.08.49 C1.08.50 C1.08.52 C1.08.53 C1.08.54 C1.08.55 C1.09.50 C1.09.53 +C1.08.52 C1.07.51 C1.07.53 C1.07.56 C1.08.49 C1.08.50 C1.08.51 C1.08.54 C1.08.55 C1.08.56 +C1.08.53 C1.08.51 C1.08.54 C1.08.57 C1.09.50 C1.09.53 C1.09.55 C1.09.57 +C1.08.54 C1.08.51 C1.08.52 C1.08.53 C1.08.55 C1.08.57 C1.08.58 C1.09.57 +C1.08.55 C1.08.51 C1.08.52 C1.08.54 C1.08.56 C1.08.57 C1.08.58 C1.08.59 +C1.08.56 C1.07.53 C1.07.56 C1.07.59 C1.08.52 C1.08.55 C1.08.58 C1.08.59 +C1.08.57 C1.08.53 C1.08.54 C1.08.55 C1.08.58 C1.08.60 C1.08.61 C1.09.57 C1.09.59 +C1.08.58 C1.08.54 C1.08.55 C1.08.56 C1.08.57 C1.08.59 C1.08.60 C1.08.61 C1.08.62 +C1.08.59 C1.07.56 C1.07.59 C1.07.62 C1.08.55 C1.08.56 C1.08.58 C1.08.61 C1.08.62 +C1.08.60 C1.08.57 C1.08.58 C1.08.61 C1.09.57 C1.09.59 C1.09.62 +C1.08.61 C1.08.57 C1.08.58 C1.08.59 C1.08.60 C1.08.62 C1.09.62 +C1.08.62 C1.07.59 C1.07.62 C1.08.58 C1.08.59 C1.08.61 +C1.09.00 C1.09.04 C1.09.06 C1.09.08 C1.09.12 +C1.09.01 C1.09.03 C1.09.05 C1.09.11 +C1.09.02 C1.08.08 C1.09.05 C1.09.13 +C1.09.03 C1.09.01 C1.09.07 C1.09.09 C1.09.11 +C1.09.04 C1.09.00 C1.09.08 C1.09.10 +C1.09.05 C1.09.01 C1.09.02 C1.09.11 C1.09.13 +C1.09.06 C1.09.00 C1.09.12 C1.09.17 C1.10.06 C1.10.12 +C1.09.07 C1.09.03 C1.09.09 C1.09.10 C1.09.14 +C1.09.08 C1.09.00 C1.09.04 C1.09.10 C1.09.12 C1.09.15 +C1.09.09 C1.09.03 C1.09.07 C1.09.11 C1.09.14 C1.09.16 +C1.09.10 C1.09.04 C1.09.07 C1.09.08 C1.09.12 C1.09.14 C1.09.15 C1.09.18 +C1.09.11 C1.09.01 C1.09.03 C1.09.05 C1.09.09 C1.09.13 C1.09.14 C1.09.16 C1.09.19 +C1.09.12 C1.09.00 C1.09.06 C1.09.08 C1.09.10 C1.09.15 C1.09.17 C1.09.20 C1.10.12 +C1.09.13 C1.08.07 C1.08.08 C1.08.17 C1.09.02 C1.09.05 C1.09.11 C1.09.16 C1.09.19 C1.09.21 +C1.09.14 C1.09.07 C1.09.09 C1.09.10 C1.09.11 C1.09.15 C1.09.16 C1.09.18 C1.09.22 +C1.09.15 C1.09.08 C1.09.10 C1.09.12 C1.09.14 C1.09.17 C1.09.18 C1.09.20 C1.09.23 +C1.09.16 C1.09.09 C1.09.11 C1.09.13 C1.09.14 C1.09.18 C1.09.19 C1.09.22 C1.09.24 +C1.09.17 C1.09.06 C1.09.12 C1.09.15 C1.09.20 C1.09.25 C1.10.12 C1.10.17 C1.10.21 +C1.09.18 C1.09.10 C1.09.14 C1.09.15 C1.09.16 C1.09.20 C1.09.22 C1.09.23 C1.09.27 +C1.09.19 C1.08.17 C1.09.11 C1.09.13 C1.09.16 C1.09.21 C1.09.22 C1.09.24 C1.09.26 +C1.09.20 C1.09.12 C1.09.15 C1.09.17 C1.09.18 C1.09.23 C1.09.25 C1.09.28 C1.10.21 +C1.09.21 C1.08.17 C1.08.18 C1.08.23 C1.08.28 C1.09.13 C1.09.19 C1.09.24 C1.09.26 +C1.09.22 C1.09.14 C1.09.16 C1.09.18 C1.09.19 C1.09.23 C1.09.24 C1.09.27 C1.09.29 +C1.09.23 C1.09.15 C1.09.18 C1.09.20 C1.09.22 C1.09.25 C1.09.27 C1.09.28 C1.09.30 +C1.09.24 C1.09.16 C1.09.19 C1.09.21 C1.09.22 C1.09.26 C1.09.27 C1.09.29 C1.09.31 +C1.09.25 C1.09.17 C1.09.20 C1.09.23 C1.09.28 C1.09.32 C1.10.21 C1.10.24 C1.10.28 +C1.09.26 C1.08.23 C1.08.28 C1.09.19 C1.09.21 C1.09.24 C1.09.29 C1.09.31 C1.09.33 +C1.09.27 C1.09.18 C1.09.22 C1.09.23 C1.09.24 C1.09.28 C1.09.29 C1.09.30 C1.09.34 +C1.09.28 C1.09.20 C1.09.23 C1.09.25 C1.09.27 C1.09.30 C1.09.32 C1.09.35 C1.10.28 +C1.09.29 C1.09.22 C1.09.24 C1.09.26 C1.09.27 C1.09.30 C1.09.31 C1.09.34 C1.09.36 +C1.09.30 C1.09.23 C1.09.27 C1.09.28 C1.09.29 C1.09.32 C1.09.34 C1.09.35 C1.09.37 +C1.09.31 C1.08.28 C1.09.24 C1.09.26 C1.09.29 C1.09.33 C1.09.34 C1.09.36 C1.09.38 +C1.09.32 C1.09.25 C1.09.28 C1.09.30 C1.09.35 C1.10.28 C1.10.31 C1.10.34 C1.10.36 +C1.09.33 C1.08.28 C1.08.29 C1.08.33 C1.08.37 C1.09.26 C1.09.31 C1.09.36 C1.09.38 +C1.09.34 C1.09.27 C1.09.29 C1.09.30 C1.09.31 C1.09.35 C1.09.36 C1.09.37 C1.09.39 +C1.09.35 C1.09.28 C1.09.30 C1.09.32 C1.09.34 C1.09.37 C1.09.40 C1.10.34 C1.10.36 +C1.09.36 C1.09.29 C1.09.31 C1.09.33 C1.09.34 C1.09.37 C1.09.38 C1.09.39 C1.09.41 +C1.09.37 C1.09.30 C1.09.34 C1.09.35 C1.09.36 C1.09.39 C1.09.40 C1.09.42 C1.10.36 +C1.09.38 C1.08.33 C1.08.37 C1.08.41 C1.09.31 C1.09.33 C1.09.36 C1.09.39 C1.09.41 +C1.09.39 C1.09.34 C1.09.36 C1.09.37 C1.09.38 C1.09.40 C1.09.41 C1.09.42 C1.09.43 +C1.09.40 C1.09.35 C1.09.37 C1.09.39 C1.09.42 C1.09.44 C1.10.36 C1.10.40 C1.10.43 +C1.09.41 C1.08.37 C1.08.41 C1.09.36 C1.09.38 C1.09.39 C1.09.42 C1.09.43 C1.09.45 +C1.09.42 C1.09.37 C1.09.39 C1.09.40 C1.09.41 C1.09.43 C1.09.44 C1.09.46 C1.10.43 +C1.09.43 C1.08.41 C1.09.39 C1.09.41 C1.09.42 C1.09.44 C1.09.45 C1.09.46 C1.09.47 +C1.09.44 C1.09.40 C1.09.42 C1.09.43 C1.09.46 C1.09.48 C1.10.43 C1.10.45 C1.10.47 +C1.09.45 C1.08.41 C1.08.42 C1.08.45 C1.08.48 C1.09.41 C1.09.43 C1.09.46 C1.09.47 +C1.09.46 C1.09.42 C1.09.43 C1.09.44 C1.09.45 C1.09.47 C1.09.48 C1.09.49 C1.10.47 +C1.09.47 C1.08.45 C1.08.48 C1.09.43 C1.09.45 C1.09.46 C1.09.48 C1.09.49 C1.09.50 +C1.09.48 C1.09.44 C1.09.46 C1.09.47 C1.09.49 C1.09.51 C1.10.47 C1.10.49 C1.10.51 +C1.09.49 C1.08.48 C1.09.46 C1.09.47 C1.09.48 C1.09.50 C1.09.51 C1.09.52 C1.10.51 +C1.09.50 C1.08.48 C1.08.49 C1.08.51 C1.08.53 C1.09.47 C1.09.49 C1.09.51 C1.09.52 C1.09.53 +C1.09.51 C1.09.48 C1.09.49 C1.09.50 C1.09.52 C1.09.54 C1.09.56 C1.10.51 C1.10.52 C1.10.53 C1.10.55 +C1.09.52 C1.09.49 C1.09.50 C1.09.51 C1.09.53 C1.09.54 C1.09.55 +C1.09.53 C1.08.51 C1.08.53 C1.09.50 C1.09.52 C1.09.54 C1.09.55 C1.09.57 +C1.09.54 C1.09.51 C1.09.52 C1.09.53 C1.09.55 C1.09.56 C1.09.58 C1.10.55 +C1.09.55 C1.08.53 C1.09.52 C1.09.53 C1.09.54 C1.09.56 C1.09.57 C1.09.58 C1.09.59 +C1.09.56 C1.09.51 C1.09.54 C1.09.55 C1.09.58 C1.09.60 C1.10.55 C1.10.57 C1.10.59 +C1.09.57 C1.08.53 C1.08.54 C1.08.57 C1.08.60 C1.09.53 C1.09.55 C1.09.58 C1.09.59 +C1.09.58 C1.09.54 C1.09.55 C1.09.56 C1.09.57 C1.09.59 C1.09.60 C1.09.61 C1.10.59 +C1.09.59 C1.08.57 C1.08.60 C1.09.55 C1.09.57 C1.09.58 C1.09.60 C1.09.61 C1.09.62 +C1.09.60 C1.09.56 C1.09.58 C1.09.59 C1.09.61 C1.10.59 C1.10.61 +C1.09.61 C1.09.58 C1.09.59 C1.09.60 C1.09.62 C1.10.59 C1.10.61 +C1.09.62 C1.08.60 C1.08.61 C1.09.59 C1.09.61 +C1.10.00 C1.10.03 C1.10.06 +C1.10.01 C1.10.02 C1.10.04 C1.10.10 C1.10.14 +C1.10.02 C1.10.01 C1.10.07 C1.10.10 +C1.10.03 C1.10.00 C1.10.06 C1.10.09 C1.10.13 +C1.10.04 C1.10.01 C1.10.05 C1.10.10 C1.10.14 C1.11.02 +C1.10.05 C1.10.04 C1.10.14 C1.11.02 C1.11.08 +C1.10.06 C1.09.06 C1.10.00 C1.10.03 C1.10.12 C1.10.13 C1.10.17 +C1.10.07 C1.10.02 C1.10.10 C1.10.11 C1.10.15 +C1.10.08 C1.10.09 C1.10.11 +C1.10.09 C1.10.03 C1.10.08 C1.10.11 C1.10.13 C1.10.16 +C1.10.10 C1.10.01 C1.10.02 C1.10.04 C1.10.07 C1.10.11 C1.10.14 C1.10.15 C1.10.18 +C1.10.11 C1.10.07 C1.10.08 C1.10.09 C1.10.10 C1.10.13 C1.10.15 C1.10.16 C1.10.19 +C1.10.12 C1.09.06 C1.09.12 C1.09.17 C1.10.06 C1.10.13 C1.10.17 C1.10.21 +C1.10.13 C1.10.03 C1.10.06 C1.10.09 C1.10.11 C1.10.12 C1.10.16 C1.10.17 C1.10.20 +C1.10.14 C1.10.01 C1.10.04 C1.10.05 C1.10.10 C1.10.15 C1.10.18 C1.11.08 C1.11.10 C1.11.15 C1.11.20 +C1.10.15 C1.10.07 C1.10.10 C1.10.11 C1.10.14 C1.10.16 C1.10.18 C1.10.19 C1.10.22 +C1.10.16 C1.10.09 C1.10.11 C1.10.13 C1.10.15 C1.10.17 C1.10.19 C1.10.20 C1.10.23 +C1.10.17 C1.09.17 C1.10.06 C1.10.12 C1.10.13 C1.10.16 C1.10.20 C1.10.21 C1.10.24 +C1.10.18 C1.10.10 C1.10.14 C1.10.15 C1.10.19 C1.10.22 C1.10.25 C1.11.15 C1.11.20 +C1.10.19 C1.10.11 C1.10.15 C1.10.16 C1.10.18 C1.10.20 C1.10.22 C1.10.23 C1.10.26 +C1.10.20 C1.10.13 C1.10.16 C1.10.17 C1.10.19 C1.10.21 C1.10.23 C1.10.24 C1.10.27 +C1.10.21 C1.09.17 C1.09.20 C1.09.25 C1.10.12 C1.10.17 C1.10.20 C1.10.24 C1.10.28 +C1.10.22 C1.10.15 C1.10.18 C1.10.19 C1.10.23 C1.10.25 C1.10.26 C1.10.29 C1.11.20 +C1.10.23 C1.10.16 C1.10.19 C1.10.20 C1.10.22 C1.10.24 C1.10.26 C1.10.27 C1.10.30 +C1.10.24 C1.09.25 C1.10.17 C1.10.20 C1.10.21 C1.10.23 C1.10.27 C1.10.28 C1.10.31 +C1.10.25 C1.10.18 C1.10.22 C1.10.26 C1.10.29 C1.11.20 C1.11.21 C1.11.25 C1.11.29 +C1.10.26 C1.10.19 C1.10.22 C1.10.23 C1.10.25 C1.10.27 C1.10.29 C1.10.30 C1.10.32 +C1.10.27 C1.10.20 C1.10.23 C1.10.24 C1.10.26 C1.10.28 C1.10.30 C1.10.31 C1.10.33 +C1.10.28 C1.09.25 C1.09.28 C1.09.32 C1.10.21 C1.10.24 C1.10.27 C1.10.31 C1.10.34 +C1.10.29 C1.10.22 C1.10.25 C1.10.26 C1.10.30 C1.10.32 C1.11.25 C1.11.29 C1.11.33 +C1.10.30 C1.10.23 C1.10.26 C1.10.27 C1.10.29 C1.10.31 C1.10.32 C1.10.33 C1.10.35 +C1.10.31 C1.09.32 C1.10.24 C1.10.27 C1.10.28 C1.10.30 C1.10.33 C1.10.34 C1.10.37 +C1.10.32 C1.10.26 C1.10.29 C1.10.30 C1.10.33 C1.10.35 C1.10.38 C1.11.29 C1.11.33 +C1.10.33 C1.10.27 C1.10.30 C1.10.31 C1.10.32 C1.10.34 C1.10.35 C1.10.37 C1.10.39 +C1.10.34 C1.09.32 C1.09.35 C1.10.28 C1.10.31 C1.10.33 C1.10.36 C1.10.37 C1.10.40 +C1.10.35 C1.10.30 C1.10.32 C1.10.33 C1.10.37 C1.10.38 C1.10.39 C1.10.41 C1.11.33 +C1.10.36 C1.09.32 C1.09.35 C1.09.37 C1.09.40 C1.10.34 C1.10.37 C1.10.40 C1.10.43 +C1.10.37 C1.10.31 C1.10.33 C1.10.34 C1.10.35 C1.10.36 C1.10.39 C1.10.40 C1.10.42 +C1.10.38 C1.10.32 C1.10.35 C1.10.39 C1.10.41 C1.11.33 C1.11.34 C1.11.37 C1.11.40 +C1.10.39 C1.10.33 C1.10.35 C1.10.37 C1.10.38 C1.10.40 C1.10.41 C1.10.42 C1.10.44 +C1.10.40 C1.09.40 C1.10.34 C1.10.36 C1.10.37 C1.10.39 C1.10.42 C1.10.43 C1.10.45 +C1.10.41 C1.10.35 C1.10.38 C1.10.39 C1.10.42 C1.10.44 C1.11.37 C1.11.40 C1.11.43 +C1.10.42 C1.10.37 C1.10.39 C1.10.40 C1.10.41 C1.10.43 C1.10.44 C1.10.45 C1.10.46 +C1.10.43 C1.09.40 C1.09.42 C1.09.44 C1.10.36 C1.10.40 C1.10.42 C1.10.45 C1.10.47 +C1.10.44 C1.10.39 C1.10.41 C1.10.42 C1.10.45 C1.10.46 C1.10.48 C1.11.40 C1.11.43 +C1.10.45 C1.09.44 C1.10.40 C1.10.42 C1.10.43 C1.10.44 C1.10.46 C1.10.47 C1.10.49 +C1.10.46 C1.10.42 C1.10.44 C1.10.45 C1.10.47 C1.10.48 C1.10.49 C1.10.50 C1.11.43 +C1.10.47 C1.09.44 C1.09.46 C1.09.48 C1.10.43 C1.10.45 C1.10.46 C1.10.49 C1.10.51 +C1.10.48 C1.10.44 C1.10.46 C1.10.49 C1.10.50 C1.11.43 C1.11.44 C1.11.46 C1.11.48 +C1.10.49 C1.09.48 C1.10.45 C1.10.46 C1.10.47 C1.10.48 C1.10.50 C1.10.51 C1.10.52 +C1.10.50 C1.10.46 C1.10.48 C1.10.49 C1.10.51 C1.10.52 C1.11.46 C1.11.48 C1.11.50 +C1.10.51 C1.09.48 C1.09.49 C1.09.51 C1.10.47 C1.10.49 C1.10.50 C1.10.52 C1.10.53 +C1.10.52 C1.09.51 C1.10.49 C1.10.50 C1.10.51 C1.10.53 C1.10.54 C1.10.56 C1.11.48 C1.11.50 C1.11.54 +C1.10.53 C1.09.51 C1.10.51 C1.10.52 C1.10.54 C1.10.55 C1.10.57 +C1.10.54 C1.10.52 C1.10.53 C1.10.55 C1.10.56 C1.10.57 C1.10.58 C1.11.54 +C1.10.55 C1.09.51 C1.09.54 C1.09.56 C1.10.53 C1.10.54 C1.10.57 C1.10.59 +C1.10.56 C1.10.52 C1.10.54 C1.10.57 C1.10.58 C1.10.60 C1.11.54 C1.11.55 C1.11.58 +C1.10.57 C1.09.56 C1.10.53 C1.10.54 C1.10.55 C1.10.56 C1.10.58 C1.10.59 C1.10.61 +C1.10.58 C1.10.54 C1.10.56 C1.10.57 C1.10.59 C1.10.60 C1.10.61 C1.10.62 C1.11.58 +C1.10.59 C1.09.56 C1.09.58 C1.09.60 C1.09.61 C1.10.55 C1.10.57 C1.10.58 C1.10.61 +C1.10.60 C1.10.56 C1.10.58 C1.10.61 C1.10.62 C1.11.58 C1.11.59 C1.11.61 +C1.10.61 C1.09.60 C1.09.61 C1.10.57 C1.10.58 C1.10.59 C1.10.60 C1.10.62 +C1.10.62 C1.10.58 C1.10.60 C1.10.61 C1.11.61 +C1.11.00 C1.11.05 C1.11.07 C1.12.00 C1.12.08 +C1.11.01 C1.11.02 C1.11.03 C1.11.10 +C1.11.02 C1.10.04 C1.10.05 C1.11.01 C1.11.08 C1.11.10 +C1.11.03 C1.11.01 C1.11.04 C1.11.10 C1.11.11 +C1.11.04 C1.11.03 C1.11.06 C1.11.11 C1.11.12 +C1.11.05 C1.11.00 C1.11.07 C1.11.09 C1.11.12 C1.11.13 C1.11.14 +C1.11.06 C1.11.04 C1.11.09 C1.11.11 C1.11.12 +C1.11.07 C1.11.00 C1.11.05 C1.11.13 C1.11.14 C1.12.00 C1.12.08 C1.12.14 +C1.11.08 C1.10.05 C1.10.14 C1.11.02 C1.11.10 C1.11.15 +C1.11.09 C1.11.05 C1.11.06 C1.11.12 C1.11.13 +C1.11.10 C1.10.14 C1.11.01 C1.11.02 C1.11.03 C1.11.08 C1.11.11 C1.11.15 C1.11.16 +C1.11.11 C1.11.03 C1.11.04 C1.11.06 C1.11.10 C1.11.12 C1.11.15 C1.11.16 C1.11.17 +C1.11.12 C1.11.04 C1.11.05 C1.11.06 C1.11.09 C1.11.11 C1.11.13 C1.11.16 C1.11.17 C1.11.18 +C1.11.13 C1.11.05 C1.11.07 C1.11.09 C1.11.12 C1.11.14 C1.11.17 C1.11.18 C1.11.19 +C1.11.14 C1.11.05 C1.11.07 C1.11.13 C1.11.18 C1.11.19 C1.12.08 C1.12.14 C1.12.19 +C1.11.15 C1.10.14 C1.10.18 C1.11.08 C1.11.10 C1.11.11 C1.11.16 C1.11.20 C1.11.21 +C1.11.16 C1.11.10 C1.11.11 C1.11.12 C1.11.15 C1.11.17 C1.11.20 C1.11.21 C1.11.22 +C1.11.17 C1.11.11 C1.11.12 C1.11.13 C1.11.16 C1.11.18 C1.11.21 C1.11.22 C1.11.23 +C1.11.18 C1.11.12 C1.11.13 C1.11.14 C1.11.17 C1.11.19 C1.11.22 C1.11.23 C1.11.24 +C1.11.19 C1.11.13 C1.11.14 C1.11.18 C1.11.23 C1.11.24 C1.12.14 C1.12.19 C1.12.24 +C1.11.20 C1.10.14 C1.10.18 C1.10.22 C1.10.25 C1.11.15 C1.11.16 C1.11.21 C1.11.25 +C1.11.21 C1.10.25 C1.11.15 C1.11.16 C1.11.17 C1.11.20 C1.11.22 C1.11.25 C1.11.26 +C1.11.22 C1.11.16 C1.11.17 C1.11.18 C1.11.21 C1.11.23 C1.11.25 C1.11.26 C1.11.27 +C1.11.23 C1.11.17 C1.11.18 C1.11.19 C1.11.22 C1.11.24 C1.11.26 C1.11.27 C1.11.28 +C1.11.24 C1.11.18 C1.11.19 C1.11.23 C1.11.27 C1.11.28 C1.12.19 C1.12.24 C1.12.28 +C1.11.25 C1.10.25 C1.10.29 C1.11.20 C1.11.21 C1.11.22 C1.11.26 C1.11.29 C1.11.30 +C1.11.26 C1.11.21 C1.11.22 C1.11.23 C1.11.25 C1.11.27 C1.11.29 C1.11.30 C1.11.31 +C1.11.27 C1.11.22 C1.11.23 C1.11.24 C1.11.26 C1.11.28 C1.11.30 C1.11.31 C1.11.32 +C1.11.28 C1.11.23 C1.11.24 C1.11.27 C1.11.31 C1.11.32 C1.12.24 C1.12.28 C1.12.32 +C1.11.29 C1.10.25 C1.10.29 C1.10.32 C1.11.25 C1.11.26 C1.11.30 C1.11.33 C1.11.34 +C1.11.30 C1.11.25 C1.11.26 C1.11.27 C1.11.29 C1.11.31 C1.11.33 C1.11.34 C1.11.35 +C1.11.31 C1.11.26 C1.11.27 C1.11.28 C1.11.30 C1.11.32 C1.11.34 C1.11.35 C1.11.36 +C1.11.32 C1.11.27 C1.11.28 C1.11.31 C1.11.35 C1.11.36 C1.12.28 C1.12.32 C1.12.36 +C1.11.33 C1.10.29 C1.10.32 C1.10.35 C1.10.38 C1.11.29 C1.11.30 C1.11.34 C1.11.37 +C1.11.34 C1.10.38 C1.11.29 C1.11.30 C1.11.31 C1.11.33 C1.11.35 C1.11.37 C1.11.38 +C1.11.35 C1.11.30 C1.11.31 C1.11.32 C1.11.34 C1.11.36 C1.11.37 C1.11.38 C1.11.39 +C1.11.36 C1.11.31 C1.11.32 C1.11.35 C1.11.38 C1.11.39 C1.12.32 C1.12.36 C1.12.39 +C1.11.37 C1.10.38 C1.10.41 C1.11.33 C1.11.34 C1.11.35 C1.11.38 C1.11.40 C1.11.41 +C1.11.38 C1.11.34 C1.11.35 C1.11.36 C1.11.37 C1.11.39 C1.11.40 C1.11.41 C1.11.42 +C1.11.39 C1.11.35 C1.11.36 C1.11.38 C1.11.41 C1.11.42 C1.12.36 C1.12.39 C1.12.42 +C1.11.40 C1.10.38 C1.10.41 C1.10.44 C1.11.37 C1.11.38 C1.11.41 C1.11.43 C1.11.44 +C1.11.41 C1.11.37 C1.11.38 C1.11.39 C1.11.40 C1.11.42 C1.11.43 C1.11.44 C1.11.45 +C1.11.42 C1.11.38 C1.11.39 C1.11.41 C1.11.44 C1.11.45 C1.12.39 C1.12.42 C1.12.45 +C1.11.43 C1.10.41 C1.10.44 C1.10.46 C1.10.48 C1.11.40 C1.11.41 C1.11.44 C1.11.46 +C1.11.44 C1.10.48 C1.11.40 C1.11.41 C1.11.42 C1.11.43 C1.11.45 C1.11.46 C1.11.47 +C1.11.45 C1.11.41 C1.11.42 C1.11.44 C1.11.46 C1.11.47 C1.12.42 C1.12.45 C1.12.47 +C1.11.46 C1.10.48 C1.10.50 C1.11.43 C1.11.44 C1.11.45 C1.11.47 C1.11.48 C1.11.49 +C1.11.47 C1.11.44 C1.11.45 C1.11.46 C1.11.48 C1.11.49 C1.12.45 C1.12.47 C1.12.49 +C1.11.48 C1.10.48 C1.10.50 C1.10.52 C1.11.46 C1.11.47 C1.11.49 C1.11.50 C1.11.51 C1.11.52 +C1.11.49 C1.11.46 C1.11.47 C1.11.48 C1.11.51 C1.11.52 C1.11.53 C1.12.47 C1.12.49 C1.12.53 +C1.11.50 C1.10.50 C1.10.52 C1.11.48 C1.11.51 C1.11.54 C1.11.55 +C1.11.51 C1.11.48 C1.11.49 C1.11.50 C1.11.52 C1.11.54 C1.11.55 C1.11.56 +C1.11.52 C1.11.48 C1.11.49 C1.11.51 C1.11.53 C1.11.55 C1.11.56 C1.11.57 +C1.11.53 C1.11.49 C1.11.52 C1.11.56 C1.11.57 C1.12.49 C1.12.53 C1.12.57 +C1.11.54 C1.10.52 C1.10.54 C1.10.56 C1.11.50 C1.11.51 C1.11.55 C1.11.58 +C1.11.55 C1.10.56 C1.11.50 C1.11.51 C1.11.52 C1.11.54 C1.11.56 C1.11.58 C1.11.59 +C1.11.56 C1.11.51 C1.11.52 C1.11.53 C1.11.55 C1.11.57 C1.11.58 C1.11.59 C1.11.60 +C1.11.57 C1.11.52 C1.11.53 C1.11.56 C1.11.59 C1.11.60 C1.12.53 C1.12.57 C1.12.60 +C1.11.58 C1.10.56 C1.10.58 C1.10.60 C1.11.54 C1.11.55 C1.11.56 C1.11.59 C1.11.61 +C1.11.59 C1.10.60 C1.11.55 C1.11.56 C1.11.57 C1.11.58 C1.11.60 C1.11.61 C1.11.62 +C1.11.60 C1.11.56 C1.11.57 C1.11.59 C1.11.61 C1.11.62 C1.12.57 C1.12.60 C1.12.62 +C1.11.61 C1.10.60 C1.10.62 C1.11.58 C1.11.59 C1.11.60 C1.11.62 +C1.11.62 C1.11.59 C1.11.60 C1.11.61 C1.12.60 C1.12.62 +C1.12.00 C1.11.00 C1.11.07 C1.12.06 C1.12.08 +C1.12.01 C1.12.02 C1.12.04 C1.12.10 +C1.12.02 C1.12.01 C1.12.03 C1.12.10 C1.12.11 +C1.12.03 C1.12.02 C1.12.05 C1.12.10 C1.12.11 +C1.12.04 C1.12.01 C1.12.10 C1.12.15 C1.13.02 C1.13.09 C1.13.13 +C1.12.05 C1.12.03 C1.12.07 C1.12.11 C1.12.12 +C1.12.06 C1.12.00 C1.12.08 C1.12.09 C1.12.12 C1.12.13 C1.12.14 +C1.12.07 C1.12.05 C1.12.09 C1.12.11 C1.12.12 +C1.12.08 C1.11.00 C1.11.07 C1.11.14 C1.12.00 C1.12.06 C1.12.13 C1.12.14 +C1.12.09 C1.12.06 C1.12.07 C1.12.12 C1.12.13 +C1.12.10 C1.12.01 C1.12.02 C1.12.03 C1.12.04 C1.12.11 C1.12.15 C1.12.16 C1.13.13 +C1.12.11 C1.12.02 C1.12.03 C1.12.05 C1.12.07 C1.12.10 C1.12.12 C1.12.15 C1.12.16 C1.12.17 +C1.12.12 C1.12.05 C1.12.06 C1.12.07 C1.12.09 C1.12.11 C1.12.13 C1.12.16 C1.12.17 C1.12.18 +C1.12.13 C1.12.06 C1.12.08 C1.12.09 C1.12.12 C1.12.14 C1.12.17 C1.12.18 C1.12.19 +C1.12.14 C1.11.07 C1.11.14 C1.11.19 C1.12.06 C1.12.08 C1.12.13 C1.12.18 C1.12.19 +C1.12.15 C1.12.04 C1.12.10 C1.12.11 C1.12.16 C1.12.20 C1.12.21 C1.13.13 C1.13.17 +C1.12.16 C1.12.10 C1.12.11 C1.12.12 C1.12.15 C1.12.17 C1.12.20 C1.12.21 C1.12.22 +C1.12.17 C1.12.11 C1.12.12 C1.12.13 C1.12.16 C1.12.18 C1.12.21 C1.12.22 C1.12.23 +C1.12.18 C1.12.12 C1.12.13 C1.12.14 C1.12.17 C1.12.19 C1.12.22 C1.12.23 C1.12.24 +C1.12.19 C1.11.14 C1.11.19 C1.11.24 C1.12.13 C1.12.14 C1.12.18 C1.12.23 C1.12.24 +C1.12.20 C1.12.15 C1.12.16 C1.12.21 C1.12.25 C1.13.13 C1.13.17 C1.13.21 C1.13.24 +C1.12.21 C1.12.15 C1.12.16 C1.12.17 C1.12.20 C1.12.22 C1.12.25 C1.12.26 C1.13.24 +C1.12.22 C1.12.16 C1.12.17 C1.12.18 C1.12.21 C1.12.23 C1.12.25 C1.12.26 C1.12.27 +C1.12.23 C1.12.17 C1.12.18 C1.12.19 C1.12.22 C1.12.24 C1.12.26 C1.12.27 C1.12.28 +C1.12.24 C1.11.19 C1.11.24 C1.11.28 C1.12.18 C1.12.19 C1.12.23 C1.12.27 C1.12.28 +C1.12.25 C1.12.20 C1.12.21 C1.12.22 C1.12.26 C1.12.29 C1.12.30 C1.13.24 C1.13.28 +C1.12.26 C1.12.21 C1.12.22 C1.12.23 C1.12.25 C1.12.27 C1.12.29 C1.12.30 C1.12.31 +C1.12.27 C1.12.22 C1.12.23 C1.12.24 C1.12.26 C1.12.28 C1.12.30 C1.12.31 C1.12.32 +C1.12.28 C1.11.24 C1.11.28 C1.11.32 C1.12.23 C1.12.24 C1.12.27 C1.12.31 C1.12.32 +C1.12.29 C1.12.25 C1.12.26 C1.12.30 C1.12.33 C1.12.34 C1.13.24 C1.13.28 C1.13.31 +C1.12.30 C1.12.25 C1.12.26 C1.12.27 C1.12.29 C1.12.31 C1.12.33 C1.12.34 C1.12.35 +C1.12.31 C1.12.26 C1.12.27 C1.12.28 C1.12.30 C1.12.32 C1.12.34 C1.12.35 C1.12.36 +C1.12.32 C1.11.28 C1.11.32 C1.11.36 C1.12.27 C1.12.28 C1.12.31 C1.12.35 C1.12.36 +C1.12.33 C1.12.29 C1.12.30 C1.12.34 C1.12.37 C1.13.28 C1.13.31 C1.13.34 C1.13.37 +C1.12.34 C1.12.29 C1.12.30 C1.12.31 C1.12.33 C1.12.35 C1.12.37 C1.12.38 C1.13.37 +C1.12.35 C1.12.30 C1.12.31 C1.12.32 C1.12.34 C1.12.36 C1.12.37 C1.12.38 C1.12.39 +C1.12.36 C1.11.32 C1.11.36 C1.11.39 C1.12.31 C1.12.32 C1.12.35 C1.12.38 C1.12.39 +C1.12.37 C1.12.33 C1.12.34 C1.12.35 C1.12.38 C1.12.40 C1.12.41 C1.13.37 C1.13.40 +C1.12.38 C1.12.34 C1.12.35 C1.12.36 C1.12.37 C1.12.39 C1.12.40 C1.12.41 C1.12.42 +C1.12.39 C1.11.36 C1.11.39 C1.11.42 C1.12.35 C1.12.36 C1.12.38 C1.12.41 C1.12.42 +C1.12.40 C1.12.37 C1.12.38 C1.12.41 C1.12.43 C1.12.44 C1.13.37 C1.13.40 C1.13.43 +C1.12.41 C1.12.37 C1.12.38 C1.12.39 C1.12.40 C1.12.42 C1.12.43 C1.12.44 C1.12.45 +C1.12.42 C1.11.39 C1.11.42 C1.11.45 C1.12.38 C1.12.39 C1.12.41 C1.12.44 C1.12.45 +C1.12.43 C1.12.40 C1.12.41 C1.12.44 C1.12.46 C1.13.40 C1.13.43 C1.13.45 C1.13.47 +C1.12.44 C1.12.40 C1.12.41 C1.12.42 C1.12.43 C1.12.45 C1.12.46 C1.12.47 C1.13.47 +C1.12.45 C1.11.42 C1.11.45 C1.11.47 C1.12.41 C1.12.42 C1.12.44 C1.12.46 C1.12.47 +C1.12.46 C1.12.43 C1.12.44 C1.12.45 C1.12.47 C1.12.48 C1.12.49 C1.13.47 C1.13.49 +C1.12.47 C1.11.45 C1.11.47 C1.11.49 C1.12.44 C1.12.45 C1.12.46 C1.12.48 C1.12.49 +C1.12.48 C1.12.46 C1.12.47 C1.12.49 C1.12.50 C1.12.51 C1.12.52 C1.13.47 C1.13.49 C1.13.51 +C1.12.49 C1.11.47 C1.11.49 C1.11.53 C1.12.46 C1.12.47 C1.12.48 C1.12.51 C1.12.52 C1.12.53 +C1.12.50 C1.12.48 C1.12.51 C1.12.54 C1.12.55 C1.13.49 C1.13.51 +C1.12.51 C1.12.48 C1.12.49 C1.12.50 C1.12.52 C1.12.54 C1.12.55 C1.12.56 +C1.12.52 C1.12.48 C1.12.49 C1.12.51 C1.12.53 C1.12.55 C1.12.56 C1.12.57 +C1.12.53 C1.11.49 C1.11.53 C1.11.57 C1.12.49 C1.12.52 C1.12.56 C1.12.57 +C1.12.54 C1.12.50 C1.12.51 C1.12.55 C1.12.58 C1.13.51 C1.13.53 C1.13.55 +C1.12.55 C1.12.50 C1.12.51 C1.12.52 C1.12.54 C1.12.56 C1.12.58 C1.12.59 C1.13.55 +C1.12.56 C1.12.51 C1.12.52 C1.12.53 C1.12.55 C1.12.57 C1.12.58 C1.12.59 C1.12.60 +C1.12.57 C1.11.53 C1.11.57 C1.11.60 C1.12.52 C1.12.53 C1.12.56 C1.12.59 C1.12.60 +C1.12.58 C1.12.54 C1.12.55 C1.12.56 C1.12.59 C1.12.61 C1.13.55 C1.13.57 C1.13.59 +C1.12.59 C1.12.55 C1.12.56 C1.12.57 C1.12.58 C1.12.60 C1.12.61 C1.12.62 C1.13.59 +C1.12.60 C1.11.57 C1.11.60 C1.11.62 C1.12.56 C1.12.57 C1.12.59 C1.12.61 C1.12.62 +C1.12.61 C1.12.58 C1.12.59 C1.12.60 C1.12.62 C1.13.59 C1.13.62 +C1.12.62 C1.11.60 C1.11.62 C1.12.59 C1.12.60 C1.12.61 C1.13.62 +C1.13.00 C1.13.02 C1.13.05 C1.13.09 +C1.13.01 C1.13.03 C1.13.06 C1.13.11 +C1.13.02 C1.12.04 C1.13.00 C1.13.09 C1.13.13 +C1.13.03 C1.13.01 C1.13.06 C1.13.07 C1.13.08 C1.13.11 +C1.13.04 C1.13.05 C1.13.07 C1.13.10 +C1.13.05 C1.13.00 C1.13.04 C1.13.09 C1.13.10 C1.13.14 +C1.13.06 C1.13.01 C1.13.03 C1.13.11 C1.13.12 C1.13.16 C1.14.06 +C1.13.07 C1.13.03 C1.13.04 C1.13.08 C1.13.10 +C1.13.08 C1.13.03 C1.13.07 C1.13.10 C1.13.11 C1.13.15 +C1.13.09 C1.12.04 C1.13.00 C1.13.02 C1.13.05 C1.13.10 C1.13.13 C1.13.14 C1.13.17 +C1.13.10 C1.13.04 C1.13.05 C1.13.07 C1.13.08 C1.13.09 C1.13.11 C1.13.14 C1.13.15 C1.13.18 +C1.13.11 C1.13.01 C1.13.03 C1.13.06 C1.13.08 C1.13.10 C1.13.12 C1.13.15 C1.13.16 C1.13.19 +C1.13.12 C1.13.06 C1.13.11 C1.13.16 C1.13.20 C1.14.06 C1.14.12 C1.14.17 +C1.13.13 C1.12.04 C1.12.10 C1.12.15 C1.12.20 C1.13.02 C1.13.09 C1.13.14 C1.13.17 +C1.13.14 C1.13.05 C1.13.09 C1.13.10 C1.13.13 C1.13.15 C1.13.17 C1.13.18 C1.13.21 +C1.13.15 C1.13.08 C1.13.10 C1.13.11 C1.13.14 C1.13.16 C1.13.18 C1.13.19 C1.13.22 +C1.13.16 C1.13.06 C1.13.11 C1.13.12 C1.13.15 C1.13.19 C1.13.20 C1.13.23 C1.14.17 +C1.13.17 C1.12.15 C1.12.20 C1.13.09 C1.13.13 C1.13.14 C1.13.18 C1.13.21 C1.13.24 +C1.13.18 C1.13.10 C1.13.14 C1.13.15 C1.13.17 C1.13.19 C1.13.21 C1.13.22 C1.13.25 +C1.13.19 C1.13.11 C1.13.15 C1.13.16 C1.13.18 C1.13.20 C1.13.22 C1.13.23 C1.13.26 +C1.13.20 C1.13.12 C1.13.16 C1.13.19 C1.13.23 C1.13.27 C1.14.17 C1.14.20 C1.14.25 +C1.13.21 C1.12.20 C1.13.14 C1.13.17 C1.13.18 C1.13.22 C1.13.24 C1.13.25 C1.13.28 +C1.13.22 C1.13.15 C1.13.18 C1.13.19 C1.13.21 C1.13.23 C1.13.25 C1.13.26 C1.13.29 +C1.13.23 C1.13.16 C1.13.19 C1.13.20 C1.13.22 C1.13.26 C1.13.27 C1.13.30 C1.14.25 +C1.13.24 C1.12.20 C1.12.21 C1.12.25 C1.12.29 C1.13.17 C1.13.21 C1.13.25 C1.13.28 +C1.13.25 C1.13.18 C1.13.21 C1.13.22 C1.13.24 C1.13.26 C1.13.28 C1.13.29 C1.13.31 +C1.13.26 C1.13.19 C1.13.22 C1.13.23 C1.13.25 C1.13.27 C1.13.29 C1.13.30 C1.13.32 +C1.13.27 C1.13.20 C1.13.23 C1.13.26 C1.13.30 C1.13.33 C1.14.25 C1.14.28 C1.14.32 +C1.13.28 C1.12.25 C1.12.29 C1.12.33 C1.13.21 C1.13.24 C1.13.25 C1.13.29 C1.13.31 +C1.13.29 C1.13.22 C1.13.25 C1.13.26 C1.13.28 C1.13.30 C1.13.31 C1.13.32 C1.13.34 +C1.13.30 C1.13.23 C1.13.26 C1.13.27 C1.13.29 C1.13.32 C1.13.33 C1.13.36 C1.14.32 +C1.13.31 C1.12.29 C1.12.33 C1.13.25 C1.13.28 C1.13.29 C1.13.32 C1.13.34 C1.13.37 +C1.13.32 C1.13.26 C1.13.29 C1.13.30 C1.13.31 C1.13.33 C1.13.34 C1.13.36 C1.13.38 +C1.13.33 C1.13.27 C1.13.30 C1.13.32 C1.13.35 C1.13.36 C1.13.39 C1.14.32 C1.14.35 +C1.13.34 C1.12.33 C1.13.29 C1.13.31 C1.13.32 C1.13.36 C1.13.37 C1.13.38 C1.13.40 +C1.13.35 C1.13.33 C1.13.36 C1.13.39 C1.13.42 C1.14.32 C1.14.35 C1.14.37 C1.14.40 +C1.13.36 C1.13.30 C1.13.32 C1.13.33 C1.13.34 C1.13.35 C1.13.38 C1.13.39 C1.13.41 +C1.13.37 C1.12.33 C1.12.34 C1.12.37 C1.12.40 C1.13.31 C1.13.34 C1.13.38 C1.13.40 +C1.13.38 C1.13.32 C1.13.34 C1.13.36 C1.13.37 C1.13.39 C1.13.40 C1.13.41 C1.13.43 +C1.13.39 C1.13.33 C1.13.35 C1.13.36 C1.13.38 C1.13.41 C1.13.42 C1.13.44 C1.14.40 +C1.13.40 C1.12.37 C1.12.40 C1.12.43 C1.13.34 C1.13.37 C1.13.38 C1.13.41 C1.13.43 +C1.13.41 C1.13.36 C1.13.38 C1.13.39 C1.13.40 C1.13.42 C1.13.43 C1.13.44 C1.13.45 +C1.13.42 C1.13.35 C1.13.39 C1.13.41 C1.13.44 C1.13.46 C1.14.40 C1.14.42 C1.14.44 +C1.13.43 C1.12.40 C1.12.43 C1.13.38 C1.13.40 C1.13.41 C1.13.44 C1.13.45 C1.13.47 +C1.13.44 C1.13.39 C1.13.41 C1.13.42 C1.13.43 C1.13.45 C1.13.46 C1.13.48 C1.14.44 +C1.13.45 C1.12.43 C1.13.41 C1.13.43 C1.13.44 C1.13.46 C1.13.47 C1.13.48 C1.13.49 +C1.13.46 C1.13.42 C1.13.44 C1.13.45 C1.13.48 C1.13.50 C1.14.44 C1.14.46 C1.14.48 +C1.13.47 C1.12.43 C1.12.44 C1.12.46 C1.12.48 C1.13.43 C1.13.45 C1.13.48 C1.13.49 +C1.13.48 C1.13.44 C1.13.45 C1.13.46 C1.13.47 C1.13.49 C1.13.50 C1.13.51 C1.14.48 +C1.13.49 C1.12.46 C1.12.48 C1.12.50 C1.13.45 C1.13.47 C1.13.48 C1.13.50 C1.13.51 +C1.13.50 C1.13.46 C1.13.48 C1.13.49 C1.13.51 C1.13.52 C1.14.48 C1.14.49 C1.14.51 +C1.13.51 C1.12.48 C1.12.50 C1.12.54 C1.13.48 C1.13.49 C1.13.50 C1.13.52 C1.13.53 C1.13.55 C1.14.51 +C1.13.52 C1.13.50 C1.13.51 C1.13.53 C1.13.54 C1.13.56 C1.14.51 +C1.13.53 C1.12.54 C1.13.51 C1.13.52 C1.13.54 C1.13.55 C1.13.56 C1.13.57 +C1.13.54 C1.13.52 C1.13.53 C1.13.56 C1.13.58 C1.14.51 C1.14.55 C1.14.57 +C1.13.55 C1.12.54 C1.12.55 C1.12.58 C1.13.51 C1.13.53 C1.13.56 C1.13.57 C1.13.59 +C1.13.56 C1.13.52 C1.13.53 C1.13.54 C1.13.55 C1.13.57 C1.13.58 C1.13.60 C1.14.57 +C1.13.57 C1.12.58 C1.13.53 C1.13.55 C1.13.56 C1.13.58 C1.13.59 C1.13.60 +C1.13.58 C1.13.54 C1.13.56 C1.13.57 C1.13.60 C1.13.61 C1.14.57 C1.14.59 C1.14.61 +C1.13.59 C1.12.58 C1.12.59 C1.12.61 C1.13.55 C1.13.57 C1.13.60 C1.13.62 +C1.13.60 C1.13.56 C1.13.57 C1.13.58 C1.13.59 C1.13.61 C1.13.62 C1.14.61 +C1.13.61 C1.13.58 C1.13.60 C1.13.62 C1.14.61 C1.14.62 +C1.13.62 C1.12.61 C1.12.62 C1.13.59 C1.13.60 C1.13.61 +C1.14.00 C1.14.02 C1.14.03 C1.14.11 +C1.14.01 C1.14.04 C1.14.06 C1.14.08 C1.14.12 +C1.14.02 C1.14.00 C1.14.05 C1.14.11 C1.14.13 +C1.14.03 C1.14.00 C1.14.07 C1.14.09 C1.14.11 +C1.14.04 C1.14.01 C1.14.08 C1.14.10 +C1.14.05 C1.14.02 C1.14.11 C1.14.13 C1.15.00 C1.15.08 +C1.14.06 C1.13.06 C1.13.12 C1.14.01 C1.14.12 C1.14.17 +C1.14.07 C1.14.03 C1.14.09 C1.14.10 C1.14.14 +C1.14.08 C1.14.01 C1.14.04 C1.14.10 C1.14.12 C1.14.15 +C1.14.09 C1.14.03 C1.14.07 C1.14.11 C1.14.14 C1.14.16 +C1.14.10 C1.14.04 C1.14.07 C1.14.08 C1.14.12 C1.14.14 C1.14.15 C1.14.18 +C1.14.11 C1.14.00 C1.14.02 C1.14.03 C1.14.05 C1.14.09 C1.14.13 C1.14.14 C1.14.16 C1.14.19 +C1.14.12 C1.13.12 C1.14.01 C1.14.06 C1.14.08 C1.14.10 C1.14.15 C1.14.17 C1.14.20 +C1.14.13 C1.14.02 C1.14.05 C1.14.11 C1.14.16 C1.14.19 C1.14.21 C1.15.07 C1.15.08 C1.15.18 +C1.14.14 C1.14.07 C1.14.09 C1.14.10 C1.14.11 C1.14.15 C1.14.16 C1.14.18 C1.14.22 +C1.14.15 C1.14.08 C1.14.10 C1.14.12 C1.14.14 C1.14.17 C1.14.18 C1.14.20 C1.14.23 +C1.14.16 C1.14.09 C1.14.11 C1.14.13 C1.14.14 C1.14.18 C1.14.19 C1.14.22 C1.14.24 +C1.14.17 C1.13.12 C1.13.16 C1.13.20 C1.14.06 C1.14.12 C1.14.15 C1.14.20 C1.14.25 +C1.14.18 C1.14.10 C1.14.14 C1.14.15 C1.14.16 C1.14.20 C1.14.22 C1.14.23 C1.14.27 +C1.14.19 C1.14.11 C1.14.13 C1.14.16 C1.14.21 C1.14.22 C1.14.24 C1.14.26 C1.15.18 +C1.14.20 C1.13.20 C1.14.12 C1.14.15 C1.14.17 C1.14.18 C1.14.23 C1.14.25 C1.14.28 +C1.14.21 C1.14.13 C1.14.19 C1.14.24 C1.14.26 C1.15.18 C1.15.19 C1.15.24 C1.15.29 +C1.14.22 C1.14.14 C1.14.16 C1.14.18 C1.14.19 C1.14.23 C1.14.24 C1.14.27 C1.14.29 +C1.14.23 C1.14.15 C1.14.18 C1.14.20 C1.14.22 C1.14.25 C1.14.27 C1.14.28 C1.14.30 +C1.14.24 C1.14.16 C1.14.19 C1.14.21 C1.14.22 C1.14.26 C1.14.27 C1.14.29 C1.14.31 +C1.14.25 C1.13.20 C1.13.23 C1.13.27 C1.14.17 C1.14.20 C1.14.23 C1.14.28 C1.14.32 +C1.14.26 C1.14.19 C1.14.21 C1.14.24 C1.14.29 C1.14.31 C1.14.33 C1.15.24 C1.15.29 +C1.14.27 C1.14.18 C1.14.22 C1.14.23 C1.14.24 C1.14.28 C1.14.29 C1.14.30 C1.14.34 +C1.14.28 C1.13.27 C1.14.20 C1.14.23 C1.14.25 C1.14.27 C1.14.30 C1.14.32 C1.14.35 +C1.14.29 C1.14.22 C1.14.24 C1.14.26 C1.14.27 C1.14.30 C1.14.31 C1.14.34 C1.14.36 +C1.14.30 C1.14.23 C1.14.27 C1.14.28 C1.14.29 C1.14.32 C1.14.34 C1.14.35 C1.14.37 +C1.14.31 C1.14.24 C1.14.26 C1.14.29 C1.14.33 C1.14.34 C1.14.36 C1.14.38 C1.15.29 +C1.14.32 C1.13.27 C1.13.30 C1.13.33 C1.13.35 C1.14.25 C1.14.28 C1.14.30 C1.14.35 +C1.14.33 C1.14.26 C1.14.31 C1.14.36 C1.14.38 C1.15.29 C1.15.30 C1.15.34 C1.15.38 +C1.14.34 C1.14.27 C1.14.29 C1.14.30 C1.14.31 C1.14.35 C1.14.36 C1.14.37 C1.14.39 +C1.14.35 C1.13.33 C1.13.35 C1.14.28 C1.14.30 C1.14.32 C1.14.34 C1.14.37 C1.14.40 +C1.14.36 C1.14.29 C1.14.31 C1.14.33 C1.14.34 C1.14.37 C1.14.38 C1.14.39 C1.14.41 +C1.14.37 C1.13.35 C1.14.30 C1.14.34 C1.14.35 C1.14.36 C1.14.39 C1.14.40 C1.14.42 +C1.14.38 C1.14.31 C1.14.33 C1.14.36 C1.14.39 C1.14.41 C1.15.34 C1.15.38 C1.15.42 +C1.14.39 C1.14.34 C1.14.36 C1.14.37 C1.14.38 C1.14.40 C1.14.41 C1.14.42 C1.14.43 +C1.14.40 C1.13.35 C1.13.39 C1.13.42 C1.14.35 C1.14.37 C1.14.39 C1.14.42 C1.14.44 +C1.14.41 C1.14.36 C1.14.38 C1.14.39 C1.14.42 C1.14.43 C1.14.45 C1.15.38 C1.15.42 +C1.14.42 C1.13.42 C1.14.37 C1.14.39 C1.14.40 C1.14.41 C1.14.43 C1.14.44 C1.14.46 +C1.14.43 C1.14.39 C1.14.41 C1.14.42 C1.14.44 C1.14.45 C1.14.46 C1.14.47 C1.15.42 +C1.14.44 C1.13.42 C1.13.44 C1.13.46 C1.14.40 C1.14.42 C1.14.43 C1.14.46 C1.14.48 +C1.14.45 C1.14.41 C1.14.43 C1.14.46 C1.14.47 C1.15.42 C1.15.43 C1.15.46 C1.15.49 +C1.14.46 C1.13.46 C1.14.42 C1.14.43 C1.14.44 C1.14.45 C1.14.47 C1.14.48 C1.14.49 +C1.14.47 C1.14.43 C1.14.45 C1.14.46 C1.14.48 C1.14.49 C1.14.50 C1.15.46 C1.15.49 +C1.14.48 C1.13.46 C1.13.48 C1.13.50 C1.14.44 C1.14.46 C1.14.47 C1.14.49 C1.14.51 +C1.14.49 C1.13.50 C1.14.46 C1.14.47 C1.14.48 C1.14.50 C1.14.51 C1.14.52 C1.15.49 +C1.14.50 C1.14.47 C1.14.49 C1.14.51 C1.14.52 C1.14.53 C1.14.54 C1.15.49 C1.15.50 C1.15.52 +C1.14.51 C1.13.50 C1.13.51 C1.13.52 C1.13.54 C1.14.48 C1.14.49 C1.14.50 C1.14.52 C1.14.55 C1.14.57 +C1.14.52 C1.14.49 C1.14.50 C1.14.51 C1.14.53 C1.14.55 C1.14.56 +C1.14.53 C1.14.50 C1.14.52 C1.14.54 C1.14.55 C1.14.56 C1.14.58 C1.15.52 +C1.14.54 C1.14.50 C1.14.53 C1.14.56 C1.14.58 C1.15.52 C1.15.54 C1.15.57 +C1.14.55 C1.13.54 C1.14.51 C1.14.52 C1.14.53 C1.14.56 C1.14.57 C1.14.59 +C1.14.56 C1.14.52 C1.14.53 C1.14.54 C1.14.55 C1.14.57 C1.14.58 C1.14.59 C1.14.60 +C1.14.57 C1.13.54 C1.13.56 C1.13.58 C1.14.51 C1.14.55 C1.14.56 C1.14.59 C1.14.61 +C1.14.58 C1.14.53 C1.14.54 C1.14.56 C1.14.59 C1.14.60 C1.15.54 C1.15.57 C1.15.60 +C1.14.59 C1.13.58 C1.14.55 C1.14.56 C1.14.57 C1.14.58 C1.14.60 C1.14.61 C1.14.62 +C1.14.60 C1.14.56 C1.14.58 C1.14.59 C1.14.61 C1.14.62 C1.15.57 C1.15.60 +C1.14.61 C1.13.58 C1.13.60 C1.13.61 C1.14.57 C1.14.59 C1.14.60 C1.14.62 +C1.14.62 C1.13.61 C1.14.59 C1.14.60 C1.14.61 C1.15.60 +C1.15.00 C1.14.05 C1.15.07 C1.15.08 +C1.15.01 C1.15.02 C1.15.04 C1.15.06 C1.15.10 C1.15.11 +C1.15.02 C1.00.01 C1.00.11 C1.15.01 C1.15.11 C1.15.12 +C1.15.03 C1.15.07 C1.15.13 C1.15.14 +C1.15.04 C1.15.01 C1.15.05 C1.15.06 C1.15.09 +C1.15.05 C1.15.04 C1.15.09 C1.15.14 C1.15.15 +C1.15.06 C1.15.01 C1.15.04 C1.15.09 C1.15.10 C1.15.15 C1.15.16 +C1.15.07 C1.14.13 C1.15.00 C1.15.03 C1.15.08 C1.15.13 C1.15.18 C1.15.19 +C1.15.08 C1.14.05 C1.14.13 C1.15.00 C1.15.07 C1.15.18 +C1.15.09 C1.15.04 C1.15.05 C1.15.06 C1.15.15 C1.15.16 +C1.15.10 C1.15.01 C1.15.06 C1.15.11 C1.15.16 C1.15.17 +C1.15.11 C1.15.01 C1.15.02 C1.15.10 C1.15.12 C1.15.16 C1.15.17 +C1.15.12 C1.00.01 C1.00.11 C1.00.16 C1.15.02 C1.15.11 C1.15.17 +C1.15.13 C1.15.03 C1.15.07 C1.15.14 C1.15.18 C1.15.19 C1.15.20 +C1.15.14 C1.15.03 C1.15.05 C1.15.13 C1.15.15 C1.15.19 C1.15.20 C1.15.21 +C1.15.15 C1.15.05 C1.15.06 C1.15.09 C1.15.14 C1.15.16 C1.15.20 C1.15.21 C1.15.22 +C1.15.16 C1.15.06 C1.15.09 C1.15.10 C1.15.11 C1.15.15 C1.15.17 C1.15.21 C1.15.22 C1.15.23 +C1.15.17 C1.00.11 C1.00.16 C1.00.22 C1.15.10 C1.15.11 C1.15.12 C1.15.16 C1.15.22 C1.15.23 +C1.15.18 C1.14.13 C1.14.19 C1.14.21 C1.15.07 C1.15.08 C1.15.13 C1.15.19 C1.15.24 +C1.15.19 C1.14.21 C1.15.07 C1.15.13 C1.15.14 C1.15.18 C1.15.20 C1.15.24 C1.15.25 +C1.15.20 C1.15.13 C1.15.14 C1.15.15 C1.15.19 C1.15.21 C1.15.24 C1.15.25 C1.15.26 +C1.15.21 C1.15.14 C1.15.15 C1.15.16 C1.15.20 C1.15.22 C1.15.25 C1.15.26 C1.15.27 +C1.15.22 C1.15.15 C1.15.16 C1.15.17 C1.15.21 C1.15.23 C1.15.26 C1.15.27 C1.15.28 +C1.15.23 C1.00.16 C1.00.22 C1.00.27 C1.15.16 C1.15.17 C1.15.22 C1.15.27 C1.15.28 +C1.15.24 C1.14.21 C1.14.26 C1.15.18 C1.15.19 C1.15.20 C1.15.25 C1.15.29 C1.15.30 +C1.15.25 C1.15.19 C1.15.20 C1.15.21 C1.15.24 C1.15.26 C1.15.29 C1.15.30 C1.15.31 +C1.15.26 C1.15.20 C1.15.21 C1.15.22 C1.15.25 C1.15.27 C1.15.30 C1.15.31 C1.15.32 +C1.15.27 C1.15.21 C1.15.22 C1.15.23 C1.15.26 C1.15.28 C1.15.31 C1.15.32 C1.15.33 +C1.15.28 C1.00.22 C1.00.27 C1.00.32 C1.15.22 C1.15.23 C1.15.27 C1.15.32 C1.15.33 +C1.15.29 C1.14.21 C1.14.26 C1.14.31 C1.14.33 C1.15.24 C1.15.25 C1.15.30 C1.15.34 +C1.15.30 C1.14.33 C1.15.24 C1.15.25 C1.15.26 C1.15.29 C1.15.31 C1.15.34 C1.15.35 +C1.15.31 C1.15.25 C1.15.26 C1.15.27 C1.15.30 C1.15.32 C1.15.34 C1.15.35 C1.15.36 +C1.15.32 C1.15.26 C1.15.27 C1.15.28 C1.15.31 C1.15.33 C1.15.35 C1.15.36 C1.15.37 +C1.15.33 C1.00.27 C1.00.32 C1.00.36 C1.15.27 C1.15.28 C1.15.32 C1.15.36 C1.15.37 +C1.15.34 C1.14.33 C1.14.38 C1.15.29 C1.15.30 C1.15.31 C1.15.35 C1.15.38 C1.15.39 +C1.15.35 C1.15.30 C1.15.31 C1.15.32 C1.15.34 C1.15.36 C1.15.38 C1.15.39 C1.15.40 +C1.15.36 C1.15.31 C1.15.32 C1.15.33 C1.15.35 C1.15.37 C1.15.39 C1.15.40 C1.15.41 +C1.15.37 C1.00.32 C1.00.36 C1.00.40 C1.15.32 C1.15.33 C1.15.36 C1.15.40 C1.15.41 +C1.15.38 C1.14.33 C1.14.38 C1.14.41 C1.15.34 C1.15.35 C1.15.39 C1.15.42 C1.15.43 +C1.15.39 C1.15.34 C1.15.35 C1.15.36 C1.15.38 C1.15.40 C1.15.42 C1.15.43 C1.15.44 +C1.15.40 C1.15.35 C1.15.36 C1.15.37 C1.15.39 C1.15.41 C1.15.43 C1.15.44 C1.15.45 +C1.15.41 C1.00.36 C1.00.40 C1.00.44 C1.15.36 C1.15.37 C1.15.40 C1.15.44 C1.15.45 +C1.15.42 C1.14.38 C1.14.41 C1.14.43 C1.14.45 C1.15.38 C1.15.39 C1.15.43 C1.15.46 +C1.15.43 C1.14.45 C1.15.38 C1.15.39 C1.15.40 C1.15.42 C1.15.44 C1.15.46 C1.15.47 +C1.15.44 C1.15.39 C1.15.40 C1.15.41 C1.15.43 C1.15.45 C1.15.46 C1.15.47 C1.15.48 +C1.15.45 C1.00.40 C1.00.44 C1.00.47 C1.15.40 C1.15.41 C1.15.44 C1.15.47 C1.15.48 +C1.15.46 C1.14.45 C1.14.47 C1.15.42 C1.15.43 C1.15.44 C1.15.47 C1.15.49 C1.15.50 +C1.15.47 C1.15.43 C1.15.44 C1.15.45 C1.15.46 C1.15.48 C1.15.49 C1.15.50 C1.15.51 +C1.15.48 C1.00.44 C1.00.47 C1.00.50 C1.15.44 C1.15.45 C1.15.47 C1.15.50 C1.15.51 +C1.15.49 C1.14.45 C1.14.47 C1.14.49 C1.14.50 C1.15.46 C1.15.47 C1.15.50 C1.15.52 +C1.15.50 C1.14.50 C1.15.46 C1.15.47 C1.15.48 C1.15.49 C1.15.51 C1.15.52 C1.15.53 +C1.15.51 C1.00.47 C1.00.50 C1.00.52 C1.15.47 C1.15.48 C1.15.50 C1.15.52 C1.15.53 +C1.15.52 C1.14.50 C1.14.53 C1.14.54 C1.15.49 C1.15.50 C1.15.51 C1.15.53 C1.15.54 C1.15.55 +C1.15.53 C1.00.50 C1.00.52 C1.00.56 C1.15.50 C1.15.51 C1.15.52 C1.15.54 C1.15.55 C1.15.56 +C1.15.54 C1.14.54 C1.14.58 C1.15.52 C1.15.53 C1.15.55 C1.15.57 C1.15.58 +C1.15.55 C1.15.52 C1.15.53 C1.15.54 C1.15.56 C1.15.57 C1.15.58 C1.15.59 +C1.15.56 C1.00.52 C1.00.56 C1.00.59 C1.15.53 C1.15.55 C1.15.58 C1.15.59 +C1.15.57 C1.14.54 C1.14.58 C1.14.60 C1.15.54 C1.15.55 C1.15.58 C1.15.60 C1.15.61 +C1.15.58 C1.15.54 C1.15.55 C1.15.56 C1.15.57 C1.15.59 C1.15.60 C1.15.61 C1.15.62 +C1.15.59 C1.00.56 C1.00.59 C1.00.62 C1.15.55 C1.15.56 C1.15.58 C1.15.61 C1.15.62 +C1.15.60 C1.14.58 C1.14.60 C1.14.62 C1.15.57 C1.15.58 C1.15.61 +C1.15.61 C1.15.57 C1.15.58 C1.15.59 C1.15.60 C1.15.62 +C1.15.62 C1.00.59 C1.00.62 C1.15.58 C1.15.59 C1.15.61 +C2.00.00 C2.00.02 C2.00.05 C2.00.06 +C2.00.01 C2.00.02 C2.00.06 C2.15.00 C2.15.06 +C2.00.02 C2.00.00 C2.00.01 C2.00.05 C2.00.06 +C2.00.03 C2.00.04 C2.00.07 C2.00.08 C2.01.04 +C2.00.04 C2.00.03 C2.00.05 C2.00.07 C2.00.08 C2.00.09 +C2.00.05 C2.00.00 C2.00.02 C2.00.04 C2.00.06 C2.00.08 C2.00.09 C2.00.10 +C2.00.06 C2.00.00 C2.00.01 C2.00.02 C2.00.05 C2.00.09 C2.00.10 C2.15.00 C2.15.06 C2.15.10 +C2.00.07 C2.00.03 C2.00.04 C2.00.08 C2.00.11 C2.01.04 C2.01.07 C2.01.10 +C2.00.08 C2.00.03 C2.00.04 C2.00.05 C2.00.07 C2.00.09 C2.00.11 C2.00.12 C2.01.10 +C2.00.09 C2.00.04 C2.00.05 C2.00.06 C2.00.08 C2.00.10 C2.00.11 C2.00.12 C2.00.13 +C2.00.10 C2.00.05 C2.00.06 C2.00.09 C2.00.12 C2.00.13 C2.15.06 C2.15.10 C2.15.13 +C2.00.11 C2.00.07 C2.00.08 C2.00.09 C2.00.12 C2.00.14 C2.00.15 C2.01.10 C2.01.13 +C2.00.12 C2.00.08 C2.00.09 C2.00.10 C2.00.11 C2.00.13 C2.00.14 C2.00.15 C2.00.16 +C2.00.13 C2.00.09 C2.00.10 C2.00.12 C2.00.15 C2.00.16 C2.15.10 C2.15.13 C2.15.16 +C2.00.14 C2.00.11 C2.00.12 C2.00.15 C2.00.17 C2.00.18 C2.01.10 C2.01.13 C2.01.16 +C2.00.15 C2.00.11 C2.00.12 C2.00.13 C2.00.14 C2.00.16 C2.00.17 C2.00.18 C2.00.19 +C2.00.16 C2.00.12 C2.00.13 C2.00.15 C2.00.18 C2.00.19 C2.15.13 C2.15.16 C2.15.19 +C2.00.17 C2.00.14 C2.00.15 C2.00.18 C2.00.20 C2.01.13 C2.01.16 C2.01.18 C2.01.20 +C2.00.18 C2.00.14 C2.00.15 C2.00.16 C2.00.17 C2.00.19 C2.00.20 C2.00.21 C2.01.20 +C2.00.19 C2.00.15 C2.00.16 C2.00.18 C2.00.20 C2.00.21 C2.15.16 C2.15.19 C2.15.21 +C2.00.20 C2.00.17 C2.00.18 C2.00.19 C2.00.21 C2.00.22 C2.00.23 C2.01.20 C2.01.22 +C2.00.21 C2.00.18 C2.00.19 C2.00.20 C2.00.22 C2.00.23 C2.15.19 C2.15.21 C2.15.23 +C2.00.22 C2.00.20 C2.00.21 C2.00.23 C2.00.24 C2.00.25 C2.01.20 C2.01.22 C2.01.24 +C2.00.23 C2.00.20 C2.00.21 C2.00.22 C2.00.24 C2.00.25 C2.15.21 C2.15.23 C2.15.25 +C2.00.24 C2.00.22 C2.00.23 C2.00.25 C2.00.26 C2.01.22 C2.01.24 C2.01.25 C2.01.26 +C2.00.25 C2.00.22 C2.00.23 C2.00.24 C2.00.26 C2.01.26 C2.15.23 C2.15.25 C2.15.26 +C2.00.26 C2.00.24 C2.00.25 C2.00.27 C2.01.26 C2.01.28 C2.15.25 C2.15.26 C2.15.27 +C2.00.27 C2.00.26 C2.00.28 C2.00.29 C2.01.26 C2.01.28 C2.01.30 C2.15.26 C2.15.27 C2.15.29 +C2.00.28 C2.00.27 C2.00.29 C2.01.28 C2.01.30 C2.01.31 +C2.00.29 C2.00.27 C2.00.28 C2.15.27 C2.15.29 +C2.01.00 C2.01.03 C2.01.05 C2.02.01 +C2.01.01 C2.01.05 C2.01.06 +C2.01.02 C2.01.04 C2.01.06 C2.01.07 +C2.01.03 C2.01.00 C2.01.05 C2.01.08 C2.02.01 C2.02.06 +C2.01.04 C2.00.03 C2.00.07 C2.01.02 C2.01.06 C2.01.07 C2.01.10 +C2.01.05 C2.01.00 C2.01.01 C2.01.03 C2.01.06 C2.01.08 C2.01.09 C2.01.12 +C2.01.06 C2.01.01 C2.01.02 C2.01.04 C2.01.05 C2.01.07 C2.01.09 C2.01.11 +C2.01.07 C2.00.07 C2.01.02 C2.01.04 C2.01.06 C2.01.09 C2.01.10 C2.01.11 C2.01.13 +C2.01.08 C2.01.03 C2.01.05 C2.01.09 C2.01.12 C2.01.14 C2.02.06 C2.02.09 C2.02.11 +C2.01.09 C2.01.05 C2.01.06 C2.01.07 C2.01.08 C2.01.11 C2.01.12 C2.01.15 +C2.01.10 C2.00.07 C2.00.08 C2.00.11 C2.00.14 C2.01.04 C2.01.07 C2.01.11 C2.01.13 +C2.01.11 C2.01.06 C2.01.07 C2.01.09 C2.01.10 C2.01.12 C2.01.13 C2.01.15 C2.01.16 +C2.01.12 C2.01.05 C2.01.08 C2.01.09 C2.01.11 C2.01.14 C2.01.15 C2.01.17 C2.02.11 +C2.01.13 C2.00.11 C2.00.14 C2.00.17 C2.01.07 C2.01.10 C2.01.11 C2.01.15 C2.01.16 +C2.01.14 C2.01.08 C2.01.12 C2.01.15 C2.01.17 C2.01.19 C2.02.11 C2.02.14 C2.02.16 +C2.01.15 C2.01.09 C2.01.11 C2.01.12 C2.01.13 C2.01.14 C2.01.16 C2.01.17 C2.01.18 +C2.01.16 C2.00.14 C2.00.17 C2.01.11 C2.01.13 C2.01.15 C2.01.17 C2.01.18 C2.01.20 +C2.01.17 C2.01.12 C2.01.14 C2.01.15 C2.01.16 C2.01.18 C2.01.19 C2.01.21 C2.02.16 +C2.01.18 C2.00.17 C2.01.15 C2.01.16 C2.01.17 C2.01.19 C2.01.20 C2.01.21 C2.01.22 +C2.01.19 C2.01.14 C2.01.17 C2.01.18 C2.01.21 C2.01.23 C2.02.16 C2.02.18 C2.02.20 +C2.01.20 C2.00.17 C2.00.18 C2.00.20 C2.00.22 C2.01.16 C2.01.18 C2.01.21 C2.01.22 +C2.01.21 C2.01.17 C2.01.18 C2.01.19 C2.01.20 C2.01.22 C2.01.23 C2.01.24 C2.02.20 +C2.01.22 C2.00.20 C2.00.22 C2.00.24 C2.01.18 C2.01.20 C2.01.21 C2.01.23 C2.01.24 +C2.01.23 C2.01.19 C2.01.21 C2.01.22 C2.01.24 C2.01.25 C2.02.20 C2.02.22 C2.02.24 +C2.01.24 C2.00.22 C2.00.24 C2.01.21 C2.01.22 C2.01.23 C2.01.25 C2.01.26 C2.02.24 +C2.01.25 C2.00.24 C2.01.23 C2.01.24 C2.01.26 C2.01.27 C2.01.28 C2.02.24 C2.02.25 +C2.01.26 C2.00.24 C2.00.25 C2.00.26 C2.00.27 C2.01.24 C2.01.25 C2.01.27 C2.01.28 +C2.01.27 C2.01.25 C2.01.26 C2.01.28 C2.02.24 C2.02.25 C2.02.26 C2.02.27 C2.02.29 +C2.01.28 C2.00.26 C2.00.27 C2.00.28 C2.01.25 C2.01.26 C2.01.27 C2.01.29 C2.01.30 C2.02.27 C2.02.29 +C2.01.29 C2.01.28 C2.01.30 C2.01.31 C2.02.29 C2.02.30 +C2.01.30 C2.00.27 C2.00.28 C2.01.28 C2.01.29 C2.01.31 +C2.01.31 C2.00.28 C2.01.29 C2.01.30 C2.02.29 C2.02.30 +C2.02.00 C2.02.02 C2.02.07 C2.02.08 +C2.02.01 C2.01.00 C2.01.03 C2.02.06 +C2.02.02 C2.02.00 C2.02.04 C2.02.07 C2.02.08 C2.03.01 +C2.02.03 C2.02.05 C2.02.06 C2.02.09 +C2.02.04 C2.02.02 C2.02.08 C2.03.01 C2.03.06 +C2.02.05 C2.02.03 C2.02.07 C2.02.09 C2.02.10 +C2.02.06 C2.01.03 C2.01.08 C2.02.01 C2.02.03 C2.02.09 C2.02.11 +C2.02.07 C2.02.00 C2.02.02 C2.02.05 C2.02.08 C2.02.09 C2.02.10 C2.02.12 +C2.02.08 C2.02.00 C2.02.02 C2.02.04 C2.02.07 C2.02.10 C2.02.12 C2.02.13 C2.03.01 C2.03.06 +C2.02.09 C2.01.08 C2.02.03 C2.02.05 C2.02.06 C2.02.07 C2.02.10 C2.02.11 C2.02.14 +C2.02.10 C2.02.05 C2.02.07 C2.02.08 C2.02.09 C2.02.11 C2.02.12 C2.02.14 C2.02.15 +C2.02.11 C2.01.08 C2.01.12 C2.01.14 C2.02.06 C2.02.09 C2.02.10 C2.02.14 C2.02.16 +C2.02.12 C2.02.07 C2.02.08 C2.02.10 C2.02.13 C2.02.14 C2.02.15 C2.02.17 C2.03.06 +C2.02.13 C2.02.08 C2.02.12 C2.02.15 C2.02.17 C2.03.06 C2.03.07 C2.03.11 C2.03.15 +C2.02.14 C2.01.14 C2.02.09 C2.02.10 C2.02.11 C2.02.12 C2.02.15 C2.02.16 C2.02.18 +C2.02.15 C2.02.10 C2.02.12 C2.02.13 C2.02.14 C2.02.16 C2.02.17 C2.02.18 C2.02.19 +C2.02.16 C2.01.14 C2.01.17 C2.01.19 C2.02.11 C2.02.14 C2.02.15 C2.02.18 C2.02.20 +C2.02.17 C2.02.12 C2.02.13 C2.02.15 C2.02.18 C2.02.19 C2.02.21 C2.03.11 C2.03.15 +C2.02.18 C2.01.19 C2.02.14 C2.02.15 C2.02.16 C2.02.17 C2.02.19 C2.02.20 C2.02.22 +C2.02.19 C2.02.15 C2.02.17 C2.02.18 C2.02.20 C2.02.21 C2.02.22 C2.02.23 C2.03.15 +C2.02.20 C2.01.19 C2.01.21 C2.01.23 C2.02.16 C2.02.18 C2.02.19 C2.02.22 C2.02.24 +C2.02.21 C2.02.17 C2.02.19 C2.02.22 C2.02.23 C2.03.15 C2.03.16 C2.03.19 C2.03.22 +C2.02.22 C2.01.23 C2.02.18 C2.02.19 C2.02.20 C2.02.21 C2.02.23 C2.02.24 C2.02.25 +C2.02.23 C2.02.19 C2.02.21 C2.02.22 C2.02.24 C2.02.25 C2.02.26 C2.03.19 C2.03.22 +C2.02.24 C2.01.23 C2.01.24 C2.01.25 C2.01.27 C2.02.20 C2.02.22 C2.02.23 C2.02.25 +C2.02.25 C2.01.25 C2.01.27 C2.02.22 C2.02.23 C2.02.24 C2.02.26 C2.02.27 C2.03.22 +C2.02.26 C2.01.27 C2.02.23 C2.02.25 C2.02.27 C2.02.28 C2.03.22 C2.03.23 C2.03.25 +C2.02.27 C2.01.27 C2.01.28 C2.02.25 C2.02.26 C2.02.28 C2.02.29 C2.02.30 C2.03.25 +C2.02.28 C2.02.26 C2.02.27 C2.02.30 C2.02.31 C2.03.25 C2.03.26 C2.03.27 C2.03.29 +C2.02.29 C2.01.27 C2.01.28 C2.01.29 C2.01.31 C2.02.27 C2.02.30 +C2.02.30 C2.01.29 C2.01.31 C2.02.27 C2.02.28 C2.02.29 C2.02.31 +C2.02.31 C2.02.28 C2.02.30 C2.03.29 +C2.03.00 C2.03.03 C2.03.04 C2.03.05 C2.04.00 C2.04.05 +C2.03.01 C2.02.02 C2.02.04 C2.02.08 C2.03.02 C2.03.06 C2.03.07 +C2.03.02 C2.03.01 C2.03.03 C2.03.06 C2.03.07 C2.03.08 +C2.03.03 C2.03.00 C2.03.02 C2.03.04 C2.03.07 C2.03.08 C2.03.09 +C2.03.04 C2.03.00 C2.03.03 C2.03.05 C2.03.08 C2.03.09 C2.03.10 +C2.03.05 C2.03.00 C2.03.04 C2.03.09 C2.03.10 C2.04.00 C2.04.05 C2.04.10 +C2.03.06 C2.02.04 C2.02.08 C2.02.12 C2.02.13 C2.03.01 C2.03.02 C2.03.07 C2.03.11 +C2.03.07 C2.02.13 C2.03.01 C2.03.02 C2.03.03 C2.03.06 C2.03.08 C2.03.11 C2.03.12 +C2.03.08 C2.03.02 C2.03.03 C2.03.04 C2.03.07 C2.03.09 C2.03.11 C2.03.12 C2.03.13 +C2.03.09 C2.03.03 C2.03.04 C2.03.05 C2.03.08 C2.03.10 C2.03.12 C2.03.13 C2.03.14 +C2.03.10 C2.03.04 C2.03.05 C2.03.09 C2.03.13 C2.03.14 C2.04.05 C2.04.10 C2.04.14 +C2.03.11 C2.02.13 C2.02.17 C2.03.06 C2.03.07 C2.03.08 C2.03.12 C2.03.15 C2.03.16 +C2.03.12 C2.03.07 C2.03.08 C2.03.09 C2.03.11 C2.03.13 C2.03.15 C2.03.16 C2.03.17 +C2.03.13 C2.03.08 C2.03.09 C2.03.10 C2.03.12 C2.03.14 C2.03.16 C2.03.17 C2.03.18 +C2.03.14 C2.03.09 C2.03.10 C2.03.13 C2.03.17 C2.03.18 C2.04.10 C2.04.14 C2.04.18 +C2.03.15 C2.02.13 C2.02.17 C2.02.19 C2.02.21 C2.03.11 C2.03.12 C2.03.16 C2.03.19 +C2.03.16 C2.02.21 C2.03.11 C2.03.12 C2.03.13 C2.03.15 C2.03.17 C2.03.19 C2.03.20 +C2.03.17 C2.03.12 C2.03.13 C2.03.14 C2.03.16 C2.03.18 C2.03.19 C2.03.20 C2.03.21 +C2.03.18 C2.03.13 C2.03.14 C2.03.17 C2.03.20 C2.03.21 C2.04.14 C2.04.18 C2.04.21 +C2.03.19 C2.02.21 C2.02.23 C2.03.15 C2.03.16 C2.03.17 C2.03.20 C2.03.22 C2.03.23 +C2.03.20 C2.03.16 C2.03.17 C2.03.18 C2.03.19 C2.03.21 C2.03.22 C2.03.23 C2.03.24 +C2.03.21 C2.03.17 C2.03.18 C2.03.20 C2.03.23 C2.03.24 C2.04.18 C2.04.21 C2.04.24 +C2.03.22 C2.02.21 C2.02.23 C2.02.25 C2.02.26 C2.03.19 C2.03.20 C2.03.23 C2.03.25 +C2.03.23 C2.02.26 C2.03.19 C2.03.20 C2.03.21 C2.03.22 C2.03.24 C2.03.25 C2.03.26 +C2.03.24 C2.03.20 C2.03.21 C2.03.23 C2.03.25 C2.03.26 C2.04.21 C2.04.24 C2.04.26 +C2.03.25 C2.02.26 C2.02.27 C2.02.28 C2.03.22 C2.03.23 C2.03.24 C2.03.26 C2.03.27 +C2.03.26 C2.02.28 C2.03.23 C2.03.24 C2.03.25 C2.03.27 C2.03.28 C2.04.24 C2.04.26 C2.04.28 +C2.03.27 C2.02.28 C2.03.25 C2.03.26 C2.03.28 C2.03.29 C2.03.30 +C2.03.28 C2.03.26 C2.03.27 C2.03.29 C2.03.30 C2.04.26 C2.04.28 C2.04.30 +C2.03.29 C2.02.28 C2.02.31 C2.03.27 C2.03.28 C2.03.30 +C2.03.30 C2.03.27 C2.03.28 C2.03.29 C2.04.28 C2.04.30 +C2.04.00 C2.03.00 C2.03.05 C2.04.03 C2.04.04 C2.04.05 +C2.04.01 C2.04.02 C2.04.06 C2.04.07 C2.05.02 C2.05.04 C2.05.08 +C2.04.02 C2.04.01 C2.04.03 C2.04.06 C2.04.07 C2.04.08 +C2.04.03 C2.04.00 C2.04.02 C2.04.04 C2.04.07 C2.04.08 C2.04.09 +C2.04.04 C2.04.00 C2.04.03 C2.04.05 C2.04.08 C2.04.09 C2.04.10 +C2.04.05 C2.03.00 C2.03.05 C2.03.10 C2.04.00 C2.04.04 C2.04.09 C2.04.10 +C2.04.06 C2.04.01 C2.04.02 C2.04.07 C2.04.11 C2.05.04 C2.05.08 C2.05.12 C2.05.13 +C2.04.07 C2.04.01 C2.04.02 C2.04.03 C2.04.06 C2.04.08 C2.04.11 C2.04.12 C2.05.13 +C2.04.08 C2.04.02 C2.04.03 C2.04.04 C2.04.07 C2.04.09 C2.04.11 C2.04.12 C2.04.13 +C2.04.09 C2.04.03 C2.04.04 C2.04.05 C2.04.08 C2.04.10 C2.04.12 C2.04.13 C2.04.14 +C2.04.10 C2.03.05 C2.03.10 C2.03.14 C2.04.04 C2.04.05 C2.04.09 C2.04.13 C2.04.14 +C2.04.11 C2.04.06 C2.04.07 C2.04.08 C2.04.12 C2.04.15 C2.04.16 C2.05.13 C2.05.17 +C2.04.12 C2.04.07 C2.04.08 C2.04.09 C2.04.11 C2.04.13 C2.04.15 C2.04.16 C2.04.17 +C2.04.13 C2.04.08 C2.04.09 C2.04.10 C2.04.12 C2.04.14 C2.04.16 C2.04.17 C2.04.18 +C2.04.14 C2.03.10 C2.03.14 C2.03.18 C2.04.09 C2.04.10 C2.04.13 C2.04.17 C2.04.18 +C2.04.15 C2.04.11 C2.04.12 C2.04.16 C2.04.19 C2.05.13 C2.05.17 C2.05.19 C2.05.21 +C2.04.16 C2.04.11 C2.04.12 C2.04.13 C2.04.15 C2.04.17 C2.04.19 C2.04.20 C2.05.21 +C2.04.17 C2.04.12 C2.04.13 C2.04.14 C2.04.16 C2.04.18 C2.04.19 C2.04.20 C2.04.21 +C2.04.18 C2.03.14 C2.03.18 C2.03.21 C2.04.13 C2.04.14 C2.04.17 C2.04.20 C2.04.21 +C2.04.19 C2.04.15 C2.04.16 C2.04.17 C2.04.20 C2.04.22 C2.04.23 C2.05.21 C2.05.23 +C2.04.20 C2.04.16 C2.04.17 C2.04.18 C2.04.19 C2.04.21 C2.04.22 C2.04.23 C2.04.24 +C2.04.21 C2.03.18 C2.03.21 C2.03.24 C2.04.17 C2.04.18 C2.04.20 C2.04.23 C2.04.24 +C2.04.22 C2.04.19 C2.04.20 C2.04.23 C2.04.25 C2.05.21 C2.05.23 C2.05.25 C2.05.26 +C2.04.23 C2.04.19 C2.04.20 C2.04.21 C2.04.22 C2.04.24 C2.04.25 C2.04.26 C2.05.26 +C2.04.24 C2.03.21 C2.03.24 C2.03.26 C2.04.20 C2.04.21 C2.04.23 C2.04.25 C2.04.26 +C2.04.25 C2.04.22 C2.04.23 C2.04.24 C2.04.26 C2.04.27 C2.05.26 C2.05.27 C2.05.28 +C2.04.26 C2.03.24 C2.03.26 C2.03.28 C2.04.23 C2.04.24 C2.04.25 C2.04.27 C2.04.28 C2.05.28 +C2.04.27 C2.04.25 C2.04.26 C2.04.28 C2.04.29 C2.04.30 C2.05.28 +C2.04.28 C2.03.26 C2.03.28 C2.03.30 C2.04.26 C2.04.27 C2.04.29 C2.04.30 +C2.04.29 C2.04.27 C2.04.28 C2.04.30 C2.05.28 C2.05.31 +C2.04.30 C2.03.28 C2.03.30 C2.04.27 C2.04.28 C2.04.29 C2.05.31 +C2.05.00 C2.05.03 C2.05.06 C2.06.00 +C2.05.01 C2.05.02 C2.05.07 C2.05.08 +C2.05.02 C2.04.01 C2.05.01 C2.05.04 C2.05.07 C2.05.08 +C2.05.03 C2.05.00 C2.05.05 C2.05.06 C2.05.09 +C2.05.04 C2.04.01 C2.04.06 C2.05.02 C2.05.08 +C2.05.05 C2.05.03 C2.05.07 C2.05.09 C2.05.10 +C2.05.06 C2.05.00 C2.05.03 C2.05.09 C2.05.11 C2.06.00 C2.06.05 C2.06.08 +C2.05.07 C2.05.01 C2.05.02 C2.05.05 C2.05.08 C2.05.09 C2.05.10 C2.05.12 +C2.05.08 C2.04.01 C2.04.06 C2.05.01 C2.05.02 C2.05.04 C2.05.07 C2.05.10 C2.05.12 C2.05.13 +C2.05.09 C2.05.03 C2.05.05 C2.05.06 C2.05.07 C2.05.10 C2.05.11 C2.05.14 C2.06.08 +C2.05.10 C2.05.05 C2.05.07 C2.05.08 C2.05.09 C2.05.11 C2.05.12 C2.05.14 C2.05.15 +C2.05.11 C2.05.06 C2.05.09 C2.05.10 C2.05.14 C2.05.16 C2.06.08 C2.06.12 C2.06.14 +C2.05.12 C2.04.06 C2.05.07 C2.05.08 C2.05.10 C2.05.13 C2.05.14 C2.05.15 C2.05.17 +C2.05.13 C2.04.06 C2.04.07 C2.04.11 C2.04.15 C2.05.08 C2.05.12 C2.05.15 C2.05.17 +C2.05.14 C2.05.09 C2.05.10 C2.05.11 C2.05.12 C2.05.15 C2.05.16 C2.05.18 C2.06.14 +C2.05.15 C2.05.10 C2.05.12 C2.05.13 C2.05.14 C2.05.16 C2.05.17 C2.05.18 C2.05.19 +C2.05.16 C2.05.11 C2.05.14 C2.05.15 C2.05.18 C2.05.20 C2.06.14 C2.06.17 C2.06.19 +C2.05.17 C2.04.11 C2.04.15 C2.05.12 C2.05.13 C2.05.15 C2.05.18 C2.05.19 C2.05.21 +C2.05.18 C2.05.14 C2.05.15 C2.05.16 C2.05.17 C2.05.19 C2.05.20 C2.05.22 C2.06.19 +C2.05.19 C2.04.15 C2.05.15 C2.05.17 C2.05.18 C2.05.20 C2.05.21 C2.05.22 C2.05.23 +C2.05.20 C2.05.16 C2.05.18 C2.05.19 C2.05.22 C2.05.24 C2.06.19 C2.06.21 C2.06.23 +C2.05.21 C2.04.15 C2.04.16 C2.04.19 C2.04.22 C2.05.17 C2.05.19 C2.05.22 C2.05.23 +C2.05.22 C2.05.18 C2.05.19 C2.05.20 C2.05.21 C2.05.23 C2.05.24 C2.05.25 C2.06.23 +C2.05.23 C2.04.19 C2.04.22 C2.05.19 C2.05.21 C2.05.22 C2.05.24 C2.05.25 C2.05.26 +C2.05.24 C2.05.20 C2.05.22 C2.05.23 C2.05.25 C2.06.23 C2.06.24 C2.06.25 C2.06.27 +C2.05.25 C2.04.22 C2.05.22 C2.05.23 C2.05.24 C2.05.26 C2.05.27 C2.06.25 C2.06.27 +C2.05.26 C2.04.22 C2.04.23 C2.04.25 C2.05.23 C2.05.25 C2.05.27 C2.05.28 C2.06.27 +C2.05.27 C2.04.25 C2.05.25 C2.05.26 C2.05.28 C2.05.29 C2.05.30 C2.06.27 C2.06.28 C2.06.29 +C2.05.28 C2.04.25 C2.04.26 C2.04.27 C2.04.29 C2.05.26 C2.05.27 C2.05.29 C2.05.30 C2.05.31 +C2.05.29 C2.05.27 C2.05.28 C2.05.30 C2.06.29 C2.06.30 C2.06.31 +C2.05.30 C2.05.27 C2.05.28 C2.05.29 C2.05.31 C2.06.31 +C2.05.31 C2.04.29 C2.04.30 C2.05.28 C2.05.30 +C2.06.00 C2.05.00 C2.05.06 C2.06.05 +C2.06.01 C2.06.03 C2.06.05 +C2.06.02 C2.06.04 C2.06.06 C2.06.07 +C2.06.03 C2.06.01 C2.06.05 C2.06.06 C2.06.09 +C2.06.04 C2.06.02 C2.06.06 C2.06.07 C2.06.10 C2.07.03 C2.07.07 +C2.06.05 C2.05.06 C2.06.00 C2.06.01 C2.06.03 C2.06.06 C2.06.08 C2.06.09 C2.06.12 +C2.06.06 C2.06.02 C2.06.03 C2.06.04 C2.06.05 C2.06.07 C2.06.09 C2.06.11 +C2.06.07 C2.06.02 C2.06.04 C2.06.06 C2.06.09 C2.06.10 C2.06.11 C2.06.13 C2.07.07 +C2.06.08 C2.05.06 C2.05.09 C2.05.11 C2.06.05 C2.06.09 C2.06.12 C2.06.14 +C2.06.09 C2.06.03 C2.06.05 C2.06.06 C2.06.07 C2.06.08 C2.06.11 C2.06.12 C2.06.15 +C2.06.10 C2.06.04 C2.06.07 C2.06.11 C2.06.13 C2.07.07 C2.07.08 C2.07.11 C2.07.14 +C2.06.11 C2.06.06 C2.06.07 C2.06.09 C2.06.10 C2.06.12 C2.06.13 C2.06.15 C2.06.16 +C2.06.12 C2.05.11 C2.06.05 C2.06.08 C2.06.09 C2.06.11 C2.06.14 C2.06.15 C2.06.17 +C2.06.13 C2.06.07 C2.06.10 C2.06.11 C2.06.15 C2.06.16 C2.07.11 C2.07.14 C2.07.17 +C2.06.14 C2.05.11 C2.05.14 C2.05.16 C2.06.08 C2.06.12 C2.06.15 C2.06.17 C2.06.19 +C2.06.15 C2.06.09 C2.06.11 C2.06.12 C2.06.13 C2.06.14 C2.06.16 C2.06.17 C2.06.18 +C2.06.16 C2.06.11 C2.06.13 C2.06.15 C2.06.17 C2.06.18 C2.06.20 C2.07.14 C2.07.17 +C2.06.17 C2.05.16 C2.06.12 C2.06.14 C2.06.15 C2.06.16 C2.06.18 C2.06.19 C2.06.21 +C2.06.18 C2.06.15 C2.06.16 C2.06.17 C2.06.19 C2.06.20 C2.06.21 C2.06.22 C2.07.17 +C2.06.19 C2.05.16 C2.05.18 C2.05.20 C2.06.14 C2.06.17 C2.06.18 C2.06.21 C2.06.23 +C2.06.20 C2.06.16 C2.06.18 C2.06.21 C2.06.22 C2.07.17 C2.07.18 C2.07.20 C2.07.22 +C2.06.21 C2.05.20 C2.06.17 C2.06.18 C2.06.19 C2.06.20 C2.06.22 C2.06.23 C2.06.24 +C2.06.22 C2.06.18 C2.06.20 C2.06.21 C2.06.23 C2.06.24 C2.07.20 C2.07.22 C2.07.24 +C2.06.23 C2.05.20 C2.05.22 C2.05.24 C2.06.19 C2.06.21 C2.06.22 C2.06.24 C2.06.25 +C2.06.24 C2.05.24 C2.06.21 C2.06.22 C2.06.23 C2.06.25 C2.06.26 C2.07.22 C2.07.24 +C2.06.25 C2.05.24 C2.05.25 C2.06.23 C2.06.24 C2.06.26 C2.06.27 C2.06.28 C2.07.24 +C2.06.26 C2.06.24 C2.06.25 C2.06.27 C2.06.28 C2.07.24 C2.07.25 C2.07.26 C2.07.27 +C2.06.27 C2.05.24 C2.05.25 C2.05.26 C2.05.27 C2.06.25 C2.06.26 C2.06.28 C2.06.29 +C2.06.28 C2.05.27 C2.06.25 C2.06.26 C2.06.27 C2.06.29 C2.06.30 C2.07.26 C2.07.27 C2.07.28 +C2.06.29 C2.05.27 C2.05.29 C2.06.27 C2.06.28 C2.06.30 C2.06.31 +C2.06.30 C2.05.29 C2.06.28 C2.06.29 C2.06.31 C2.07.27 C2.07.28 +C2.06.31 C2.05.29 C2.05.30 C2.06.29 C2.06.30 C2.07.28 +C2.07.00 C2.07.01 C2.07.05 C2.07.06 +C2.07.01 C2.07.00 C2.07.02 C2.07.05 C2.07.06 +C2.07.02 C2.07.01 C2.07.06 C2.08.01 C2.08.06 +C2.07.03 C2.06.04 C2.07.04 C2.07.07 C2.07.08 +C2.07.04 C2.07.03 C2.07.05 C2.07.07 C2.07.08 C2.07.09 +C2.07.05 C2.07.00 C2.07.01 C2.07.04 C2.07.06 C2.07.08 C2.07.09 C2.07.10 +C2.07.06 C2.07.00 C2.07.01 C2.07.02 C2.07.05 C2.07.09 C2.07.10 C2.08.01 C2.08.06 C2.08.10 +C2.07.07 C2.06.04 C2.06.07 C2.06.10 C2.07.03 C2.07.04 C2.07.08 C2.07.11 +C2.07.08 C2.06.10 C2.07.03 C2.07.04 C2.07.05 C2.07.07 C2.07.09 C2.07.11 C2.07.12 +C2.07.09 C2.07.04 C2.07.05 C2.07.06 C2.07.08 C2.07.10 C2.07.11 C2.07.12 C2.07.13 +C2.07.10 C2.07.05 C2.07.06 C2.07.09 C2.07.12 C2.07.13 C2.08.06 C2.08.10 C2.08.13 +C2.07.11 C2.06.10 C2.06.13 C2.07.07 C2.07.08 C2.07.09 C2.07.12 C2.07.14 C2.07.15 +C2.07.12 C2.07.08 C2.07.09 C2.07.10 C2.07.11 C2.07.13 C2.07.14 C2.07.15 C2.07.16 +C2.07.13 C2.07.09 C2.07.10 C2.07.12 C2.07.15 C2.07.16 C2.08.10 C2.08.13 C2.08.16 +C2.07.14 C2.06.10 C2.06.13 C2.06.16 C2.07.11 C2.07.12 C2.07.15 C2.07.17 C2.07.18 +C2.07.15 C2.07.11 C2.07.12 C2.07.13 C2.07.14 C2.07.16 C2.07.17 C2.07.18 C2.07.19 +C2.07.16 C2.07.12 C2.07.13 C2.07.15 C2.07.18 C2.07.19 C2.08.13 C2.08.16 C2.08.19 +C2.07.17 C2.06.13 C2.06.16 C2.06.18 C2.06.20 C2.07.14 C2.07.15 C2.07.18 C2.07.20 +C2.07.18 C2.06.20 C2.07.14 C2.07.15 C2.07.16 C2.07.17 C2.07.19 C2.07.20 C2.07.21 +C2.07.19 C2.07.15 C2.07.16 C2.07.18 C2.07.20 C2.07.21 C2.08.16 C2.08.19 C2.08.21 +C2.07.20 C2.06.20 C2.06.22 C2.07.17 C2.07.18 C2.07.19 C2.07.21 C2.07.22 C2.07.23 +C2.07.21 C2.07.18 C2.07.19 C2.07.20 C2.07.22 C2.07.23 C2.08.19 C2.08.21 C2.08.23 +C2.07.22 C2.06.20 C2.06.22 C2.06.24 C2.07.20 C2.07.21 C2.07.23 C2.07.24 C2.07.25 +C2.07.23 C2.07.20 C2.07.21 C2.07.22 C2.07.24 C2.07.25 C2.08.21 C2.08.23 C2.08.25 +C2.07.24 C2.06.22 C2.06.24 C2.06.25 C2.06.26 C2.07.22 C2.07.23 C2.07.25 C2.07.26 +C2.07.25 C2.06.26 C2.07.22 C2.07.23 C2.07.24 C2.07.26 C2.08.23 C2.08.25 C2.08.26 +C2.07.26 C2.06.26 C2.06.28 C2.07.24 C2.07.25 C2.07.27 C2.08.25 C2.08.26 C2.08.27 +C2.07.27 C2.06.26 C2.06.28 C2.06.30 C2.07.26 C2.07.28 C2.07.29 C2.08.26 C2.08.27 C2.08.29 +C2.07.28 C2.06.28 C2.06.30 C2.06.31 C2.07.27 C2.07.29 +C2.07.29 C2.07.27 C2.07.28 C2.08.27 C2.08.29 +C2.08.00 C2.08.02 C2.08.05 C2.08.06 +C2.08.01 C2.07.02 C2.07.06 C2.08.02 C2.08.06 +C2.08.02 C2.08.00 C2.08.01 C2.08.05 C2.08.06 +C2.08.03 C2.08.04 C2.08.07 C2.08.08 C2.09.04 +C2.08.04 C2.08.03 C2.08.05 C2.08.07 C2.08.08 C2.08.09 +C2.08.05 C2.08.00 C2.08.02 C2.08.04 C2.08.06 C2.08.08 C2.08.09 C2.08.10 +C2.08.06 C2.07.02 C2.07.06 C2.07.10 C2.08.00 C2.08.01 C2.08.02 C2.08.05 C2.08.09 C2.08.10 +C2.08.07 C2.08.03 C2.08.04 C2.08.08 C2.08.11 C2.09.04 C2.09.07 C2.09.10 +C2.08.08 C2.08.03 C2.08.04 C2.08.05 C2.08.07 C2.08.09 C2.08.11 C2.08.12 C2.09.10 +C2.08.09 C2.08.04 C2.08.05 C2.08.06 C2.08.08 C2.08.10 C2.08.11 C2.08.12 C2.08.13 +C2.08.10 C2.07.06 C2.07.10 C2.07.13 C2.08.05 C2.08.06 C2.08.09 C2.08.12 C2.08.13 +C2.08.11 C2.08.07 C2.08.08 C2.08.09 C2.08.12 C2.08.14 C2.08.15 C2.09.10 C2.09.13 +C2.08.12 C2.08.08 C2.08.09 C2.08.10 C2.08.11 C2.08.13 C2.08.14 C2.08.15 C2.08.16 +C2.08.13 C2.07.10 C2.07.13 C2.07.16 C2.08.09 C2.08.10 C2.08.12 C2.08.15 C2.08.16 +C2.08.14 C2.08.11 C2.08.12 C2.08.15 C2.08.17 C2.08.18 C2.09.10 C2.09.13 C2.09.16 +C2.08.15 C2.08.11 C2.08.12 C2.08.13 C2.08.14 C2.08.16 C2.08.17 C2.08.18 C2.08.19 +C2.08.16 C2.07.13 C2.07.16 C2.07.19 C2.08.12 C2.08.13 C2.08.15 C2.08.18 C2.08.19 +C2.08.17 C2.08.14 C2.08.15 C2.08.18 C2.08.20 C2.09.13 C2.09.16 C2.09.18 C2.09.20 +C2.08.18 C2.08.14 C2.08.15 C2.08.16 C2.08.17 C2.08.19 C2.08.20 C2.08.21 C2.09.20 +C2.08.19 C2.07.16 C2.07.19 C2.07.21 C2.08.15 C2.08.16 C2.08.18 C2.08.20 C2.08.21 +C2.08.20 C2.08.17 C2.08.18 C2.08.19 C2.08.21 C2.08.22 C2.08.23 C2.09.20 C2.09.22 +C2.08.21 C2.07.19 C2.07.21 C2.07.23 C2.08.18 C2.08.19 C2.08.20 C2.08.22 C2.08.23 +C2.08.22 C2.08.20 C2.08.21 C2.08.23 C2.08.24 C2.08.25 C2.09.20 C2.09.22 C2.09.24 +C2.08.23 C2.07.21 C2.07.23 C2.07.25 C2.08.20 C2.08.21 C2.08.22 C2.08.24 C2.08.25 +C2.08.24 C2.08.22 C2.08.23 C2.08.25 C2.08.26 C2.09.22 C2.09.24 C2.09.25 C2.09.26 +C2.08.25 C2.07.23 C2.07.25 C2.07.26 C2.08.22 C2.08.23 C2.08.24 C2.08.26 C2.09.26 +C2.08.26 C2.07.25 C2.07.26 C2.07.27 C2.08.24 C2.08.25 C2.08.27 C2.09.26 C2.09.28 +C2.08.27 C2.07.26 C2.07.27 C2.07.29 C2.08.26 C2.08.28 C2.08.29 C2.09.26 C2.09.28 C2.09.30 +C2.08.28 C2.08.27 C2.08.29 C2.09.28 C2.09.30 C2.09.31 +C2.08.29 C2.07.27 C2.07.29 C2.08.27 C2.08.28 +C2.09.00 C2.09.03 C2.09.05 C2.10.01 +C2.09.01 C2.09.05 C2.09.06 +C2.09.02 C2.09.04 C2.09.06 C2.09.07 +C2.09.03 C2.09.00 C2.09.05 C2.09.08 C2.10.01 C2.10.06 +C2.09.04 C2.08.03 C2.08.07 C2.09.02 C2.09.06 C2.09.07 C2.09.10 +C2.09.05 C2.09.00 C2.09.01 C2.09.03 C2.09.06 C2.09.08 C2.09.09 C2.09.12 +C2.09.06 C2.09.01 C2.09.02 C2.09.04 C2.09.05 C2.09.07 C2.09.09 C2.09.11 +C2.09.07 C2.08.07 C2.09.02 C2.09.04 C2.09.06 C2.09.09 C2.09.10 C2.09.11 C2.09.13 +C2.09.08 C2.09.03 C2.09.05 C2.09.09 C2.09.12 C2.09.14 C2.10.06 C2.10.09 C2.10.11 +C2.09.09 C2.09.05 C2.09.06 C2.09.07 C2.09.08 C2.09.11 C2.09.12 C2.09.15 +C2.09.10 C2.08.07 C2.08.08 C2.08.11 C2.08.14 C2.09.04 C2.09.07 C2.09.11 C2.09.13 +C2.09.11 C2.09.06 C2.09.07 C2.09.09 C2.09.10 C2.09.12 C2.09.13 C2.09.15 C2.09.16 +C2.09.12 C2.09.05 C2.09.08 C2.09.09 C2.09.11 C2.09.14 C2.09.15 C2.09.17 C2.10.11 +C2.09.13 C2.08.11 C2.08.14 C2.08.17 C2.09.07 C2.09.10 C2.09.11 C2.09.15 C2.09.16 +C2.09.14 C2.09.08 C2.09.12 C2.09.15 C2.09.17 C2.09.19 C2.10.11 C2.10.14 C2.10.16 +C2.09.15 C2.09.09 C2.09.11 C2.09.12 C2.09.13 C2.09.14 C2.09.16 C2.09.17 C2.09.18 +C2.09.16 C2.08.14 C2.08.17 C2.09.11 C2.09.13 C2.09.15 C2.09.17 C2.09.18 C2.09.20 +C2.09.17 C2.09.12 C2.09.14 C2.09.15 C2.09.16 C2.09.18 C2.09.19 C2.09.21 C2.10.16 +C2.09.18 C2.08.17 C2.09.15 C2.09.16 C2.09.17 C2.09.19 C2.09.20 C2.09.21 C2.09.22 +C2.09.19 C2.09.14 C2.09.17 C2.09.18 C2.09.21 C2.09.23 C2.10.16 C2.10.18 C2.10.20 +C2.09.20 C2.08.17 C2.08.18 C2.08.20 C2.08.22 C2.09.16 C2.09.18 C2.09.21 C2.09.22 +C2.09.21 C2.09.17 C2.09.18 C2.09.19 C2.09.20 C2.09.22 C2.09.23 C2.09.24 C2.10.20 +C2.09.22 C2.08.20 C2.08.22 C2.08.24 C2.09.18 C2.09.20 C2.09.21 C2.09.23 C2.09.24 +C2.09.23 C2.09.19 C2.09.21 C2.09.22 C2.09.24 C2.09.25 C2.10.20 C2.10.22 C2.10.24 +C2.09.24 C2.08.22 C2.08.24 C2.09.21 C2.09.22 C2.09.23 C2.09.25 C2.09.26 C2.10.24 +C2.09.25 C2.08.24 C2.09.23 C2.09.24 C2.09.26 C2.09.27 C2.09.28 C2.10.24 C2.10.25 +C2.09.26 C2.08.24 C2.08.25 C2.08.26 C2.08.27 C2.09.24 C2.09.25 C2.09.27 C2.09.28 +C2.09.27 C2.09.25 C2.09.26 C2.09.28 C2.10.24 C2.10.25 C2.10.26 C2.10.27 C2.10.29 +C2.09.28 C2.08.26 C2.08.27 C2.08.28 C2.09.25 C2.09.26 C2.09.27 C2.09.29 C2.09.30 C2.10.27 C2.10.29 +C2.09.29 C2.09.28 C2.09.30 C2.09.31 C2.10.29 C2.10.30 +C2.09.30 C2.08.27 C2.08.28 C2.09.28 C2.09.29 C2.09.31 +C2.09.31 C2.08.28 C2.09.29 C2.09.30 C2.10.29 C2.10.30 +C2.10.00 C2.10.02 C2.10.07 C2.10.08 +C2.10.01 C2.09.00 C2.09.03 C2.10.06 +C2.10.02 C2.10.00 C2.10.04 C2.10.07 C2.10.08 C2.11.01 +C2.10.03 C2.10.05 C2.10.06 C2.10.09 +C2.10.04 C2.10.02 C2.10.08 C2.11.01 C2.11.06 +C2.10.05 C2.10.03 C2.10.07 C2.10.09 C2.10.10 +C2.10.06 C2.09.03 C2.09.08 C2.10.01 C2.10.03 C2.10.09 C2.10.11 +C2.10.07 C2.10.00 C2.10.02 C2.10.05 C2.10.08 C2.10.09 C2.10.10 C2.10.12 +C2.10.08 C2.10.00 C2.10.02 C2.10.04 C2.10.07 C2.10.10 C2.10.12 C2.10.13 C2.11.01 C2.11.06 +C2.10.09 C2.09.08 C2.10.03 C2.10.05 C2.10.06 C2.10.07 C2.10.10 C2.10.11 C2.10.14 +C2.10.10 C2.10.05 C2.10.07 C2.10.08 C2.10.09 C2.10.11 C2.10.12 C2.10.14 C2.10.15 +C2.10.11 C2.09.08 C2.09.12 C2.09.14 C2.10.06 C2.10.09 C2.10.10 C2.10.14 C2.10.16 +C2.10.12 C2.10.07 C2.10.08 C2.10.10 C2.10.13 C2.10.14 C2.10.15 C2.10.17 C2.11.06 +C2.10.13 C2.10.08 C2.10.12 C2.10.15 C2.10.17 C2.11.06 C2.11.07 C2.11.11 C2.11.15 +C2.10.14 C2.09.14 C2.10.09 C2.10.10 C2.10.11 C2.10.12 C2.10.15 C2.10.16 C2.10.18 +C2.10.15 C2.10.10 C2.10.12 C2.10.13 C2.10.14 C2.10.16 C2.10.17 C2.10.18 C2.10.19 +C2.10.16 C2.09.14 C2.09.17 C2.09.19 C2.10.11 C2.10.14 C2.10.15 C2.10.18 C2.10.20 +C2.10.17 C2.10.12 C2.10.13 C2.10.15 C2.10.18 C2.10.19 C2.10.21 C2.11.11 C2.11.15 +C2.10.18 C2.09.19 C2.10.14 C2.10.15 C2.10.16 C2.10.17 C2.10.19 C2.10.20 C2.10.22 +C2.10.19 C2.10.15 C2.10.17 C2.10.18 C2.10.20 C2.10.21 C2.10.22 C2.10.23 C2.11.15 +C2.10.20 C2.09.19 C2.09.21 C2.09.23 C2.10.16 C2.10.18 C2.10.19 C2.10.22 C2.10.24 +C2.10.21 C2.10.17 C2.10.19 C2.10.22 C2.10.23 C2.11.15 C2.11.16 C2.11.19 C2.11.22 +C2.10.22 C2.09.23 C2.10.18 C2.10.19 C2.10.20 C2.10.21 C2.10.23 C2.10.24 C2.10.25 +C2.10.23 C2.10.19 C2.10.21 C2.10.22 C2.10.24 C2.10.25 C2.10.26 C2.11.19 C2.11.22 +C2.10.24 C2.09.23 C2.09.24 C2.09.25 C2.09.27 C2.10.20 C2.10.22 C2.10.23 C2.10.25 +C2.10.25 C2.09.25 C2.09.27 C2.10.22 C2.10.23 C2.10.24 C2.10.26 C2.10.27 C2.11.22 +C2.10.26 C2.09.27 C2.10.23 C2.10.25 C2.10.27 C2.10.28 C2.11.22 C2.11.23 C2.11.25 +C2.10.27 C2.09.27 C2.09.28 C2.10.25 C2.10.26 C2.10.28 C2.10.29 C2.10.30 C2.11.25 +C2.10.28 C2.10.26 C2.10.27 C2.10.30 C2.10.31 C2.11.25 C2.11.26 C2.11.27 C2.11.29 +C2.10.29 C2.09.27 C2.09.28 C2.09.29 C2.09.31 C2.10.27 C2.10.30 +C2.10.30 C2.09.29 C2.09.31 C2.10.27 C2.10.28 C2.10.29 C2.10.31 +C2.10.31 C2.10.28 C2.10.30 C2.11.29 +C2.11.00 C2.11.03 C2.11.04 C2.11.05 C2.12.00 C2.12.05 +C2.11.01 C2.10.02 C2.10.04 C2.10.08 C2.11.02 C2.11.06 C2.11.07 +C2.11.02 C2.11.01 C2.11.03 C2.11.06 C2.11.07 C2.11.08 +C2.11.03 C2.11.00 C2.11.02 C2.11.04 C2.11.07 C2.11.08 C2.11.09 +C2.11.04 C2.11.00 C2.11.03 C2.11.05 C2.11.08 C2.11.09 C2.11.10 +C2.11.05 C2.11.00 C2.11.04 C2.11.09 C2.11.10 C2.12.00 C2.12.05 C2.12.10 +C2.11.06 C2.10.04 C2.10.08 C2.10.12 C2.10.13 C2.11.01 C2.11.02 C2.11.07 C2.11.11 +C2.11.07 C2.10.13 C2.11.01 C2.11.02 C2.11.03 C2.11.06 C2.11.08 C2.11.11 C2.11.12 +C2.11.08 C2.11.02 C2.11.03 C2.11.04 C2.11.07 C2.11.09 C2.11.11 C2.11.12 C2.11.13 +C2.11.09 C2.11.03 C2.11.04 C2.11.05 C2.11.08 C2.11.10 C2.11.12 C2.11.13 C2.11.14 +C2.11.10 C2.11.04 C2.11.05 C2.11.09 C2.11.13 C2.11.14 C2.12.05 C2.12.10 C2.12.14 +C2.11.11 C2.10.13 C2.10.17 C2.11.06 C2.11.07 C2.11.08 C2.11.12 C2.11.15 C2.11.16 +C2.11.12 C2.11.07 C2.11.08 C2.11.09 C2.11.11 C2.11.13 C2.11.15 C2.11.16 C2.11.17 +C2.11.13 C2.11.08 C2.11.09 C2.11.10 C2.11.12 C2.11.14 C2.11.16 C2.11.17 C2.11.18 +C2.11.14 C2.11.09 C2.11.10 C2.11.13 C2.11.17 C2.11.18 C2.12.10 C2.12.14 C2.12.18 +C2.11.15 C2.10.13 C2.10.17 C2.10.19 C2.10.21 C2.11.11 C2.11.12 C2.11.16 C2.11.19 +C2.11.16 C2.10.21 C2.11.11 C2.11.12 C2.11.13 C2.11.15 C2.11.17 C2.11.19 C2.11.20 +C2.11.17 C2.11.12 C2.11.13 C2.11.14 C2.11.16 C2.11.18 C2.11.19 C2.11.20 C2.11.21 +C2.11.18 C2.11.13 C2.11.14 C2.11.17 C2.11.20 C2.11.21 C2.12.14 C2.12.18 C2.12.21 +C2.11.19 C2.10.21 C2.10.23 C2.11.15 C2.11.16 C2.11.17 C2.11.20 C2.11.22 C2.11.23 +C2.11.20 C2.11.16 C2.11.17 C2.11.18 C2.11.19 C2.11.21 C2.11.22 C2.11.23 C2.11.24 +C2.11.21 C2.11.17 C2.11.18 C2.11.20 C2.11.23 C2.11.24 C2.12.18 C2.12.21 C2.12.24 +C2.11.22 C2.10.21 C2.10.23 C2.10.25 C2.10.26 C2.11.19 C2.11.20 C2.11.23 C2.11.25 +C2.11.23 C2.10.26 C2.11.19 C2.11.20 C2.11.21 C2.11.22 C2.11.24 C2.11.25 C2.11.26 +C2.11.24 C2.11.20 C2.11.21 C2.11.23 C2.11.25 C2.11.26 C2.12.21 C2.12.24 C2.12.26 +C2.11.25 C2.10.26 C2.10.27 C2.10.28 C2.11.22 C2.11.23 C2.11.24 C2.11.26 C2.11.27 +C2.11.26 C2.10.28 C2.11.23 C2.11.24 C2.11.25 C2.11.27 C2.11.28 C2.12.24 C2.12.26 C2.12.28 +C2.11.27 C2.10.28 C2.11.25 C2.11.26 C2.11.28 C2.11.29 C2.11.30 +C2.11.28 C2.11.26 C2.11.27 C2.11.29 C2.11.30 C2.12.26 C2.12.28 C2.12.30 +C2.11.29 C2.10.28 C2.10.31 C2.11.27 C2.11.28 C2.11.30 +C2.11.30 C2.11.27 C2.11.28 C2.11.29 C2.12.28 C2.12.30 +C2.12.00 C2.11.00 C2.11.05 C2.12.03 C2.12.04 C2.12.05 +C2.12.01 C2.12.02 C2.12.06 C2.12.07 C2.13.02 C2.13.04 C2.13.08 +C2.12.02 C2.12.01 C2.12.03 C2.12.06 C2.12.07 C2.12.08 +C2.12.03 C2.12.00 C2.12.02 C2.12.04 C2.12.07 C2.12.08 C2.12.09 +C2.12.04 C2.12.00 C2.12.03 C2.12.05 C2.12.08 C2.12.09 C2.12.10 +C2.12.05 C2.11.00 C2.11.05 C2.11.10 C2.12.00 C2.12.04 C2.12.09 C2.12.10 +C2.12.06 C2.12.01 C2.12.02 C2.12.07 C2.12.11 C2.13.04 C2.13.08 C2.13.12 C2.13.13 +C2.12.07 C2.12.01 C2.12.02 C2.12.03 C2.12.06 C2.12.08 C2.12.11 C2.12.12 C2.13.13 +C2.12.08 C2.12.02 C2.12.03 C2.12.04 C2.12.07 C2.12.09 C2.12.11 C2.12.12 C2.12.13 +C2.12.09 C2.12.03 C2.12.04 C2.12.05 C2.12.08 C2.12.10 C2.12.12 C2.12.13 C2.12.14 +C2.12.10 C2.11.05 C2.11.10 C2.11.14 C2.12.04 C2.12.05 C2.12.09 C2.12.13 C2.12.14 +C2.12.11 C2.12.06 C2.12.07 C2.12.08 C2.12.12 C2.12.15 C2.12.16 C2.13.13 C2.13.17 +C2.12.12 C2.12.07 C2.12.08 C2.12.09 C2.12.11 C2.12.13 C2.12.15 C2.12.16 C2.12.17 +C2.12.13 C2.12.08 C2.12.09 C2.12.10 C2.12.12 C2.12.14 C2.12.16 C2.12.17 C2.12.18 +C2.12.14 C2.11.10 C2.11.14 C2.11.18 C2.12.09 C2.12.10 C2.12.13 C2.12.17 C2.12.18 +C2.12.15 C2.12.11 C2.12.12 C2.12.16 C2.12.19 C2.13.13 C2.13.17 C2.13.19 C2.13.21 +C2.12.16 C2.12.11 C2.12.12 C2.12.13 C2.12.15 C2.12.17 C2.12.19 C2.12.20 C2.13.21 +C2.12.17 C2.12.12 C2.12.13 C2.12.14 C2.12.16 C2.12.18 C2.12.19 C2.12.20 C2.12.21 +C2.12.18 C2.11.14 C2.11.18 C2.11.21 C2.12.13 C2.12.14 C2.12.17 C2.12.20 C2.12.21 +C2.12.19 C2.12.15 C2.12.16 C2.12.17 C2.12.20 C2.12.22 C2.12.23 C2.13.21 C2.13.23 +C2.12.20 C2.12.16 C2.12.17 C2.12.18 C2.12.19 C2.12.21 C2.12.22 C2.12.23 C2.12.24 +C2.12.21 C2.11.18 C2.11.21 C2.11.24 C2.12.17 C2.12.18 C2.12.20 C2.12.23 C2.12.24 +C2.12.22 C2.12.19 C2.12.20 C2.12.23 C2.12.25 C2.13.21 C2.13.23 C2.13.25 C2.13.26 +C2.12.23 C2.12.19 C2.12.20 C2.12.21 C2.12.22 C2.12.24 C2.12.25 C2.12.26 C2.13.26 +C2.12.24 C2.11.21 C2.11.24 C2.11.26 C2.12.20 C2.12.21 C2.12.23 C2.12.25 C2.12.26 +C2.12.25 C2.12.22 C2.12.23 C2.12.24 C2.12.26 C2.12.27 C2.13.26 C2.13.27 C2.13.28 +C2.12.26 C2.11.24 C2.11.26 C2.11.28 C2.12.23 C2.12.24 C2.12.25 C2.12.27 C2.12.28 C2.13.28 +C2.12.27 C2.12.25 C2.12.26 C2.12.28 C2.12.29 C2.12.30 C2.13.28 +C2.12.28 C2.11.26 C2.11.28 C2.11.30 C2.12.26 C2.12.27 C2.12.29 C2.12.30 +C2.12.29 C2.12.27 C2.12.28 C2.12.30 C2.13.28 C2.13.31 +C2.12.30 C2.11.28 C2.11.30 C2.12.27 C2.12.28 C2.12.29 C2.13.31 +C2.13.00 C2.13.03 C2.13.06 C2.14.00 +C2.13.01 C2.13.02 C2.13.07 C2.13.08 +C2.13.02 C2.12.01 C2.13.01 C2.13.04 C2.13.07 C2.13.08 +C2.13.03 C2.13.00 C2.13.05 C2.13.06 C2.13.09 +C2.13.04 C2.12.01 C2.12.06 C2.13.02 C2.13.08 +C2.13.05 C2.13.03 C2.13.07 C2.13.09 C2.13.10 +C2.13.06 C2.13.00 C2.13.03 C2.13.09 C2.13.11 C2.14.00 C2.14.05 C2.14.08 +C2.13.07 C2.13.01 C2.13.02 C2.13.05 C2.13.08 C2.13.09 C2.13.10 C2.13.12 +C2.13.08 C2.12.01 C2.12.06 C2.13.01 C2.13.02 C2.13.04 C2.13.07 C2.13.10 C2.13.12 C2.13.13 +C2.13.09 C2.13.03 C2.13.05 C2.13.06 C2.13.07 C2.13.10 C2.13.11 C2.13.14 C2.14.08 +C2.13.10 C2.13.05 C2.13.07 C2.13.08 C2.13.09 C2.13.11 C2.13.12 C2.13.14 C2.13.15 +C2.13.11 C2.13.06 C2.13.09 C2.13.10 C2.13.14 C2.13.16 C2.14.08 C2.14.12 C2.14.14 +C2.13.12 C2.12.06 C2.13.07 C2.13.08 C2.13.10 C2.13.13 C2.13.14 C2.13.15 C2.13.17 +C2.13.13 C2.12.06 C2.12.07 C2.12.11 C2.12.15 C2.13.08 C2.13.12 C2.13.15 C2.13.17 +C2.13.14 C2.13.09 C2.13.10 C2.13.11 C2.13.12 C2.13.15 C2.13.16 C2.13.18 C2.14.14 +C2.13.15 C2.13.10 C2.13.12 C2.13.13 C2.13.14 C2.13.16 C2.13.17 C2.13.18 C2.13.19 +C2.13.16 C2.13.11 C2.13.14 C2.13.15 C2.13.18 C2.13.20 C2.14.14 C2.14.17 C2.14.19 +C2.13.17 C2.12.11 C2.12.15 C2.13.12 C2.13.13 C2.13.15 C2.13.18 C2.13.19 C2.13.21 +C2.13.18 C2.13.14 C2.13.15 C2.13.16 C2.13.17 C2.13.19 C2.13.20 C2.13.22 C2.14.19 +C2.13.19 C2.12.15 C2.13.15 C2.13.17 C2.13.18 C2.13.20 C2.13.21 C2.13.22 C2.13.23 +C2.13.20 C2.13.16 C2.13.18 C2.13.19 C2.13.22 C2.13.24 C2.14.19 C2.14.21 C2.14.23 +C2.13.21 C2.12.15 C2.12.16 C2.12.19 C2.12.22 C2.13.17 C2.13.19 C2.13.22 C2.13.23 +C2.13.22 C2.13.18 C2.13.19 C2.13.20 C2.13.21 C2.13.23 C2.13.24 C2.13.25 C2.14.23 +C2.13.23 C2.12.19 C2.12.22 C2.13.19 C2.13.21 C2.13.22 C2.13.24 C2.13.25 C2.13.26 +C2.13.24 C2.13.20 C2.13.22 C2.13.23 C2.13.25 C2.14.23 C2.14.24 C2.14.25 C2.14.27 +C2.13.25 C2.12.22 C2.13.22 C2.13.23 C2.13.24 C2.13.26 C2.13.27 C2.14.25 C2.14.27 +C2.13.26 C2.12.22 C2.12.23 C2.12.25 C2.13.23 C2.13.25 C2.13.27 C2.13.28 C2.14.27 +C2.13.27 C2.12.25 C2.13.25 C2.13.26 C2.13.28 C2.13.29 C2.13.30 C2.14.27 C2.14.28 C2.14.29 +C2.13.28 C2.12.25 C2.12.26 C2.12.27 C2.12.29 C2.13.26 C2.13.27 C2.13.29 C2.13.30 C2.13.31 +C2.13.29 C2.13.27 C2.13.28 C2.13.30 C2.14.29 C2.14.30 C2.14.31 +C2.13.30 C2.13.27 C2.13.28 C2.13.29 C2.13.31 C2.14.31 +C2.13.31 C2.12.29 C2.12.30 C2.13.28 C2.13.30 +C2.14.00 C2.13.00 C2.13.06 C2.14.05 +C2.14.01 C2.14.03 C2.14.05 +C2.14.02 C2.14.04 C2.14.06 C2.14.07 +C2.14.03 C2.14.01 C2.14.05 C2.14.06 C2.14.09 +C2.14.04 C2.14.02 C2.14.06 C2.14.07 C2.14.10 C2.15.03 C2.15.07 +C2.14.05 C2.13.06 C2.14.00 C2.14.01 C2.14.03 C2.14.06 C2.14.08 C2.14.09 C2.14.12 +C2.14.06 C2.14.02 C2.14.03 C2.14.04 C2.14.05 C2.14.07 C2.14.09 C2.14.11 +C2.14.07 C2.14.02 C2.14.04 C2.14.06 C2.14.09 C2.14.10 C2.14.11 C2.14.13 C2.15.07 +C2.14.08 C2.13.06 C2.13.09 C2.13.11 C2.14.05 C2.14.09 C2.14.12 C2.14.14 +C2.14.09 C2.14.03 C2.14.05 C2.14.06 C2.14.07 C2.14.08 C2.14.11 C2.14.12 C2.14.15 +C2.14.10 C2.14.04 C2.14.07 C2.14.11 C2.14.13 C2.15.07 C2.15.08 C2.15.11 C2.15.14 +C2.14.11 C2.14.06 C2.14.07 C2.14.09 C2.14.10 C2.14.12 C2.14.13 C2.14.15 C2.14.16 +C2.14.12 C2.13.11 C2.14.05 C2.14.08 C2.14.09 C2.14.11 C2.14.14 C2.14.15 C2.14.17 +C2.14.13 C2.14.07 C2.14.10 C2.14.11 C2.14.15 C2.14.16 C2.15.11 C2.15.14 C2.15.17 +C2.14.14 C2.13.11 C2.13.14 C2.13.16 C2.14.08 C2.14.12 C2.14.15 C2.14.17 C2.14.19 +C2.14.15 C2.14.09 C2.14.11 C2.14.12 C2.14.13 C2.14.14 C2.14.16 C2.14.17 C2.14.18 +C2.14.16 C2.14.11 C2.14.13 C2.14.15 C2.14.17 C2.14.18 C2.14.20 C2.15.14 C2.15.17 +C2.14.17 C2.13.16 C2.14.12 C2.14.14 C2.14.15 C2.14.16 C2.14.18 C2.14.19 C2.14.21 +C2.14.18 C2.14.15 C2.14.16 C2.14.17 C2.14.19 C2.14.20 C2.14.21 C2.14.22 C2.15.17 +C2.14.19 C2.13.16 C2.13.18 C2.13.20 C2.14.14 C2.14.17 C2.14.18 C2.14.21 C2.14.23 +C2.14.20 C2.14.16 C2.14.18 C2.14.21 C2.14.22 C2.15.17 C2.15.18 C2.15.20 C2.15.22 +C2.14.21 C2.13.20 C2.14.17 C2.14.18 C2.14.19 C2.14.20 C2.14.22 C2.14.23 C2.14.24 +C2.14.22 C2.14.18 C2.14.20 C2.14.21 C2.14.23 C2.14.24 C2.15.20 C2.15.22 C2.15.24 +C2.14.23 C2.13.20 C2.13.22 C2.13.24 C2.14.19 C2.14.21 C2.14.22 C2.14.24 C2.14.25 +C2.14.24 C2.13.24 C2.14.21 C2.14.22 C2.14.23 C2.14.25 C2.14.26 C2.15.22 C2.15.24 +C2.14.25 C2.13.24 C2.13.25 C2.14.23 C2.14.24 C2.14.26 C2.14.27 C2.14.28 C2.15.24 +C2.14.26 C2.14.24 C2.14.25 C2.14.27 C2.14.28 C2.15.24 C2.15.25 C2.15.26 C2.15.27 +C2.14.27 C2.13.24 C2.13.25 C2.13.26 C2.13.27 C2.14.25 C2.14.26 C2.14.28 C2.14.29 +C2.14.28 C2.13.27 C2.14.25 C2.14.26 C2.14.27 C2.14.29 C2.14.30 C2.15.26 C2.15.27 C2.15.28 +C2.14.29 C2.13.27 C2.13.29 C2.14.27 C2.14.28 C2.14.30 C2.14.31 +C2.14.30 C2.13.29 C2.14.28 C2.14.29 C2.14.31 C2.15.27 C2.15.28 +C2.14.31 C2.13.29 C2.13.30 C2.14.29 C2.14.30 C2.15.28 +C2.15.00 C2.00.01 C2.00.06 C2.15.01 C2.15.06 +C2.15.01 C2.15.00 C2.15.02 C2.15.05 C2.15.06 +C2.15.02 C2.15.01 C2.15.05 C2.15.06 +C2.15.03 C2.14.04 C2.15.04 C2.15.07 C2.15.08 +C2.15.04 C2.15.03 C2.15.05 C2.15.07 C2.15.08 C2.15.09 +C2.15.05 C2.15.01 C2.15.02 C2.15.04 C2.15.06 C2.15.08 C2.15.09 C2.15.10 +C2.15.06 C2.00.01 C2.00.06 C2.00.10 C2.15.00 C2.15.01 C2.15.02 C2.15.05 C2.15.09 C2.15.10 +C2.15.07 C2.14.04 C2.14.07 C2.14.10 C2.15.03 C2.15.04 C2.15.08 C2.15.11 +C2.15.08 C2.14.10 C2.15.03 C2.15.04 C2.15.05 C2.15.07 C2.15.09 C2.15.11 C2.15.12 +C2.15.09 C2.15.04 C2.15.05 C2.15.06 C2.15.08 C2.15.10 C2.15.11 C2.15.12 C2.15.13 +C2.15.10 C2.00.06 C2.00.10 C2.00.13 C2.15.05 C2.15.06 C2.15.09 C2.15.12 C2.15.13 +C2.15.11 C2.14.10 C2.14.13 C2.15.07 C2.15.08 C2.15.09 C2.15.12 C2.15.14 C2.15.15 +C2.15.12 C2.15.08 C2.15.09 C2.15.10 C2.15.11 C2.15.13 C2.15.14 C2.15.15 C2.15.16 +C2.15.13 C2.00.10 C2.00.13 C2.00.16 C2.15.09 C2.15.10 C2.15.12 C2.15.15 C2.15.16 +C2.15.14 C2.14.10 C2.14.13 C2.14.16 C2.15.11 C2.15.12 C2.15.15 C2.15.17 C2.15.18 +C2.15.15 C2.15.11 C2.15.12 C2.15.13 C2.15.14 C2.15.16 C2.15.17 C2.15.18 C2.15.19 +C2.15.16 C2.00.13 C2.00.16 C2.00.19 C2.15.12 C2.15.13 C2.15.15 C2.15.18 C2.15.19 +C2.15.17 C2.14.13 C2.14.16 C2.14.18 C2.14.20 C2.15.14 C2.15.15 C2.15.18 C2.15.20 +C2.15.18 C2.14.20 C2.15.14 C2.15.15 C2.15.16 C2.15.17 C2.15.19 C2.15.20 C2.15.21 +C2.15.19 C2.00.16 C2.00.19 C2.00.21 C2.15.15 C2.15.16 C2.15.18 C2.15.20 C2.15.21 +C2.15.20 C2.14.20 C2.14.22 C2.15.17 C2.15.18 C2.15.19 C2.15.21 C2.15.22 C2.15.23 +C2.15.21 C2.00.19 C2.00.21 C2.00.23 C2.15.18 C2.15.19 C2.15.20 C2.15.22 C2.15.23 +C2.15.22 C2.14.20 C2.14.22 C2.14.24 C2.15.20 C2.15.21 C2.15.23 C2.15.24 C2.15.25 +C2.15.23 C2.00.21 C2.00.23 C2.00.25 C2.15.20 C2.15.21 C2.15.22 C2.15.24 C2.15.25 +C2.15.24 C2.14.22 C2.14.24 C2.14.25 C2.14.26 C2.15.22 C2.15.23 C2.15.25 C2.15.26 +C2.15.25 C2.00.23 C2.00.25 C2.00.26 C2.14.26 C2.15.22 C2.15.23 C2.15.24 C2.15.26 +C2.15.26 C2.00.25 C2.00.26 C2.00.27 C2.14.26 C2.14.28 C2.15.24 C2.15.25 C2.15.27 +C2.15.27 C2.00.26 C2.00.27 C2.00.29 C2.14.26 C2.14.28 C2.14.30 C2.15.26 C2.15.28 C2.15.29 +C2.15.28 C2.14.28 C2.14.30 C2.14.31 C2.15.27 C2.15.29 +C2.15.29 C2.00.27 C2.00.29 C2.15.27 C2.15.28 +C3.00.00 C3.00.02 C3.00.03 C3.15.00 C3.15.03 +C3.00.01 C3.00.02 C3.00.04 C3.00.05 C3.01.00 C3.01.04 +C3.00.02 C3.00.00 C3.00.01 C3.00.03 C3.00.04 C3.00.05 C3.00.06 +C3.00.03 C3.00.00 C3.00.02 C3.00.05 C3.00.06 C3.15.00 C3.15.03 C3.15.06 +C3.00.04 C3.00.01 C3.00.02 C3.00.05 C3.00.07 C3.00.08 C3.01.04 C3.01.06 +C3.00.05 C3.00.01 C3.00.02 C3.00.03 C3.00.04 C3.00.06 C3.00.07 C3.00.08 C3.00.09 +C3.00.06 C3.00.02 C3.00.03 C3.00.05 C3.00.08 C3.00.09 C3.15.03 C3.15.06 C3.15.09 +C3.00.07 C3.00.04 C3.00.05 C3.00.08 C3.00.10 C3.01.04 C3.01.06 C3.01.08 C3.01.09 +C3.00.08 C3.00.04 C3.00.05 C3.00.06 C3.00.07 C3.00.09 C3.00.10 C3.00.11 C3.01.09 +C3.00.09 C3.00.05 C3.00.06 C3.00.08 C3.00.10 C3.00.11 C3.15.06 C3.15.09 C3.15.11 +C3.00.10 C3.00.07 C3.00.08 C3.00.09 C3.00.11 C3.00.12 C3.00.13 C3.01.09 C3.01.11 +C3.00.11 C3.00.08 C3.00.09 C3.00.10 C3.00.12 C3.00.13 C3.15.09 C3.15.11 C3.15.13 +C3.00.12 C3.00.10 C3.00.11 C3.00.13 C3.00.14 C3.01.09 C3.01.11 C3.01.12 C3.01.13 +C3.00.13 C3.00.10 C3.00.11 C3.00.12 C3.00.14 C3.01.13 C3.15.11 C3.15.13 C3.15.14 +C3.00.14 C3.00.12 C3.00.13 C3.00.15 C3.01.13 C3.01.15 C3.15.13 C3.15.14 C3.15.15 +C3.00.15 C3.00.14 C3.01.15 C3.15.14 C3.15.15 +C3.01.00 C3.00.01 C3.01.02 C3.01.04 +C3.01.01 C3.01.02 C3.01.03 C3.01.05 C3.02.00 +C3.01.02 C3.01.00 C3.01.01 C3.01.04 C3.01.05 C3.01.06 +C3.01.03 C3.01.01 C3.01.05 C3.01.07 C3.02.00 C3.02.03 C3.02.05 +C3.01.04 C3.00.01 C3.00.04 C3.00.07 C3.01.00 C3.01.02 C3.01.05 C3.01.06 +C3.01.05 C3.01.01 C3.01.02 C3.01.03 C3.01.04 C3.01.06 C3.01.07 C3.01.08 C3.02.05 +C3.01.06 C3.00.04 C3.00.07 C3.01.02 C3.01.04 C3.01.05 C3.01.07 C3.01.08 C3.01.09 +C3.01.07 C3.01.03 C3.01.05 C3.01.06 C3.01.08 C3.01.10 C3.02.05 C3.02.07 C3.02.09 +C3.01.08 C3.00.07 C3.01.05 C3.01.06 C3.01.07 C3.01.09 C3.01.10 C3.01.11 C3.02.09 +C3.01.09 C3.00.07 C3.00.08 C3.00.10 C3.00.12 C3.01.06 C3.01.08 C3.01.10 C3.01.11 +C3.01.10 C3.01.07 C3.01.08 C3.01.09 C3.01.11 C3.01.12 C3.02.09 C3.02.10 C3.02.11 +C3.01.11 C3.00.10 C3.00.12 C3.01.08 C3.01.09 C3.01.10 C3.01.12 C3.01.13 C3.02.11 +C3.01.12 C3.00.12 C3.01.10 C3.01.11 C3.01.13 C3.01.14 C3.02.11 C3.02.12 C3.02.13 +C3.01.13 C3.00.12 C3.00.13 C3.00.14 C3.01.11 C3.01.12 C3.01.14 C3.01.15 C3.02.13 +C3.01.14 C3.01.12 C3.01.13 C3.01.15 C3.02.13 C3.02.14 +C3.01.15 C3.00.14 C3.00.15 C3.01.13 C3.01.14 C3.02.14 +C3.02.00 C3.01.01 C3.01.03 C3.02.02 C3.02.03 C3.02.05 +C3.02.01 C3.02.02 C3.03.02 C3.03.05 +C3.02.02 C3.02.00 C3.02.01 C3.02.03 C3.02.04 C3.02.06 C3.03.05 +C3.02.03 C3.01.03 C3.02.00 C3.02.02 C3.02.04 C3.02.05 C3.02.07 +C3.02.04 C3.02.02 C3.02.03 C3.02.05 C3.02.06 C3.02.07 C3.02.08 C3.03.05 +C3.02.05 C3.01.03 C3.01.05 C3.01.07 C3.02.00 C3.02.03 C3.02.04 C3.02.07 C3.02.09 +C3.02.06 C3.02.02 C3.02.04 C3.02.07 C3.02.08 C3.03.05 C3.03.06 C3.03.08 C3.03.10 +C3.02.07 C3.01.07 C3.02.03 C3.02.04 C3.02.05 C3.02.06 C3.02.08 C3.02.09 C3.02.10 +C3.02.08 C3.02.04 C3.02.06 C3.02.07 C3.02.09 C3.02.10 C3.03.08 C3.03.10 C3.03.12 +C3.02.09 C3.01.07 C3.01.08 C3.01.10 C3.02.05 C3.02.07 C3.02.08 C3.02.10 C3.02.11 +C3.02.10 C3.01.10 C3.02.07 C3.02.08 C3.02.09 C3.02.11 C3.02.12 C3.03.10 C3.03.12 +C3.02.11 C3.01.10 C3.01.11 C3.01.12 C3.02.09 C3.02.10 C3.02.12 C3.02.13 C3.03.12 +C3.02.12 C3.01.12 C3.02.10 C3.02.11 C3.02.13 C3.03.12 C3.03.13 C3.03.14 C3.03.15 +C3.02.13 C3.01.12 C3.01.13 C3.01.14 C3.02.11 C3.02.12 C3.02.14 C3.02.15 C3.03.14 C3.03.15 +C3.02.14 C3.01.14 C3.01.15 C3.02.13 C3.02.15 +C3.02.15 C3.02.13 C3.02.14 C3.03.15 +C3.03.00 C3.03.01 C3.03.03 C3.03.04 +C3.03.01 C3.03.00 C3.03.04 C3.04.01 C3.04.04 +C3.03.02 C3.02.01 C3.03.03 C3.03.05 C3.03.06 +C3.03.03 C3.03.00 C3.03.02 C3.03.04 C3.03.05 C3.03.06 C3.03.07 +C3.03.04 C3.03.00 C3.03.01 C3.03.03 C3.03.06 C3.03.07 C3.04.01 C3.04.04 C3.04.07 +C3.03.05 C3.02.01 C3.02.02 C3.02.04 C3.02.06 C3.03.02 C3.03.03 C3.03.06 C3.03.08 +C3.03.06 C3.02.06 C3.03.02 C3.03.03 C3.03.04 C3.03.05 C3.03.07 C3.03.08 C3.03.09 +C3.03.07 C3.03.03 C3.03.04 C3.03.06 C3.03.08 C3.03.09 C3.04.04 C3.04.07 C3.04.09 +C3.03.08 C3.02.06 C3.02.08 C3.03.05 C3.03.06 C3.03.07 C3.03.09 C3.03.10 C3.03.11 +C3.03.09 C3.03.06 C3.03.07 C3.03.08 C3.03.10 C3.03.11 C3.04.07 C3.04.09 C3.04.11 +C3.03.10 C3.02.06 C3.02.08 C3.02.10 C3.03.08 C3.03.09 C3.03.11 C3.03.12 C3.03.13 +C3.03.11 C3.03.08 C3.03.09 C3.03.10 C3.03.12 C3.03.13 C3.04.09 C3.04.11 C3.04.13 +C3.03.12 C3.02.08 C3.02.10 C3.02.11 C3.02.12 C3.03.10 C3.03.11 C3.03.13 C3.03.14 +C3.03.13 C3.02.12 C3.03.10 C3.03.11 C3.03.12 C3.03.14 C3.04.11 C3.04.13 C3.04.14 +C3.03.14 C3.02.12 C3.02.13 C3.03.12 C3.03.13 C3.03.15 C3.04.13 C3.04.14 C3.04.15 +C3.03.15 C3.02.12 C3.02.13 C3.02.15 C3.03.14 C3.04.14 C3.04.15 +C3.04.00 C3.04.01 C3.04.03 C3.04.04 +C3.04.01 C3.03.01 C3.03.04 C3.04.00 C3.04.04 +C3.04.02 C3.04.03 C3.04.05 C3.04.06 C3.05.02 +C3.04.03 C3.04.00 C3.04.02 C3.04.04 C3.04.05 C3.04.06 C3.04.07 +C3.04.04 C3.03.01 C3.03.04 C3.03.07 C3.04.00 C3.04.01 C3.04.03 C3.04.06 C3.04.07 +C3.04.05 C3.04.02 C3.04.03 C3.04.06 C3.04.08 C3.05.02 C3.05.04 C3.05.06 +C3.04.06 C3.04.02 C3.04.03 C3.04.04 C3.04.05 C3.04.07 C3.04.08 C3.04.09 C3.05.06 +C3.04.07 C3.03.04 C3.03.07 C3.03.09 C3.04.03 C3.04.04 C3.04.06 C3.04.08 C3.04.09 +C3.04.08 C3.04.05 C3.04.06 C3.04.07 C3.04.09 C3.04.10 C3.04.11 C3.05.06 C3.05.08 +C3.04.09 C3.03.07 C3.03.09 C3.03.11 C3.04.06 C3.04.07 C3.04.08 C3.04.10 C3.04.11 +C3.04.10 C3.04.08 C3.04.09 C3.04.11 C3.04.12 C3.04.13 C3.05.06 C3.05.08 C3.05.10 +C3.04.11 C3.03.09 C3.03.11 C3.03.13 C3.04.08 C3.04.09 C3.04.10 C3.04.12 C3.04.13 +C3.04.12 C3.04.10 C3.04.11 C3.04.13 C3.04.14 C3.05.08 C3.05.10 C3.05.11 C3.05.12 +C3.04.13 C3.03.11 C3.03.13 C3.03.14 C3.04.10 C3.04.11 C3.04.12 C3.04.14 C3.05.12 +C3.04.14 C3.03.13 C3.03.14 C3.03.15 C3.04.12 C3.04.13 C3.04.15 C3.05.12 C3.05.13 +C3.04.15 C3.03.14 C3.03.15 C3.04.14 C3.05.12 C3.05.13 C3.05.14 +C3.05.00 C3.05.01 C3.05.03 C3.05.05 C3.06.00 C3.06.02 +C3.05.01 C3.05.00 C3.05.02 C3.05.03 C3.05.04 +C3.05.02 C3.04.02 C3.04.05 C3.05.01 C3.05.03 C3.05.04 C3.05.06 +C3.05.03 C3.05.00 C3.05.01 C3.05.02 C3.05.04 C3.05.05 C3.05.07 C3.06.02 +C3.05.04 C3.04.05 C3.05.01 C3.05.02 C3.05.03 C3.05.05 C3.05.06 C3.05.07 C3.05.08 +C3.05.05 C3.05.00 C3.05.03 C3.05.04 C3.05.07 C3.05.09 C3.06.02 C3.06.04 C3.06.06 +C3.05.06 C3.04.05 C3.04.06 C3.04.08 C3.04.10 C3.05.02 C3.05.04 C3.05.07 C3.05.08 +C3.05.07 C3.05.03 C3.05.04 C3.05.05 C3.05.06 C3.05.08 C3.05.09 C3.05.10 C3.06.06 +C3.05.08 C3.04.08 C3.04.10 C3.04.12 C3.05.04 C3.05.06 C3.05.07 C3.05.09 C3.05.10 +C3.05.09 C3.05.05 C3.05.07 C3.05.08 C3.05.10 C3.05.11 C3.06.06 C3.06.07 C3.06.09 +C3.05.10 C3.04.10 C3.04.12 C3.05.07 C3.05.08 C3.05.09 C3.05.11 C3.05.12 C3.06.09 +C3.05.11 C3.04.12 C3.05.09 C3.05.10 C3.05.12 C3.05.13 C3.06.09 C3.06.10 C3.06.11 +C3.05.12 C3.04.12 C3.04.13 C3.04.14 C3.04.15 C3.05.10 C3.05.11 C3.05.13 C3.06.11 +C3.05.13 C3.04.14 C3.04.15 C3.05.11 C3.05.12 C3.05.14 C3.06.11 C3.06.12 C3.06.13 +C3.05.14 C3.04.15 C3.05.13 C3.06.13 C3.06.15 +C3.06.00 C3.05.00 C3.06.01 C3.06.02 C3.06.04 +C3.06.01 C3.06.00 C3.06.03 C3.06.04 C3.06.05 C3.07.01 +C3.06.02 C3.05.00 C3.05.03 C3.05.05 C3.06.00 C3.06.04 C3.06.06 +C3.06.03 C3.06.01 C3.06.04 C3.06.05 C3.07.01 C3.07.04 C3.07.07 +C3.06.04 C3.05.05 C3.06.00 C3.06.01 C3.06.02 C3.06.03 C3.06.05 C3.06.06 C3.06.07 +C3.06.05 C3.06.01 C3.06.03 C3.06.04 C3.06.06 C3.06.07 C3.06.08 C3.07.04 C3.07.07 +C3.06.06 C3.05.05 C3.05.07 C3.05.09 C3.06.02 C3.06.04 C3.06.05 C3.06.07 C3.06.09 +C3.06.07 C3.05.09 C3.06.04 C3.06.05 C3.06.06 C3.06.08 C3.06.09 C3.06.10 C3.07.07 +C3.06.08 C3.06.05 C3.06.07 C3.06.09 C3.06.10 C3.07.07 C3.07.08 C3.07.10 C3.07.12 +C3.06.09 C3.05.09 C3.05.10 C3.05.11 C3.06.06 C3.06.07 C3.06.08 C3.06.10 C3.06.11 +C3.06.10 C3.05.11 C3.06.07 C3.06.08 C3.06.09 C3.06.11 C3.06.12 C3.07.10 C3.07.12 +C3.06.11 C3.05.11 C3.05.12 C3.05.13 C3.06.09 C3.06.10 C3.06.12 C3.06.13 C3.07.12 +C3.06.12 C3.05.13 C3.06.10 C3.06.11 C3.06.13 C3.06.14 C3.07.12 C3.07.13 C3.07.14 +C3.06.13 C3.05.13 C3.05.14 C3.06.11 C3.06.12 C3.06.14 C3.06.15 +C3.06.14 C3.06.12 C3.06.13 C3.06.15 C3.07.14 C3.07.15 +C3.06.15 C3.05.14 C3.06.13 C3.06.14 +C3.07.00 C3.07.02 C3.07.03 C3.08.00 C3.08.03 +C3.07.01 C3.06.01 C3.06.03 C3.07.02 C3.07.04 C3.07.05 +C3.07.02 C3.07.00 C3.07.01 C3.07.03 C3.07.04 C3.07.05 C3.07.06 +C3.07.03 C3.07.00 C3.07.02 C3.07.05 C3.07.06 C3.08.00 C3.08.03 C3.08.06 +C3.07.04 C3.06.03 C3.06.05 C3.07.01 C3.07.02 C3.07.05 C3.07.07 C3.07.08 +C3.07.05 C3.07.01 C3.07.02 C3.07.03 C3.07.04 C3.07.06 C3.07.07 C3.07.08 C3.07.09 +C3.07.06 C3.07.02 C3.07.03 C3.07.05 C3.07.08 C3.07.09 C3.08.03 C3.08.06 C3.08.09 +C3.07.07 C3.06.03 C3.06.05 C3.06.07 C3.06.08 C3.07.04 C3.07.05 C3.07.08 C3.07.10 +C3.07.08 C3.06.08 C3.07.04 C3.07.05 C3.07.06 C3.07.07 C3.07.09 C3.07.10 C3.07.11 +C3.07.09 C3.07.05 C3.07.06 C3.07.08 C3.07.10 C3.07.11 C3.08.06 C3.08.09 C3.08.11 +C3.07.10 C3.06.08 C3.06.10 C3.07.07 C3.07.08 C3.07.09 C3.07.11 C3.07.12 C3.07.13 +C3.07.11 C3.07.08 C3.07.09 C3.07.10 C3.07.12 C3.07.13 C3.08.09 C3.08.11 C3.08.13 +C3.07.12 C3.06.08 C3.06.10 C3.06.11 C3.06.12 C3.07.10 C3.07.11 C3.07.13 C3.07.14 +C3.07.13 C3.06.12 C3.07.10 C3.07.11 C3.07.12 C3.07.14 C3.08.11 C3.08.13 C3.08.14 +C3.07.14 C3.06.12 C3.06.14 C3.07.12 C3.07.13 C3.07.15 C3.08.13 C3.08.14 C3.08.15 +C3.07.15 C3.06.14 C3.07.14 C3.08.14 C3.08.15 +C3.08.00 C3.07.00 C3.07.03 C3.08.02 C3.08.03 +C3.08.01 C3.08.02 C3.08.04 C3.08.05 C3.09.00 C3.09.04 +C3.08.02 C3.08.00 C3.08.01 C3.08.03 C3.08.04 C3.08.05 C3.08.06 +C3.08.03 C3.07.00 C3.07.03 C3.07.06 C3.08.00 C3.08.02 C3.08.05 C3.08.06 +C3.08.04 C3.08.01 C3.08.02 C3.08.05 C3.08.07 C3.08.08 C3.09.04 C3.09.06 +C3.08.05 C3.08.01 C3.08.02 C3.08.03 C3.08.04 C3.08.06 C3.08.07 C3.08.08 C3.08.09 +C3.08.06 C3.07.03 C3.07.06 C3.07.09 C3.08.02 C3.08.03 C3.08.05 C3.08.08 C3.08.09 +C3.08.07 C3.08.04 C3.08.05 C3.08.08 C3.08.10 C3.09.04 C3.09.06 C3.09.08 C3.09.09 +C3.08.08 C3.08.04 C3.08.05 C3.08.06 C3.08.07 C3.08.09 C3.08.10 C3.08.11 C3.09.09 +C3.08.09 C3.07.06 C3.07.09 C3.07.11 C3.08.05 C3.08.06 C3.08.08 C3.08.10 C3.08.11 +C3.08.10 C3.08.07 C3.08.08 C3.08.09 C3.08.11 C3.08.12 C3.08.13 C3.09.09 C3.09.11 +C3.08.11 C3.07.09 C3.07.11 C3.07.13 C3.08.08 C3.08.09 C3.08.10 C3.08.12 C3.08.13 +C3.08.12 C3.08.10 C3.08.11 C3.08.13 C3.08.14 C3.09.09 C3.09.11 C3.09.12 C3.09.13 +C3.08.13 C3.07.11 C3.07.13 C3.07.14 C3.08.10 C3.08.11 C3.08.12 C3.08.14 C3.09.13 +C3.08.14 C3.07.13 C3.07.14 C3.07.15 C3.08.12 C3.08.13 C3.08.15 C3.09.13 C3.09.15 +C3.08.15 C3.07.14 C3.07.15 C3.08.14 C3.09.15 +C3.09.00 C3.08.01 C3.09.02 C3.09.04 +C3.09.01 C3.09.02 C3.09.03 C3.09.05 C3.10.00 +C3.09.02 C3.09.00 C3.09.01 C3.09.04 C3.09.05 C3.09.06 +C3.09.03 C3.09.01 C3.09.05 C3.09.07 C3.10.00 C3.10.03 C3.10.05 +C3.09.04 C3.08.01 C3.08.04 C3.08.07 C3.09.00 C3.09.02 C3.09.05 C3.09.06 +C3.09.05 C3.09.01 C3.09.02 C3.09.03 C3.09.04 C3.09.06 C3.09.07 C3.09.08 C3.10.05 +C3.09.06 C3.08.04 C3.08.07 C3.09.02 C3.09.04 C3.09.05 C3.09.07 C3.09.08 C3.09.09 +C3.09.07 C3.09.03 C3.09.05 C3.09.06 C3.09.08 C3.09.10 C3.10.05 C3.10.07 C3.10.09 +C3.09.08 C3.08.07 C3.09.05 C3.09.06 C3.09.07 C3.09.09 C3.09.10 C3.09.11 C3.10.09 +C3.09.09 C3.08.07 C3.08.08 C3.08.10 C3.08.12 C3.09.06 C3.09.08 C3.09.10 C3.09.11 +C3.09.10 C3.09.07 C3.09.08 C3.09.09 C3.09.11 C3.09.12 C3.10.09 C3.10.10 C3.10.11 +C3.09.11 C3.08.10 C3.08.12 C3.09.08 C3.09.09 C3.09.10 C3.09.12 C3.09.13 C3.10.11 +C3.09.12 C3.08.12 C3.09.10 C3.09.11 C3.09.13 C3.09.14 C3.10.11 C3.10.12 C3.10.13 +C3.09.13 C3.08.12 C3.08.13 C3.08.14 C3.09.11 C3.09.12 C3.09.14 C3.09.15 C3.10.13 +C3.09.14 C3.09.12 C3.09.13 C3.09.15 C3.10.13 C3.10.14 +C3.09.15 C3.08.14 C3.08.15 C3.09.13 C3.09.14 C3.10.14 +C3.10.00 C3.09.01 C3.09.03 C3.10.02 C3.10.03 C3.10.05 +C3.10.01 C3.10.02 C3.11.02 C3.11.05 +C3.10.02 C3.10.00 C3.10.01 C3.10.03 C3.10.04 C3.10.06 C3.11.05 +C3.10.03 C3.09.03 C3.10.00 C3.10.02 C3.10.04 C3.10.05 C3.10.07 +C3.10.04 C3.10.02 C3.10.03 C3.10.05 C3.10.06 C3.10.07 C3.10.08 C3.11.05 +C3.10.05 C3.09.03 C3.09.05 C3.09.07 C3.10.00 C3.10.03 C3.10.04 C3.10.07 C3.10.09 +C3.10.06 C3.10.02 C3.10.04 C3.10.07 C3.10.08 C3.11.05 C3.11.06 C3.11.08 C3.11.10 +C3.10.07 C3.09.07 C3.10.03 C3.10.04 C3.10.05 C3.10.06 C3.10.08 C3.10.09 C3.10.10 +C3.10.08 C3.10.04 C3.10.06 C3.10.07 C3.10.09 C3.10.10 C3.11.08 C3.11.10 C3.11.12 +C3.10.09 C3.09.07 C3.09.08 C3.09.10 C3.10.05 C3.10.07 C3.10.08 C3.10.10 C3.10.11 +C3.10.10 C3.09.10 C3.10.07 C3.10.08 C3.10.09 C3.10.11 C3.10.12 C3.11.10 C3.11.12 +C3.10.11 C3.09.10 C3.09.11 C3.09.12 C3.10.09 C3.10.10 C3.10.12 C3.10.13 C3.11.12 +C3.10.12 C3.09.12 C3.10.10 C3.10.11 C3.10.13 C3.11.12 C3.11.13 C3.11.14 C3.11.15 +C3.10.13 C3.09.12 C3.09.13 C3.09.14 C3.10.11 C3.10.12 C3.10.14 C3.10.15 C3.11.14 C3.11.15 +C3.10.14 C3.09.14 C3.09.15 C3.10.13 C3.10.15 +C3.10.15 C3.10.13 C3.10.14 C3.11.15 +C3.11.00 C3.11.01 C3.11.03 C3.11.04 +C3.11.01 C3.11.00 C3.11.04 C3.12.01 C3.12.04 +C3.11.02 C3.10.01 C3.11.03 C3.11.05 C3.11.06 +C3.11.03 C3.11.00 C3.11.02 C3.11.04 C3.11.05 C3.11.06 C3.11.07 +C3.11.04 C3.11.00 C3.11.01 C3.11.03 C3.11.06 C3.11.07 C3.12.01 C3.12.04 C3.12.07 +C3.11.05 C3.10.01 C3.10.02 C3.10.04 C3.10.06 C3.11.02 C3.11.03 C3.11.06 C3.11.08 +C3.11.06 C3.10.06 C3.11.02 C3.11.03 C3.11.04 C3.11.05 C3.11.07 C3.11.08 C3.11.09 +C3.11.07 C3.11.03 C3.11.04 C3.11.06 C3.11.08 C3.11.09 C3.12.04 C3.12.07 C3.12.09 +C3.11.08 C3.10.06 C3.10.08 C3.11.05 C3.11.06 C3.11.07 C3.11.09 C3.11.10 C3.11.11 +C3.11.09 C3.11.06 C3.11.07 C3.11.08 C3.11.10 C3.11.11 C3.12.07 C3.12.09 C3.12.11 +C3.11.10 C3.10.06 C3.10.08 C3.10.10 C3.11.08 C3.11.09 C3.11.11 C3.11.12 C3.11.13 +C3.11.11 C3.11.08 C3.11.09 C3.11.10 C3.11.12 C3.11.13 C3.12.09 C3.12.11 C3.12.13 +C3.11.12 C3.10.08 C3.10.10 C3.10.11 C3.10.12 C3.11.10 C3.11.11 C3.11.13 C3.11.14 +C3.11.13 C3.10.12 C3.11.10 C3.11.11 C3.11.12 C3.11.14 C3.12.11 C3.12.13 C3.12.14 +C3.11.14 C3.10.12 C3.10.13 C3.11.12 C3.11.13 C3.11.15 C3.12.13 C3.12.14 C3.12.15 +C3.11.15 C3.10.12 C3.10.13 C3.10.15 C3.11.14 C3.12.14 C3.12.15 +C3.12.00 C3.12.01 C3.12.03 C3.12.04 +C3.12.01 C3.11.01 C3.11.04 C3.12.00 C3.12.04 +C3.12.02 C3.12.03 C3.12.05 C3.12.06 C3.13.02 +C3.12.03 C3.12.00 C3.12.02 C3.12.04 C3.12.05 C3.12.06 C3.12.07 +C3.12.04 C3.11.01 C3.11.04 C3.11.07 C3.12.00 C3.12.01 C3.12.03 C3.12.06 C3.12.07 +C3.12.05 C3.12.02 C3.12.03 C3.12.06 C3.12.08 C3.13.02 C3.13.04 C3.13.06 +C3.12.06 C3.12.02 C3.12.03 C3.12.04 C3.12.05 C3.12.07 C3.12.08 C3.12.09 C3.13.06 +C3.12.07 C3.11.04 C3.11.07 C3.11.09 C3.12.03 C3.12.04 C3.12.06 C3.12.08 C3.12.09 +C3.12.08 C3.12.05 C3.12.06 C3.12.07 C3.12.09 C3.12.10 C3.12.11 C3.13.06 C3.13.08 +C3.12.09 C3.11.07 C3.11.09 C3.11.11 C3.12.06 C3.12.07 C3.12.08 C3.12.10 C3.12.11 +C3.12.10 C3.12.08 C3.12.09 C3.12.11 C3.12.12 C3.12.13 C3.13.06 C3.13.08 C3.13.10 +C3.12.11 C3.11.09 C3.11.11 C3.11.13 C3.12.08 C3.12.09 C3.12.10 C3.12.12 C3.12.13 +C3.12.12 C3.12.10 C3.12.11 C3.12.13 C3.12.14 C3.13.08 C3.13.10 C3.13.11 C3.13.12 +C3.12.13 C3.11.11 C3.11.13 C3.11.14 C3.12.10 C3.12.11 C3.12.12 C3.12.14 C3.13.12 +C3.12.14 C3.11.13 C3.11.14 C3.11.15 C3.12.12 C3.12.13 C3.12.15 C3.13.12 C3.13.13 +C3.12.15 C3.11.14 C3.11.15 C3.12.14 C3.13.12 C3.13.13 C3.13.14 +C3.13.00 C3.13.01 C3.13.03 C3.13.05 C3.14.00 C3.14.02 +C3.13.01 C3.13.00 C3.13.02 C3.13.03 C3.13.04 +C3.13.02 C3.12.02 C3.12.05 C3.13.01 C3.13.03 C3.13.04 C3.13.06 +C3.13.03 C3.13.00 C3.13.01 C3.13.02 C3.13.04 C3.13.05 C3.13.07 C3.14.02 +C3.13.04 C3.12.05 C3.13.01 C3.13.02 C3.13.03 C3.13.05 C3.13.06 C3.13.07 C3.13.08 +C3.13.05 C3.13.00 C3.13.03 C3.13.04 C3.13.07 C3.13.09 C3.14.02 C3.14.04 C3.14.06 +C3.13.06 C3.12.05 C3.12.06 C3.12.08 C3.12.10 C3.13.02 C3.13.04 C3.13.07 C3.13.08 +C3.13.07 C3.13.03 C3.13.04 C3.13.05 C3.13.06 C3.13.08 C3.13.09 C3.13.10 C3.14.06 +C3.13.08 C3.12.08 C3.12.10 C3.12.12 C3.13.04 C3.13.06 C3.13.07 C3.13.09 C3.13.10 +C3.13.09 C3.13.05 C3.13.07 C3.13.08 C3.13.10 C3.13.11 C3.14.06 C3.14.07 C3.14.09 +C3.13.10 C3.12.10 C3.12.12 C3.13.07 C3.13.08 C3.13.09 C3.13.11 C3.13.12 C3.14.09 +C3.13.11 C3.12.12 C3.13.09 C3.13.10 C3.13.12 C3.13.13 C3.14.09 C3.14.10 C3.14.11 +C3.13.12 C3.12.12 C3.12.13 C3.12.14 C3.12.15 C3.13.10 C3.13.11 C3.13.13 C3.14.11 +C3.13.13 C3.12.14 C3.12.15 C3.13.11 C3.13.12 C3.13.14 C3.14.11 C3.14.12 C3.14.13 +C3.13.14 C3.12.15 C3.13.13 C3.14.13 C3.14.15 +C3.14.00 C3.13.00 C3.14.01 C3.14.02 C3.14.04 +C3.14.01 C3.14.00 C3.14.03 C3.14.04 C3.14.05 C3.15.01 +C3.14.02 C3.13.00 C3.13.03 C3.13.05 C3.14.00 C3.14.04 C3.14.06 +C3.14.03 C3.14.01 C3.14.04 C3.14.05 C3.15.01 C3.15.04 C3.15.07 +C3.14.04 C3.13.05 C3.14.00 C3.14.01 C3.14.02 C3.14.03 C3.14.05 C3.14.06 C3.14.07 +C3.14.05 C3.14.01 C3.14.03 C3.14.04 C3.14.06 C3.14.07 C3.14.08 C3.15.04 C3.15.07 +C3.14.06 C3.13.05 C3.13.07 C3.13.09 C3.14.02 C3.14.04 C3.14.05 C3.14.07 C3.14.09 +C3.14.07 C3.13.09 C3.14.04 C3.14.05 C3.14.06 C3.14.08 C3.14.09 C3.14.10 C3.15.07 +C3.14.08 C3.14.05 C3.14.07 C3.14.09 C3.14.10 C3.15.07 C3.15.08 C3.15.10 C3.15.12 +C3.14.09 C3.13.09 C3.13.10 C3.13.11 C3.14.06 C3.14.07 C3.14.08 C3.14.10 C3.14.11 +C3.14.10 C3.13.11 C3.14.07 C3.14.08 C3.14.09 C3.14.11 C3.14.12 C3.15.10 C3.15.12 +C3.14.11 C3.13.11 C3.13.12 C3.13.13 C3.14.09 C3.14.10 C3.14.12 C3.14.13 C3.15.12 +C3.14.12 C3.13.13 C3.14.10 C3.14.11 C3.14.13 C3.14.14 C3.15.12 C3.15.13 C3.15.14 +C3.14.13 C3.13.13 C3.13.14 C3.14.11 C3.14.12 C3.14.14 C3.14.15 +C3.14.14 C3.14.12 C3.14.13 C3.14.15 C3.15.14 C3.15.15 +C3.14.15 C3.13.14 C3.14.13 C3.14.14 +C3.15.00 C3.00.00 C3.00.03 C3.15.02 C3.15.03 +C3.15.01 C3.14.01 C3.14.03 C3.15.02 C3.15.04 C3.15.05 +C3.15.02 C3.15.00 C3.15.01 C3.15.03 C3.15.04 C3.15.05 C3.15.06 +C3.15.03 C3.00.00 C3.00.03 C3.00.06 C3.15.00 C3.15.02 C3.15.05 C3.15.06 +C3.15.04 C3.14.03 C3.14.05 C3.15.01 C3.15.02 C3.15.05 C3.15.07 C3.15.08 +C3.15.05 C3.15.01 C3.15.02 C3.15.03 C3.15.04 C3.15.06 C3.15.07 C3.15.08 C3.15.09 +C3.15.06 C3.00.03 C3.00.06 C3.00.09 C3.15.02 C3.15.03 C3.15.05 C3.15.08 C3.15.09 +C3.15.07 C3.14.03 C3.14.05 C3.14.07 C3.14.08 C3.15.04 C3.15.05 C3.15.08 C3.15.10 +C3.15.08 C3.14.08 C3.15.04 C3.15.05 C3.15.06 C3.15.07 C3.15.09 C3.15.10 C3.15.11 +C3.15.09 C3.00.06 C3.00.09 C3.00.11 C3.15.05 C3.15.06 C3.15.08 C3.15.10 C3.15.11 +C3.15.10 C3.14.08 C3.14.10 C3.15.07 C3.15.08 C3.15.09 C3.15.11 C3.15.12 C3.15.13 +C3.15.11 C3.00.09 C3.00.11 C3.00.13 C3.15.08 C3.15.09 C3.15.10 C3.15.12 C3.15.13 +C3.15.12 C3.14.08 C3.14.10 C3.14.11 C3.14.12 C3.15.10 C3.15.11 C3.15.13 C3.15.14 +C3.15.13 C3.00.11 C3.00.13 C3.00.14 C3.14.12 C3.15.10 C3.15.11 C3.15.12 C3.15.14 +C3.15.14 C3.00.13 C3.00.14 C3.00.15 C3.14.12 C3.14.14 C3.15.12 C3.15.13 C3.15.15 +C3.15.15 C3.00.14 C3.00.15 C3.14.14 C3.15.14 diff --git a/Calorimeter/CaloIdentifier/share/FCal2DNeighbors-DC3-05-Comm-01.txt b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors-DC3-05-Comm-01.txt new file mode 100755 index 0000000000000000000000000000000000000000..90ea9427d8fab04cde2312de6210cd04b5386414 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors-DC3-05-Comm-01.txt @@ -0,0 +1,3533 @@ +# 2D FCal Neighbors +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Thu Nov 30 16:09:58 2006 +# +# 2d neighbors are all touching neighbors including corners. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# +A1.00.00 A1.00.07 A1.00.12 +A1.00.01 A1.00.02 A1.00.10 A1.00.11 A1.15.02 A1.15.12 +A1.00.02 A1.00.01 A1.00.03 A1.00.06 A1.00.09 A1.00.10 +A1.00.03 A1.00.02 A1.00.05 A1.00.06 A1.00.14 A1.00.15 +A1.00.04 A1.00.05 A1.00.12 A1.00.13 A1.00.14 +A1.00.05 A1.00.03 A1.00.04 A1.00.13 A1.00.14 +A1.00.06 A1.00.02 A1.00.03 A1.00.09 A1.00.14 A1.00.15 +A1.00.07 A1.00.00 A1.00.08 A1.00.12 A1.00.17 A1.00.18 A1.01.13 +A1.00.08 A1.00.07 A1.00.17 A1.01.02 A1.01.13 +A1.00.09 A1.00.02 A1.00.06 A1.00.10 A1.00.15 A1.00.16 +A1.00.10 A1.00.01 A1.00.02 A1.00.09 A1.00.11 A1.00.15 A1.00.16 +A1.00.11 A1.00.01 A1.00.10 A1.00.16 A1.15.02 A1.15.12 A1.15.17 +A1.00.12 A1.00.00 A1.00.04 A1.00.07 A1.00.13 A1.00.17 A1.00.18 A1.00.19 +A1.00.13 A1.00.04 A1.00.05 A1.00.12 A1.00.14 A1.00.18 A1.00.19 A1.00.20 +A1.00.14 A1.00.03 A1.00.04 A1.00.05 A1.00.06 A1.00.13 A1.00.15 A1.00.19 A1.00.20 A1.00.21 +A1.00.15 A1.00.03 A1.00.06 A1.00.09 A1.00.10 A1.00.14 A1.00.16 A1.00.20 A1.00.21 A1.00.22 +A1.00.16 A1.00.09 A1.00.10 A1.00.11 A1.00.15 A1.00.21 A1.00.22 A1.15.12 A1.15.17 A1.15.23 +A1.00.17 A1.00.07 A1.00.08 A1.00.12 A1.00.18 A1.00.23 A1.01.13 A1.01.19 A1.01.21 +A1.00.18 A1.00.07 A1.00.12 A1.00.13 A1.00.17 A1.00.19 A1.00.23 A1.00.24 A1.01.21 +A1.00.19 A1.00.12 A1.00.13 A1.00.14 A1.00.18 A1.00.20 A1.00.23 A1.00.24 A1.00.25 +A1.00.20 A1.00.13 A1.00.14 A1.00.15 A1.00.19 A1.00.21 A1.00.24 A1.00.25 A1.00.26 +A1.00.21 A1.00.14 A1.00.15 A1.00.16 A1.00.20 A1.00.22 A1.00.25 A1.00.26 A1.00.27 +A1.00.22 A1.00.15 A1.00.16 A1.00.21 A1.00.26 A1.00.27 A1.15.17 A1.15.23 A1.15.28 +A1.00.23 A1.00.17 A1.00.18 A1.00.19 A1.00.24 A1.00.28 A1.00.29 A1.01.21 A1.01.26 +A1.00.24 A1.00.18 A1.00.19 A1.00.20 A1.00.23 A1.00.25 A1.00.28 A1.00.29 A1.00.30 +A1.00.25 A1.00.19 A1.00.20 A1.00.21 A1.00.24 A1.00.26 A1.00.29 A1.00.30 A1.00.31 +A1.00.26 A1.00.20 A1.00.21 A1.00.22 A1.00.25 A1.00.27 A1.00.30 A1.00.31 A1.00.32 +A1.00.27 A1.00.21 A1.00.22 A1.00.26 A1.00.31 A1.00.32 A1.15.23 A1.15.28 A1.15.33 +A1.00.28 A1.00.23 A1.00.24 A1.00.29 A1.00.33 A1.01.21 A1.01.26 A1.01.31 A1.01.33 +A1.00.29 A1.00.23 A1.00.24 A1.00.25 A1.00.28 A1.00.30 A1.00.33 A1.00.34 A1.01.33 +A1.00.30 A1.00.24 A1.00.25 A1.00.26 A1.00.29 A1.00.31 A1.00.33 A1.00.34 A1.00.35 +A1.00.31 A1.00.25 A1.00.26 A1.00.27 A1.00.30 A1.00.32 A1.00.34 A1.00.35 A1.00.36 +A1.00.32 A1.00.26 A1.00.27 A1.00.31 A1.00.35 A1.00.36 A1.15.28 A1.15.33 A1.15.37 +A1.00.33 A1.00.28 A1.00.29 A1.00.30 A1.00.34 A1.00.37 A1.00.38 A1.01.33 A1.01.38 +A1.00.34 A1.00.29 A1.00.30 A1.00.31 A1.00.33 A1.00.35 A1.00.37 A1.00.38 A1.00.39 +A1.00.35 A1.00.30 A1.00.31 A1.00.32 A1.00.34 A1.00.36 A1.00.38 A1.00.39 A1.00.40 +A1.00.36 A1.00.31 A1.00.32 A1.00.35 A1.00.39 A1.00.40 A1.15.33 A1.15.37 A1.15.41 +A1.00.37 A1.00.33 A1.00.34 A1.00.38 A1.00.41 A1.00.42 A1.01.33 A1.01.38 A1.01.41 +A1.00.38 A1.00.33 A1.00.34 A1.00.35 A1.00.37 A1.00.39 A1.00.41 A1.00.42 A1.00.43 +A1.00.39 A1.00.34 A1.00.35 A1.00.36 A1.00.38 A1.00.40 A1.00.42 A1.00.43 A1.00.44 +A1.00.40 A1.00.35 A1.00.36 A1.00.39 A1.00.43 A1.00.44 A1.15.37 A1.15.41 A1.15.45 +A1.00.41 A1.00.37 A1.00.38 A1.00.42 A1.00.45 A1.01.38 A1.01.41 A1.01.43 A1.01.45 +A1.00.42 A1.00.37 A1.00.38 A1.00.39 A1.00.41 A1.00.43 A1.00.45 A1.00.46 A1.01.45 +A1.00.43 A1.00.38 A1.00.39 A1.00.40 A1.00.42 A1.00.44 A1.00.45 A1.00.46 A1.00.47 +A1.00.44 A1.00.39 A1.00.40 A1.00.43 A1.00.46 A1.00.47 A1.15.41 A1.15.45 A1.15.48 +A1.00.45 A1.00.41 A1.00.42 A1.00.43 A1.00.46 A1.00.48 A1.00.49 A1.01.45 A1.01.47 +A1.00.46 A1.00.42 A1.00.43 A1.00.44 A1.00.45 A1.00.47 A1.00.48 A1.00.49 A1.00.50 +A1.00.47 A1.00.43 A1.00.44 A1.00.46 A1.00.49 A1.00.50 A1.15.45 A1.15.48 A1.15.51 +A1.00.48 A1.00.45 A1.00.46 A1.00.49 A1.00.51 A1.01.45 A1.01.47 A1.01.49 A1.01.50 +A1.00.49 A1.00.45 A1.00.46 A1.00.47 A1.00.48 A1.00.50 A1.00.51 A1.00.52 A1.01.50 +A1.00.50 A1.00.46 A1.00.47 A1.00.49 A1.00.51 A1.00.52 A1.15.48 A1.15.51 A1.15.53 +A1.00.51 A1.00.48 A1.00.49 A1.00.50 A1.00.52 A1.00.53 A1.00.54 A1.00.55 A1.01.50 A1.01.53 +A1.00.52 A1.00.49 A1.00.50 A1.00.51 A1.00.54 A1.00.55 A1.00.56 A1.15.51 A1.15.53 A1.15.56 +A1.00.53 A1.00.51 A1.00.54 A1.00.57 A1.01.50 A1.01.53 A1.01.55 A1.01.57 +A1.00.54 A1.00.51 A1.00.52 A1.00.53 A1.00.55 A1.00.57 A1.00.58 A1.01.57 +A1.00.55 A1.00.51 A1.00.52 A1.00.54 A1.00.56 A1.00.57 A1.00.58 A1.00.59 +A1.00.56 A1.00.52 A1.00.55 A1.00.58 A1.00.59 A1.15.53 A1.15.56 A1.15.59 +A1.00.57 A1.00.53 A1.00.54 A1.00.55 A1.00.58 A1.00.60 A1.00.61 A1.01.57 A1.01.59 +A1.00.58 A1.00.54 A1.00.55 A1.00.56 A1.00.57 A1.00.59 A1.00.60 A1.00.61 A1.00.62 +A1.00.59 A1.00.55 A1.00.56 A1.00.58 A1.00.61 A1.00.62 A1.15.56 A1.15.59 A1.15.62 +A1.00.60 A1.00.57 A1.00.58 A1.00.61 A1.01.57 A1.01.59 A1.01.62 +A1.00.61 A1.00.57 A1.00.58 A1.00.59 A1.00.60 A1.00.62 A1.01.62 +A1.00.62 A1.00.58 A1.00.59 A1.00.61 A1.15.59 A1.15.62 +A1.01.00 A1.01.04 A1.01.06 A1.01.08 A1.01.12 +A1.01.01 A1.01.03 A1.01.05 A1.01.11 +A1.01.02 A1.00.08 A1.01.05 A1.01.13 +A1.01.03 A1.01.01 A1.01.07 A1.01.09 A1.01.11 +A1.01.04 A1.01.00 A1.01.08 A1.01.10 +A1.01.05 A1.01.01 A1.01.02 A1.01.11 A1.01.13 +A1.01.06 A1.01.00 A1.01.12 A1.01.17 A1.02.06 A1.02.13 +A1.01.07 A1.01.03 A1.01.09 A1.01.10 A1.01.14 +A1.01.08 A1.01.00 A1.01.04 A1.01.10 A1.01.12 A1.01.15 +A1.01.09 A1.01.03 A1.01.07 A1.01.11 A1.01.14 A1.01.16 +A1.01.10 A1.01.04 A1.01.07 A1.01.08 A1.01.12 A1.01.14 A1.01.15 A1.01.18 +A1.01.11 A1.01.01 A1.01.03 A1.01.05 A1.01.09 A1.01.13 A1.01.14 A1.01.16 A1.01.19 +A1.01.12 A1.01.00 A1.01.06 A1.01.08 A1.01.10 A1.01.15 A1.01.17 A1.01.20 A1.02.13 +A1.01.13 A1.00.07 A1.00.08 A1.00.17 A1.01.02 A1.01.05 A1.01.11 A1.01.16 A1.01.19 A1.01.21 +A1.01.14 A1.01.07 A1.01.09 A1.01.10 A1.01.11 A1.01.15 A1.01.16 A1.01.18 A1.01.22 +A1.01.15 A1.01.08 A1.01.10 A1.01.12 A1.01.14 A1.01.17 A1.01.18 A1.01.20 A1.01.23 +A1.01.16 A1.01.09 A1.01.11 A1.01.13 A1.01.14 A1.01.18 A1.01.19 A1.01.22 A1.01.24 +A1.01.17 A1.01.06 A1.01.12 A1.01.15 A1.01.20 A1.01.25 A1.02.13 A1.02.17 A1.02.21 +A1.01.18 A1.01.10 A1.01.14 A1.01.15 A1.01.16 A1.01.20 A1.01.22 A1.01.23 A1.01.27 +A1.01.19 A1.00.17 A1.01.11 A1.01.13 A1.01.16 A1.01.21 A1.01.22 A1.01.24 A1.01.26 +A1.01.20 A1.01.12 A1.01.15 A1.01.17 A1.01.18 A1.01.23 A1.01.25 A1.01.28 A1.02.21 +A1.01.21 A1.00.17 A1.00.18 A1.00.23 A1.00.28 A1.01.13 A1.01.19 A1.01.24 A1.01.26 +A1.01.22 A1.01.14 A1.01.16 A1.01.18 A1.01.19 A1.01.23 A1.01.24 A1.01.27 A1.01.29 +A1.01.23 A1.01.15 A1.01.18 A1.01.20 A1.01.22 A1.01.25 A1.01.27 A1.01.28 A1.01.30 +A1.01.24 A1.01.16 A1.01.19 A1.01.21 A1.01.22 A1.01.26 A1.01.27 A1.01.29 A1.01.31 +A1.01.25 A1.01.17 A1.01.20 A1.01.23 A1.01.28 A1.01.32 A1.02.21 A1.02.24 A1.02.28 +A1.01.26 A1.00.23 A1.00.28 A1.01.19 A1.01.21 A1.01.24 A1.01.29 A1.01.31 A1.01.33 +A1.01.27 A1.01.18 A1.01.22 A1.01.23 A1.01.24 A1.01.28 A1.01.29 A1.01.30 A1.01.34 +A1.01.28 A1.01.20 A1.01.23 A1.01.25 A1.01.27 A1.01.30 A1.01.32 A1.01.35 A1.02.28 +A1.01.29 A1.01.22 A1.01.24 A1.01.26 A1.01.27 A1.01.30 A1.01.31 A1.01.34 A1.01.36 +A1.01.30 A1.01.23 A1.01.27 A1.01.28 A1.01.29 A1.01.32 A1.01.34 A1.01.35 A1.01.37 +A1.01.31 A1.00.28 A1.01.24 A1.01.26 A1.01.29 A1.01.33 A1.01.34 A1.01.36 A1.01.38 +A1.01.32 A1.01.25 A1.01.28 A1.01.30 A1.01.35 A1.02.28 A1.02.31 A1.02.34 A1.02.37 +A1.01.33 A1.00.28 A1.00.29 A1.00.33 A1.00.37 A1.01.26 A1.01.31 A1.01.36 A1.01.38 +A1.01.34 A1.01.27 A1.01.29 A1.01.30 A1.01.31 A1.01.35 A1.01.36 A1.01.37 A1.01.39 +A1.01.35 A1.01.28 A1.01.30 A1.01.32 A1.01.34 A1.01.37 A1.01.40 A1.02.34 A1.02.37 +A1.01.36 A1.01.29 A1.01.31 A1.01.33 A1.01.34 A1.01.37 A1.01.38 A1.01.39 A1.01.41 +A1.01.37 A1.01.30 A1.01.34 A1.01.35 A1.01.36 A1.01.39 A1.01.40 A1.01.42 A1.02.37 +A1.01.38 A1.00.33 A1.00.37 A1.00.41 A1.01.31 A1.01.33 A1.01.36 A1.01.39 A1.01.41 +A1.01.39 A1.01.34 A1.01.36 A1.01.37 A1.01.38 A1.01.40 A1.01.41 A1.01.42 A1.01.43 +A1.01.40 A1.01.35 A1.01.37 A1.01.39 A1.01.42 A1.01.44 A1.02.37 A1.02.40 A1.02.43 +A1.01.41 A1.00.37 A1.00.41 A1.01.36 A1.01.38 A1.01.39 A1.01.42 A1.01.43 A1.01.45 +A1.01.42 A1.01.37 A1.01.39 A1.01.40 A1.01.41 A1.01.43 A1.01.44 A1.01.46 A1.02.43 +A1.01.43 A1.00.41 A1.01.39 A1.01.41 A1.01.42 A1.01.44 A1.01.45 A1.01.46 A1.01.47 +A1.01.44 A1.01.40 A1.01.42 A1.01.43 A1.01.46 A1.01.48 A1.02.43 A1.02.45 A1.02.47 +A1.01.45 A1.00.41 A1.00.42 A1.00.45 A1.00.48 A1.01.41 A1.01.43 A1.01.46 A1.01.47 +A1.01.46 A1.01.42 A1.01.43 A1.01.44 A1.01.45 A1.01.47 A1.01.48 A1.01.49 A1.02.47 +A1.01.47 A1.00.45 A1.00.48 A1.01.43 A1.01.45 A1.01.46 A1.01.48 A1.01.49 A1.01.50 +A1.01.48 A1.01.44 A1.01.46 A1.01.47 A1.01.49 A1.01.51 A1.02.47 A1.02.49 A1.02.51 +A1.01.49 A1.00.48 A1.01.46 A1.01.47 A1.01.48 A1.01.50 A1.01.51 A1.01.52 A1.02.51 +A1.01.50 A1.00.48 A1.00.49 A1.00.51 A1.00.53 A1.01.47 A1.01.49 A1.01.51 A1.01.52 A1.01.53 +A1.01.51 A1.01.48 A1.01.49 A1.01.50 A1.01.52 A1.01.54 A1.01.56 A1.02.51 A1.02.52 A1.02.53 A1.02.55 +A1.01.52 A1.01.49 A1.01.50 A1.01.51 A1.01.53 A1.01.54 A1.01.55 +A1.01.53 A1.00.51 A1.00.53 A1.01.50 A1.01.52 A1.01.54 A1.01.55 A1.01.57 +A1.01.54 A1.01.51 A1.01.52 A1.01.53 A1.01.55 A1.01.56 A1.01.58 A1.02.55 +A1.01.55 A1.00.53 A1.01.52 A1.01.53 A1.01.54 A1.01.56 A1.01.57 A1.01.58 A1.01.59 +A1.01.56 A1.01.51 A1.01.54 A1.01.55 A1.01.58 A1.01.60 A1.02.55 A1.02.57 A1.02.59 +A1.01.57 A1.00.53 A1.00.54 A1.00.57 A1.00.60 A1.01.53 A1.01.55 A1.01.58 A1.01.59 +A1.01.58 A1.01.54 A1.01.55 A1.01.56 A1.01.57 A1.01.59 A1.01.60 A1.01.61 A1.02.59 +A1.01.59 A1.00.57 A1.00.60 A1.01.55 A1.01.57 A1.01.58 A1.01.60 A1.01.61 A1.01.62 +A1.01.60 A1.01.56 A1.01.58 A1.01.59 A1.01.61 A1.02.59 A1.02.61 +A1.01.61 A1.01.58 A1.01.59 A1.01.60 A1.01.62 A1.02.59 A1.02.61 +A1.01.62 A1.00.60 A1.00.61 A1.01.59 A1.01.61 +A1.02.00 A1.02.03 A1.02.06 +A1.02.01 A1.02.02 A1.02.04 A1.02.10 A1.02.14 +A1.02.02 A1.02.01 A1.02.07 A1.02.10 +A1.02.03 A1.02.00 A1.02.06 A1.02.09 A1.02.12 +A1.02.04 A1.02.01 A1.02.05 A1.02.10 A1.02.14 A1.03.02 +A1.02.05 A1.02.04 A1.02.14 A1.03.02 A1.03.08 +A1.02.06 A1.01.06 A1.02.00 A1.02.03 A1.02.12 A1.02.13 A1.02.17 +A1.02.07 A1.02.02 A1.02.10 A1.02.11 A1.02.15 +A1.02.08 A1.02.09 A1.02.11 +A1.02.09 A1.02.03 A1.02.08 A1.02.11 A1.02.12 A1.02.16 +A1.02.10 A1.02.01 A1.02.02 A1.02.04 A1.02.07 A1.02.11 A1.02.14 A1.02.15 A1.02.18 +A1.02.11 A1.02.07 A1.02.08 A1.02.09 A1.02.10 A1.02.12 A1.02.15 A1.02.16 A1.02.19 +A1.02.12 A1.02.03 A1.02.06 A1.02.09 A1.02.11 A1.02.13 A1.02.16 A1.02.17 A1.02.20 +A1.02.13 A1.01.06 A1.01.12 A1.01.17 A1.02.06 A1.02.12 A1.02.17 A1.02.21 +A1.02.14 A1.02.01 A1.02.04 A1.02.05 A1.02.10 A1.02.15 A1.02.18 A1.03.08 A1.03.10 A1.03.15 A1.03.20 +A1.02.15 A1.02.07 A1.02.10 A1.02.11 A1.02.14 A1.02.16 A1.02.18 A1.02.19 A1.02.22 +A1.02.16 A1.02.09 A1.02.11 A1.02.12 A1.02.15 A1.02.17 A1.02.19 A1.02.20 A1.02.23 +A1.02.17 A1.01.17 A1.02.06 A1.02.12 A1.02.13 A1.02.16 A1.02.20 A1.02.21 A1.02.24 +A1.02.18 A1.02.10 A1.02.14 A1.02.15 A1.02.19 A1.02.22 A1.02.25 A1.03.15 A1.03.20 +A1.02.19 A1.02.11 A1.02.15 A1.02.16 A1.02.18 A1.02.20 A1.02.22 A1.02.23 A1.02.26 +A1.02.20 A1.02.12 A1.02.16 A1.02.17 A1.02.19 A1.02.21 A1.02.23 A1.02.24 A1.02.27 +A1.02.21 A1.01.17 A1.01.20 A1.01.25 A1.02.13 A1.02.17 A1.02.20 A1.02.24 A1.02.28 +A1.02.22 A1.02.15 A1.02.18 A1.02.19 A1.02.23 A1.02.25 A1.02.26 A1.02.29 A1.03.20 +A1.02.23 A1.02.16 A1.02.19 A1.02.20 A1.02.22 A1.02.24 A1.02.26 A1.02.27 A1.02.30 +A1.02.24 A1.01.25 A1.02.17 A1.02.20 A1.02.21 A1.02.23 A1.02.27 A1.02.28 A1.02.31 +A1.02.25 A1.02.18 A1.02.22 A1.02.26 A1.02.29 A1.03.20 A1.03.21 A1.03.25 A1.03.29 +A1.02.26 A1.02.19 A1.02.22 A1.02.23 A1.02.25 A1.02.27 A1.02.29 A1.02.30 A1.02.32 +A1.02.27 A1.02.20 A1.02.23 A1.02.24 A1.02.26 A1.02.28 A1.02.30 A1.02.31 A1.02.33 +A1.02.28 A1.01.25 A1.01.28 A1.01.32 A1.02.21 A1.02.24 A1.02.27 A1.02.31 A1.02.34 +A1.02.29 A1.02.22 A1.02.25 A1.02.26 A1.02.30 A1.02.32 A1.03.25 A1.03.29 A1.03.33 +A1.02.30 A1.02.23 A1.02.26 A1.02.27 A1.02.29 A1.02.31 A1.02.32 A1.02.33 A1.02.35 +A1.02.31 A1.01.32 A1.02.24 A1.02.27 A1.02.28 A1.02.30 A1.02.33 A1.02.34 A1.02.36 +A1.02.32 A1.02.26 A1.02.29 A1.02.30 A1.02.33 A1.02.35 A1.02.38 A1.03.29 A1.03.33 +A1.02.33 A1.02.27 A1.02.30 A1.02.31 A1.02.32 A1.02.34 A1.02.35 A1.02.36 A1.02.39 +A1.02.34 A1.01.32 A1.01.35 A1.02.28 A1.02.31 A1.02.33 A1.02.36 A1.02.37 A1.02.40 +A1.02.35 A1.02.30 A1.02.32 A1.02.33 A1.02.36 A1.02.38 A1.02.39 A1.02.41 A1.03.33 +A1.02.36 A1.02.31 A1.02.33 A1.02.34 A1.02.35 A1.02.37 A1.02.39 A1.02.40 A1.02.42 +A1.02.37 A1.01.32 A1.01.35 A1.01.37 A1.01.40 A1.02.34 A1.02.36 A1.02.40 A1.02.43 +A1.02.38 A1.02.32 A1.02.35 A1.02.39 A1.02.41 A1.03.33 A1.03.34 A1.03.37 A1.03.40 +A1.02.39 A1.02.33 A1.02.35 A1.02.36 A1.02.38 A1.02.40 A1.02.41 A1.02.42 A1.02.44 +A1.02.40 A1.01.40 A1.02.34 A1.02.36 A1.02.37 A1.02.39 A1.02.42 A1.02.43 A1.02.45 +A1.02.41 A1.02.35 A1.02.38 A1.02.39 A1.02.42 A1.02.44 A1.03.37 A1.03.40 A1.03.43 +A1.02.42 A1.02.36 A1.02.39 A1.02.40 A1.02.41 A1.02.43 A1.02.44 A1.02.45 A1.02.46 +A1.02.43 A1.01.40 A1.01.42 A1.01.44 A1.02.37 A1.02.40 A1.02.42 A1.02.45 A1.02.47 +A1.02.44 A1.02.39 A1.02.41 A1.02.42 A1.02.45 A1.02.46 A1.02.48 A1.03.40 A1.03.43 +A1.02.45 A1.01.44 A1.02.40 A1.02.42 A1.02.43 A1.02.44 A1.02.46 A1.02.47 A1.02.49 +A1.02.46 A1.02.42 A1.02.44 A1.02.45 A1.02.47 A1.02.48 A1.02.49 A1.02.50 A1.03.43 +A1.02.47 A1.01.44 A1.01.46 A1.01.48 A1.02.43 A1.02.45 A1.02.46 A1.02.49 A1.02.51 +A1.02.48 A1.02.44 A1.02.46 A1.02.49 A1.02.50 A1.03.43 A1.03.44 A1.03.46 A1.03.48 +A1.02.49 A1.01.48 A1.02.45 A1.02.46 A1.02.47 A1.02.48 A1.02.50 A1.02.51 A1.02.52 +A1.02.50 A1.02.46 A1.02.48 A1.02.49 A1.02.51 A1.02.52 A1.03.46 A1.03.48 A1.03.50 +A1.02.51 A1.01.48 A1.01.49 A1.01.51 A1.02.47 A1.02.49 A1.02.50 A1.02.52 A1.02.53 +A1.02.52 A1.01.51 A1.02.49 A1.02.50 A1.02.51 A1.02.53 A1.02.54 A1.02.56 A1.03.48 A1.03.50 A1.03.54 +A1.02.53 A1.01.51 A1.02.51 A1.02.52 A1.02.54 A1.02.55 A1.02.57 +A1.02.54 A1.02.52 A1.02.53 A1.02.55 A1.02.56 A1.02.57 A1.02.58 A1.03.54 +A1.02.55 A1.01.51 A1.01.54 A1.01.56 A1.02.53 A1.02.54 A1.02.57 A1.02.59 +A1.02.56 A1.02.52 A1.02.54 A1.02.57 A1.02.58 A1.02.60 A1.03.54 A1.03.55 A1.03.58 +A1.02.57 A1.01.56 A1.02.53 A1.02.54 A1.02.55 A1.02.56 A1.02.58 A1.02.59 A1.02.61 +A1.02.58 A1.02.54 A1.02.56 A1.02.57 A1.02.59 A1.02.60 A1.02.61 A1.02.62 A1.03.58 +A1.02.59 A1.01.56 A1.01.58 A1.01.60 A1.01.61 A1.02.55 A1.02.57 A1.02.58 A1.02.61 +A1.02.60 A1.02.56 A1.02.58 A1.02.61 A1.02.62 A1.03.58 A1.03.59 A1.03.61 +A1.02.61 A1.01.60 A1.01.61 A1.02.57 A1.02.58 A1.02.59 A1.02.60 A1.02.62 +A1.02.62 A1.02.58 A1.02.60 A1.02.61 A1.03.61 +A1.03.00 A1.03.05 A1.03.07 A1.04.00 A1.04.08 +A1.03.01 A1.03.02 A1.03.03 A1.03.10 +A1.03.02 A1.02.04 A1.02.05 A1.03.01 A1.03.08 A1.03.10 +A1.03.03 A1.03.01 A1.03.04 A1.03.10 A1.03.11 +A1.03.04 A1.03.03 A1.03.06 A1.03.11 A1.03.12 +A1.03.05 A1.03.00 A1.03.07 A1.03.09 A1.03.12 A1.03.13 A1.03.14 +A1.03.06 A1.03.04 A1.03.09 A1.03.11 A1.03.12 +A1.03.07 A1.03.00 A1.03.05 A1.03.13 A1.03.14 A1.04.00 A1.04.08 A1.04.14 +A1.03.08 A1.02.05 A1.02.14 A1.03.02 A1.03.10 A1.03.15 +A1.03.09 A1.03.05 A1.03.06 A1.03.12 A1.03.13 +A1.03.10 A1.02.14 A1.03.01 A1.03.02 A1.03.03 A1.03.08 A1.03.11 A1.03.15 A1.03.16 +A1.03.11 A1.03.03 A1.03.04 A1.03.06 A1.03.10 A1.03.12 A1.03.15 A1.03.16 A1.03.17 +A1.03.12 A1.03.04 A1.03.05 A1.03.06 A1.03.09 A1.03.11 A1.03.13 A1.03.16 A1.03.17 A1.03.18 +A1.03.13 A1.03.05 A1.03.07 A1.03.09 A1.03.12 A1.03.14 A1.03.17 A1.03.18 A1.03.19 +A1.03.14 A1.03.05 A1.03.07 A1.03.13 A1.03.18 A1.03.19 A1.04.08 A1.04.14 A1.04.19 +A1.03.15 A1.02.14 A1.02.18 A1.03.08 A1.03.10 A1.03.11 A1.03.16 A1.03.20 A1.03.21 +A1.03.16 A1.03.10 A1.03.11 A1.03.12 A1.03.15 A1.03.17 A1.03.20 A1.03.21 A1.03.22 +A1.03.17 A1.03.11 A1.03.12 A1.03.13 A1.03.16 A1.03.18 A1.03.21 A1.03.22 A1.03.23 +A1.03.18 A1.03.12 A1.03.13 A1.03.14 A1.03.17 A1.03.19 A1.03.22 A1.03.23 A1.03.24 +A1.03.19 A1.03.13 A1.03.14 A1.03.18 A1.03.23 A1.03.24 A1.04.14 A1.04.19 A1.04.24 +A1.03.20 A1.02.14 A1.02.18 A1.02.22 A1.02.25 A1.03.15 A1.03.16 A1.03.21 A1.03.25 +A1.03.21 A1.02.25 A1.03.15 A1.03.16 A1.03.17 A1.03.20 A1.03.22 A1.03.25 A1.03.26 +A1.03.22 A1.03.16 A1.03.17 A1.03.18 A1.03.21 A1.03.23 A1.03.25 A1.03.26 A1.03.27 +A1.03.23 A1.03.17 A1.03.18 A1.03.19 A1.03.22 A1.03.24 A1.03.26 A1.03.27 A1.03.28 +A1.03.24 A1.03.18 A1.03.19 A1.03.23 A1.03.27 A1.03.28 A1.04.19 A1.04.24 A1.04.28 +A1.03.25 A1.02.25 A1.02.29 A1.03.20 A1.03.21 A1.03.22 A1.03.26 A1.03.29 A1.03.30 +A1.03.26 A1.03.21 A1.03.22 A1.03.23 A1.03.25 A1.03.27 A1.03.29 A1.03.30 A1.03.31 +A1.03.27 A1.03.22 A1.03.23 A1.03.24 A1.03.26 A1.03.28 A1.03.30 A1.03.31 A1.03.32 +A1.03.28 A1.03.23 A1.03.24 A1.03.27 A1.03.31 A1.03.32 A1.04.24 A1.04.28 A1.04.32 +A1.03.29 A1.02.25 A1.02.29 A1.02.32 A1.03.25 A1.03.26 A1.03.30 A1.03.33 A1.03.34 +A1.03.30 A1.03.25 A1.03.26 A1.03.27 A1.03.29 A1.03.31 A1.03.33 A1.03.34 A1.03.35 +A1.03.31 A1.03.26 A1.03.27 A1.03.28 A1.03.30 A1.03.32 A1.03.34 A1.03.35 A1.03.36 +A1.03.32 A1.03.27 A1.03.28 A1.03.31 A1.03.35 A1.03.36 A1.04.28 A1.04.32 A1.04.36 +A1.03.33 A1.02.29 A1.02.32 A1.02.35 A1.02.38 A1.03.29 A1.03.30 A1.03.34 A1.03.37 +A1.03.34 A1.02.38 A1.03.29 A1.03.30 A1.03.31 A1.03.33 A1.03.35 A1.03.37 A1.03.38 +A1.03.35 A1.03.30 A1.03.31 A1.03.32 A1.03.34 A1.03.36 A1.03.37 A1.03.38 A1.03.39 +A1.03.36 A1.03.31 A1.03.32 A1.03.35 A1.03.38 A1.03.39 A1.04.32 A1.04.36 A1.04.39 +A1.03.37 A1.02.38 A1.02.41 A1.03.33 A1.03.34 A1.03.35 A1.03.38 A1.03.40 A1.03.41 +A1.03.38 A1.03.34 A1.03.35 A1.03.36 A1.03.37 A1.03.39 A1.03.40 A1.03.41 A1.03.42 +A1.03.39 A1.03.35 A1.03.36 A1.03.38 A1.03.41 A1.03.42 A1.04.36 A1.04.39 A1.04.42 +A1.03.40 A1.02.38 A1.02.41 A1.02.44 A1.03.37 A1.03.38 A1.03.41 A1.03.43 A1.03.44 +A1.03.41 A1.03.37 A1.03.38 A1.03.39 A1.03.40 A1.03.42 A1.03.43 A1.03.44 A1.03.45 +A1.03.42 A1.03.38 A1.03.39 A1.03.41 A1.03.44 A1.03.45 A1.04.39 A1.04.42 A1.04.45 +A1.03.43 A1.02.41 A1.02.44 A1.02.46 A1.02.48 A1.03.40 A1.03.41 A1.03.44 A1.03.46 +A1.03.44 A1.02.48 A1.03.40 A1.03.41 A1.03.42 A1.03.43 A1.03.45 A1.03.46 A1.03.47 +A1.03.45 A1.03.41 A1.03.42 A1.03.44 A1.03.46 A1.03.47 A1.04.42 A1.04.45 A1.04.47 +A1.03.46 A1.02.48 A1.02.50 A1.03.43 A1.03.44 A1.03.45 A1.03.47 A1.03.48 A1.03.49 +A1.03.47 A1.03.44 A1.03.45 A1.03.46 A1.03.48 A1.03.49 A1.04.45 A1.04.47 A1.04.49 +A1.03.48 A1.02.48 A1.02.50 A1.02.52 A1.03.46 A1.03.47 A1.03.49 A1.03.50 A1.03.51 A1.03.52 +A1.03.49 A1.03.46 A1.03.47 A1.03.48 A1.03.51 A1.03.52 A1.03.53 A1.04.47 A1.04.49 A1.04.53 +A1.03.50 A1.02.50 A1.02.52 A1.03.48 A1.03.51 A1.03.54 A1.03.55 +A1.03.51 A1.03.48 A1.03.49 A1.03.50 A1.03.52 A1.03.54 A1.03.55 A1.03.56 +A1.03.52 A1.03.48 A1.03.49 A1.03.51 A1.03.53 A1.03.55 A1.03.56 A1.03.57 +A1.03.53 A1.03.49 A1.03.52 A1.03.56 A1.03.57 A1.04.49 A1.04.53 A1.04.57 +A1.03.54 A1.02.52 A1.02.54 A1.02.56 A1.03.50 A1.03.51 A1.03.55 A1.03.58 +A1.03.55 A1.02.56 A1.03.50 A1.03.51 A1.03.52 A1.03.54 A1.03.56 A1.03.58 A1.03.59 +A1.03.56 A1.03.51 A1.03.52 A1.03.53 A1.03.55 A1.03.57 A1.03.58 A1.03.59 A1.03.60 +A1.03.57 A1.03.52 A1.03.53 A1.03.56 A1.03.59 A1.03.60 A1.04.53 A1.04.57 A1.04.60 +A1.03.58 A1.02.56 A1.02.58 A1.02.60 A1.03.54 A1.03.55 A1.03.56 A1.03.59 A1.03.61 +A1.03.59 A1.02.60 A1.03.55 A1.03.56 A1.03.57 A1.03.58 A1.03.60 A1.03.61 A1.03.62 +A1.03.60 A1.03.56 A1.03.57 A1.03.59 A1.03.61 A1.03.62 A1.04.57 A1.04.60 A1.04.62 +A1.03.61 A1.02.60 A1.02.62 A1.03.58 A1.03.59 A1.03.60 A1.03.62 +A1.03.62 A1.03.59 A1.03.60 A1.03.61 A1.04.60 A1.04.62 +A1.04.00 A1.03.00 A1.03.07 A1.04.06 A1.04.08 +A1.04.01 A1.04.02 A1.04.04 A1.04.10 +A1.04.02 A1.04.01 A1.04.03 A1.04.10 A1.04.11 +A1.04.03 A1.04.02 A1.04.05 A1.04.10 A1.04.11 +A1.04.04 A1.04.01 A1.04.10 A1.04.15 A1.05.02 A1.05.09 A1.05.13 +A1.04.05 A1.04.03 A1.04.07 A1.04.11 A1.04.12 +A1.04.06 A1.04.00 A1.04.08 A1.04.09 A1.04.12 A1.04.13 A1.04.14 +A1.04.07 A1.04.05 A1.04.09 A1.04.11 A1.04.12 +A1.04.08 A1.03.00 A1.03.07 A1.03.14 A1.04.00 A1.04.06 A1.04.13 A1.04.14 +A1.04.09 A1.04.06 A1.04.07 A1.04.12 A1.04.13 +A1.04.10 A1.04.01 A1.04.02 A1.04.03 A1.04.04 A1.04.11 A1.04.15 A1.04.16 A1.05.13 +A1.04.11 A1.04.02 A1.04.03 A1.04.05 A1.04.07 A1.04.10 A1.04.12 A1.04.15 A1.04.16 A1.04.17 +A1.04.12 A1.04.05 A1.04.06 A1.04.07 A1.04.09 A1.04.11 A1.04.13 A1.04.16 A1.04.17 A1.04.18 +A1.04.13 A1.04.06 A1.04.08 A1.04.09 A1.04.12 A1.04.14 A1.04.17 A1.04.18 A1.04.19 +A1.04.14 A1.03.07 A1.03.14 A1.03.19 A1.04.06 A1.04.08 A1.04.13 A1.04.18 A1.04.19 +A1.04.15 A1.04.04 A1.04.10 A1.04.11 A1.04.16 A1.04.20 A1.04.21 A1.05.13 A1.05.17 +A1.04.16 A1.04.10 A1.04.11 A1.04.12 A1.04.15 A1.04.17 A1.04.20 A1.04.21 A1.04.22 +A1.04.17 A1.04.11 A1.04.12 A1.04.13 A1.04.16 A1.04.18 A1.04.21 A1.04.22 A1.04.23 +A1.04.18 A1.04.12 A1.04.13 A1.04.14 A1.04.17 A1.04.19 A1.04.22 A1.04.23 A1.04.24 +A1.04.19 A1.03.14 A1.03.19 A1.03.24 A1.04.13 A1.04.14 A1.04.18 A1.04.23 A1.04.24 +A1.04.20 A1.04.15 A1.04.16 A1.04.21 A1.04.25 A1.05.13 A1.05.17 A1.05.21 A1.05.24 +A1.04.21 A1.04.15 A1.04.16 A1.04.17 A1.04.20 A1.04.22 A1.04.25 A1.04.26 A1.05.24 +A1.04.22 A1.04.16 A1.04.17 A1.04.18 A1.04.21 A1.04.23 A1.04.25 A1.04.26 A1.04.27 +A1.04.23 A1.04.17 A1.04.18 A1.04.19 A1.04.22 A1.04.24 A1.04.26 A1.04.27 A1.04.28 +A1.04.24 A1.03.19 A1.03.24 A1.03.28 A1.04.18 A1.04.19 A1.04.23 A1.04.27 A1.04.28 +A1.04.25 A1.04.20 A1.04.21 A1.04.22 A1.04.26 A1.04.29 A1.04.30 A1.05.24 A1.05.28 +A1.04.26 A1.04.21 A1.04.22 A1.04.23 A1.04.25 A1.04.27 A1.04.29 A1.04.30 A1.04.31 +A1.04.27 A1.04.22 A1.04.23 A1.04.24 A1.04.26 A1.04.28 A1.04.30 A1.04.31 A1.04.32 +A1.04.28 A1.03.24 A1.03.28 A1.03.32 A1.04.23 A1.04.24 A1.04.27 A1.04.31 A1.04.32 +A1.04.29 A1.04.25 A1.04.26 A1.04.30 A1.04.33 A1.04.34 A1.05.24 A1.05.28 A1.05.31 +A1.04.30 A1.04.25 A1.04.26 A1.04.27 A1.04.29 A1.04.31 A1.04.33 A1.04.34 A1.04.35 +A1.04.31 A1.04.26 A1.04.27 A1.04.28 A1.04.30 A1.04.32 A1.04.34 A1.04.35 A1.04.36 +A1.04.32 A1.03.28 A1.03.32 A1.03.36 A1.04.27 A1.04.28 A1.04.31 A1.04.35 A1.04.36 +A1.04.33 A1.04.29 A1.04.30 A1.04.34 A1.04.37 A1.05.28 A1.05.31 A1.05.34 A1.05.37 +A1.04.34 A1.04.29 A1.04.30 A1.04.31 A1.04.33 A1.04.35 A1.04.37 A1.04.38 A1.05.37 +A1.04.35 A1.04.30 A1.04.31 A1.04.32 A1.04.34 A1.04.36 A1.04.37 A1.04.38 A1.04.39 +A1.04.36 A1.03.32 A1.03.36 A1.03.39 A1.04.31 A1.04.32 A1.04.35 A1.04.38 A1.04.39 +A1.04.37 A1.04.33 A1.04.34 A1.04.35 A1.04.38 A1.04.40 A1.04.41 A1.05.37 A1.05.40 +A1.04.38 A1.04.34 A1.04.35 A1.04.36 A1.04.37 A1.04.39 A1.04.40 A1.04.41 A1.04.42 +A1.04.39 A1.03.36 A1.03.39 A1.03.42 A1.04.35 A1.04.36 A1.04.38 A1.04.41 A1.04.42 +A1.04.40 A1.04.37 A1.04.38 A1.04.41 A1.04.43 A1.04.44 A1.05.37 A1.05.40 A1.05.43 +A1.04.41 A1.04.37 A1.04.38 A1.04.39 A1.04.40 A1.04.42 A1.04.43 A1.04.44 A1.04.45 +A1.04.42 A1.03.39 A1.03.42 A1.03.45 A1.04.38 A1.04.39 A1.04.41 A1.04.44 A1.04.45 +A1.04.43 A1.04.40 A1.04.41 A1.04.44 A1.04.46 A1.05.40 A1.05.43 A1.05.45 A1.05.47 +A1.04.44 A1.04.40 A1.04.41 A1.04.42 A1.04.43 A1.04.45 A1.04.46 A1.04.47 A1.05.47 +A1.04.45 A1.03.42 A1.03.45 A1.03.47 A1.04.41 A1.04.42 A1.04.44 A1.04.46 A1.04.47 +A1.04.46 A1.04.43 A1.04.44 A1.04.45 A1.04.47 A1.04.48 A1.04.49 A1.05.47 A1.05.49 +A1.04.47 A1.03.45 A1.03.47 A1.03.49 A1.04.44 A1.04.45 A1.04.46 A1.04.48 A1.04.49 +A1.04.48 A1.04.46 A1.04.47 A1.04.49 A1.04.50 A1.04.51 A1.04.52 A1.05.47 A1.05.49 A1.05.51 +A1.04.49 A1.03.47 A1.03.49 A1.03.53 A1.04.46 A1.04.47 A1.04.48 A1.04.51 A1.04.52 A1.04.53 +A1.04.50 A1.04.48 A1.04.51 A1.04.54 A1.04.55 A1.05.49 A1.05.51 +A1.04.51 A1.04.48 A1.04.49 A1.04.50 A1.04.52 A1.04.54 A1.04.55 A1.04.56 +A1.04.52 A1.04.48 A1.04.49 A1.04.51 A1.04.53 A1.04.55 A1.04.56 A1.04.57 +A1.04.53 A1.03.49 A1.03.53 A1.03.57 A1.04.49 A1.04.52 A1.04.56 A1.04.57 +A1.04.54 A1.04.50 A1.04.51 A1.04.55 A1.04.58 A1.05.51 A1.05.53 A1.05.55 +A1.04.55 A1.04.50 A1.04.51 A1.04.52 A1.04.54 A1.04.56 A1.04.58 A1.04.59 A1.05.55 +A1.04.56 A1.04.51 A1.04.52 A1.04.53 A1.04.55 A1.04.57 A1.04.58 A1.04.59 A1.04.60 +A1.04.57 A1.03.53 A1.03.57 A1.03.60 A1.04.52 A1.04.53 A1.04.56 A1.04.59 A1.04.60 +A1.04.58 A1.04.54 A1.04.55 A1.04.56 A1.04.59 A1.04.61 A1.05.55 A1.05.57 A1.05.59 +A1.04.59 A1.04.55 A1.04.56 A1.04.57 A1.04.58 A1.04.60 A1.04.61 A1.04.62 A1.05.59 +A1.04.60 A1.03.57 A1.03.60 A1.03.62 A1.04.56 A1.04.57 A1.04.59 A1.04.61 A1.04.62 +A1.04.61 A1.04.58 A1.04.59 A1.04.60 A1.04.62 A1.05.59 A1.05.62 +A1.04.62 A1.03.60 A1.03.62 A1.04.59 A1.04.60 A1.04.61 A1.05.62 +A1.05.00 A1.05.02 A1.05.05 A1.05.09 +A1.05.01 A1.05.03 A1.05.06 A1.05.12 +A1.05.02 A1.04.04 A1.05.00 A1.05.09 A1.05.13 +A1.05.03 A1.05.01 A1.05.06 A1.05.07 A1.05.08 A1.05.12 +A1.05.04 A1.05.05 A1.05.07 A1.05.10 +A1.05.05 A1.05.00 A1.05.04 A1.05.09 A1.05.10 A1.05.14 +A1.05.06 A1.05.01 A1.05.03 A1.05.11 A1.05.12 A1.05.16 A1.06.06 +A1.05.07 A1.05.03 A1.05.04 A1.05.08 A1.05.10 +A1.05.08 A1.05.03 A1.05.07 A1.05.10 A1.05.12 A1.05.15 +A1.05.09 A1.04.04 A1.05.00 A1.05.02 A1.05.05 A1.05.10 A1.05.13 A1.05.14 A1.05.17 +A1.05.10 A1.05.04 A1.05.05 A1.05.07 A1.05.08 A1.05.09 A1.05.12 A1.05.14 A1.05.15 A1.05.18 +A1.05.11 A1.05.06 A1.05.12 A1.05.16 A1.05.20 A1.06.06 A1.06.12 A1.06.17 +A1.05.12 A1.05.01 A1.05.03 A1.05.06 A1.05.08 A1.05.10 A1.05.11 A1.05.15 A1.05.16 A1.05.19 +A1.05.13 A1.04.04 A1.04.10 A1.04.15 A1.04.20 A1.05.02 A1.05.09 A1.05.14 A1.05.17 +A1.05.14 A1.05.05 A1.05.09 A1.05.10 A1.05.13 A1.05.15 A1.05.17 A1.05.18 A1.05.21 +A1.05.15 A1.05.08 A1.05.10 A1.05.12 A1.05.14 A1.05.16 A1.05.18 A1.05.19 A1.05.22 +A1.05.16 A1.05.06 A1.05.11 A1.05.12 A1.05.15 A1.05.19 A1.05.20 A1.05.23 A1.06.17 +A1.05.17 A1.04.15 A1.04.20 A1.05.09 A1.05.13 A1.05.14 A1.05.18 A1.05.21 A1.05.24 +A1.05.18 A1.05.10 A1.05.14 A1.05.15 A1.05.17 A1.05.19 A1.05.21 A1.05.22 A1.05.25 +A1.05.19 A1.05.12 A1.05.15 A1.05.16 A1.05.18 A1.05.20 A1.05.22 A1.05.23 A1.05.26 +A1.05.20 A1.05.11 A1.05.16 A1.05.19 A1.05.23 A1.05.27 A1.06.17 A1.06.20 A1.06.25 +A1.05.21 A1.04.20 A1.05.14 A1.05.17 A1.05.18 A1.05.22 A1.05.24 A1.05.25 A1.05.28 +A1.05.22 A1.05.15 A1.05.18 A1.05.19 A1.05.21 A1.05.23 A1.05.25 A1.05.26 A1.05.29 +A1.05.23 A1.05.16 A1.05.19 A1.05.20 A1.05.22 A1.05.26 A1.05.27 A1.05.30 A1.06.25 +A1.05.24 A1.04.20 A1.04.21 A1.04.25 A1.04.29 A1.05.17 A1.05.21 A1.05.25 A1.05.28 +A1.05.25 A1.05.18 A1.05.21 A1.05.22 A1.05.24 A1.05.26 A1.05.28 A1.05.29 A1.05.31 +A1.05.26 A1.05.19 A1.05.22 A1.05.23 A1.05.25 A1.05.27 A1.05.29 A1.05.30 A1.05.32 +A1.05.27 A1.05.20 A1.05.23 A1.05.26 A1.05.30 A1.05.33 A1.06.25 A1.06.28 A1.06.32 +A1.05.28 A1.04.25 A1.04.29 A1.04.33 A1.05.21 A1.05.24 A1.05.25 A1.05.29 A1.05.31 +A1.05.29 A1.05.22 A1.05.25 A1.05.26 A1.05.28 A1.05.30 A1.05.31 A1.05.32 A1.05.34 +A1.05.30 A1.05.23 A1.05.26 A1.05.27 A1.05.29 A1.05.32 A1.05.33 A1.05.36 A1.06.32 +A1.05.31 A1.04.29 A1.04.33 A1.05.25 A1.05.28 A1.05.29 A1.05.32 A1.05.34 A1.05.37 +A1.05.32 A1.05.26 A1.05.29 A1.05.30 A1.05.31 A1.05.33 A1.05.34 A1.05.36 A1.05.38 +A1.05.33 A1.05.27 A1.05.30 A1.05.32 A1.05.35 A1.05.36 A1.05.39 A1.06.32 A1.06.35 +A1.05.34 A1.04.33 A1.05.29 A1.05.31 A1.05.32 A1.05.36 A1.05.37 A1.05.38 A1.05.40 +A1.05.35 A1.05.33 A1.05.36 A1.05.39 A1.05.42 A1.06.32 A1.06.35 A1.06.37 A1.06.40 +A1.05.36 A1.05.30 A1.05.32 A1.05.33 A1.05.34 A1.05.35 A1.05.38 A1.05.39 A1.05.41 +A1.05.37 A1.04.33 A1.04.34 A1.04.37 A1.04.40 A1.05.31 A1.05.34 A1.05.38 A1.05.40 +A1.05.38 A1.05.32 A1.05.34 A1.05.36 A1.05.37 A1.05.39 A1.05.40 A1.05.41 A1.05.43 +A1.05.39 A1.05.33 A1.05.35 A1.05.36 A1.05.38 A1.05.41 A1.05.42 A1.05.44 A1.06.40 +A1.05.40 A1.04.37 A1.04.40 A1.04.43 A1.05.34 A1.05.37 A1.05.38 A1.05.41 A1.05.43 +A1.05.41 A1.05.36 A1.05.38 A1.05.39 A1.05.40 A1.05.42 A1.05.43 A1.05.44 A1.05.45 +A1.05.42 A1.05.35 A1.05.39 A1.05.41 A1.05.44 A1.05.46 A1.06.40 A1.06.42 A1.06.44 +A1.05.43 A1.04.40 A1.04.43 A1.05.38 A1.05.40 A1.05.41 A1.05.44 A1.05.45 A1.05.47 +A1.05.44 A1.05.39 A1.05.41 A1.05.42 A1.05.43 A1.05.45 A1.05.46 A1.05.48 A1.06.44 +A1.05.45 A1.04.43 A1.05.41 A1.05.43 A1.05.44 A1.05.46 A1.05.47 A1.05.48 A1.05.49 +A1.05.46 A1.05.42 A1.05.44 A1.05.45 A1.05.48 A1.05.50 A1.06.44 A1.06.46 A1.06.48 +A1.05.47 A1.04.43 A1.04.44 A1.04.46 A1.04.48 A1.05.43 A1.05.45 A1.05.48 A1.05.49 +A1.05.48 A1.05.44 A1.05.45 A1.05.46 A1.05.47 A1.05.49 A1.05.50 A1.05.51 A1.06.48 +A1.05.49 A1.04.46 A1.04.48 A1.04.50 A1.05.45 A1.05.47 A1.05.48 A1.05.50 A1.05.51 +A1.05.50 A1.05.46 A1.05.48 A1.05.49 A1.05.51 A1.05.52 A1.06.48 A1.06.49 A1.06.51 +A1.05.51 A1.04.48 A1.04.50 A1.04.54 A1.05.48 A1.05.49 A1.05.50 A1.05.52 A1.05.53 A1.05.55 A1.06.51 +A1.05.52 A1.05.50 A1.05.51 A1.05.53 A1.05.54 A1.05.56 A1.06.51 +A1.05.53 A1.04.54 A1.05.51 A1.05.52 A1.05.54 A1.05.55 A1.05.56 A1.05.57 +A1.05.54 A1.05.52 A1.05.53 A1.05.56 A1.05.58 A1.06.51 A1.06.55 A1.06.57 +A1.05.55 A1.04.54 A1.04.55 A1.04.58 A1.05.51 A1.05.53 A1.05.56 A1.05.57 A1.05.59 +A1.05.56 A1.05.52 A1.05.53 A1.05.54 A1.05.55 A1.05.57 A1.05.58 A1.05.60 A1.06.57 +A1.05.57 A1.04.58 A1.05.53 A1.05.55 A1.05.56 A1.05.58 A1.05.59 A1.05.60 +A1.05.58 A1.05.54 A1.05.56 A1.05.57 A1.05.60 A1.05.61 A1.06.57 A1.06.59 A1.06.61 +A1.05.59 A1.04.58 A1.04.59 A1.04.61 A1.05.55 A1.05.57 A1.05.60 A1.05.62 +A1.05.60 A1.05.56 A1.05.57 A1.05.58 A1.05.59 A1.05.61 A1.05.62 A1.06.61 +A1.05.61 A1.05.58 A1.05.60 A1.05.62 A1.06.61 A1.06.62 +A1.05.62 A1.04.61 A1.04.62 A1.05.59 A1.05.60 A1.05.61 +A1.06.00 A1.06.02 A1.06.03 A1.06.11 +A1.06.01 A1.06.04 A1.06.06 A1.06.08 A1.06.12 +A1.06.02 A1.06.00 A1.06.05 A1.06.11 A1.06.13 +A1.06.03 A1.06.00 A1.06.07 A1.06.09 A1.06.11 +A1.06.04 A1.06.01 A1.06.08 A1.06.10 +A1.06.05 A1.06.02 A1.06.11 A1.06.13 A1.07.00 A1.07.08 +A1.06.06 A1.05.06 A1.05.11 A1.06.01 A1.06.12 A1.06.17 +A1.06.07 A1.06.03 A1.06.09 A1.06.10 A1.06.14 +A1.06.08 A1.06.01 A1.06.04 A1.06.10 A1.06.12 A1.06.15 +A1.06.09 A1.06.03 A1.06.07 A1.06.11 A1.06.14 A1.06.16 +A1.06.10 A1.06.04 A1.06.07 A1.06.08 A1.06.12 A1.06.14 A1.06.15 A1.06.18 +A1.06.11 A1.06.00 A1.06.02 A1.06.03 A1.06.05 A1.06.09 A1.06.13 A1.06.14 A1.06.16 A1.06.19 +A1.06.12 A1.05.11 A1.06.01 A1.06.06 A1.06.08 A1.06.10 A1.06.15 A1.06.17 A1.06.20 +A1.06.13 A1.06.02 A1.06.05 A1.06.11 A1.06.16 A1.06.19 A1.06.21 A1.07.07 A1.07.08 A1.07.18 +A1.06.14 A1.06.07 A1.06.09 A1.06.10 A1.06.11 A1.06.15 A1.06.16 A1.06.18 A1.06.22 +A1.06.15 A1.06.08 A1.06.10 A1.06.12 A1.06.14 A1.06.17 A1.06.18 A1.06.20 A1.06.23 +A1.06.16 A1.06.09 A1.06.11 A1.06.13 A1.06.14 A1.06.18 A1.06.19 A1.06.22 A1.06.24 +A1.06.17 A1.05.11 A1.05.16 A1.05.20 A1.06.06 A1.06.12 A1.06.15 A1.06.20 A1.06.25 +A1.06.18 A1.06.10 A1.06.14 A1.06.15 A1.06.16 A1.06.20 A1.06.22 A1.06.23 A1.06.27 +A1.06.19 A1.06.11 A1.06.13 A1.06.16 A1.06.21 A1.06.22 A1.06.24 A1.06.26 A1.07.18 +A1.06.20 A1.05.20 A1.06.12 A1.06.15 A1.06.17 A1.06.18 A1.06.23 A1.06.25 A1.06.28 +A1.06.21 A1.06.13 A1.06.19 A1.06.24 A1.06.26 A1.07.18 A1.07.19 A1.07.24 A1.07.29 +A1.06.22 A1.06.14 A1.06.16 A1.06.18 A1.06.19 A1.06.23 A1.06.24 A1.06.27 A1.06.29 +A1.06.23 A1.06.15 A1.06.18 A1.06.20 A1.06.22 A1.06.25 A1.06.27 A1.06.28 A1.06.30 +A1.06.24 A1.06.16 A1.06.19 A1.06.21 A1.06.22 A1.06.26 A1.06.27 A1.06.29 A1.06.31 +A1.06.25 A1.05.20 A1.05.23 A1.05.27 A1.06.17 A1.06.20 A1.06.23 A1.06.28 A1.06.32 +A1.06.26 A1.06.19 A1.06.21 A1.06.24 A1.06.29 A1.06.31 A1.06.33 A1.07.24 A1.07.29 +A1.06.27 A1.06.18 A1.06.22 A1.06.23 A1.06.24 A1.06.28 A1.06.29 A1.06.30 A1.06.34 +A1.06.28 A1.05.27 A1.06.20 A1.06.23 A1.06.25 A1.06.27 A1.06.30 A1.06.32 A1.06.35 +A1.06.29 A1.06.22 A1.06.24 A1.06.26 A1.06.27 A1.06.30 A1.06.31 A1.06.34 A1.06.36 +A1.06.30 A1.06.23 A1.06.27 A1.06.28 A1.06.29 A1.06.32 A1.06.34 A1.06.35 A1.06.37 +A1.06.31 A1.06.24 A1.06.26 A1.06.29 A1.06.33 A1.06.34 A1.06.36 A1.06.38 A1.07.29 +A1.06.32 A1.05.27 A1.05.30 A1.05.33 A1.05.35 A1.06.25 A1.06.28 A1.06.30 A1.06.35 +A1.06.33 A1.06.26 A1.06.31 A1.06.36 A1.06.38 A1.07.29 A1.07.30 A1.07.34 A1.07.38 +A1.06.34 A1.06.27 A1.06.29 A1.06.30 A1.06.31 A1.06.35 A1.06.36 A1.06.37 A1.06.39 +A1.06.35 A1.05.33 A1.05.35 A1.06.28 A1.06.30 A1.06.32 A1.06.34 A1.06.37 A1.06.40 +A1.06.36 A1.06.29 A1.06.31 A1.06.33 A1.06.34 A1.06.37 A1.06.38 A1.06.39 A1.06.41 +A1.06.37 A1.05.35 A1.06.30 A1.06.34 A1.06.35 A1.06.36 A1.06.39 A1.06.40 A1.06.42 +A1.06.38 A1.06.31 A1.06.33 A1.06.36 A1.06.39 A1.06.41 A1.07.34 A1.07.38 A1.07.42 +A1.06.39 A1.06.34 A1.06.36 A1.06.37 A1.06.38 A1.06.40 A1.06.41 A1.06.42 A1.06.43 +A1.06.40 A1.05.35 A1.05.39 A1.05.42 A1.06.35 A1.06.37 A1.06.39 A1.06.42 A1.06.44 +A1.06.41 A1.06.36 A1.06.38 A1.06.39 A1.06.42 A1.06.43 A1.06.45 A1.07.38 A1.07.42 +A1.06.42 A1.05.42 A1.06.37 A1.06.39 A1.06.40 A1.06.41 A1.06.43 A1.06.44 A1.06.46 +A1.06.43 A1.06.39 A1.06.41 A1.06.42 A1.06.44 A1.06.45 A1.06.46 A1.06.47 A1.07.42 +A1.06.44 A1.05.42 A1.05.44 A1.05.46 A1.06.40 A1.06.42 A1.06.43 A1.06.46 A1.06.48 +A1.06.45 A1.06.41 A1.06.43 A1.06.46 A1.06.47 A1.07.42 A1.07.43 A1.07.46 A1.07.49 +A1.06.46 A1.05.46 A1.06.42 A1.06.43 A1.06.44 A1.06.45 A1.06.47 A1.06.48 A1.06.49 +A1.06.47 A1.06.43 A1.06.45 A1.06.46 A1.06.48 A1.06.49 A1.06.50 A1.07.46 A1.07.49 +A1.06.48 A1.05.46 A1.05.48 A1.05.50 A1.06.44 A1.06.46 A1.06.47 A1.06.49 A1.06.51 +A1.06.49 A1.05.50 A1.06.46 A1.06.47 A1.06.48 A1.06.50 A1.06.51 A1.06.52 A1.07.49 +A1.06.50 A1.06.47 A1.06.49 A1.06.51 A1.06.52 A1.06.53 A1.06.54 A1.07.49 A1.07.50 A1.07.52 +A1.06.51 A1.05.50 A1.05.51 A1.05.52 A1.05.54 A1.06.48 A1.06.49 A1.06.50 A1.06.52 A1.06.55 A1.06.57 +A1.06.52 A1.06.49 A1.06.50 A1.06.51 A1.06.53 A1.06.55 A1.06.56 +A1.06.53 A1.06.50 A1.06.52 A1.06.54 A1.06.55 A1.06.56 A1.06.58 A1.07.52 +A1.06.54 A1.06.50 A1.06.53 A1.06.56 A1.06.58 A1.07.52 A1.07.54 A1.07.57 +A1.06.55 A1.05.54 A1.06.51 A1.06.52 A1.06.53 A1.06.56 A1.06.57 A1.06.59 +A1.06.56 A1.06.52 A1.06.53 A1.06.54 A1.06.55 A1.06.57 A1.06.58 A1.06.59 A1.06.60 +A1.06.57 A1.05.54 A1.05.56 A1.05.58 A1.06.51 A1.06.55 A1.06.56 A1.06.59 A1.06.61 +A1.06.58 A1.06.53 A1.06.54 A1.06.56 A1.06.59 A1.06.60 A1.07.54 A1.07.57 A1.07.60 +A1.06.59 A1.05.58 A1.06.55 A1.06.56 A1.06.57 A1.06.58 A1.06.60 A1.06.61 A1.06.62 +A1.06.60 A1.06.56 A1.06.58 A1.06.59 A1.06.61 A1.06.62 A1.07.57 A1.07.60 +A1.06.61 A1.05.58 A1.05.60 A1.05.61 A1.06.57 A1.06.59 A1.06.60 A1.06.62 +A1.06.62 A1.05.61 A1.06.59 A1.06.60 A1.06.61 A1.07.60 +A1.07.00 A1.06.05 A1.07.07 A1.07.08 +A1.07.01 A1.07.02 A1.07.04 A1.07.06 A1.07.10 A1.07.11 +A1.07.02 A1.07.01 A1.07.11 A1.07.12 A1.08.01 A1.08.11 +A1.07.03 A1.07.07 A1.07.13 A1.07.14 +A1.07.04 A1.07.01 A1.07.05 A1.07.06 A1.07.09 +A1.07.05 A1.07.04 A1.07.09 A1.07.14 A1.07.15 +A1.07.06 A1.07.01 A1.07.04 A1.07.09 A1.07.10 A1.07.15 A1.07.16 +A1.07.07 A1.06.13 A1.07.00 A1.07.03 A1.07.08 A1.07.13 A1.07.18 A1.07.19 +A1.07.08 A1.06.05 A1.06.13 A1.07.00 A1.07.07 A1.07.18 +A1.07.09 A1.07.04 A1.07.05 A1.07.06 A1.07.15 A1.07.16 +A1.07.10 A1.07.01 A1.07.06 A1.07.11 A1.07.16 A1.07.17 +A1.07.11 A1.07.01 A1.07.02 A1.07.10 A1.07.12 A1.07.16 A1.07.17 +A1.07.12 A1.07.02 A1.07.11 A1.07.17 A1.08.01 A1.08.11 A1.08.16 +A1.07.13 A1.07.03 A1.07.07 A1.07.14 A1.07.18 A1.07.19 A1.07.20 +A1.07.14 A1.07.03 A1.07.05 A1.07.13 A1.07.15 A1.07.19 A1.07.20 A1.07.21 +A1.07.15 A1.07.05 A1.07.06 A1.07.09 A1.07.14 A1.07.16 A1.07.20 A1.07.21 A1.07.22 +A1.07.16 A1.07.06 A1.07.09 A1.07.10 A1.07.11 A1.07.15 A1.07.17 A1.07.21 A1.07.22 A1.07.23 +A1.07.17 A1.07.10 A1.07.11 A1.07.12 A1.07.16 A1.07.22 A1.07.23 A1.08.11 A1.08.16 A1.08.22 +A1.07.18 A1.06.13 A1.06.19 A1.06.21 A1.07.07 A1.07.08 A1.07.13 A1.07.19 A1.07.24 +A1.07.19 A1.06.21 A1.07.07 A1.07.13 A1.07.14 A1.07.18 A1.07.20 A1.07.24 A1.07.25 +A1.07.20 A1.07.13 A1.07.14 A1.07.15 A1.07.19 A1.07.21 A1.07.24 A1.07.25 A1.07.26 +A1.07.21 A1.07.14 A1.07.15 A1.07.16 A1.07.20 A1.07.22 A1.07.25 A1.07.26 A1.07.27 +A1.07.22 A1.07.15 A1.07.16 A1.07.17 A1.07.21 A1.07.23 A1.07.26 A1.07.27 A1.07.28 +A1.07.23 A1.07.16 A1.07.17 A1.07.22 A1.07.27 A1.07.28 A1.08.16 A1.08.22 A1.08.27 +A1.07.24 A1.06.21 A1.06.26 A1.07.18 A1.07.19 A1.07.20 A1.07.25 A1.07.29 A1.07.30 +A1.07.25 A1.07.19 A1.07.20 A1.07.21 A1.07.24 A1.07.26 A1.07.29 A1.07.30 A1.07.31 +A1.07.26 A1.07.20 A1.07.21 A1.07.22 A1.07.25 A1.07.27 A1.07.30 A1.07.31 A1.07.32 +A1.07.27 A1.07.21 A1.07.22 A1.07.23 A1.07.26 A1.07.28 A1.07.31 A1.07.32 A1.07.33 +A1.07.28 A1.07.22 A1.07.23 A1.07.27 A1.07.32 A1.07.33 A1.08.22 A1.08.27 A1.08.32 +A1.07.29 A1.06.21 A1.06.26 A1.06.31 A1.06.33 A1.07.24 A1.07.25 A1.07.30 A1.07.34 +A1.07.30 A1.06.33 A1.07.24 A1.07.25 A1.07.26 A1.07.29 A1.07.31 A1.07.34 A1.07.35 +A1.07.31 A1.07.25 A1.07.26 A1.07.27 A1.07.30 A1.07.32 A1.07.34 A1.07.35 A1.07.36 +A1.07.32 A1.07.26 A1.07.27 A1.07.28 A1.07.31 A1.07.33 A1.07.35 A1.07.36 A1.07.37 +A1.07.33 A1.07.27 A1.07.28 A1.07.32 A1.07.36 A1.07.37 A1.08.27 A1.08.32 A1.08.36 +A1.07.34 A1.06.33 A1.06.38 A1.07.29 A1.07.30 A1.07.31 A1.07.35 A1.07.38 A1.07.39 +A1.07.35 A1.07.30 A1.07.31 A1.07.32 A1.07.34 A1.07.36 A1.07.38 A1.07.39 A1.07.40 +A1.07.36 A1.07.31 A1.07.32 A1.07.33 A1.07.35 A1.07.37 A1.07.39 A1.07.40 A1.07.41 +A1.07.37 A1.07.32 A1.07.33 A1.07.36 A1.07.40 A1.07.41 A1.08.32 A1.08.36 A1.08.40 +A1.07.38 A1.06.33 A1.06.38 A1.06.41 A1.07.34 A1.07.35 A1.07.39 A1.07.42 A1.07.43 +A1.07.39 A1.07.34 A1.07.35 A1.07.36 A1.07.38 A1.07.40 A1.07.42 A1.07.43 A1.07.44 +A1.07.40 A1.07.35 A1.07.36 A1.07.37 A1.07.39 A1.07.41 A1.07.43 A1.07.44 A1.07.45 +A1.07.41 A1.07.36 A1.07.37 A1.07.40 A1.07.44 A1.07.45 A1.08.36 A1.08.40 A1.08.44 +A1.07.42 A1.06.38 A1.06.41 A1.06.43 A1.06.45 A1.07.38 A1.07.39 A1.07.43 A1.07.46 +A1.07.43 A1.06.45 A1.07.38 A1.07.39 A1.07.40 A1.07.42 A1.07.44 A1.07.46 A1.07.47 +A1.07.44 A1.07.39 A1.07.40 A1.07.41 A1.07.43 A1.07.45 A1.07.46 A1.07.47 A1.07.48 +A1.07.45 A1.07.40 A1.07.41 A1.07.44 A1.07.47 A1.07.48 A1.08.40 A1.08.44 A1.08.47 +A1.07.46 A1.06.45 A1.06.47 A1.07.42 A1.07.43 A1.07.44 A1.07.47 A1.07.49 A1.07.50 +A1.07.47 A1.07.43 A1.07.44 A1.07.45 A1.07.46 A1.07.48 A1.07.49 A1.07.50 A1.07.51 +A1.07.48 A1.07.44 A1.07.45 A1.07.47 A1.07.50 A1.07.51 A1.08.44 A1.08.47 A1.08.50 +A1.07.49 A1.06.45 A1.06.47 A1.06.49 A1.06.50 A1.07.46 A1.07.47 A1.07.50 A1.07.52 +A1.07.50 A1.06.50 A1.07.46 A1.07.47 A1.07.48 A1.07.49 A1.07.51 A1.07.52 A1.07.53 +A1.07.51 A1.07.47 A1.07.48 A1.07.50 A1.07.52 A1.07.53 A1.08.47 A1.08.50 A1.08.52 +A1.07.52 A1.06.50 A1.06.53 A1.06.54 A1.07.49 A1.07.50 A1.07.51 A1.07.53 A1.07.54 A1.07.55 +A1.07.53 A1.07.50 A1.07.51 A1.07.52 A1.07.54 A1.07.55 A1.07.56 A1.08.50 A1.08.52 A1.08.56 +A1.07.54 A1.06.54 A1.06.58 A1.07.52 A1.07.53 A1.07.55 A1.07.57 A1.07.58 +A1.07.55 A1.07.52 A1.07.53 A1.07.54 A1.07.56 A1.07.57 A1.07.58 A1.07.59 +A1.07.56 A1.07.53 A1.07.55 A1.07.58 A1.07.59 A1.08.52 A1.08.56 A1.08.59 +A1.07.57 A1.06.54 A1.06.58 A1.06.60 A1.07.54 A1.07.55 A1.07.58 A1.07.60 A1.07.61 +A1.07.58 A1.07.54 A1.07.55 A1.07.56 A1.07.57 A1.07.59 A1.07.60 A1.07.61 A1.07.62 +A1.07.59 A1.07.55 A1.07.56 A1.07.58 A1.07.61 A1.07.62 A1.08.56 A1.08.59 A1.08.62 +A1.07.60 A1.06.58 A1.06.60 A1.06.62 A1.07.57 A1.07.58 A1.07.61 +A1.07.61 A1.07.57 A1.07.58 A1.07.59 A1.07.60 A1.07.62 +A1.07.62 A1.07.58 A1.07.59 A1.07.61 A1.08.59 A1.08.62 +A1.08.00 A1.08.07 A1.08.12 +A1.08.01 A1.07.02 A1.07.12 A1.08.02 A1.08.10 A1.08.11 +A1.08.02 A1.08.01 A1.08.03 A1.08.06 A1.08.09 A1.08.10 +A1.08.03 A1.08.02 A1.08.05 A1.08.06 A1.08.14 A1.08.15 +A1.08.04 A1.08.05 A1.08.12 A1.08.13 A1.08.14 +A1.08.05 A1.08.03 A1.08.04 A1.08.13 A1.08.14 +A1.08.06 A1.08.02 A1.08.03 A1.08.09 A1.08.14 A1.08.15 +A1.08.07 A1.08.00 A1.08.08 A1.08.12 A1.08.17 A1.08.18 A1.09.13 +A1.08.08 A1.08.07 A1.08.17 A1.09.02 A1.09.13 +A1.08.09 A1.08.02 A1.08.06 A1.08.10 A1.08.15 A1.08.16 +A1.08.10 A1.08.01 A1.08.02 A1.08.09 A1.08.11 A1.08.15 A1.08.16 +A1.08.11 A1.07.02 A1.07.12 A1.07.17 A1.08.01 A1.08.10 A1.08.16 +A1.08.12 A1.08.00 A1.08.04 A1.08.07 A1.08.13 A1.08.17 A1.08.18 A1.08.19 +A1.08.13 A1.08.04 A1.08.05 A1.08.12 A1.08.14 A1.08.18 A1.08.19 A1.08.20 +A1.08.14 A1.08.03 A1.08.04 A1.08.05 A1.08.06 A1.08.13 A1.08.15 A1.08.19 A1.08.20 A1.08.21 +A1.08.15 A1.08.03 A1.08.06 A1.08.09 A1.08.10 A1.08.14 A1.08.16 A1.08.20 A1.08.21 A1.08.22 +A1.08.16 A1.07.12 A1.07.17 A1.07.23 A1.08.09 A1.08.10 A1.08.11 A1.08.15 A1.08.21 A1.08.22 +A1.08.17 A1.08.07 A1.08.08 A1.08.12 A1.08.18 A1.08.23 A1.09.13 A1.09.19 A1.09.21 +A1.08.18 A1.08.07 A1.08.12 A1.08.13 A1.08.17 A1.08.19 A1.08.23 A1.08.24 A1.09.21 +A1.08.19 A1.08.12 A1.08.13 A1.08.14 A1.08.18 A1.08.20 A1.08.23 A1.08.24 A1.08.25 +A1.08.20 A1.08.13 A1.08.14 A1.08.15 A1.08.19 A1.08.21 A1.08.24 A1.08.25 A1.08.26 +A1.08.21 A1.08.14 A1.08.15 A1.08.16 A1.08.20 A1.08.22 A1.08.25 A1.08.26 A1.08.27 +A1.08.22 A1.07.17 A1.07.23 A1.07.28 A1.08.15 A1.08.16 A1.08.21 A1.08.26 A1.08.27 +A1.08.23 A1.08.17 A1.08.18 A1.08.19 A1.08.24 A1.08.28 A1.08.29 A1.09.21 A1.09.26 +A1.08.24 A1.08.18 A1.08.19 A1.08.20 A1.08.23 A1.08.25 A1.08.28 A1.08.29 A1.08.30 +A1.08.25 A1.08.19 A1.08.20 A1.08.21 A1.08.24 A1.08.26 A1.08.29 A1.08.30 A1.08.31 +A1.08.26 A1.08.20 A1.08.21 A1.08.22 A1.08.25 A1.08.27 A1.08.30 A1.08.31 A1.08.32 +A1.08.27 A1.07.23 A1.07.28 A1.07.33 A1.08.21 A1.08.22 A1.08.26 A1.08.31 A1.08.32 +A1.08.28 A1.08.23 A1.08.24 A1.08.29 A1.08.33 A1.09.21 A1.09.26 A1.09.31 A1.09.33 +A1.08.29 A1.08.23 A1.08.24 A1.08.25 A1.08.28 A1.08.30 A1.08.33 A1.08.34 A1.09.33 +A1.08.30 A1.08.24 A1.08.25 A1.08.26 A1.08.29 A1.08.31 A1.08.33 A1.08.34 A1.08.35 +A1.08.31 A1.08.25 A1.08.26 A1.08.27 A1.08.30 A1.08.32 A1.08.34 A1.08.35 A1.08.36 +A1.08.32 A1.07.28 A1.07.33 A1.07.37 A1.08.26 A1.08.27 A1.08.31 A1.08.35 A1.08.36 +A1.08.33 A1.08.28 A1.08.29 A1.08.30 A1.08.34 A1.08.37 A1.08.38 A1.09.33 A1.09.38 +A1.08.34 A1.08.29 A1.08.30 A1.08.31 A1.08.33 A1.08.35 A1.08.37 A1.08.38 A1.08.39 +A1.08.35 A1.08.30 A1.08.31 A1.08.32 A1.08.34 A1.08.36 A1.08.38 A1.08.39 A1.08.40 +A1.08.36 A1.07.33 A1.07.37 A1.07.41 A1.08.31 A1.08.32 A1.08.35 A1.08.39 A1.08.40 +A1.08.37 A1.08.33 A1.08.34 A1.08.38 A1.08.41 A1.08.42 A1.09.33 A1.09.38 A1.09.41 +A1.08.38 A1.08.33 A1.08.34 A1.08.35 A1.08.37 A1.08.39 A1.08.41 A1.08.42 A1.08.43 +A1.08.39 A1.08.34 A1.08.35 A1.08.36 A1.08.38 A1.08.40 A1.08.42 A1.08.43 A1.08.44 +A1.08.40 A1.07.37 A1.07.41 A1.07.45 A1.08.35 A1.08.36 A1.08.39 A1.08.43 A1.08.44 +A1.08.41 A1.08.37 A1.08.38 A1.08.42 A1.08.45 A1.09.38 A1.09.41 A1.09.43 A1.09.45 +A1.08.42 A1.08.37 A1.08.38 A1.08.39 A1.08.41 A1.08.43 A1.08.45 A1.08.46 A1.09.45 +A1.08.43 A1.08.38 A1.08.39 A1.08.40 A1.08.42 A1.08.44 A1.08.45 A1.08.46 A1.08.47 +A1.08.44 A1.07.41 A1.07.45 A1.07.48 A1.08.39 A1.08.40 A1.08.43 A1.08.46 A1.08.47 +A1.08.45 A1.08.41 A1.08.42 A1.08.43 A1.08.46 A1.08.48 A1.08.49 A1.09.45 A1.09.47 +A1.08.46 A1.08.42 A1.08.43 A1.08.44 A1.08.45 A1.08.47 A1.08.48 A1.08.49 A1.08.50 +A1.08.47 A1.07.45 A1.07.48 A1.07.51 A1.08.43 A1.08.44 A1.08.46 A1.08.49 A1.08.50 +A1.08.48 A1.08.45 A1.08.46 A1.08.49 A1.08.51 A1.09.45 A1.09.47 A1.09.49 A1.09.50 +A1.08.49 A1.08.45 A1.08.46 A1.08.47 A1.08.48 A1.08.50 A1.08.51 A1.08.52 A1.09.50 +A1.08.50 A1.07.48 A1.07.51 A1.07.53 A1.08.46 A1.08.47 A1.08.49 A1.08.51 A1.08.52 +A1.08.51 A1.08.48 A1.08.49 A1.08.50 A1.08.52 A1.08.53 A1.08.54 A1.08.55 A1.09.50 A1.09.53 +A1.08.52 A1.07.51 A1.07.53 A1.07.56 A1.08.49 A1.08.50 A1.08.51 A1.08.54 A1.08.55 A1.08.56 +A1.08.53 A1.08.51 A1.08.54 A1.08.57 A1.09.50 A1.09.53 A1.09.55 A1.09.57 +A1.08.54 A1.08.51 A1.08.52 A1.08.53 A1.08.55 A1.08.57 A1.08.58 A1.09.57 +A1.08.55 A1.08.51 A1.08.52 A1.08.54 A1.08.56 A1.08.57 A1.08.58 A1.08.59 +A1.08.56 A1.07.53 A1.07.56 A1.07.59 A1.08.52 A1.08.55 A1.08.58 A1.08.59 +A1.08.57 A1.08.53 A1.08.54 A1.08.55 A1.08.58 A1.08.60 A1.08.61 A1.09.57 A1.09.59 +A1.08.58 A1.08.54 A1.08.55 A1.08.56 A1.08.57 A1.08.59 A1.08.60 A1.08.61 A1.08.62 +A1.08.59 A1.07.56 A1.07.59 A1.07.62 A1.08.55 A1.08.56 A1.08.58 A1.08.61 A1.08.62 +A1.08.60 A1.08.57 A1.08.58 A1.08.61 A1.09.57 A1.09.59 A1.09.62 +A1.08.61 A1.08.57 A1.08.58 A1.08.59 A1.08.60 A1.08.62 A1.09.62 +A1.08.62 A1.07.59 A1.07.62 A1.08.58 A1.08.59 A1.08.61 +A1.09.00 A1.09.04 A1.09.06 A1.09.08 A1.09.12 +A1.09.01 A1.09.03 A1.09.05 A1.09.11 +A1.09.02 A1.08.08 A1.09.05 A1.09.13 +A1.09.03 A1.09.01 A1.09.07 A1.09.09 A1.09.11 +A1.09.04 A1.09.00 A1.09.08 A1.09.10 +A1.09.05 A1.09.01 A1.09.02 A1.09.11 A1.09.13 +A1.09.06 A1.09.00 A1.09.12 A1.09.17 A1.10.06 A1.10.12 +A1.09.07 A1.09.03 A1.09.09 A1.09.10 A1.09.14 +A1.09.08 A1.09.00 A1.09.04 A1.09.10 A1.09.12 A1.09.15 +A1.09.09 A1.09.03 A1.09.07 A1.09.11 A1.09.14 A1.09.16 +A1.09.10 A1.09.04 A1.09.07 A1.09.08 A1.09.12 A1.09.14 A1.09.15 A1.09.18 +A1.09.11 A1.09.01 A1.09.03 A1.09.05 A1.09.09 A1.09.13 A1.09.14 A1.09.16 A1.09.19 +A1.09.12 A1.09.00 A1.09.06 A1.09.08 A1.09.10 A1.09.15 A1.09.17 A1.09.20 A1.10.12 +A1.09.13 A1.08.07 A1.08.08 A1.08.17 A1.09.02 A1.09.05 A1.09.11 A1.09.16 A1.09.19 A1.09.21 +A1.09.14 A1.09.07 A1.09.09 A1.09.10 A1.09.11 A1.09.15 A1.09.16 A1.09.18 A1.09.22 +A1.09.15 A1.09.08 A1.09.10 A1.09.12 A1.09.14 A1.09.17 A1.09.18 A1.09.20 A1.09.23 +A1.09.16 A1.09.09 A1.09.11 A1.09.13 A1.09.14 A1.09.18 A1.09.19 A1.09.22 A1.09.24 +A1.09.17 A1.09.06 A1.09.12 A1.09.15 A1.09.20 A1.09.25 A1.10.12 A1.10.17 A1.10.21 +A1.09.18 A1.09.10 A1.09.14 A1.09.15 A1.09.16 A1.09.20 A1.09.22 A1.09.23 A1.09.27 +A1.09.19 A1.08.17 A1.09.11 A1.09.13 A1.09.16 A1.09.21 A1.09.22 A1.09.24 A1.09.26 +A1.09.20 A1.09.12 A1.09.15 A1.09.17 A1.09.18 A1.09.23 A1.09.25 A1.09.28 A1.10.21 +A1.09.21 A1.08.17 A1.08.18 A1.08.23 A1.08.28 A1.09.13 A1.09.19 A1.09.24 A1.09.26 +A1.09.22 A1.09.14 A1.09.16 A1.09.18 A1.09.19 A1.09.23 A1.09.24 A1.09.27 A1.09.29 +A1.09.23 A1.09.15 A1.09.18 A1.09.20 A1.09.22 A1.09.25 A1.09.27 A1.09.28 A1.09.30 +A1.09.24 A1.09.16 A1.09.19 A1.09.21 A1.09.22 A1.09.26 A1.09.27 A1.09.29 A1.09.31 +A1.09.25 A1.09.17 A1.09.20 A1.09.23 A1.09.28 A1.09.32 A1.10.21 A1.10.24 A1.10.28 +A1.09.26 A1.08.23 A1.08.28 A1.09.19 A1.09.21 A1.09.24 A1.09.29 A1.09.31 A1.09.33 +A1.09.27 A1.09.18 A1.09.22 A1.09.23 A1.09.24 A1.09.28 A1.09.29 A1.09.30 A1.09.34 +A1.09.28 A1.09.20 A1.09.23 A1.09.25 A1.09.27 A1.09.30 A1.09.32 A1.09.35 A1.10.28 +A1.09.29 A1.09.22 A1.09.24 A1.09.26 A1.09.27 A1.09.30 A1.09.31 A1.09.34 A1.09.36 +A1.09.30 A1.09.23 A1.09.27 A1.09.28 A1.09.29 A1.09.32 A1.09.34 A1.09.35 A1.09.37 +A1.09.31 A1.08.28 A1.09.24 A1.09.26 A1.09.29 A1.09.33 A1.09.34 A1.09.36 A1.09.38 +A1.09.32 A1.09.25 A1.09.28 A1.09.30 A1.09.35 A1.10.28 A1.10.31 A1.10.34 A1.10.36 +A1.09.33 A1.08.28 A1.08.29 A1.08.33 A1.08.37 A1.09.26 A1.09.31 A1.09.36 A1.09.38 +A1.09.34 A1.09.27 A1.09.29 A1.09.30 A1.09.31 A1.09.35 A1.09.36 A1.09.37 A1.09.39 +A1.09.35 A1.09.28 A1.09.30 A1.09.32 A1.09.34 A1.09.37 A1.09.40 A1.10.34 A1.10.36 +A1.09.36 A1.09.29 A1.09.31 A1.09.33 A1.09.34 A1.09.37 A1.09.38 A1.09.39 A1.09.41 +A1.09.37 A1.09.30 A1.09.34 A1.09.35 A1.09.36 A1.09.39 A1.09.40 A1.09.42 A1.10.36 +A1.09.38 A1.08.33 A1.08.37 A1.08.41 A1.09.31 A1.09.33 A1.09.36 A1.09.39 A1.09.41 +A1.09.39 A1.09.34 A1.09.36 A1.09.37 A1.09.38 A1.09.40 A1.09.41 A1.09.42 A1.09.43 +A1.09.40 A1.09.35 A1.09.37 A1.09.39 A1.09.42 A1.09.44 A1.10.36 A1.10.40 A1.10.43 +A1.09.41 A1.08.37 A1.08.41 A1.09.36 A1.09.38 A1.09.39 A1.09.42 A1.09.43 A1.09.45 +A1.09.42 A1.09.37 A1.09.39 A1.09.40 A1.09.41 A1.09.43 A1.09.44 A1.09.46 A1.10.43 +A1.09.43 A1.08.41 A1.09.39 A1.09.41 A1.09.42 A1.09.44 A1.09.45 A1.09.46 A1.09.47 +A1.09.44 A1.09.40 A1.09.42 A1.09.43 A1.09.46 A1.09.48 A1.10.43 A1.10.45 A1.10.47 +A1.09.45 A1.08.41 A1.08.42 A1.08.45 A1.08.48 A1.09.41 A1.09.43 A1.09.46 A1.09.47 +A1.09.46 A1.09.42 A1.09.43 A1.09.44 A1.09.45 A1.09.47 A1.09.48 A1.09.49 A1.10.47 +A1.09.47 A1.08.45 A1.08.48 A1.09.43 A1.09.45 A1.09.46 A1.09.48 A1.09.49 A1.09.50 +A1.09.48 A1.09.44 A1.09.46 A1.09.47 A1.09.49 A1.09.51 A1.10.47 A1.10.49 A1.10.51 +A1.09.49 A1.08.48 A1.09.46 A1.09.47 A1.09.48 A1.09.50 A1.09.51 A1.09.52 A1.10.51 +A1.09.50 A1.08.48 A1.08.49 A1.08.51 A1.08.53 A1.09.47 A1.09.49 A1.09.51 A1.09.52 A1.09.53 +A1.09.51 A1.09.48 A1.09.49 A1.09.50 A1.09.52 A1.09.54 A1.09.56 A1.10.51 A1.10.52 A1.10.53 A1.10.55 +A1.09.52 A1.09.49 A1.09.50 A1.09.51 A1.09.53 A1.09.54 A1.09.55 +A1.09.53 A1.08.51 A1.08.53 A1.09.50 A1.09.52 A1.09.54 A1.09.55 A1.09.57 +A1.09.54 A1.09.51 A1.09.52 A1.09.53 A1.09.55 A1.09.56 A1.09.58 A1.10.55 +A1.09.55 A1.08.53 A1.09.52 A1.09.53 A1.09.54 A1.09.56 A1.09.57 A1.09.58 A1.09.59 +A1.09.56 A1.09.51 A1.09.54 A1.09.55 A1.09.58 A1.09.60 A1.10.55 A1.10.57 A1.10.59 +A1.09.57 A1.08.53 A1.08.54 A1.08.57 A1.08.60 A1.09.53 A1.09.55 A1.09.58 A1.09.59 +A1.09.58 A1.09.54 A1.09.55 A1.09.56 A1.09.57 A1.09.59 A1.09.60 A1.09.61 A1.10.59 +A1.09.59 A1.08.57 A1.08.60 A1.09.55 A1.09.57 A1.09.58 A1.09.60 A1.09.61 A1.09.62 +A1.09.60 A1.09.56 A1.09.58 A1.09.59 A1.09.61 A1.10.59 A1.10.61 +A1.09.61 A1.09.58 A1.09.59 A1.09.60 A1.09.62 A1.10.59 A1.10.61 +A1.09.62 A1.08.60 A1.08.61 A1.09.59 A1.09.61 +A1.10.00 A1.10.03 A1.10.06 +A1.10.01 A1.10.02 A1.10.04 A1.10.10 A1.10.14 +A1.10.02 A1.10.01 A1.10.07 A1.10.10 +A1.10.03 A1.10.00 A1.10.06 A1.10.09 A1.10.13 +A1.10.04 A1.10.01 A1.10.05 A1.10.10 A1.10.14 A1.11.02 +A1.10.05 A1.10.04 A1.10.14 A1.11.02 A1.11.08 +A1.10.06 A1.09.06 A1.10.00 A1.10.03 A1.10.12 A1.10.13 A1.10.17 +A1.10.07 A1.10.02 A1.10.10 A1.10.11 A1.10.15 +A1.10.08 A1.10.09 A1.10.11 +A1.10.09 A1.10.03 A1.10.08 A1.10.11 A1.10.13 A1.10.16 +A1.10.10 A1.10.01 A1.10.02 A1.10.04 A1.10.07 A1.10.11 A1.10.14 A1.10.15 A1.10.18 +A1.10.11 A1.10.07 A1.10.08 A1.10.09 A1.10.10 A1.10.13 A1.10.15 A1.10.16 A1.10.19 +A1.10.12 A1.09.06 A1.09.12 A1.09.17 A1.10.06 A1.10.13 A1.10.17 A1.10.21 +A1.10.13 A1.10.03 A1.10.06 A1.10.09 A1.10.11 A1.10.12 A1.10.16 A1.10.17 A1.10.20 +A1.10.14 A1.10.01 A1.10.04 A1.10.05 A1.10.10 A1.10.15 A1.10.18 A1.11.08 A1.11.10 A1.11.15 A1.11.20 +A1.10.15 A1.10.07 A1.10.10 A1.10.11 A1.10.14 A1.10.16 A1.10.18 A1.10.19 A1.10.22 +A1.10.16 A1.10.09 A1.10.11 A1.10.13 A1.10.15 A1.10.17 A1.10.19 A1.10.20 A1.10.23 +A1.10.17 A1.09.17 A1.10.06 A1.10.12 A1.10.13 A1.10.16 A1.10.20 A1.10.21 A1.10.24 +A1.10.18 A1.10.10 A1.10.14 A1.10.15 A1.10.19 A1.10.22 A1.10.25 A1.11.15 A1.11.20 +A1.10.19 A1.10.11 A1.10.15 A1.10.16 A1.10.18 A1.10.20 A1.10.22 A1.10.23 A1.10.26 +A1.10.20 A1.10.13 A1.10.16 A1.10.17 A1.10.19 A1.10.21 A1.10.23 A1.10.24 A1.10.27 +A1.10.21 A1.09.17 A1.09.20 A1.09.25 A1.10.12 A1.10.17 A1.10.20 A1.10.24 A1.10.28 +A1.10.22 A1.10.15 A1.10.18 A1.10.19 A1.10.23 A1.10.25 A1.10.26 A1.10.29 A1.11.20 +A1.10.23 A1.10.16 A1.10.19 A1.10.20 A1.10.22 A1.10.24 A1.10.26 A1.10.27 A1.10.30 +A1.10.24 A1.09.25 A1.10.17 A1.10.20 A1.10.21 A1.10.23 A1.10.27 A1.10.28 A1.10.31 +A1.10.25 A1.10.18 A1.10.22 A1.10.26 A1.10.29 A1.11.20 A1.11.21 A1.11.25 A1.11.29 +A1.10.26 A1.10.19 A1.10.22 A1.10.23 A1.10.25 A1.10.27 A1.10.29 A1.10.30 A1.10.32 +A1.10.27 A1.10.20 A1.10.23 A1.10.24 A1.10.26 A1.10.28 A1.10.30 A1.10.31 A1.10.33 +A1.10.28 A1.09.25 A1.09.28 A1.09.32 A1.10.21 A1.10.24 A1.10.27 A1.10.31 A1.10.34 +A1.10.29 A1.10.22 A1.10.25 A1.10.26 A1.10.30 A1.10.32 A1.11.25 A1.11.29 A1.11.33 +A1.10.30 A1.10.23 A1.10.26 A1.10.27 A1.10.29 A1.10.31 A1.10.32 A1.10.33 A1.10.35 +A1.10.31 A1.09.32 A1.10.24 A1.10.27 A1.10.28 A1.10.30 A1.10.33 A1.10.34 A1.10.37 +A1.10.32 A1.10.26 A1.10.29 A1.10.30 A1.10.33 A1.10.35 A1.10.38 A1.11.29 A1.11.33 +A1.10.33 A1.10.27 A1.10.30 A1.10.31 A1.10.32 A1.10.34 A1.10.35 A1.10.37 A1.10.39 +A1.10.34 A1.09.32 A1.09.35 A1.10.28 A1.10.31 A1.10.33 A1.10.36 A1.10.37 A1.10.40 +A1.10.35 A1.10.30 A1.10.32 A1.10.33 A1.10.37 A1.10.38 A1.10.39 A1.10.41 A1.11.33 +A1.10.36 A1.09.32 A1.09.35 A1.09.37 A1.09.40 A1.10.34 A1.10.37 A1.10.40 A1.10.43 +A1.10.37 A1.10.31 A1.10.33 A1.10.34 A1.10.35 A1.10.36 A1.10.39 A1.10.40 A1.10.42 +A1.10.38 A1.10.32 A1.10.35 A1.10.39 A1.10.41 A1.11.33 A1.11.34 A1.11.37 A1.11.40 +A1.10.39 A1.10.33 A1.10.35 A1.10.37 A1.10.38 A1.10.40 A1.10.41 A1.10.42 A1.10.44 +A1.10.40 A1.09.40 A1.10.34 A1.10.36 A1.10.37 A1.10.39 A1.10.42 A1.10.43 A1.10.45 +A1.10.41 A1.10.35 A1.10.38 A1.10.39 A1.10.42 A1.10.44 A1.11.37 A1.11.40 A1.11.43 +A1.10.42 A1.10.37 A1.10.39 A1.10.40 A1.10.41 A1.10.43 A1.10.44 A1.10.45 A1.10.46 +A1.10.43 A1.09.40 A1.09.42 A1.09.44 A1.10.36 A1.10.40 A1.10.42 A1.10.45 A1.10.47 +A1.10.44 A1.10.39 A1.10.41 A1.10.42 A1.10.45 A1.10.46 A1.10.48 A1.11.40 A1.11.43 +A1.10.45 A1.09.44 A1.10.40 A1.10.42 A1.10.43 A1.10.44 A1.10.46 A1.10.47 A1.10.49 +A1.10.46 A1.10.42 A1.10.44 A1.10.45 A1.10.47 A1.10.48 A1.10.49 A1.10.50 A1.11.43 +A1.10.47 A1.09.44 A1.09.46 A1.09.48 A1.10.43 A1.10.45 A1.10.46 A1.10.49 A1.10.51 +A1.10.48 A1.10.44 A1.10.46 A1.10.49 A1.10.50 A1.11.43 A1.11.44 A1.11.46 A1.11.48 +A1.10.49 A1.09.48 A1.10.45 A1.10.46 A1.10.47 A1.10.48 A1.10.50 A1.10.51 A1.10.52 +A1.10.50 A1.10.46 A1.10.48 A1.10.49 A1.10.51 A1.10.52 A1.11.46 A1.11.48 A1.11.50 +A1.10.51 A1.09.48 A1.09.49 A1.09.51 A1.10.47 A1.10.49 A1.10.50 A1.10.52 A1.10.53 +A1.10.52 A1.09.51 A1.10.49 A1.10.50 A1.10.51 A1.10.53 A1.10.54 A1.10.56 A1.11.48 A1.11.50 A1.11.54 +A1.10.53 A1.09.51 A1.10.51 A1.10.52 A1.10.54 A1.10.55 A1.10.57 +A1.10.54 A1.10.52 A1.10.53 A1.10.55 A1.10.56 A1.10.57 A1.10.58 A1.11.54 +A1.10.55 A1.09.51 A1.09.54 A1.09.56 A1.10.53 A1.10.54 A1.10.57 A1.10.59 +A1.10.56 A1.10.52 A1.10.54 A1.10.57 A1.10.58 A1.10.60 A1.11.54 A1.11.55 A1.11.58 +A1.10.57 A1.09.56 A1.10.53 A1.10.54 A1.10.55 A1.10.56 A1.10.58 A1.10.59 A1.10.61 +A1.10.58 A1.10.54 A1.10.56 A1.10.57 A1.10.59 A1.10.60 A1.10.61 A1.10.62 A1.11.58 +A1.10.59 A1.09.56 A1.09.58 A1.09.60 A1.09.61 A1.10.55 A1.10.57 A1.10.58 A1.10.61 +A1.10.60 A1.10.56 A1.10.58 A1.10.61 A1.10.62 A1.11.58 A1.11.59 A1.11.61 +A1.10.61 A1.09.60 A1.09.61 A1.10.57 A1.10.58 A1.10.59 A1.10.60 A1.10.62 +A1.10.62 A1.10.58 A1.10.60 A1.10.61 A1.11.61 +A1.11.00 A1.11.05 A1.11.07 A1.12.00 A1.12.08 +A1.11.01 A1.11.02 A1.11.03 A1.11.10 +A1.11.02 A1.10.04 A1.10.05 A1.11.01 A1.11.08 A1.11.10 +A1.11.03 A1.11.01 A1.11.04 A1.11.10 A1.11.11 +A1.11.04 A1.11.03 A1.11.06 A1.11.11 A1.11.12 +A1.11.05 A1.11.00 A1.11.07 A1.11.09 A1.11.12 A1.11.13 A1.11.14 +A1.11.06 A1.11.04 A1.11.09 A1.11.11 A1.11.12 +A1.11.07 A1.11.00 A1.11.05 A1.11.13 A1.11.14 A1.12.00 A1.12.08 A1.12.14 +A1.11.08 A1.10.05 A1.10.14 A1.11.02 A1.11.10 A1.11.15 +A1.11.09 A1.11.05 A1.11.06 A1.11.12 A1.11.13 +A1.11.10 A1.10.14 A1.11.01 A1.11.02 A1.11.03 A1.11.08 A1.11.11 A1.11.15 A1.11.16 +A1.11.11 A1.11.03 A1.11.04 A1.11.06 A1.11.10 A1.11.12 A1.11.15 A1.11.16 A1.11.17 +A1.11.12 A1.11.04 A1.11.05 A1.11.06 A1.11.09 A1.11.11 A1.11.13 A1.11.16 A1.11.17 A1.11.18 +A1.11.13 A1.11.05 A1.11.07 A1.11.09 A1.11.12 A1.11.14 A1.11.17 A1.11.18 A1.11.19 +A1.11.14 A1.11.05 A1.11.07 A1.11.13 A1.11.18 A1.11.19 A1.12.08 A1.12.14 A1.12.19 +A1.11.15 A1.10.14 A1.10.18 A1.11.08 A1.11.10 A1.11.11 A1.11.16 A1.11.20 A1.11.21 +A1.11.16 A1.11.10 A1.11.11 A1.11.12 A1.11.15 A1.11.17 A1.11.20 A1.11.21 A1.11.22 +A1.11.17 A1.11.11 A1.11.12 A1.11.13 A1.11.16 A1.11.18 A1.11.21 A1.11.22 A1.11.23 +A1.11.18 A1.11.12 A1.11.13 A1.11.14 A1.11.17 A1.11.19 A1.11.22 A1.11.23 A1.11.24 +A1.11.19 A1.11.13 A1.11.14 A1.11.18 A1.11.23 A1.11.24 A1.12.14 A1.12.19 A1.12.24 +A1.11.20 A1.10.14 A1.10.18 A1.10.22 A1.10.25 A1.11.15 A1.11.16 A1.11.21 A1.11.25 +A1.11.21 A1.10.25 A1.11.15 A1.11.16 A1.11.17 A1.11.20 A1.11.22 A1.11.25 A1.11.26 +A1.11.22 A1.11.16 A1.11.17 A1.11.18 A1.11.21 A1.11.23 A1.11.25 A1.11.26 A1.11.27 +A1.11.23 A1.11.17 A1.11.18 A1.11.19 A1.11.22 A1.11.24 A1.11.26 A1.11.27 A1.11.28 +A1.11.24 A1.11.18 A1.11.19 A1.11.23 A1.11.27 A1.11.28 A1.12.19 A1.12.24 A1.12.28 +A1.11.25 A1.10.25 A1.10.29 A1.11.20 A1.11.21 A1.11.22 A1.11.26 A1.11.29 A1.11.30 +A1.11.26 A1.11.21 A1.11.22 A1.11.23 A1.11.25 A1.11.27 A1.11.29 A1.11.30 A1.11.31 +A1.11.27 A1.11.22 A1.11.23 A1.11.24 A1.11.26 A1.11.28 A1.11.30 A1.11.31 A1.11.32 +A1.11.28 A1.11.23 A1.11.24 A1.11.27 A1.11.31 A1.11.32 A1.12.24 A1.12.28 A1.12.32 +A1.11.29 A1.10.25 A1.10.29 A1.10.32 A1.11.25 A1.11.26 A1.11.30 A1.11.33 A1.11.34 +A1.11.30 A1.11.25 A1.11.26 A1.11.27 A1.11.29 A1.11.31 A1.11.33 A1.11.34 A1.11.35 +A1.11.31 A1.11.26 A1.11.27 A1.11.28 A1.11.30 A1.11.32 A1.11.34 A1.11.35 A1.11.36 +A1.11.32 A1.11.27 A1.11.28 A1.11.31 A1.11.35 A1.11.36 A1.12.28 A1.12.32 A1.12.36 +A1.11.33 A1.10.29 A1.10.32 A1.10.35 A1.10.38 A1.11.29 A1.11.30 A1.11.34 A1.11.37 +A1.11.34 A1.10.38 A1.11.29 A1.11.30 A1.11.31 A1.11.33 A1.11.35 A1.11.37 A1.11.38 +A1.11.35 A1.11.30 A1.11.31 A1.11.32 A1.11.34 A1.11.36 A1.11.37 A1.11.38 A1.11.39 +A1.11.36 A1.11.31 A1.11.32 A1.11.35 A1.11.38 A1.11.39 A1.12.32 A1.12.36 A1.12.39 +A1.11.37 A1.10.38 A1.10.41 A1.11.33 A1.11.34 A1.11.35 A1.11.38 A1.11.40 A1.11.41 +A1.11.38 A1.11.34 A1.11.35 A1.11.36 A1.11.37 A1.11.39 A1.11.40 A1.11.41 A1.11.42 +A1.11.39 A1.11.35 A1.11.36 A1.11.38 A1.11.41 A1.11.42 A1.12.36 A1.12.39 A1.12.42 +A1.11.40 A1.10.38 A1.10.41 A1.10.44 A1.11.37 A1.11.38 A1.11.41 A1.11.43 A1.11.44 +A1.11.41 A1.11.37 A1.11.38 A1.11.39 A1.11.40 A1.11.42 A1.11.43 A1.11.44 A1.11.45 +A1.11.42 A1.11.38 A1.11.39 A1.11.41 A1.11.44 A1.11.45 A1.12.39 A1.12.42 A1.12.45 +A1.11.43 A1.10.41 A1.10.44 A1.10.46 A1.10.48 A1.11.40 A1.11.41 A1.11.44 A1.11.46 +A1.11.44 A1.10.48 A1.11.40 A1.11.41 A1.11.42 A1.11.43 A1.11.45 A1.11.46 A1.11.47 +A1.11.45 A1.11.41 A1.11.42 A1.11.44 A1.11.46 A1.11.47 A1.12.42 A1.12.45 A1.12.47 +A1.11.46 A1.10.48 A1.10.50 A1.11.43 A1.11.44 A1.11.45 A1.11.47 A1.11.48 A1.11.49 +A1.11.47 A1.11.44 A1.11.45 A1.11.46 A1.11.48 A1.11.49 A1.12.45 A1.12.47 A1.12.49 +A1.11.48 A1.10.48 A1.10.50 A1.10.52 A1.11.46 A1.11.47 A1.11.49 A1.11.50 A1.11.51 A1.11.52 +A1.11.49 A1.11.46 A1.11.47 A1.11.48 A1.11.51 A1.11.52 A1.11.53 A1.12.47 A1.12.49 A1.12.53 +A1.11.50 A1.10.50 A1.10.52 A1.11.48 A1.11.51 A1.11.54 A1.11.55 +A1.11.51 A1.11.48 A1.11.49 A1.11.50 A1.11.52 A1.11.54 A1.11.55 A1.11.56 +A1.11.52 A1.11.48 A1.11.49 A1.11.51 A1.11.53 A1.11.55 A1.11.56 A1.11.57 +A1.11.53 A1.11.49 A1.11.52 A1.11.56 A1.11.57 A1.12.49 A1.12.53 A1.12.57 +A1.11.54 A1.10.52 A1.10.54 A1.10.56 A1.11.50 A1.11.51 A1.11.55 A1.11.58 +A1.11.55 A1.10.56 A1.11.50 A1.11.51 A1.11.52 A1.11.54 A1.11.56 A1.11.58 A1.11.59 +A1.11.56 A1.11.51 A1.11.52 A1.11.53 A1.11.55 A1.11.57 A1.11.58 A1.11.59 A1.11.60 +A1.11.57 A1.11.52 A1.11.53 A1.11.56 A1.11.59 A1.11.60 A1.12.53 A1.12.57 A1.12.60 +A1.11.58 A1.10.56 A1.10.58 A1.10.60 A1.11.54 A1.11.55 A1.11.56 A1.11.59 A1.11.61 +A1.11.59 A1.10.60 A1.11.55 A1.11.56 A1.11.57 A1.11.58 A1.11.60 A1.11.61 A1.11.62 +A1.11.60 A1.11.56 A1.11.57 A1.11.59 A1.11.61 A1.11.62 A1.12.57 A1.12.60 A1.12.62 +A1.11.61 A1.10.60 A1.10.62 A1.11.58 A1.11.59 A1.11.60 A1.11.62 +A1.11.62 A1.11.59 A1.11.60 A1.11.61 A1.12.60 A1.12.62 +A1.12.00 A1.11.00 A1.11.07 A1.12.06 A1.12.08 +A1.12.01 A1.12.02 A1.12.04 A1.12.10 +A1.12.02 A1.12.01 A1.12.03 A1.12.10 A1.12.11 +A1.12.03 A1.12.02 A1.12.05 A1.12.10 A1.12.11 +A1.12.04 A1.12.01 A1.12.10 A1.12.15 A1.13.02 A1.13.09 A1.13.13 +A1.12.05 A1.12.03 A1.12.07 A1.12.11 A1.12.12 +A1.12.06 A1.12.00 A1.12.08 A1.12.09 A1.12.12 A1.12.13 A1.12.14 +A1.12.07 A1.12.05 A1.12.09 A1.12.11 A1.12.12 +A1.12.08 A1.11.00 A1.11.07 A1.11.14 A1.12.00 A1.12.06 A1.12.13 A1.12.14 +A1.12.09 A1.12.06 A1.12.07 A1.12.12 A1.12.13 +A1.12.10 A1.12.01 A1.12.02 A1.12.03 A1.12.04 A1.12.11 A1.12.15 A1.12.16 A1.13.13 +A1.12.11 A1.12.02 A1.12.03 A1.12.05 A1.12.07 A1.12.10 A1.12.12 A1.12.15 A1.12.16 A1.12.17 +A1.12.12 A1.12.05 A1.12.06 A1.12.07 A1.12.09 A1.12.11 A1.12.13 A1.12.16 A1.12.17 A1.12.18 +A1.12.13 A1.12.06 A1.12.08 A1.12.09 A1.12.12 A1.12.14 A1.12.17 A1.12.18 A1.12.19 +A1.12.14 A1.11.07 A1.11.14 A1.11.19 A1.12.06 A1.12.08 A1.12.13 A1.12.18 A1.12.19 +A1.12.15 A1.12.04 A1.12.10 A1.12.11 A1.12.16 A1.12.20 A1.12.21 A1.13.13 A1.13.17 +A1.12.16 A1.12.10 A1.12.11 A1.12.12 A1.12.15 A1.12.17 A1.12.20 A1.12.21 A1.12.22 +A1.12.17 A1.12.11 A1.12.12 A1.12.13 A1.12.16 A1.12.18 A1.12.21 A1.12.22 A1.12.23 +A1.12.18 A1.12.12 A1.12.13 A1.12.14 A1.12.17 A1.12.19 A1.12.22 A1.12.23 A1.12.24 +A1.12.19 A1.11.14 A1.11.19 A1.11.24 A1.12.13 A1.12.14 A1.12.18 A1.12.23 A1.12.24 +A1.12.20 A1.12.15 A1.12.16 A1.12.21 A1.12.25 A1.13.13 A1.13.17 A1.13.21 A1.13.24 +A1.12.21 A1.12.15 A1.12.16 A1.12.17 A1.12.20 A1.12.22 A1.12.25 A1.12.26 A1.13.24 +A1.12.22 A1.12.16 A1.12.17 A1.12.18 A1.12.21 A1.12.23 A1.12.25 A1.12.26 A1.12.27 +A1.12.23 A1.12.17 A1.12.18 A1.12.19 A1.12.22 A1.12.24 A1.12.26 A1.12.27 A1.12.28 +A1.12.24 A1.11.19 A1.11.24 A1.11.28 A1.12.18 A1.12.19 A1.12.23 A1.12.27 A1.12.28 +A1.12.25 A1.12.20 A1.12.21 A1.12.22 A1.12.26 A1.12.29 A1.12.30 A1.13.24 A1.13.28 +A1.12.26 A1.12.21 A1.12.22 A1.12.23 A1.12.25 A1.12.27 A1.12.29 A1.12.30 A1.12.31 +A1.12.27 A1.12.22 A1.12.23 A1.12.24 A1.12.26 A1.12.28 A1.12.30 A1.12.31 A1.12.32 +A1.12.28 A1.11.24 A1.11.28 A1.11.32 A1.12.23 A1.12.24 A1.12.27 A1.12.31 A1.12.32 +A1.12.29 A1.12.25 A1.12.26 A1.12.30 A1.12.33 A1.12.34 A1.13.24 A1.13.28 A1.13.31 +A1.12.30 A1.12.25 A1.12.26 A1.12.27 A1.12.29 A1.12.31 A1.12.33 A1.12.34 A1.12.35 +A1.12.31 A1.12.26 A1.12.27 A1.12.28 A1.12.30 A1.12.32 A1.12.34 A1.12.35 A1.12.36 +A1.12.32 A1.11.28 A1.11.32 A1.11.36 A1.12.27 A1.12.28 A1.12.31 A1.12.35 A1.12.36 +A1.12.33 A1.12.29 A1.12.30 A1.12.34 A1.12.37 A1.13.28 A1.13.31 A1.13.34 A1.13.37 +A1.12.34 A1.12.29 A1.12.30 A1.12.31 A1.12.33 A1.12.35 A1.12.37 A1.12.38 A1.13.37 +A1.12.35 A1.12.30 A1.12.31 A1.12.32 A1.12.34 A1.12.36 A1.12.37 A1.12.38 A1.12.39 +A1.12.36 A1.11.32 A1.11.36 A1.11.39 A1.12.31 A1.12.32 A1.12.35 A1.12.38 A1.12.39 +A1.12.37 A1.12.33 A1.12.34 A1.12.35 A1.12.38 A1.12.40 A1.12.41 A1.13.37 A1.13.40 +A1.12.38 A1.12.34 A1.12.35 A1.12.36 A1.12.37 A1.12.39 A1.12.40 A1.12.41 A1.12.42 +A1.12.39 A1.11.36 A1.11.39 A1.11.42 A1.12.35 A1.12.36 A1.12.38 A1.12.41 A1.12.42 +A1.12.40 A1.12.37 A1.12.38 A1.12.41 A1.12.43 A1.12.44 A1.13.37 A1.13.40 A1.13.43 +A1.12.41 A1.12.37 A1.12.38 A1.12.39 A1.12.40 A1.12.42 A1.12.43 A1.12.44 A1.12.45 +A1.12.42 A1.11.39 A1.11.42 A1.11.45 A1.12.38 A1.12.39 A1.12.41 A1.12.44 A1.12.45 +A1.12.43 A1.12.40 A1.12.41 A1.12.44 A1.12.46 A1.13.40 A1.13.43 A1.13.45 A1.13.47 +A1.12.44 A1.12.40 A1.12.41 A1.12.42 A1.12.43 A1.12.45 A1.12.46 A1.12.47 A1.13.47 +A1.12.45 A1.11.42 A1.11.45 A1.11.47 A1.12.41 A1.12.42 A1.12.44 A1.12.46 A1.12.47 +A1.12.46 A1.12.43 A1.12.44 A1.12.45 A1.12.47 A1.12.48 A1.12.49 A1.13.47 A1.13.49 +A1.12.47 A1.11.45 A1.11.47 A1.11.49 A1.12.44 A1.12.45 A1.12.46 A1.12.48 A1.12.49 +A1.12.48 A1.12.46 A1.12.47 A1.12.49 A1.12.50 A1.12.51 A1.12.52 A1.13.47 A1.13.49 A1.13.51 +A1.12.49 A1.11.47 A1.11.49 A1.11.53 A1.12.46 A1.12.47 A1.12.48 A1.12.51 A1.12.52 A1.12.53 +A1.12.50 A1.12.48 A1.12.51 A1.12.54 A1.12.55 A1.13.49 A1.13.51 +A1.12.51 A1.12.48 A1.12.49 A1.12.50 A1.12.52 A1.12.54 A1.12.55 A1.12.56 +A1.12.52 A1.12.48 A1.12.49 A1.12.51 A1.12.53 A1.12.55 A1.12.56 A1.12.57 +A1.12.53 A1.11.49 A1.11.53 A1.11.57 A1.12.49 A1.12.52 A1.12.56 A1.12.57 +A1.12.54 A1.12.50 A1.12.51 A1.12.55 A1.12.58 A1.13.51 A1.13.53 A1.13.55 +A1.12.55 A1.12.50 A1.12.51 A1.12.52 A1.12.54 A1.12.56 A1.12.58 A1.12.59 A1.13.55 +A1.12.56 A1.12.51 A1.12.52 A1.12.53 A1.12.55 A1.12.57 A1.12.58 A1.12.59 A1.12.60 +A1.12.57 A1.11.53 A1.11.57 A1.11.60 A1.12.52 A1.12.53 A1.12.56 A1.12.59 A1.12.60 +A1.12.58 A1.12.54 A1.12.55 A1.12.56 A1.12.59 A1.12.61 A1.13.55 A1.13.57 A1.13.59 +A1.12.59 A1.12.55 A1.12.56 A1.12.57 A1.12.58 A1.12.60 A1.12.61 A1.12.62 A1.13.59 +A1.12.60 A1.11.57 A1.11.60 A1.11.62 A1.12.56 A1.12.57 A1.12.59 A1.12.61 A1.12.62 +A1.12.61 A1.12.58 A1.12.59 A1.12.60 A1.12.62 A1.13.59 A1.13.62 +A1.12.62 A1.11.60 A1.11.62 A1.12.59 A1.12.60 A1.12.61 A1.13.62 +A1.13.00 A1.13.02 A1.13.05 A1.13.09 +A1.13.01 A1.13.03 A1.13.06 A1.13.11 +A1.13.02 A1.12.04 A1.13.00 A1.13.09 A1.13.13 +A1.13.03 A1.13.01 A1.13.06 A1.13.07 A1.13.08 A1.13.11 +A1.13.04 A1.13.05 A1.13.07 A1.13.10 +A1.13.05 A1.13.00 A1.13.04 A1.13.09 A1.13.10 A1.13.14 +A1.13.06 A1.13.01 A1.13.03 A1.13.11 A1.13.12 A1.13.16 A1.14.06 +A1.13.07 A1.13.03 A1.13.04 A1.13.08 A1.13.10 +A1.13.08 A1.13.03 A1.13.07 A1.13.10 A1.13.11 A1.13.15 +A1.13.09 A1.12.04 A1.13.00 A1.13.02 A1.13.05 A1.13.10 A1.13.13 A1.13.14 A1.13.17 +A1.13.10 A1.13.04 A1.13.05 A1.13.07 A1.13.08 A1.13.09 A1.13.11 A1.13.14 A1.13.15 A1.13.18 +A1.13.11 A1.13.01 A1.13.03 A1.13.06 A1.13.08 A1.13.10 A1.13.12 A1.13.15 A1.13.16 A1.13.19 +A1.13.12 A1.13.06 A1.13.11 A1.13.16 A1.13.20 A1.14.06 A1.14.12 A1.14.17 +A1.13.13 A1.12.04 A1.12.10 A1.12.15 A1.12.20 A1.13.02 A1.13.09 A1.13.14 A1.13.17 +A1.13.14 A1.13.05 A1.13.09 A1.13.10 A1.13.13 A1.13.15 A1.13.17 A1.13.18 A1.13.21 +A1.13.15 A1.13.08 A1.13.10 A1.13.11 A1.13.14 A1.13.16 A1.13.18 A1.13.19 A1.13.22 +A1.13.16 A1.13.06 A1.13.11 A1.13.12 A1.13.15 A1.13.19 A1.13.20 A1.13.23 A1.14.17 +A1.13.17 A1.12.15 A1.12.20 A1.13.09 A1.13.13 A1.13.14 A1.13.18 A1.13.21 A1.13.24 +A1.13.18 A1.13.10 A1.13.14 A1.13.15 A1.13.17 A1.13.19 A1.13.21 A1.13.22 A1.13.25 +A1.13.19 A1.13.11 A1.13.15 A1.13.16 A1.13.18 A1.13.20 A1.13.22 A1.13.23 A1.13.26 +A1.13.20 A1.13.12 A1.13.16 A1.13.19 A1.13.23 A1.13.27 A1.14.17 A1.14.20 A1.14.25 +A1.13.21 A1.12.20 A1.13.14 A1.13.17 A1.13.18 A1.13.22 A1.13.24 A1.13.25 A1.13.28 +A1.13.22 A1.13.15 A1.13.18 A1.13.19 A1.13.21 A1.13.23 A1.13.25 A1.13.26 A1.13.29 +A1.13.23 A1.13.16 A1.13.19 A1.13.20 A1.13.22 A1.13.26 A1.13.27 A1.13.30 A1.14.25 +A1.13.24 A1.12.20 A1.12.21 A1.12.25 A1.12.29 A1.13.17 A1.13.21 A1.13.25 A1.13.28 +A1.13.25 A1.13.18 A1.13.21 A1.13.22 A1.13.24 A1.13.26 A1.13.28 A1.13.29 A1.13.31 +A1.13.26 A1.13.19 A1.13.22 A1.13.23 A1.13.25 A1.13.27 A1.13.29 A1.13.30 A1.13.32 +A1.13.27 A1.13.20 A1.13.23 A1.13.26 A1.13.30 A1.13.33 A1.14.25 A1.14.28 A1.14.32 +A1.13.28 A1.12.25 A1.12.29 A1.12.33 A1.13.21 A1.13.24 A1.13.25 A1.13.29 A1.13.31 +A1.13.29 A1.13.22 A1.13.25 A1.13.26 A1.13.28 A1.13.30 A1.13.31 A1.13.32 A1.13.34 +A1.13.30 A1.13.23 A1.13.26 A1.13.27 A1.13.29 A1.13.32 A1.13.33 A1.13.36 A1.14.32 +A1.13.31 A1.12.29 A1.12.33 A1.13.25 A1.13.28 A1.13.29 A1.13.32 A1.13.34 A1.13.37 +A1.13.32 A1.13.26 A1.13.29 A1.13.30 A1.13.31 A1.13.33 A1.13.34 A1.13.36 A1.13.38 +A1.13.33 A1.13.27 A1.13.30 A1.13.32 A1.13.35 A1.13.36 A1.13.39 A1.14.32 A1.14.35 +A1.13.34 A1.12.33 A1.13.29 A1.13.31 A1.13.32 A1.13.36 A1.13.37 A1.13.38 A1.13.40 +A1.13.35 A1.13.33 A1.13.36 A1.13.39 A1.13.42 A1.14.32 A1.14.35 A1.14.37 A1.14.40 +A1.13.36 A1.13.30 A1.13.32 A1.13.33 A1.13.34 A1.13.35 A1.13.38 A1.13.39 A1.13.41 +A1.13.37 A1.12.33 A1.12.34 A1.12.37 A1.12.40 A1.13.31 A1.13.34 A1.13.38 A1.13.40 +A1.13.38 A1.13.32 A1.13.34 A1.13.36 A1.13.37 A1.13.39 A1.13.40 A1.13.41 A1.13.43 +A1.13.39 A1.13.33 A1.13.35 A1.13.36 A1.13.38 A1.13.41 A1.13.42 A1.13.44 A1.14.40 +A1.13.40 A1.12.37 A1.12.40 A1.12.43 A1.13.34 A1.13.37 A1.13.38 A1.13.41 A1.13.43 +A1.13.41 A1.13.36 A1.13.38 A1.13.39 A1.13.40 A1.13.42 A1.13.43 A1.13.44 A1.13.45 +A1.13.42 A1.13.35 A1.13.39 A1.13.41 A1.13.44 A1.13.46 A1.14.40 A1.14.42 A1.14.44 +A1.13.43 A1.12.40 A1.12.43 A1.13.38 A1.13.40 A1.13.41 A1.13.44 A1.13.45 A1.13.47 +A1.13.44 A1.13.39 A1.13.41 A1.13.42 A1.13.43 A1.13.45 A1.13.46 A1.13.48 A1.14.44 +A1.13.45 A1.12.43 A1.13.41 A1.13.43 A1.13.44 A1.13.46 A1.13.47 A1.13.48 A1.13.49 +A1.13.46 A1.13.42 A1.13.44 A1.13.45 A1.13.48 A1.13.50 A1.14.44 A1.14.46 A1.14.48 +A1.13.47 A1.12.43 A1.12.44 A1.12.46 A1.12.48 A1.13.43 A1.13.45 A1.13.48 A1.13.49 +A1.13.48 A1.13.44 A1.13.45 A1.13.46 A1.13.47 A1.13.49 A1.13.50 A1.13.51 A1.14.48 +A1.13.49 A1.12.46 A1.12.48 A1.12.50 A1.13.45 A1.13.47 A1.13.48 A1.13.50 A1.13.51 +A1.13.50 A1.13.46 A1.13.48 A1.13.49 A1.13.51 A1.13.52 A1.14.48 A1.14.49 A1.14.51 +A1.13.51 A1.12.48 A1.12.50 A1.12.54 A1.13.48 A1.13.49 A1.13.50 A1.13.52 A1.13.53 A1.13.55 A1.14.51 +A1.13.52 A1.13.50 A1.13.51 A1.13.53 A1.13.54 A1.13.56 A1.14.51 +A1.13.53 A1.12.54 A1.13.51 A1.13.52 A1.13.54 A1.13.55 A1.13.56 A1.13.57 +A1.13.54 A1.13.52 A1.13.53 A1.13.56 A1.13.58 A1.14.51 A1.14.55 A1.14.57 +A1.13.55 A1.12.54 A1.12.55 A1.12.58 A1.13.51 A1.13.53 A1.13.56 A1.13.57 A1.13.59 +A1.13.56 A1.13.52 A1.13.53 A1.13.54 A1.13.55 A1.13.57 A1.13.58 A1.13.60 A1.14.57 +A1.13.57 A1.12.58 A1.13.53 A1.13.55 A1.13.56 A1.13.58 A1.13.59 A1.13.60 +A1.13.58 A1.13.54 A1.13.56 A1.13.57 A1.13.60 A1.13.61 A1.14.57 A1.14.59 A1.14.61 +A1.13.59 A1.12.58 A1.12.59 A1.12.61 A1.13.55 A1.13.57 A1.13.60 A1.13.62 +A1.13.60 A1.13.56 A1.13.57 A1.13.58 A1.13.59 A1.13.61 A1.13.62 A1.14.61 +A1.13.61 A1.13.58 A1.13.60 A1.13.62 A1.14.61 A1.14.62 +A1.13.62 A1.12.61 A1.12.62 A1.13.59 A1.13.60 A1.13.61 +A1.14.00 A1.14.02 A1.14.03 A1.14.11 +A1.14.01 A1.14.04 A1.14.06 A1.14.08 A1.14.12 +A1.14.02 A1.14.00 A1.14.05 A1.14.11 A1.14.13 +A1.14.03 A1.14.00 A1.14.07 A1.14.09 A1.14.11 +A1.14.04 A1.14.01 A1.14.08 A1.14.10 +A1.14.05 A1.14.02 A1.14.11 A1.14.13 A1.15.00 A1.15.08 +A1.14.06 A1.13.06 A1.13.12 A1.14.01 A1.14.12 A1.14.17 +A1.14.07 A1.14.03 A1.14.09 A1.14.10 A1.14.14 +A1.14.08 A1.14.01 A1.14.04 A1.14.10 A1.14.12 A1.14.15 +A1.14.09 A1.14.03 A1.14.07 A1.14.11 A1.14.14 A1.14.16 +A1.14.10 A1.14.04 A1.14.07 A1.14.08 A1.14.12 A1.14.14 A1.14.15 A1.14.18 +A1.14.11 A1.14.00 A1.14.02 A1.14.03 A1.14.05 A1.14.09 A1.14.13 A1.14.14 A1.14.16 A1.14.19 +A1.14.12 A1.13.12 A1.14.01 A1.14.06 A1.14.08 A1.14.10 A1.14.15 A1.14.17 A1.14.20 +A1.14.13 A1.14.02 A1.14.05 A1.14.11 A1.14.16 A1.14.19 A1.14.21 A1.15.07 A1.15.08 A1.15.18 +A1.14.14 A1.14.07 A1.14.09 A1.14.10 A1.14.11 A1.14.15 A1.14.16 A1.14.18 A1.14.22 +A1.14.15 A1.14.08 A1.14.10 A1.14.12 A1.14.14 A1.14.17 A1.14.18 A1.14.20 A1.14.23 +A1.14.16 A1.14.09 A1.14.11 A1.14.13 A1.14.14 A1.14.18 A1.14.19 A1.14.22 A1.14.24 +A1.14.17 A1.13.12 A1.13.16 A1.13.20 A1.14.06 A1.14.12 A1.14.15 A1.14.20 A1.14.25 +A1.14.18 A1.14.10 A1.14.14 A1.14.15 A1.14.16 A1.14.20 A1.14.22 A1.14.23 A1.14.27 +A1.14.19 A1.14.11 A1.14.13 A1.14.16 A1.14.21 A1.14.22 A1.14.24 A1.14.26 A1.15.18 +A1.14.20 A1.13.20 A1.14.12 A1.14.15 A1.14.17 A1.14.18 A1.14.23 A1.14.25 A1.14.28 +A1.14.21 A1.14.13 A1.14.19 A1.14.24 A1.14.26 A1.15.18 A1.15.19 A1.15.24 A1.15.29 +A1.14.22 A1.14.14 A1.14.16 A1.14.18 A1.14.19 A1.14.23 A1.14.24 A1.14.27 A1.14.29 +A1.14.23 A1.14.15 A1.14.18 A1.14.20 A1.14.22 A1.14.25 A1.14.27 A1.14.28 A1.14.30 +A1.14.24 A1.14.16 A1.14.19 A1.14.21 A1.14.22 A1.14.26 A1.14.27 A1.14.29 A1.14.31 +A1.14.25 A1.13.20 A1.13.23 A1.13.27 A1.14.17 A1.14.20 A1.14.23 A1.14.28 A1.14.32 +A1.14.26 A1.14.19 A1.14.21 A1.14.24 A1.14.29 A1.14.31 A1.14.33 A1.15.24 A1.15.29 +A1.14.27 A1.14.18 A1.14.22 A1.14.23 A1.14.24 A1.14.28 A1.14.29 A1.14.30 A1.14.34 +A1.14.28 A1.13.27 A1.14.20 A1.14.23 A1.14.25 A1.14.27 A1.14.30 A1.14.32 A1.14.35 +A1.14.29 A1.14.22 A1.14.24 A1.14.26 A1.14.27 A1.14.30 A1.14.31 A1.14.34 A1.14.36 +A1.14.30 A1.14.23 A1.14.27 A1.14.28 A1.14.29 A1.14.32 A1.14.34 A1.14.35 A1.14.37 +A1.14.31 A1.14.24 A1.14.26 A1.14.29 A1.14.33 A1.14.34 A1.14.36 A1.14.38 A1.15.29 +A1.14.32 A1.13.27 A1.13.30 A1.13.33 A1.13.35 A1.14.25 A1.14.28 A1.14.30 A1.14.35 +A1.14.33 A1.14.26 A1.14.31 A1.14.36 A1.14.38 A1.15.29 A1.15.30 A1.15.34 A1.15.38 +A1.14.34 A1.14.27 A1.14.29 A1.14.30 A1.14.31 A1.14.35 A1.14.36 A1.14.37 A1.14.39 +A1.14.35 A1.13.33 A1.13.35 A1.14.28 A1.14.30 A1.14.32 A1.14.34 A1.14.37 A1.14.40 +A1.14.36 A1.14.29 A1.14.31 A1.14.33 A1.14.34 A1.14.37 A1.14.38 A1.14.39 A1.14.41 +A1.14.37 A1.13.35 A1.14.30 A1.14.34 A1.14.35 A1.14.36 A1.14.39 A1.14.40 A1.14.42 +A1.14.38 A1.14.31 A1.14.33 A1.14.36 A1.14.39 A1.14.41 A1.15.34 A1.15.38 A1.15.42 +A1.14.39 A1.14.34 A1.14.36 A1.14.37 A1.14.38 A1.14.40 A1.14.41 A1.14.42 A1.14.43 +A1.14.40 A1.13.35 A1.13.39 A1.13.42 A1.14.35 A1.14.37 A1.14.39 A1.14.42 A1.14.44 +A1.14.41 A1.14.36 A1.14.38 A1.14.39 A1.14.42 A1.14.43 A1.14.45 A1.15.38 A1.15.42 +A1.14.42 A1.13.42 A1.14.37 A1.14.39 A1.14.40 A1.14.41 A1.14.43 A1.14.44 A1.14.46 +A1.14.43 A1.14.39 A1.14.41 A1.14.42 A1.14.44 A1.14.45 A1.14.46 A1.14.47 A1.15.42 +A1.14.44 A1.13.42 A1.13.44 A1.13.46 A1.14.40 A1.14.42 A1.14.43 A1.14.46 A1.14.48 +A1.14.45 A1.14.41 A1.14.43 A1.14.46 A1.14.47 A1.15.42 A1.15.43 A1.15.46 A1.15.49 +A1.14.46 A1.13.46 A1.14.42 A1.14.43 A1.14.44 A1.14.45 A1.14.47 A1.14.48 A1.14.49 +A1.14.47 A1.14.43 A1.14.45 A1.14.46 A1.14.48 A1.14.49 A1.14.50 A1.15.46 A1.15.49 +A1.14.48 A1.13.46 A1.13.48 A1.13.50 A1.14.44 A1.14.46 A1.14.47 A1.14.49 A1.14.51 +A1.14.49 A1.13.50 A1.14.46 A1.14.47 A1.14.48 A1.14.50 A1.14.51 A1.14.52 A1.15.49 +A1.14.50 A1.14.47 A1.14.49 A1.14.51 A1.14.52 A1.14.53 A1.14.54 A1.15.49 A1.15.50 A1.15.52 +A1.14.51 A1.13.50 A1.13.51 A1.13.52 A1.13.54 A1.14.48 A1.14.49 A1.14.50 A1.14.52 A1.14.55 A1.14.57 +A1.14.52 A1.14.49 A1.14.50 A1.14.51 A1.14.53 A1.14.55 A1.14.56 +A1.14.53 A1.14.50 A1.14.52 A1.14.54 A1.14.55 A1.14.56 A1.14.58 A1.15.52 +A1.14.54 A1.14.50 A1.14.53 A1.14.56 A1.14.58 A1.15.52 A1.15.54 A1.15.57 +A1.14.55 A1.13.54 A1.14.51 A1.14.52 A1.14.53 A1.14.56 A1.14.57 A1.14.59 +A1.14.56 A1.14.52 A1.14.53 A1.14.54 A1.14.55 A1.14.57 A1.14.58 A1.14.59 A1.14.60 +A1.14.57 A1.13.54 A1.13.56 A1.13.58 A1.14.51 A1.14.55 A1.14.56 A1.14.59 A1.14.61 +A1.14.58 A1.14.53 A1.14.54 A1.14.56 A1.14.59 A1.14.60 A1.15.54 A1.15.57 A1.15.60 +A1.14.59 A1.13.58 A1.14.55 A1.14.56 A1.14.57 A1.14.58 A1.14.60 A1.14.61 A1.14.62 +A1.14.60 A1.14.56 A1.14.58 A1.14.59 A1.14.61 A1.14.62 A1.15.57 A1.15.60 +A1.14.61 A1.13.58 A1.13.60 A1.13.61 A1.14.57 A1.14.59 A1.14.60 A1.14.62 +A1.14.62 A1.13.61 A1.14.59 A1.14.60 A1.14.61 A1.15.60 +A1.15.00 A1.14.05 A1.15.07 A1.15.08 +A1.15.01 A1.15.02 A1.15.04 A1.15.06 A1.15.10 A1.15.11 +A1.15.02 A1.00.01 A1.00.11 A1.15.01 A1.15.11 A1.15.12 +A1.15.03 A1.15.07 A1.15.13 A1.15.14 +A1.15.04 A1.15.01 A1.15.05 A1.15.06 A1.15.09 +A1.15.05 A1.15.04 A1.15.09 A1.15.14 A1.15.15 +A1.15.06 A1.15.01 A1.15.04 A1.15.09 A1.15.10 A1.15.15 A1.15.16 +A1.15.07 A1.14.13 A1.15.00 A1.15.03 A1.15.08 A1.15.13 A1.15.18 A1.15.19 +A1.15.08 A1.14.05 A1.14.13 A1.15.00 A1.15.07 A1.15.18 +A1.15.09 A1.15.04 A1.15.05 A1.15.06 A1.15.15 A1.15.16 +A1.15.10 A1.15.01 A1.15.06 A1.15.11 A1.15.16 A1.15.17 +A1.15.11 A1.15.01 A1.15.02 A1.15.10 A1.15.12 A1.15.16 A1.15.17 +A1.15.12 A1.00.01 A1.00.11 A1.00.16 A1.15.02 A1.15.11 A1.15.17 +A1.15.13 A1.15.03 A1.15.07 A1.15.14 A1.15.18 A1.15.19 A1.15.20 +A1.15.14 A1.15.03 A1.15.05 A1.15.13 A1.15.15 A1.15.19 A1.15.20 A1.15.21 +A1.15.15 A1.15.05 A1.15.06 A1.15.09 A1.15.14 A1.15.16 A1.15.20 A1.15.21 A1.15.22 +A1.15.16 A1.15.06 A1.15.09 A1.15.10 A1.15.11 A1.15.15 A1.15.17 A1.15.21 A1.15.22 A1.15.23 +A1.15.17 A1.00.11 A1.00.16 A1.00.22 A1.15.10 A1.15.11 A1.15.12 A1.15.16 A1.15.22 A1.15.23 +A1.15.18 A1.14.13 A1.14.19 A1.14.21 A1.15.07 A1.15.08 A1.15.13 A1.15.19 A1.15.24 +A1.15.19 A1.14.21 A1.15.07 A1.15.13 A1.15.14 A1.15.18 A1.15.20 A1.15.24 A1.15.25 +A1.15.20 A1.15.13 A1.15.14 A1.15.15 A1.15.19 A1.15.21 A1.15.24 A1.15.25 A1.15.26 +A1.15.21 A1.15.14 A1.15.15 A1.15.16 A1.15.20 A1.15.22 A1.15.25 A1.15.26 A1.15.27 +A1.15.22 A1.15.15 A1.15.16 A1.15.17 A1.15.21 A1.15.23 A1.15.26 A1.15.27 A1.15.28 +A1.15.23 A1.00.16 A1.00.22 A1.00.27 A1.15.16 A1.15.17 A1.15.22 A1.15.27 A1.15.28 +A1.15.24 A1.14.21 A1.14.26 A1.15.18 A1.15.19 A1.15.20 A1.15.25 A1.15.29 A1.15.30 +A1.15.25 A1.15.19 A1.15.20 A1.15.21 A1.15.24 A1.15.26 A1.15.29 A1.15.30 A1.15.31 +A1.15.26 A1.15.20 A1.15.21 A1.15.22 A1.15.25 A1.15.27 A1.15.30 A1.15.31 A1.15.32 +A1.15.27 A1.15.21 A1.15.22 A1.15.23 A1.15.26 A1.15.28 A1.15.31 A1.15.32 A1.15.33 +A1.15.28 A1.00.22 A1.00.27 A1.00.32 A1.15.22 A1.15.23 A1.15.27 A1.15.32 A1.15.33 +A1.15.29 A1.14.21 A1.14.26 A1.14.31 A1.14.33 A1.15.24 A1.15.25 A1.15.30 A1.15.34 +A1.15.30 A1.14.33 A1.15.24 A1.15.25 A1.15.26 A1.15.29 A1.15.31 A1.15.34 A1.15.35 +A1.15.31 A1.15.25 A1.15.26 A1.15.27 A1.15.30 A1.15.32 A1.15.34 A1.15.35 A1.15.36 +A1.15.32 A1.15.26 A1.15.27 A1.15.28 A1.15.31 A1.15.33 A1.15.35 A1.15.36 A1.15.37 +A1.15.33 A1.00.27 A1.00.32 A1.00.36 A1.15.27 A1.15.28 A1.15.32 A1.15.36 A1.15.37 +A1.15.34 A1.14.33 A1.14.38 A1.15.29 A1.15.30 A1.15.31 A1.15.35 A1.15.38 A1.15.39 +A1.15.35 A1.15.30 A1.15.31 A1.15.32 A1.15.34 A1.15.36 A1.15.38 A1.15.39 A1.15.40 +A1.15.36 A1.15.31 A1.15.32 A1.15.33 A1.15.35 A1.15.37 A1.15.39 A1.15.40 A1.15.41 +A1.15.37 A1.00.32 A1.00.36 A1.00.40 A1.15.32 A1.15.33 A1.15.36 A1.15.40 A1.15.41 +A1.15.38 A1.14.33 A1.14.38 A1.14.41 A1.15.34 A1.15.35 A1.15.39 A1.15.42 A1.15.43 +A1.15.39 A1.15.34 A1.15.35 A1.15.36 A1.15.38 A1.15.40 A1.15.42 A1.15.43 A1.15.44 +A1.15.40 A1.15.35 A1.15.36 A1.15.37 A1.15.39 A1.15.41 A1.15.43 A1.15.44 A1.15.45 +A1.15.41 A1.00.36 A1.00.40 A1.00.44 A1.15.36 A1.15.37 A1.15.40 A1.15.44 A1.15.45 +A1.15.42 A1.14.38 A1.14.41 A1.14.43 A1.14.45 A1.15.38 A1.15.39 A1.15.43 A1.15.46 +A1.15.43 A1.14.45 A1.15.38 A1.15.39 A1.15.40 A1.15.42 A1.15.44 A1.15.46 A1.15.47 +A1.15.44 A1.15.39 A1.15.40 A1.15.41 A1.15.43 A1.15.45 A1.15.46 A1.15.47 A1.15.48 +A1.15.45 A1.00.40 A1.00.44 A1.00.47 A1.15.40 A1.15.41 A1.15.44 A1.15.47 A1.15.48 +A1.15.46 A1.14.45 A1.14.47 A1.15.42 A1.15.43 A1.15.44 A1.15.47 A1.15.49 A1.15.50 +A1.15.47 A1.15.43 A1.15.44 A1.15.45 A1.15.46 A1.15.48 A1.15.49 A1.15.50 A1.15.51 +A1.15.48 A1.00.44 A1.00.47 A1.00.50 A1.15.44 A1.15.45 A1.15.47 A1.15.50 A1.15.51 +A1.15.49 A1.14.45 A1.14.47 A1.14.49 A1.14.50 A1.15.46 A1.15.47 A1.15.50 A1.15.52 +A1.15.50 A1.14.50 A1.15.46 A1.15.47 A1.15.48 A1.15.49 A1.15.51 A1.15.52 A1.15.53 +A1.15.51 A1.00.47 A1.00.50 A1.00.52 A1.15.47 A1.15.48 A1.15.50 A1.15.52 A1.15.53 +A1.15.52 A1.14.50 A1.14.53 A1.14.54 A1.15.49 A1.15.50 A1.15.51 A1.15.53 A1.15.54 A1.15.55 +A1.15.53 A1.00.50 A1.00.52 A1.00.56 A1.15.50 A1.15.51 A1.15.52 A1.15.54 A1.15.55 A1.15.56 +A1.15.54 A1.14.54 A1.14.58 A1.15.52 A1.15.53 A1.15.55 A1.15.57 A1.15.58 +A1.15.55 A1.15.52 A1.15.53 A1.15.54 A1.15.56 A1.15.57 A1.15.58 A1.15.59 +A1.15.56 A1.00.52 A1.00.56 A1.00.59 A1.15.53 A1.15.55 A1.15.58 A1.15.59 +A1.15.57 A1.14.54 A1.14.58 A1.14.60 A1.15.54 A1.15.55 A1.15.58 A1.15.60 A1.15.61 +A1.15.58 A1.15.54 A1.15.55 A1.15.56 A1.15.57 A1.15.59 A1.15.60 A1.15.61 A1.15.62 +A1.15.59 A1.00.56 A1.00.59 A1.00.62 A1.15.55 A1.15.56 A1.15.58 A1.15.61 A1.15.62 +A1.15.60 A1.14.58 A1.14.60 A1.14.62 A1.15.57 A1.15.58 A1.15.61 +A1.15.61 A1.15.57 A1.15.58 A1.15.59 A1.15.60 A1.15.62 +A1.15.62 A1.00.59 A1.00.62 A1.15.58 A1.15.59 A1.15.61 +A2.00.00 A2.00.01 A2.00.05 A2.00.06 +A2.00.01 A2.00.00 A2.00.02 A2.00.05 A2.00.06 +A2.00.02 A2.00.01 A2.00.06 A2.15.01 A2.15.06 +A2.00.03 A2.00.04 A2.00.07 A2.00.08 A2.01.04 +A2.00.04 A2.00.03 A2.00.05 A2.00.07 A2.00.08 A2.00.09 +A2.00.05 A2.00.00 A2.00.01 A2.00.04 A2.00.06 A2.00.08 A2.00.09 A2.00.10 +A2.00.06 A2.00.00 A2.00.01 A2.00.02 A2.00.05 A2.00.09 A2.00.10 A2.15.01 A2.15.06 A2.15.10 +A2.00.07 A2.00.03 A2.00.04 A2.00.08 A2.00.11 A2.01.04 A2.01.07 A2.01.10 +A2.00.08 A2.00.03 A2.00.04 A2.00.05 A2.00.07 A2.00.09 A2.00.11 A2.00.12 A2.01.10 +A2.00.09 A2.00.04 A2.00.05 A2.00.06 A2.00.08 A2.00.10 A2.00.11 A2.00.12 A2.00.13 +A2.00.10 A2.00.05 A2.00.06 A2.00.09 A2.00.12 A2.00.13 A2.15.06 A2.15.10 A2.15.13 +A2.00.11 A2.00.07 A2.00.08 A2.00.09 A2.00.12 A2.00.14 A2.00.15 A2.01.10 A2.01.13 +A2.00.12 A2.00.08 A2.00.09 A2.00.10 A2.00.11 A2.00.13 A2.00.14 A2.00.15 A2.00.16 +A2.00.13 A2.00.09 A2.00.10 A2.00.12 A2.00.15 A2.00.16 A2.15.10 A2.15.13 A2.15.16 +A2.00.14 A2.00.11 A2.00.12 A2.00.15 A2.00.17 A2.00.18 A2.01.10 A2.01.13 A2.01.16 +A2.00.15 A2.00.11 A2.00.12 A2.00.13 A2.00.14 A2.00.16 A2.00.17 A2.00.18 A2.00.19 +A2.00.16 A2.00.12 A2.00.13 A2.00.15 A2.00.18 A2.00.19 A2.15.13 A2.15.16 A2.15.19 +A2.00.17 A2.00.14 A2.00.15 A2.00.18 A2.00.20 A2.01.13 A2.01.16 A2.01.18 A2.01.20 +A2.00.18 A2.00.14 A2.00.15 A2.00.16 A2.00.17 A2.00.19 A2.00.20 A2.00.21 A2.01.20 +A2.00.19 A2.00.15 A2.00.16 A2.00.18 A2.00.20 A2.00.21 A2.15.16 A2.15.19 A2.15.21 +A2.00.20 A2.00.17 A2.00.18 A2.00.19 A2.00.21 A2.00.22 A2.00.23 A2.01.20 A2.01.22 +A2.00.21 A2.00.18 A2.00.19 A2.00.20 A2.00.22 A2.00.23 A2.15.19 A2.15.21 A2.15.23 +A2.00.22 A2.00.20 A2.00.21 A2.00.23 A2.00.24 A2.00.25 A2.01.20 A2.01.22 A2.01.24 +A2.00.23 A2.00.20 A2.00.21 A2.00.22 A2.00.24 A2.00.25 A2.15.21 A2.15.23 A2.15.25 +A2.00.24 A2.00.22 A2.00.23 A2.00.25 A2.00.26 A2.01.22 A2.01.24 A2.01.25 A2.01.26 +A2.00.25 A2.00.22 A2.00.23 A2.00.24 A2.00.26 A2.01.26 A2.15.23 A2.15.25 A2.15.26 +A2.00.26 A2.00.24 A2.00.25 A2.00.27 A2.01.26 A2.01.28 A2.15.25 A2.15.26 A2.15.27 +A2.00.27 A2.00.26 A2.00.28 A2.00.29 A2.01.26 A2.01.28 A2.01.30 A2.15.26 A2.15.27 A2.15.29 +A2.00.28 A2.00.27 A2.00.29 A2.01.28 A2.01.30 A2.01.31 +A2.00.29 A2.00.27 A2.00.28 A2.15.27 A2.15.29 +A2.01.00 A2.01.05 A2.02.00 A2.02.06 +A2.01.01 A2.01.03 A2.01.05 +A2.01.02 A2.01.04 A2.01.06 A2.01.07 +A2.01.03 A2.01.01 A2.01.05 A2.01.06 A2.01.09 +A2.01.04 A2.00.03 A2.00.07 A2.01.02 A2.01.06 A2.01.07 A2.01.10 +A2.01.05 A2.01.00 A2.01.01 A2.01.03 A2.01.06 A2.01.08 A2.01.09 A2.01.12 A2.02.06 +A2.01.06 A2.01.02 A2.01.03 A2.01.04 A2.01.05 A2.01.07 A2.01.09 A2.01.11 +A2.01.07 A2.00.07 A2.01.02 A2.01.04 A2.01.06 A2.01.09 A2.01.10 A2.01.11 A2.01.13 +A2.01.08 A2.01.05 A2.01.09 A2.01.12 A2.01.14 A2.02.06 A2.02.09 A2.02.11 +A2.01.09 A2.01.03 A2.01.05 A2.01.06 A2.01.07 A2.01.08 A2.01.11 A2.01.12 A2.01.15 +A2.01.10 A2.00.07 A2.00.08 A2.00.11 A2.00.14 A2.01.04 A2.01.07 A2.01.11 A2.01.13 +A2.01.11 A2.01.06 A2.01.07 A2.01.09 A2.01.10 A2.01.12 A2.01.13 A2.01.15 A2.01.16 +A2.01.12 A2.01.05 A2.01.08 A2.01.09 A2.01.11 A2.01.14 A2.01.15 A2.01.17 A2.02.11 +A2.01.13 A2.00.11 A2.00.14 A2.00.17 A2.01.07 A2.01.10 A2.01.11 A2.01.15 A2.01.16 +A2.01.14 A2.01.08 A2.01.12 A2.01.15 A2.01.17 A2.01.19 A2.02.11 A2.02.14 A2.02.16 +A2.01.15 A2.01.09 A2.01.11 A2.01.12 A2.01.13 A2.01.14 A2.01.16 A2.01.17 A2.01.18 +A2.01.16 A2.00.14 A2.00.17 A2.01.11 A2.01.13 A2.01.15 A2.01.17 A2.01.18 A2.01.20 +A2.01.17 A2.01.12 A2.01.14 A2.01.15 A2.01.16 A2.01.18 A2.01.19 A2.01.21 A2.02.16 +A2.01.18 A2.00.17 A2.01.15 A2.01.16 A2.01.17 A2.01.19 A2.01.20 A2.01.21 A2.01.22 +A2.01.19 A2.01.14 A2.01.17 A2.01.18 A2.01.21 A2.01.23 A2.02.16 A2.02.18 A2.02.20 +A2.01.20 A2.00.17 A2.00.18 A2.00.20 A2.00.22 A2.01.16 A2.01.18 A2.01.21 A2.01.22 +A2.01.21 A2.01.17 A2.01.18 A2.01.19 A2.01.20 A2.01.22 A2.01.23 A2.01.24 A2.02.20 +A2.01.22 A2.00.20 A2.00.22 A2.00.24 A2.01.18 A2.01.20 A2.01.21 A2.01.23 A2.01.24 +A2.01.23 A2.01.19 A2.01.21 A2.01.22 A2.01.24 A2.01.25 A2.02.20 A2.02.22 A2.02.24 +A2.01.24 A2.00.22 A2.00.24 A2.01.21 A2.01.22 A2.01.23 A2.01.25 A2.01.26 A2.02.24 +A2.01.25 A2.00.24 A2.01.23 A2.01.24 A2.01.26 A2.01.27 A2.01.28 A2.02.24 A2.02.25 +A2.01.26 A2.00.24 A2.00.25 A2.00.26 A2.00.27 A2.01.24 A2.01.25 A2.01.27 A2.01.28 +A2.01.27 A2.01.25 A2.01.26 A2.01.28 A2.01.29 A2.02.24 A2.02.25 A2.02.26 A2.02.27 +A2.01.28 A2.00.26 A2.00.27 A2.00.28 A2.01.25 A2.01.26 A2.01.27 A2.01.29 A2.01.30 A2.02.27 +A2.01.29 A2.01.27 A2.01.28 A2.01.30 A2.01.31 A2.02.27 A2.02.29 +A2.01.30 A2.00.27 A2.00.28 A2.01.28 A2.01.29 A2.01.31 A2.02.29 +A2.01.31 A2.00.28 A2.01.29 A2.01.30 A2.02.29 A2.02.30 +A2.02.00 A2.01.00 A2.02.03 A2.02.06 +A2.02.01 A2.02.02 A2.02.07 A2.02.08 +A2.02.02 A2.02.01 A2.02.04 A2.02.07 A2.02.08 A2.03.01 +A2.02.03 A2.02.00 A2.02.05 A2.02.06 A2.02.09 +A2.02.04 A2.02.02 A2.02.08 A2.03.01 A2.03.06 +A2.02.05 A2.02.03 A2.02.07 A2.02.09 A2.02.10 +A2.02.06 A2.01.00 A2.01.05 A2.01.08 A2.02.00 A2.02.03 A2.02.09 A2.02.11 +A2.02.07 A2.02.01 A2.02.02 A2.02.05 A2.02.08 A2.02.09 A2.02.10 A2.02.12 +A2.02.08 A2.02.01 A2.02.02 A2.02.04 A2.02.07 A2.02.10 A2.02.12 A2.02.13 A2.03.01 A2.03.06 +A2.02.09 A2.01.08 A2.02.03 A2.02.05 A2.02.06 A2.02.07 A2.02.10 A2.02.11 A2.02.14 +A2.02.10 A2.02.05 A2.02.07 A2.02.08 A2.02.09 A2.02.11 A2.02.12 A2.02.14 A2.02.15 +A2.02.11 A2.01.08 A2.01.12 A2.01.14 A2.02.06 A2.02.09 A2.02.10 A2.02.14 A2.02.16 +A2.02.12 A2.02.07 A2.02.08 A2.02.10 A2.02.13 A2.02.14 A2.02.15 A2.02.17 A2.03.06 +A2.02.13 A2.02.08 A2.02.12 A2.02.15 A2.02.17 A2.03.06 A2.03.07 A2.03.11 A2.03.15 +A2.02.14 A2.01.14 A2.02.09 A2.02.10 A2.02.11 A2.02.12 A2.02.15 A2.02.16 A2.02.18 +A2.02.15 A2.02.10 A2.02.12 A2.02.13 A2.02.14 A2.02.16 A2.02.17 A2.02.18 A2.02.19 +A2.02.16 A2.01.14 A2.01.17 A2.01.19 A2.02.11 A2.02.14 A2.02.15 A2.02.18 A2.02.20 +A2.02.17 A2.02.12 A2.02.13 A2.02.15 A2.02.18 A2.02.19 A2.02.21 A2.03.11 A2.03.15 +A2.02.18 A2.01.19 A2.02.14 A2.02.15 A2.02.16 A2.02.17 A2.02.19 A2.02.20 A2.02.22 +A2.02.19 A2.02.15 A2.02.17 A2.02.18 A2.02.20 A2.02.21 A2.02.22 A2.02.23 A2.03.15 +A2.02.20 A2.01.19 A2.01.21 A2.01.23 A2.02.16 A2.02.18 A2.02.19 A2.02.22 A2.02.24 +A2.02.21 A2.02.17 A2.02.19 A2.02.22 A2.02.23 A2.03.15 A2.03.16 A2.03.19 A2.03.22 +A2.02.22 A2.01.23 A2.02.18 A2.02.19 A2.02.20 A2.02.21 A2.02.23 A2.02.24 A2.02.25 +A2.02.23 A2.02.19 A2.02.21 A2.02.22 A2.02.24 A2.02.25 A2.02.26 A2.03.19 A2.03.22 +A2.02.24 A2.01.23 A2.01.24 A2.01.25 A2.01.27 A2.02.20 A2.02.22 A2.02.23 A2.02.25 +A2.02.25 A2.01.25 A2.01.27 A2.02.22 A2.02.23 A2.02.24 A2.02.26 A2.02.27 A2.03.22 +A2.02.26 A2.01.27 A2.02.23 A2.02.25 A2.02.27 A2.02.28 A2.03.22 A2.03.23 A2.03.25 +A2.02.27 A2.01.27 A2.01.28 A2.01.29 A2.02.25 A2.02.26 A2.02.28 A2.02.29 A2.02.30 A2.03.25 +A2.02.28 A2.02.26 A2.02.27 A2.02.29 A2.02.30 A2.02.31 A2.03.25 A2.03.26 A2.03.27 A2.03.29 +A2.02.29 A2.01.29 A2.01.30 A2.01.31 A2.02.27 A2.02.28 A2.02.30 +A2.02.30 A2.01.31 A2.02.27 A2.02.28 A2.02.29 A2.02.31 +A2.02.31 A2.02.28 A2.02.30 A2.03.29 A2.03.30 +A2.03.00 A2.03.03 A2.03.04 A2.03.05 A2.04.00 A2.04.05 +A2.03.01 A2.02.02 A2.02.04 A2.02.08 A2.03.02 A2.03.06 A2.03.07 +A2.03.02 A2.03.01 A2.03.03 A2.03.06 A2.03.07 A2.03.08 +A2.03.03 A2.03.00 A2.03.02 A2.03.04 A2.03.07 A2.03.08 A2.03.09 +A2.03.04 A2.03.00 A2.03.03 A2.03.05 A2.03.08 A2.03.09 A2.03.10 +A2.03.05 A2.03.00 A2.03.04 A2.03.09 A2.03.10 A2.04.00 A2.04.05 A2.04.10 +A2.03.06 A2.02.04 A2.02.08 A2.02.12 A2.02.13 A2.03.01 A2.03.02 A2.03.07 A2.03.11 +A2.03.07 A2.02.13 A2.03.01 A2.03.02 A2.03.03 A2.03.06 A2.03.08 A2.03.11 A2.03.12 +A2.03.08 A2.03.02 A2.03.03 A2.03.04 A2.03.07 A2.03.09 A2.03.11 A2.03.12 A2.03.13 +A2.03.09 A2.03.03 A2.03.04 A2.03.05 A2.03.08 A2.03.10 A2.03.12 A2.03.13 A2.03.14 +A2.03.10 A2.03.04 A2.03.05 A2.03.09 A2.03.13 A2.03.14 A2.04.05 A2.04.10 A2.04.14 +A2.03.11 A2.02.13 A2.02.17 A2.03.06 A2.03.07 A2.03.08 A2.03.12 A2.03.15 A2.03.16 +A2.03.12 A2.03.07 A2.03.08 A2.03.09 A2.03.11 A2.03.13 A2.03.15 A2.03.16 A2.03.17 +A2.03.13 A2.03.08 A2.03.09 A2.03.10 A2.03.12 A2.03.14 A2.03.16 A2.03.17 A2.03.18 +A2.03.14 A2.03.09 A2.03.10 A2.03.13 A2.03.17 A2.03.18 A2.04.10 A2.04.14 A2.04.18 +A2.03.15 A2.02.13 A2.02.17 A2.02.19 A2.02.21 A2.03.11 A2.03.12 A2.03.16 A2.03.19 +A2.03.16 A2.02.21 A2.03.11 A2.03.12 A2.03.13 A2.03.15 A2.03.17 A2.03.19 A2.03.20 +A2.03.17 A2.03.12 A2.03.13 A2.03.14 A2.03.16 A2.03.18 A2.03.19 A2.03.20 A2.03.21 +A2.03.18 A2.03.13 A2.03.14 A2.03.17 A2.03.20 A2.03.21 A2.04.14 A2.04.18 A2.04.21 +A2.03.19 A2.02.21 A2.02.23 A2.03.15 A2.03.16 A2.03.17 A2.03.20 A2.03.22 A2.03.23 +A2.03.20 A2.03.16 A2.03.17 A2.03.18 A2.03.19 A2.03.21 A2.03.22 A2.03.23 A2.03.24 +A2.03.21 A2.03.17 A2.03.18 A2.03.20 A2.03.23 A2.03.24 A2.04.18 A2.04.21 A2.04.24 +A2.03.22 A2.02.21 A2.02.23 A2.02.25 A2.02.26 A2.03.19 A2.03.20 A2.03.23 A2.03.25 +A2.03.23 A2.02.26 A2.03.19 A2.03.20 A2.03.21 A2.03.22 A2.03.24 A2.03.25 A2.03.26 +A2.03.24 A2.03.20 A2.03.21 A2.03.23 A2.03.25 A2.03.26 A2.04.21 A2.04.24 A2.04.26 +A2.03.25 A2.02.26 A2.02.27 A2.02.28 A2.03.22 A2.03.23 A2.03.24 A2.03.26 A2.03.27 +A2.03.26 A2.02.28 A2.03.23 A2.03.24 A2.03.25 A2.03.27 A2.03.28 A2.04.24 A2.04.26 A2.04.28 +A2.03.27 A2.02.28 A2.03.25 A2.03.26 A2.03.28 A2.03.29 A2.03.30 +A2.03.28 A2.03.26 A2.03.27 A2.03.29 A2.03.30 A2.04.26 A2.04.28 A2.04.30 +A2.03.29 A2.02.28 A2.02.31 A2.03.27 A2.03.28 A2.03.30 +A2.03.30 A2.02.31 A2.03.27 A2.03.28 A2.03.29 A2.04.28 A2.04.30 +A2.04.00 A2.03.00 A2.03.05 A2.04.03 A2.04.04 A2.04.05 +A2.04.01 A2.04.02 A2.04.06 A2.04.07 A2.05.02 A2.05.04 A2.05.08 +A2.04.02 A2.04.01 A2.04.03 A2.04.06 A2.04.07 A2.04.08 +A2.04.03 A2.04.00 A2.04.02 A2.04.04 A2.04.07 A2.04.08 A2.04.09 +A2.04.04 A2.04.00 A2.04.03 A2.04.05 A2.04.08 A2.04.09 A2.04.10 +A2.04.05 A2.03.00 A2.03.05 A2.03.10 A2.04.00 A2.04.04 A2.04.09 A2.04.10 +A2.04.06 A2.04.01 A2.04.02 A2.04.07 A2.04.11 A2.05.04 A2.05.08 A2.05.12 A2.05.13 +A2.04.07 A2.04.01 A2.04.02 A2.04.03 A2.04.06 A2.04.08 A2.04.11 A2.04.12 A2.05.13 +A2.04.08 A2.04.02 A2.04.03 A2.04.04 A2.04.07 A2.04.09 A2.04.11 A2.04.12 A2.04.13 +A2.04.09 A2.04.03 A2.04.04 A2.04.05 A2.04.08 A2.04.10 A2.04.12 A2.04.13 A2.04.14 +A2.04.10 A2.03.05 A2.03.10 A2.03.14 A2.04.04 A2.04.05 A2.04.09 A2.04.13 A2.04.14 +A2.04.11 A2.04.06 A2.04.07 A2.04.08 A2.04.12 A2.04.15 A2.04.16 A2.05.13 A2.05.17 +A2.04.12 A2.04.07 A2.04.08 A2.04.09 A2.04.11 A2.04.13 A2.04.15 A2.04.16 A2.04.17 +A2.04.13 A2.04.08 A2.04.09 A2.04.10 A2.04.12 A2.04.14 A2.04.16 A2.04.17 A2.04.18 +A2.04.14 A2.03.10 A2.03.14 A2.03.18 A2.04.09 A2.04.10 A2.04.13 A2.04.17 A2.04.18 +A2.04.15 A2.04.11 A2.04.12 A2.04.16 A2.04.19 A2.05.13 A2.05.17 A2.05.19 A2.05.21 +A2.04.16 A2.04.11 A2.04.12 A2.04.13 A2.04.15 A2.04.17 A2.04.19 A2.04.20 A2.05.21 +A2.04.17 A2.04.12 A2.04.13 A2.04.14 A2.04.16 A2.04.18 A2.04.19 A2.04.20 A2.04.21 +A2.04.18 A2.03.14 A2.03.18 A2.03.21 A2.04.13 A2.04.14 A2.04.17 A2.04.20 A2.04.21 +A2.04.19 A2.04.15 A2.04.16 A2.04.17 A2.04.20 A2.04.22 A2.04.23 A2.05.21 A2.05.23 +A2.04.20 A2.04.16 A2.04.17 A2.04.18 A2.04.19 A2.04.21 A2.04.22 A2.04.23 A2.04.24 +A2.04.21 A2.03.18 A2.03.21 A2.03.24 A2.04.17 A2.04.18 A2.04.20 A2.04.23 A2.04.24 +A2.04.22 A2.04.19 A2.04.20 A2.04.23 A2.04.25 A2.05.21 A2.05.23 A2.05.25 A2.05.26 +A2.04.23 A2.04.19 A2.04.20 A2.04.21 A2.04.22 A2.04.24 A2.04.25 A2.04.26 A2.05.26 +A2.04.24 A2.03.21 A2.03.24 A2.03.26 A2.04.20 A2.04.21 A2.04.23 A2.04.25 A2.04.26 +A2.04.25 A2.04.22 A2.04.23 A2.04.24 A2.04.26 A2.04.27 A2.05.26 A2.05.27 A2.05.28 +A2.04.26 A2.03.24 A2.03.26 A2.03.28 A2.04.23 A2.04.24 A2.04.25 A2.04.27 A2.04.28 A2.05.28 +A2.04.27 A2.04.25 A2.04.26 A2.04.28 A2.04.29 A2.04.30 A2.05.28 +A2.04.28 A2.03.26 A2.03.28 A2.03.30 A2.04.26 A2.04.27 A2.04.29 A2.04.30 +A2.04.29 A2.04.27 A2.04.28 A2.04.30 A2.05.28 A2.05.31 +A2.04.30 A2.03.28 A2.03.30 A2.04.27 A2.04.28 A2.04.29 +A2.05.00 A2.05.02 A2.05.07 A2.05.08 +A2.05.01 A2.05.06 A2.06.00 A2.06.03 +A2.05.02 A2.04.01 A2.05.00 A2.05.04 A2.05.07 A2.05.08 +A2.05.03 A2.05.05 A2.05.06 A2.05.09 +A2.05.04 A2.04.01 A2.04.06 A2.05.02 A2.05.08 +A2.05.05 A2.05.03 A2.05.07 A2.05.09 A2.05.10 +A2.05.06 A2.05.01 A2.05.03 A2.05.09 A2.05.11 A2.06.03 A2.06.08 +A2.05.07 A2.05.00 A2.05.02 A2.05.05 A2.05.08 A2.05.09 A2.05.10 A2.05.12 +A2.05.08 A2.04.01 A2.04.06 A2.05.00 A2.05.02 A2.05.04 A2.05.07 A2.05.10 A2.05.12 A2.05.13 +A2.05.09 A2.05.03 A2.05.05 A2.05.06 A2.05.07 A2.05.10 A2.05.11 A2.05.14 A2.06.08 +A2.05.10 A2.05.05 A2.05.07 A2.05.08 A2.05.09 A2.05.11 A2.05.12 A2.05.14 A2.05.15 +A2.05.11 A2.05.06 A2.05.09 A2.05.10 A2.05.14 A2.05.16 A2.06.08 A2.06.12 A2.06.14 +A2.05.12 A2.04.06 A2.05.07 A2.05.08 A2.05.10 A2.05.13 A2.05.14 A2.05.15 A2.05.17 +A2.05.13 A2.04.06 A2.04.07 A2.04.11 A2.04.15 A2.05.08 A2.05.12 A2.05.15 A2.05.17 +A2.05.14 A2.05.09 A2.05.10 A2.05.11 A2.05.12 A2.05.15 A2.05.16 A2.05.18 A2.06.14 +A2.05.15 A2.05.10 A2.05.12 A2.05.13 A2.05.14 A2.05.16 A2.05.17 A2.05.18 A2.05.19 +A2.05.16 A2.05.11 A2.05.14 A2.05.15 A2.05.18 A2.05.20 A2.06.14 A2.06.17 A2.06.19 +A2.05.17 A2.04.11 A2.04.15 A2.05.12 A2.05.13 A2.05.15 A2.05.18 A2.05.19 A2.05.21 +A2.05.18 A2.05.14 A2.05.15 A2.05.16 A2.05.17 A2.05.19 A2.05.20 A2.05.22 A2.06.19 +A2.05.19 A2.04.15 A2.05.15 A2.05.17 A2.05.18 A2.05.20 A2.05.21 A2.05.22 A2.05.23 +A2.05.20 A2.05.16 A2.05.18 A2.05.19 A2.05.22 A2.05.24 A2.06.19 A2.06.21 A2.06.23 +A2.05.21 A2.04.15 A2.04.16 A2.04.19 A2.04.22 A2.05.17 A2.05.19 A2.05.22 A2.05.23 +A2.05.22 A2.05.18 A2.05.19 A2.05.20 A2.05.21 A2.05.23 A2.05.24 A2.05.25 A2.06.23 +A2.05.23 A2.04.19 A2.04.22 A2.05.19 A2.05.21 A2.05.22 A2.05.24 A2.05.25 A2.05.26 +A2.05.24 A2.05.20 A2.05.22 A2.05.23 A2.05.25 A2.06.23 A2.06.24 A2.06.25 A2.06.27 +A2.05.25 A2.04.22 A2.05.22 A2.05.23 A2.05.24 A2.05.26 A2.05.27 A2.06.25 A2.06.27 +A2.05.26 A2.04.22 A2.04.23 A2.04.25 A2.05.23 A2.05.25 A2.05.27 A2.05.28 A2.06.27 +A2.05.27 A2.04.25 A2.05.25 A2.05.26 A2.05.28 A2.05.29 A2.05.30 A2.06.27 A2.06.28 +A2.05.28 A2.04.25 A2.04.26 A2.04.27 A2.04.29 A2.05.26 A2.05.27 A2.05.30 A2.05.31 +A2.05.29 A2.05.27 A2.05.30 A2.06.27 A2.06.28 A2.06.29 A2.06.31 +A2.05.30 A2.05.27 A2.05.28 A2.05.29 A2.05.31 A2.06.29 A2.06.31 +A2.05.31 A2.04.29 A2.05.28 A2.05.30 +A2.06.00 A2.05.01 A2.06.03 A2.06.05 +A2.06.01 A2.06.05 A2.06.06 +A2.06.02 A2.06.04 A2.06.06 A2.06.07 +A2.06.03 A2.05.01 A2.05.06 A2.06.00 A2.06.05 A2.06.08 +A2.06.04 A2.06.02 A2.06.06 A2.06.07 A2.06.10 A2.07.03 A2.07.07 +A2.06.05 A2.06.00 A2.06.01 A2.06.03 A2.06.06 A2.06.08 A2.06.09 A2.06.12 +A2.06.06 A2.06.01 A2.06.02 A2.06.04 A2.06.05 A2.06.07 A2.06.09 A2.06.11 +A2.06.07 A2.06.02 A2.06.04 A2.06.06 A2.06.09 A2.06.10 A2.06.11 A2.06.13 A2.07.07 +A2.06.08 A2.05.06 A2.05.09 A2.05.11 A2.06.03 A2.06.05 A2.06.09 A2.06.12 A2.06.14 +A2.06.09 A2.06.05 A2.06.06 A2.06.07 A2.06.08 A2.06.11 A2.06.12 A2.06.15 +A2.06.10 A2.06.04 A2.06.07 A2.06.11 A2.06.13 A2.07.07 A2.07.08 A2.07.11 A2.07.14 +A2.06.11 A2.06.06 A2.06.07 A2.06.09 A2.06.10 A2.06.12 A2.06.13 A2.06.15 A2.06.16 +A2.06.12 A2.05.11 A2.06.05 A2.06.08 A2.06.09 A2.06.11 A2.06.14 A2.06.15 A2.06.17 +A2.06.13 A2.06.07 A2.06.10 A2.06.11 A2.06.15 A2.06.16 A2.07.11 A2.07.14 A2.07.17 +A2.06.14 A2.05.11 A2.05.14 A2.05.16 A2.06.08 A2.06.12 A2.06.15 A2.06.17 A2.06.19 +A2.06.15 A2.06.09 A2.06.11 A2.06.12 A2.06.13 A2.06.14 A2.06.16 A2.06.17 A2.06.18 +A2.06.16 A2.06.11 A2.06.13 A2.06.15 A2.06.17 A2.06.18 A2.06.20 A2.07.14 A2.07.17 +A2.06.17 A2.05.16 A2.06.12 A2.06.14 A2.06.15 A2.06.16 A2.06.18 A2.06.19 A2.06.21 +A2.06.18 A2.06.15 A2.06.16 A2.06.17 A2.06.19 A2.06.20 A2.06.21 A2.06.22 A2.07.17 +A2.06.19 A2.05.16 A2.05.18 A2.05.20 A2.06.14 A2.06.17 A2.06.18 A2.06.21 A2.06.23 +A2.06.20 A2.06.16 A2.06.18 A2.06.21 A2.06.22 A2.07.17 A2.07.18 A2.07.20 A2.07.22 +A2.06.21 A2.05.20 A2.06.17 A2.06.18 A2.06.19 A2.06.20 A2.06.22 A2.06.23 A2.06.24 +A2.06.22 A2.06.18 A2.06.20 A2.06.21 A2.06.23 A2.06.24 A2.07.20 A2.07.22 A2.07.24 +A2.06.23 A2.05.20 A2.05.22 A2.05.24 A2.06.19 A2.06.21 A2.06.22 A2.06.24 A2.06.25 +A2.06.24 A2.05.24 A2.06.21 A2.06.22 A2.06.23 A2.06.25 A2.06.26 A2.07.22 A2.07.24 +A2.06.25 A2.05.24 A2.05.25 A2.06.23 A2.06.24 A2.06.26 A2.06.27 A2.06.28 A2.07.24 +A2.06.26 A2.06.24 A2.06.25 A2.06.27 A2.06.28 A2.07.24 A2.07.25 A2.07.26 A2.07.27 +A2.06.27 A2.05.24 A2.05.25 A2.05.26 A2.05.27 A2.05.29 A2.06.25 A2.06.26 A2.06.28 +A2.06.28 A2.05.27 A2.05.29 A2.06.25 A2.06.26 A2.06.27 A2.06.29 A2.06.30 A2.07.26 A2.07.27 A2.07.28 +A2.06.29 A2.05.29 A2.05.30 A2.06.28 A2.06.30 A2.06.31 +A2.06.30 A2.06.28 A2.06.29 A2.06.31 A2.07.27 A2.07.28 +A2.06.31 A2.05.29 A2.05.30 A2.06.29 A2.06.30 A2.07.28 +A2.07.00 A2.07.02 A2.07.05 A2.07.06 +A2.07.01 A2.07.02 A2.07.06 A2.08.00 A2.08.06 +A2.07.02 A2.07.00 A2.07.01 A2.07.05 A2.07.06 +A2.07.03 A2.06.04 A2.07.04 A2.07.07 A2.07.08 +A2.07.04 A2.07.03 A2.07.05 A2.07.07 A2.07.08 A2.07.09 +A2.07.05 A2.07.00 A2.07.02 A2.07.04 A2.07.06 A2.07.08 A2.07.09 A2.07.10 +A2.07.06 A2.07.00 A2.07.01 A2.07.02 A2.07.05 A2.07.09 A2.07.10 A2.08.00 A2.08.06 A2.08.10 +A2.07.07 A2.06.04 A2.06.07 A2.06.10 A2.07.03 A2.07.04 A2.07.08 A2.07.11 +A2.07.08 A2.06.10 A2.07.03 A2.07.04 A2.07.05 A2.07.07 A2.07.09 A2.07.11 A2.07.12 +A2.07.09 A2.07.04 A2.07.05 A2.07.06 A2.07.08 A2.07.10 A2.07.11 A2.07.12 A2.07.13 +A2.07.10 A2.07.05 A2.07.06 A2.07.09 A2.07.12 A2.07.13 A2.08.06 A2.08.10 A2.08.13 +A2.07.11 A2.06.10 A2.06.13 A2.07.07 A2.07.08 A2.07.09 A2.07.12 A2.07.14 A2.07.15 +A2.07.12 A2.07.08 A2.07.09 A2.07.10 A2.07.11 A2.07.13 A2.07.14 A2.07.15 A2.07.16 +A2.07.13 A2.07.09 A2.07.10 A2.07.12 A2.07.15 A2.07.16 A2.08.10 A2.08.13 A2.08.16 +A2.07.14 A2.06.10 A2.06.13 A2.06.16 A2.07.11 A2.07.12 A2.07.15 A2.07.17 A2.07.18 +A2.07.15 A2.07.11 A2.07.12 A2.07.13 A2.07.14 A2.07.16 A2.07.17 A2.07.18 A2.07.19 +A2.07.16 A2.07.12 A2.07.13 A2.07.15 A2.07.18 A2.07.19 A2.08.13 A2.08.16 A2.08.19 +A2.07.17 A2.06.13 A2.06.16 A2.06.18 A2.06.20 A2.07.14 A2.07.15 A2.07.18 A2.07.20 +A2.07.18 A2.06.20 A2.07.14 A2.07.15 A2.07.16 A2.07.17 A2.07.19 A2.07.20 A2.07.21 +A2.07.19 A2.07.15 A2.07.16 A2.07.18 A2.07.20 A2.07.21 A2.08.16 A2.08.19 A2.08.21 +A2.07.20 A2.06.20 A2.06.22 A2.07.17 A2.07.18 A2.07.19 A2.07.21 A2.07.22 A2.07.23 +A2.07.21 A2.07.18 A2.07.19 A2.07.20 A2.07.22 A2.07.23 A2.08.19 A2.08.21 A2.08.23 +A2.07.22 A2.06.20 A2.06.22 A2.06.24 A2.07.20 A2.07.21 A2.07.23 A2.07.24 A2.07.25 +A2.07.23 A2.07.20 A2.07.21 A2.07.22 A2.07.24 A2.07.25 A2.08.21 A2.08.23 A2.08.25 +A2.07.24 A2.06.22 A2.06.24 A2.06.25 A2.06.26 A2.07.22 A2.07.23 A2.07.25 A2.07.26 +A2.07.25 A2.06.26 A2.07.22 A2.07.23 A2.07.24 A2.07.26 A2.08.23 A2.08.25 A2.08.26 +A2.07.26 A2.06.26 A2.06.28 A2.07.24 A2.07.25 A2.07.27 A2.08.25 A2.08.26 A2.08.27 +A2.07.27 A2.06.26 A2.06.28 A2.06.30 A2.07.26 A2.07.28 A2.07.29 A2.08.26 A2.08.27 A2.08.29 +A2.07.28 A2.06.28 A2.06.30 A2.06.31 A2.07.27 A2.07.29 +A2.07.29 A2.07.27 A2.07.28 A2.08.27 A2.08.29 +A2.08.00 A2.07.01 A2.07.06 A2.08.01 A2.08.06 +A2.08.01 A2.08.00 A2.08.02 A2.08.05 A2.08.06 +A2.08.02 A2.08.01 A2.08.05 A2.08.06 +A2.08.03 A2.08.04 A2.08.07 A2.08.08 A2.09.04 +A2.08.04 A2.08.03 A2.08.05 A2.08.07 A2.08.08 A2.08.09 +A2.08.05 A2.08.01 A2.08.02 A2.08.04 A2.08.06 A2.08.08 A2.08.09 A2.08.10 +A2.08.06 A2.07.01 A2.07.06 A2.07.10 A2.08.00 A2.08.01 A2.08.02 A2.08.05 A2.08.09 A2.08.10 +A2.08.07 A2.08.03 A2.08.04 A2.08.08 A2.08.11 A2.09.04 A2.09.07 A2.09.10 +A2.08.08 A2.08.03 A2.08.04 A2.08.05 A2.08.07 A2.08.09 A2.08.11 A2.08.12 A2.09.10 +A2.08.09 A2.08.04 A2.08.05 A2.08.06 A2.08.08 A2.08.10 A2.08.11 A2.08.12 A2.08.13 +A2.08.10 A2.07.06 A2.07.10 A2.07.13 A2.08.05 A2.08.06 A2.08.09 A2.08.12 A2.08.13 +A2.08.11 A2.08.07 A2.08.08 A2.08.09 A2.08.12 A2.08.14 A2.08.15 A2.09.10 A2.09.13 +A2.08.12 A2.08.08 A2.08.09 A2.08.10 A2.08.11 A2.08.13 A2.08.14 A2.08.15 A2.08.16 +A2.08.13 A2.07.10 A2.07.13 A2.07.16 A2.08.09 A2.08.10 A2.08.12 A2.08.15 A2.08.16 +A2.08.14 A2.08.11 A2.08.12 A2.08.15 A2.08.17 A2.08.18 A2.09.10 A2.09.13 A2.09.16 +A2.08.15 A2.08.11 A2.08.12 A2.08.13 A2.08.14 A2.08.16 A2.08.17 A2.08.18 A2.08.19 +A2.08.16 A2.07.13 A2.07.16 A2.07.19 A2.08.12 A2.08.13 A2.08.15 A2.08.18 A2.08.19 +A2.08.17 A2.08.14 A2.08.15 A2.08.18 A2.08.20 A2.09.13 A2.09.16 A2.09.18 A2.09.20 +A2.08.18 A2.08.14 A2.08.15 A2.08.16 A2.08.17 A2.08.19 A2.08.20 A2.08.21 A2.09.20 +A2.08.19 A2.07.16 A2.07.19 A2.07.21 A2.08.15 A2.08.16 A2.08.18 A2.08.20 A2.08.21 +A2.08.20 A2.08.17 A2.08.18 A2.08.19 A2.08.21 A2.08.22 A2.08.23 A2.09.20 A2.09.22 +A2.08.21 A2.07.19 A2.07.21 A2.07.23 A2.08.18 A2.08.19 A2.08.20 A2.08.22 A2.08.23 +A2.08.22 A2.08.20 A2.08.21 A2.08.23 A2.08.24 A2.08.25 A2.09.20 A2.09.22 A2.09.24 +A2.08.23 A2.07.21 A2.07.23 A2.07.25 A2.08.20 A2.08.21 A2.08.22 A2.08.24 A2.08.25 +A2.08.24 A2.08.22 A2.08.23 A2.08.25 A2.08.26 A2.09.22 A2.09.24 A2.09.25 A2.09.26 +A2.08.25 A2.07.23 A2.07.25 A2.07.26 A2.08.22 A2.08.23 A2.08.24 A2.08.26 A2.09.26 +A2.08.26 A2.07.25 A2.07.26 A2.07.27 A2.08.24 A2.08.25 A2.08.27 A2.09.26 A2.09.28 +A2.08.27 A2.07.26 A2.07.27 A2.07.29 A2.08.26 A2.08.28 A2.08.29 A2.09.26 A2.09.28 A2.09.30 +A2.08.28 A2.08.27 A2.08.29 A2.09.28 A2.09.30 A2.09.31 +A2.08.29 A2.07.27 A2.07.29 A2.08.27 A2.08.28 +A2.09.00 A2.09.05 A2.10.00 A2.10.06 +A2.09.01 A2.09.03 A2.09.05 +A2.09.02 A2.09.04 A2.09.06 A2.09.07 +A2.09.03 A2.09.01 A2.09.05 A2.09.06 A2.09.09 +A2.09.04 A2.08.03 A2.08.07 A2.09.02 A2.09.06 A2.09.07 A2.09.10 +A2.09.05 A2.09.00 A2.09.01 A2.09.03 A2.09.06 A2.09.08 A2.09.09 A2.09.12 A2.10.06 +A2.09.06 A2.09.02 A2.09.03 A2.09.04 A2.09.05 A2.09.07 A2.09.09 A2.09.11 +A2.09.07 A2.08.07 A2.09.02 A2.09.04 A2.09.06 A2.09.09 A2.09.10 A2.09.11 A2.09.13 +A2.09.08 A2.09.05 A2.09.09 A2.09.12 A2.09.14 A2.10.06 A2.10.09 A2.10.11 +A2.09.09 A2.09.03 A2.09.05 A2.09.06 A2.09.07 A2.09.08 A2.09.11 A2.09.12 A2.09.15 +A2.09.10 A2.08.07 A2.08.08 A2.08.11 A2.08.14 A2.09.04 A2.09.07 A2.09.11 A2.09.13 +A2.09.11 A2.09.06 A2.09.07 A2.09.09 A2.09.10 A2.09.12 A2.09.13 A2.09.15 A2.09.16 +A2.09.12 A2.09.05 A2.09.08 A2.09.09 A2.09.11 A2.09.14 A2.09.15 A2.09.17 A2.10.11 +A2.09.13 A2.08.11 A2.08.14 A2.08.17 A2.09.07 A2.09.10 A2.09.11 A2.09.15 A2.09.16 +A2.09.14 A2.09.08 A2.09.12 A2.09.15 A2.09.17 A2.09.19 A2.10.11 A2.10.14 A2.10.16 +A2.09.15 A2.09.09 A2.09.11 A2.09.12 A2.09.13 A2.09.14 A2.09.16 A2.09.17 A2.09.18 +A2.09.16 A2.08.14 A2.08.17 A2.09.11 A2.09.13 A2.09.15 A2.09.17 A2.09.18 A2.09.20 +A2.09.17 A2.09.12 A2.09.14 A2.09.15 A2.09.16 A2.09.18 A2.09.19 A2.09.21 A2.10.16 +A2.09.18 A2.08.17 A2.09.15 A2.09.16 A2.09.17 A2.09.19 A2.09.20 A2.09.21 A2.09.22 +A2.09.19 A2.09.14 A2.09.17 A2.09.18 A2.09.21 A2.09.23 A2.10.16 A2.10.18 A2.10.20 +A2.09.20 A2.08.17 A2.08.18 A2.08.20 A2.08.22 A2.09.16 A2.09.18 A2.09.21 A2.09.22 +A2.09.21 A2.09.17 A2.09.18 A2.09.19 A2.09.20 A2.09.22 A2.09.23 A2.09.24 A2.10.20 +A2.09.22 A2.08.20 A2.08.22 A2.08.24 A2.09.18 A2.09.20 A2.09.21 A2.09.23 A2.09.24 +A2.09.23 A2.09.19 A2.09.21 A2.09.22 A2.09.24 A2.09.25 A2.10.20 A2.10.22 A2.10.24 +A2.09.24 A2.08.22 A2.08.24 A2.09.21 A2.09.22 A2.09.23 A2.09.25 A2.09.26 A2.10.24 +A2.09.25 A2.08.24 A2.09.23 A2.09.24 A2.09.26 A2.09.27 A2.09.28 A2.10.24 A2.10.25 +A2.09.26 A2.08.24 A2.08.25 A2.08.26 A2.08.27 A2.09.24 A2.09.25 A2.09.27 A2.09.28 +A2.09.27 A2.09.25 A2.09.26 A2.09.28 A2.09.29 A2.10.24 A2.10.25 A2.10.26 A2.10.27 +A2.09.28 A2.08.26 A2.08.27 A2.08.28 A2.09.25 A2.09.26 A2.09.27 A2.09.29 A2.09.30 A2.10.27 +A2.09.29 A2.09.27 A2.09.28 A2.09.30 A2.09.31 A2.10.27 A2.10.29 +A2.09.30 A2.08.27 A2.08.28 A2.09.28 A2.09.29 A2.09.31 A2.10.29 +A2.09.31 A2.08.28 A2.09.29 A2.09.30 A2.10.29 A2.10.30 +A2.10.00 A2.09.00 A2.10.03 A2.10.06 +A2.10.01 A2.10.02 A2.10.07 A2.10.08 +A2.10.02 A2.10.01 A2.10.04 A2.10.07 A2.10.08 A2.11.01 +A2.10.03 A2.10.00 A2.10.05 A2.10.06 A2.10.09 +A2.10.04 A2.10.02 A2.10.08 A2.11.01 A2.11.06 +A2.10.05 A2.10.03 A2.10.07 A2.10.09 A2.10.10 +A2.10.06 A2.09.00 A2.09.05 A2.09.08 A2.10.00 A2.10.03 A2.10.09 A2.10.11 +A2.10.07 A2.10.01 A2.10.02 A2.10.05 A2.10.08 A2.10.09 A2.10.10 A2.10.12 +A2.10.08 A2.10.01 A2.10.02 A2.10.04 A2.10.07 A2.10.10 A2.10.12 A2.10.13 A2.11.01 A2.11.06 +A2.10.09 A2.09.08 A2.10.03 A2.10.05 A2.10.06 A2.10.07 A2.10.10 A2.10.11 A2.10.14 +A2.10.10 A2.10.05 A2.10.07 A2.10.08 A2.10.09 A2.10.11 A2.10.12 A2.10.14 A2.10.15 +A2.10.11 A2.09.08 A2.09.12 A2.09.14 A2.10.06 A2.10.09 A2.10.10 A2.10.14 A2.10.16 +A2.10.12 A2.10.07 A2.10.08 A2.10.10 A2.10.13 A2.10.14 A2.10.15 A2.10.17 A2.11.06 +A2.10.13 A2.10.08 A2.10.12 A2.10.15 A2.10.17 A2.11.06 A2.11.07 A2.11.11 A2.11.15 +A2.10.14 A2.09.14 A2.10.09 A2.10.10 A2.10.11 A2.10.12 A2.10.15 A2.10.16 A2.10.18 +A2.10.15 A2.10.10 A2.10.12 A2.10.13 A2.10.14 A2.10.16 A2.10.17 A2.10.18 A2.10.19 +A2.10.16 A2.09.14 A2.09.17 A2.09.19 A2.10.11 A2.10.14 A2.10.15 A2.10.18 A2.10.20 +A2.10.17 A2.10.12 A2.10.13 A2.10.15 A2.10.18 A2.10.19 A2.10.21 A2.11.11 A2.11.15 +A2.10.18 A2.09.19 A2.10.14 A2.10.15 A2.10.16 A2.10.17 A2.10.19 A2.10.20 A2.10.22 +A2.10.19 A2.10.15 A2.10.17 A2.10.18 A2.10.20 A2.10.21 A2.10.22 A2.10.23 A2.11.15 +A2.10.20 A2.09.19 A2.09.21 A2.09.23 A2.10.16 A2.10.18 A2.10.19 A2.10.22 A2.10.24 +A2.10.21 A2.10.17 A2.10.19 A2.10.22 A2.10.23 A2.11.15 A2.11.16 A2.11.19 A2.11.22 +A2.10.22 A2.09.23 A2.10.18 A2.10.19 A2.10.20 A2.10.21 A2.10.23 A2.10.24 A2.10.25 +A2.10.23 A2.10.19 A2.10.21 A2.10.22 A2.10.24 A2.10.25 A2.10.26 A2.11.19 A2.11.22 +A2.10.24 A2.09.23 A2.09.24 A2.09.25 A2.09.27 A2.10.20 A2.10.22 A2.10.23 A2.10.25 +A2.10.25 A2.09.25 A2.09.27 A2.10.22 A2.10.23 A2.10.24 A2.10.26 A2.10.27 A2.11.22 +A2.10.26 A2.09.27 A2.10.23 A2.10.25 A2.10.27 A2.10.28 A2.11.22 A2.11.23 A2.11.25 +A2.10.27 A2.09.27 A2.09.28 A2.09.29 A2.10.25 A2.10.26 A2.10.28 A2.10.29 A2.10.30 A2.11.25 +A2.10.28 A2.10.26 A2.10.27 A2.10.29 A2.10.30 A2.10.31 A2.11.25 A2.11.26 A2.11.27 A2.11.29 +A2.10.29 A2.09.29 A2.09.30 A2.09.31 A2.10.27 A2.10.28 A2.10.30 +A2.10.30 A2.09.31 A2.10.27 A2.10.28 A2.10.29 A2.10.31 +A2.10.31 A2.10.28 A2.10.30 A2.11.29 A2.11.30 +A2.11.00 A2.11.03 A2.11.04 A2.11.05 A2.12.00 A2.12.05 +A2.11.01 A2.10.02 A2.10.04 A2.10.08 A2.11.02 A2.11.06 A2.11.07 +A2.11.02 A2.11.01 A2.11.03 A2.11.06 A2.11.07 A2.11.08 +A2.11.03 A2.11.00 A2.11.02 A2.11.04 A2.11.07 A2.11.08 A2.11.09 +A2.11.04 A2.11.00 A2.11.03 A2.11.05 A2.11.08 A2.11.09 A2.11.10 +A2.11.05 A2.11.00 A2.11.04 A2.11.09 A2.11.10 A2.12.00 A2.12.05 A2.12.10 +A2.11.06 A2.10.04 A2.10.08 A2.10.12 A2.10.13 A2.11.01 A2.11.02 A2.11.07 A2.11.11 +A2.11.07 A2.10.13 A2.11.01 A2.11.02 A2.11.03 A2.11.06 A2.11.08 A2.11.11 A2.11.12 +A2.11.08 A2.11.02 A2.11.03 A2.11.04 A2.11.07 A2.11.09 A2.11.11 A2.11.12 A2.11.13 +A2.11.09 A2.11.03 A2.11.04 A2.11.05 A2.11.08 A2.11.10 A2.11.12 A2.11.13 A2.11.14 +A2.11.10 A2.11.04 A2.11.05 A2.11.09 A2.11.13 A2.11.14 A2.12.05 A2.12.10 A2.12.14 +A2.11.11 A2.10.13 A2.10.17 A2.11.06 A2.11.07 A2.11.08 A2.11.12 A2.11.15 A2.11.16 +A2.11.12 A2.11.07 A2.11.08 A2.11.09 A2.11.11 A2.11.13 A2.11.15 A2.11.16 A2.11.17 +A2.11.13 A2.11.08 A2.11.09 A2.11.10 A2.11.12 A2.11.14 A2.11.16 A2.11.17 A2.11.18 +A2.11.14 A2.11.09 A2.11.10 A2.11.13 A2.11.17 A2.11.18 A2.12.10 A2.12.14 A2.12.18 +A2.11.15 A2.10.13 A2.10.17 A2.10.19 A2.10.21 A2.11.11 A2.11.12 A2.11.16 A2.11.19 +A2.11.16 A2.10.21 A2.11.11 A2.11.12 A2.11.13 A2.11.15 A2.11.17 A2.11.19 A2.11.20 +A2.11.17 A2.11.12 A2.11.13 A2.11.14 A2.11.16 A2.11.18 A2.11.19 A2.11.20 A2.11.21 +A2.11.18 A2.11.13 A2.11.14 A2.11.17 A2.11.20 A2.11.21 A2.12.14 A2.12.18 A2.12.21 +A2.11.19 A2.10.21 A2.10.23 A2.11.15 A2.11.16 A2.11.17 A2.11.20 A2.11.22 A2.11.23 +A2.11.20 A2.11.16 A2.11.17 A2.11.18 A2.11.19 A2.11.21 A2.11.22 A2.11.23 A2.11.24 +A2.11.21 A2.11.17 A2.11.18 A2.11.20 A2.11.23 A2.11.24 A2.12.18 A2.12.21 A2.12.24 +A2.11.22 A2.10.21 A2.10.23 A2.10.25 A2.10.26 A2.11.19 A2.11.20 A2.11.23 A2.11.25 +A2.11.23 A2.10.26 A2.11.19 A2.11.20 A2.11.21 A2.11.22 A2.11.24 A2.11.25 A2.11.26 +A2.11.24 A2.11.20 A2.11.21 A2.11.23 A2.11.25 A2.11.26 A2.12.21 A2.12.24 A2.12.26 +A2.11.25 A2.10.26 A2.10.27 A2.10.28 A2.11.22 A2.11.23 A2.11.24 A2.11.26 A2.11.27 +A2.11.26 A2.10.28 A2.11.23 A2.11.24 A2.11.25 A2.11.27 A2.11.28 A2.12.24 A2.12.26 A2.12.28 +A2.11.27 A2.10.28 A2.11.25 A2.11.26 A2.11.28 A2.11.29 A2.11.30 +A2.11.28 A2.11.26 A2.11.27 A2.11.29 A2.11.30 A2.12.26 A2.12.28 A2.12.30 +A2.11.29 A2.10.28 A2.10.31 A2.11.27 A2.11.28 A2.11.30 +A2.11.30 A2.10.31 A2.11.27 A2.11.28 A2.11.29 A2.12.28 A2.12.30 +A2.12.00 A2.11.00 A2.11.05 A2.12.03 A2.12.04 A2.12.05 +A2.12.01 A2.12.02 A2.12.06 A2.12.07 A2.13.02 A2.13.04 A2.13.08 +A2.12.02 A2.12.01 A2.12.03 A2.12.06 A2.12.07 A2.12.08 +A2.12.03 A2.12.00 A2.12.02 A2.12.04 A2.12.07 A2.12.08 A2.12.09 +A2.12.04 A2.12.00 A2.12.03 A2.12.05 A2.12.08 A2.12.09 A2.12.10 +A2.12.05 A2.11.00 A2.11.05 A2.11.10 A2.12.00 A2.12.04 A2.12.09 A2.12.10 +A2.12.06 A2.12.01 A2.12.02 A2.12.07 A2.12.11 A2.13.04 A2.13.08 A2.13.12 A2.13.13 +A2.12.07 A2.12.01 A2.12.02 A2.12.03 A2.12.06 A2.12.08 A2.12.11 A2.12.12 A2.13.13 +A2.12.08 A2.12.02 A2.12.03 A2.12.04 A2.12.07 A2.12.09 A2.12.11 A2.12.12 A2.12.13 +A2.12.09 A2.12.03 A2.12.04 A2.12.05 A2.12.08 A2.12.10 A2.12.12 A2.12.13 A2.12.14 +A2.12.10 A2.11.05 A2.11.10 A2.11.14 A2.12.04 A2.12.05 A2.12.09 A2.12.13 A2.12.14 +A2.12.11 A2.12.06 A2.12.07 A2.12.08 A2.12.12 A2.12.15 A2.12.16 A2.13.13 A2.13.17 +A2.12.12 A2.12.07 A2.12.08 A2.12.09 A2.12.11 A2.12.13 A2.12.15 A2.12.16 A2.12.17 +A2.12.13 A2.12.08 A2.12.09 A2.12.10 A2.12.12 A2.12.14 A2.12.16 A2.12.17 A2.12.18 +A2.12.14 A2.11.10 A2.11.14 A2.11.18 A2.12.09 A2.12.10 A2.12.13 A2.12.17 A2.12.18 +A2.12.15 A2.12.11 A2.12.12 A2.12.16 A2.12.19 A2.13.13 A2.13.17 A2.13.19 A2.13.21 +A2.12.16 A2.12.11 A2.12.12 A2.12.13 A2.12.15 A2.12.17 A2.12.19 A2.12.20 A2.13.21 +A2.12.17 A2.12.12 A2.12.13 A2.12.14 A2.12.16 A2.12.18 A2.12.19 A2.12.20 A2.12.21 +A2.12.18 A2.11.14 A2.11.18 A2.11.21 A2.12.13 A2.12.14 A2.12.17 A2.12.20 A2.12.21 +A2.12.19 A2.12.15 A2.12.16 A2.12.17 A2.12.20 A2.12.22 A2.12.23 A2.13.21 A2.13.23 +A2.12.20 A2.12.16 A2.12.17 A2.12.18 A2.12.19 A2.12.21 A2.12.22 A2.12.23 A2.12.24 +A2.12.21 A2.11.18 A2.11.21 A2.11.24 A2.12.17 A2.12.18 A2.12.20 A2.12.23 A2.12.24 +A2.12.22 A2.12.19 A2.12.20 A2.12.23 A2.12.25 A2.13.21 A2.13.23 A2.13.25 A2.13.26 +A2.12.23 A2.12.19 A2.12.20 A2.12.21 A2.12.22 A2.12.24 A2.12.25 A2.12.26 A2.13.26 +A2.12.24 A2.11.21 A2.11.24 A2.11.26 A2.12.20 A2.12.21 A2.12.23 A2.12.25 A2.12.26 +A2.12.25 A2.12.22 A2.12.23 A2.12.24 A2.12.26 A2.12.27 A2.13.26 A2.13.27 A2.13.28 +A2.12.26 A2.11.24 A2.11.26 A2.11.28 A2.12.23 A2.12.24 A2.12.25 A2.12.27 A2.12.28 A2.13.28 +A2.12.27 A2.12.25 A2.12.26 A2.12.28 A2.12.29 A2.12.30 A2.13.28 +A2.12.28 A2.11.26 A2.11.28 A2.11.30 A2.12.26 A2.12.27 A2.12.29 A2.12.30 +A2.12.29 A2.12.27 A2.12.28 A2.12.30 A2.13.28 A2.13.31 +A2.12.30 A2.11.28 A2.11.30 A2.12.27 A2.12.28 A2.12.29 +A2.13.00 A2.13.02 A2.13.07 +A2.13.01 A2.13.06 A2.14.00 A2.14.03 +A2.13.02 A2.12.01 A2.13.00 A2.13.04 A2.13.07 A2.13.08 +A2.13.03 A2.13.05 A2.13.06 A2.13.09 +A2.13.04 A2.12.01 A2.12.06 A2.13.02 A2.13.08 +A2.13.05 A2.13.03 A2.13.07 A2.13.09 A2.13.10 +A2.13.06 A2.13.01 A2.13.03 A2.13.09 A2.13.11 A2.14.03 A2.14.08 +A2.13.07 A2.13.00 A2.13.02 A2.13.05 A2.13.08 A2.13.09 A2.13.10 A2.13.12 +A2.13.08 A2.12.01 A2.12.06 A2.13.02 A2.13.04 A2.13.07 A2.13.10 A2.13.12 A2.13.13 +A2.13.09 A2.13.03 A2.13.05 A2.13.06 A2.13.07 A2.13.10 A2.13.11 A2.13.14 A2.14.08 +A2.13.10 A2.13.05 A2.13.07 A2.13.08 A2.13.09 A2.13.11 A2.13.12 A2.13.14 A2.13.15 +A2.13.11 A2.13.06 A2.13.09 A2.13.10 A2.13.14 A2.13.16 A2.14.08 A2.14.12 A2.14.14 +A2.13.12 A2.12.06 A2.13.07 A2.13.08 A2.13.10 A2.13.13 A2.13.14 A2.13.15 A2.13.17 +A2.13.13 A2.12.06 A2.12.07 A2.12.11 A2.12.15 A2.13.08 A2.13.12 A2.13.15 A2.13.17 +A2.13.14 A2.13.09 A2.13.10 A2.13.11 A2.13.12 A2.13.15 A2.13.16 A2.13.18 A2.14.14 +A2.13.15 A2.13.10 A2.13.12 A2.13.13 A2.13.14 A2.13.16 A2.13.17 A2.13.18 A2.13.19 +A2.13.16 A2.13.11 A2.13.14 A2.13.15 A2.13.18 A2.13.20 A2.14.14 A2.14.17 A2.14.19 +A2.13.17 A2.12.11 A2.12.15 A2.13.12 A2.13.13 A2.13.15 A2.13.18 A2.13.19 A2.13.21 +A2.13.18 A2.13.14 A2.13.15 A2.13.16 A2.13.17 A2.13.19 A2.13.20 A2.13.22 A2.14.19 +A2.13.19 A2.12.15 A2.13.15 A2.13.17 A2.13.18 A2.13.20 A2.13.21 A2.13.22 A2.13.23 +A2.13.20 A2.13.16 A2.13.18 A2.13.19 A2.13.22 A2.13.24 A2.14.19 A2.14.21 A2.14.23 +A2.13.21 A2.12.15 A2.12.16 A2.12.19 A2.12.22 A2.13.17 A2.13.19 A2.13.22 A2.13.23 +A2.13.22 A2.13.18 A2.13.19 A2.13.20 A2.13.21 A2.13.23 A2.13.24 A2.13.25 A2.14.23 +A2.13.23 A2.12.19 A2.12.22 A2.13.19 A2.13.21 A2.13.22 A2.13.24 A2.13.25 A2.13.26 +A2.13.24 A2.13.20 A2.13.22 A2.13.23 A2.13.25 A2.14.23 A2.14.24 A2.14.25 A2.14.27 +A2.13.25 A2.12.22 A2.13.22 A2.13.23 A2.13.24 A2.13.26 A2.13.27 A2.14.25 A2.14.27 +A2.13.26 A2.12.22 A2.12.23 A2.12.25 A2.13.23 A2.13.25 A2.13.27 A2.13.28 A2.14.27 +A2.13.27 A2.12.25 A2.13.25 A2.13.26 A2.13.28 A2.13.29 A2.13.30 A2.14.27 A2.14.28 +A2.13.28 A2.12.25 A2.12.26 A2.12.27 A2.12.29 A2.13.26 A2.13.27 A2.13.30 A2.13.31 +A2.13.29 A2.13.27 A2.13.30 A2.14.27 A2.14.28 A2.14.29 A2.14.31 +A2.13.30 A2.13.27 A2.13.28 A2.13.29 A2.13.31 A2.14.29 A2.14.31 +A2.13.31 A2.12.29 A2.13.28 A2.13.30 +A2.14.00 A2.13.01 A2.14.03 A2.14.05 +A2.14.01 A2.14.05 A2.14.06 +A2.14.02 A2.14.04 A2.14.06 A2.14.07 +A2.14.03 A2.13.01 A2.13.06 A2.14.00 A2.14.05 A2.14.08 +A2.14.04 A2.14.02 A2.14.06 A2.14.07 A2.14.10 A2.15.03 A2.15.07 +A2.14.05 A2.14.00 A2.14.01 A2.14.03 A2.14.06 A2.14.08 A2.14.09 A2.14.12 +A2.14.06 A2.14.01 A2.14.02 A2.14.04 A2.14.05 A2.14.07 A2.14.09 A2.14.11 +A2.14.07 A2.14.02 A2.14.04 A2.14.06 A2.14.09 A2.14.10 A2.14.11 A2.14.13 A2.15.07 +A2.14.08 A2.13.06 A2.13.09 A2.13.11 A2.14.03 A2.14.05 A2.14.09 A2.14.12 A2.14.14 +A2.14.09 A2.14.05 A2.14.06 A2.14.07 A2.14.08 A2.14.11 A2.14.12 A2.14.15 +A2.14.10 A2.14.04 A2.14.07 A2.14.11 A2.14.13 A2.15.07 A2.15.08 A2.15.11 A2.15.14 +A2.14.11 A2.14.06 A2.14.07 A2.14.09 A2.14.10 A2.14.12 A2.14.13 A2.14.15 A2.14.16 +A2.14.12 A2.13.11 A2.14.05 A2.14.08 A2.14.09 A2.14.11 A2.14.14 A2.14.15 A2.14.17 +A2.14.13 A2.14.07 A2.14.10 A2.14.11 A2.14.15 A2.14.16 A2.15.11 A2.15.14 A2.15.17 +A2.14.14 A2.13.11 A2.13.14 A2.13.16 A2.14.08 A2.14.12 A2.14.15 A2.14.17 A2.14.19 +A2.14.15 A2.14.09 A2.14.11 A2.14.12 A2.14.13 A2.14.14 A2.14.16 A2.14.17 A2.14.18 +A2.14.16 A2.14.11 A2.14.13 A2.14.15 A2.14.17 A2.14.18 A2.14.20 A2.15.14 A2.15.17 +A2.14.17 A2.13.16 A2.14.12 A2.14.14 A2.14.15 A2.14.16 A2.14.18 A2.14.19 A2.14.21 +A2.14.18 A2.14.15 A2.14.16 A2.14.17 A2.14.19 A2.14.20 A2.14.21 A2.14.22 A2.15.17 +A2.14.19 A2.13.16 A2.13.18 A2.13.20 A2.14.14 A2.14.17 A2.14.18 A2.14.21 A2.14.23 +A2.14.20 A2.14.16 A2.14.18 A2.14.21 A2.14.22 A2.15.17 A2.15.18 A2.15.20 A2.15.22 +A2.14.21 A2.13.20 A2.14.17 A2.14.18 A2.14.19 A2.14.20 A2.14.22 A2.14.23 A2.14.24 +A2.14.22 A2.14.18 A2.14.20 A2.14.21 A2.14.23 A2.14.24 A2.15.20 A2.15.22 A2.15.24 +A2.14.23 A2.13.20 A2.13.22 A2.13.24 A2.14.19 A2.14.21 A2.14.22 A2.14.24 A2.14.25 +A2.14.24 A2.13.24 A2.14.21 A2.14.22 A2.14.23 A2.14.25 A2.14.26 A2.15.22 A2.15.24 +A2.14.25 A2.13.24 A2.13.25 A2.14.23 A2.14.24 A2.14.26 A2.14.27 A2.14.28 A2.15.24 +A2.14.26 A2.14.24 A2.14.25 A2.14.27 A2.14.28 A2.15.24 A2.15.25 A2.15.26 A2.15.27 +A2.14.27 A2.13.24 A2.13.25 A2.13.26 A2.13.27 A2.13.29 A2.14.25 A2.14.26 A2.14.28 +A2.14.28 A2.13.27 A2.13.29 A2.14.25 A2.14.26 A2.14.27 A2.14.29 A2.14.30 A2.15.26 A2.15.27 A2.15.28 +A2.14.29 A2.13.29 A2.13.30 A2.14.28 A2.14.30 A2.14.31 +A2.14.30 A2.14.28 A2.14.29 A2.14.31 A2.15.27 A2.15.28 +A2.14.31 A2.13.29 A2.13.30 A2.14.29 A2.14.30 A2.15.28 +A2.15.00 A2.15.02 A2.15.05 A2.15.06 +A2.15.01 A2.00.02 A2.00.06 A2.15.02 A2.15.06 +A2.15.02 A2.15.00 A2.15.01 A2.15.05 A2.15.06 +A2.15.03 A2.14.04 A2.15.04 A2.15.07 A2.15.08 +A2.15.04 A2.15.03 A2.15.05 A2.15.07 A2.15.08 A2.15.09 +A2.15.05 A2.15.00 A2.15.02 A2.15.04 A2.15.06 A2.15.08 A2.15.09 A2.15.10 +A2.15.06 A2.00.02 A2.00.06 A2.00.10 A2.15.00 A2.15.01 A2.15.02 A2.15.05 A2.15.09 A2.15.10 +A2.15.07 A2.14.04 A2.14.07 A2.14.10 A2.15.03 A2.15.04 A2.15.08 A2.15.11 +A2.15.08 A2.14.10 A2.15.03 A2.15.04 A2.15.05 A2.15.07 A2.15.09 A2.15.11 A2.15.12 +A2.15.09 A2.15.04 A2.15.05 A2.15.06 A2.15.08 A2.15.10 A2.15.11 A2.15.12 A2.15.13 +A2.15.10 A2.00.06 A2.00.10 A2.00.13 A2.15.05 A2.15.06 A2.15.09 A2.15.12 A2.15.13 +A2.15.11 A2.14.10 A2.14.13 A2.15.07 A2.15.08 A2.15.09 A2.15.12 A2.15.14 A2.15.15 +A2.15.12 A2.15.08 A2.15.09 A2.15.10 A2.15.11 A2.15.13 A2.15.14 A2.15.15 A2.15.16 +A2.15.13 A2.00.10 A2.00.13 A2.00.16 A2.15.09 A2.15.10 A2.15.12 A2.15.15 A2.15.16 +A2.15.14 A2.14.10 A2.14.13 A2.14.16 A2.15.11 A2.15.12 A2.15.15 A2.15.17 A2.15.18 +A2.15.15 A2.15.11 A2.15.12 A2.15.13 A2.15.14 A2.15.16 A2.15.17 A2.15.18 A2.15.19 +A2.15.16 A2.00.13 A2.00.16 A2.00.19 A2.15.12 A2.15.13 A2.15.15 A2.15.18 A2.15.19 +A2.15.17 A2.14.13 A2.14.16 A2.14.18 A2.14.20 A2.15.14 A2.15.15 A2.15.18 A2.15.20 +A2.15.18 A2.14.20 A2.15.14 A2.15.15 A2.15.16 A2.15.17 A2.15.19 A2.15.20 A2.15.21 +A2.15.19 A2.00.16 A2.00.19 A2.00.21 A2.15.15 A2.15.16 A2.15.18 A2.15.20 A2.15.21 +A2.15.20 A2.14.20 A2.14.22 A2.15.17 A2.15.18 A2.15.19 A2.15.21 A2.15.22 A2.15.23 +A2.15.21 A2.00.19 A2.00.21 A2.00.23 A2.15.18 A2.15.19 A2.15.20 A2.15.22 A2.15.23 +A2.15.22 A2.14.20 A2.14.22 A2.14.24 A2.15.20 A2.15.21 A2.15.23 A2.15.24 A2.15.25 +A2.15.23 A2.00.21 A2.00.23 A2.00.25 A2.15.20 A2.15.21 A2.15.22 A2.15.24 A2.15.25 +A2.15.24 A2.14.22 A2.14.24 A2.14.25 A2.14.26 A2.15.22 A2.15.23 A2.15.25 A2.15.26 +A2.15.25 A2.00.23 A2.00.25 A2.00.26 A2.14.26 A2.15.22 A2.15.23 A2.15.24 A2.15.26 +A2.15.26 A2.00.25 A2.00.26 A2.00.27 A2.14.26 A2.14.28 A2.15.24 A2.15.25 A2.15.27 +A2.15.27 A2.00.26 A2.00.27 A2.00.29 A2.14.26 A2.14.28 A2.14.30 A2.15.26 A2.15.28 A2.15.29 +A2.15.28 A2.14.28 A2.14.30 A2.14.31 A2.15.27 A2.15.29 +A2.15.29 A2.00.27 A2.00.29 A2.15.27 A2.15.28 +A3.00.00 A3.00.02 A3.00.03 A3.15.00 A3.15.03 +A3.00.01 A3.00.02 A3.00.04 A3.00.05 A3.01.00 A3.01.04 +A3.00.02 A3.00.00 A3.00.01 A3.00.03 A3.00.04 A3.00.05 A3.00.06 +A3.00.03 A3.00.00 A3.00.02 A3.00.05 A3.00.06 A3.15.00 A3.15.03 A3.15.06 +A3.00.04 A3.00.01 A3.00.02 A3.00.05 A3.00.07 A3.00.08 A3.01.04 A3.01.06 +A3.00.05 A3.00.01 A3.00.02 A3.00.03 A3.00.04 A3.00.06 A3.00.07 A3.00.08 A3.00.09 +A3.00.06 A3.00.02 A3.00.03 A3.00.05 A3.00.08 A3.00.09 A3.15.03 A3.15.06 A3.15.09 +A3.00.07 A3.00.04 A3.00.05 A3.00.08 A3.00.10 A3.01.04 A3.01.06 A3.01.08 A3.01.09 +A3.00.08 A3.00.04 A3.00.05 A3.00.06 A3.00.07 A3.00.09 A3.00.10 A3.00.11 A3.01.09 +A3.00.09 A3.00.05 A3.00.06 A3.00.08 A3.00.10 A3.00.11 A3.15.06 A3.15.09 A3.15.11 +A3.00.10 A3.00.07 A3.00.08 A3.00.09 A3.00.11 A3.00.12 A3.00.13 A3.01.09 A3.01.11 +A3.00.11 A3.00.08 A3.00.09 A3.00.10 A3.00.12 A3.00.13 A3.15.09 A3.15.11 A3.15.13 +A3.00.12 A3.00.10 A3.00.11 A3.00.13 A3.00.14 A3.01.09 A3.01.11 A3.01.12 A3.01.13 +A3.00.13 A3.00.10 A3.00.11 A3.00.12 A3.00.14 A3.01.13 A3.15.11 A3.15.13 A3.15.14 +A3.00.14 A3.00.12 A3.00.13 A3.00.15 A3.01.13 A3.01.15 A3.15.13 A3.15.14 A3.15.15 +A3.00.15 A3.00.14 A3.01.15 A3.15.14 A3.15.15 +A3.01.00 A3.00.01 A3.01.02 A3.01.04 +A3.01.01 A3.01.02 A3.01.03 A3.01.05 A3.02.00 +A3.01.02 A3.01.00 A3.01.01 A3.01.04 A3.01.05 A3.01.06 +A3.01.03 A3.01.01 A3.01.05 A3.01.07 A3.02.00 A3.02.03 A3.02.05 +A3.01.04 A3.00.01 A3.00.04 A3.00.07 A3.01.00 A3.01.02 A3.01.05 A3.01.06 +A3.01.05 A3.01.01 A3.01.02 A3.01.03 A3.01.04 A3.01.06 A3.01.07 A3.01.08 A3.02.05 +A3.01.06 A3.00.04 A3.00.07 A3.01.02 A3.01.04 A3.01.05 A3.01.07 A3.01.08 A3.01.09 +A3.01.07 A3.01.03 A3.01.05 A3.01.06 A3.01.08 A3.01.10 A3.02.05 A3.02.07 A3.02.09 +A3.01.08 A3.00.07 A3.01.05 A3.01.06 A3.01.07 A3.01.09 A3.01.10 A3.01.11 A3.02.09 +A3.01.09 A3.00.07 A3.00.08 A3.00.10 A3.00.12 A3.01.06 A3.01.08 A3.01.10 A3.01.11 +A3.01.10 A3.01.07 A3.01.08 A3.01.09 A3.01.11 A3.01.12 A3.02.09 A3.02.10 A3.02.11 +A3.01.11 A3.00.10 A3.00.12 A3.01.08 A3.01.09 A3.01.10 A3.01.12 A3.01.13 A3.02.11 +A3.01.12 A3.00.12 A3.01.10 A3.01.11 A3.01.13 A3.01.14 A3.02.11 A3.02.12 A3.02.13 +A3.01.13 A3.00.12 A3.00.13 A3.00.14 A3.01.11 A3.01.12 A3.01.14 A3.01.15 A3.02.13 +A3.01.14 A3.01.12 A3.01.13 A3.01.15 A3.02.13 A3.02.14 +A3.01.15 A3.00.14 A3.00.15 A3.01.13 A3.01.14 A3.02.14 +A3.02.00 A3.01.01 A3.01.03 A3.02.02 A3.02.03 A3.02.05 +A3.02.01 A3.02.02 A3.03.02 A3.03.05 +A3.02.02 A3.02.00 A3.02.01 A3.02.03 A3.02.04 A3.02.06 A3.03.05 +A3.02.03 A3.01.03 A3.02.00 A3.02.02 A3.02.04 A3.02.05 A3.02.07 +A3.02.04 A3.02.02 A3.02.03 A3.02.05 A3.02.06 A3.02.07 A3.02.08 A3.03.05 +A3.02.05 A3.01.03 A3.01.05 A3.01.07 A3.02.00 A3.02.03 A3.02.04 A3.02.07 A3.02.09 +A3.02.06 A3.02.02 A3.02.04 A3.02.07 A3.02.08 A3.03.05 A3.03.06 A3.03.08 A3.03.10 +A3.02.07 A3.01.07 A3.02.03 A3.02.04 A3.02.05 A3.02.06 A3.02.08 A3.02.09 A3.02.10 +A3.02.08 A3.02.04 A3.02.06 A3.02.07 A3.02.09 A3.02.10 A3.03.08 A3.03.10 A3.03.12 +A3.02.09 A3.01.07 A3.01.08 A3.01.10 A3.02.05 A3.02.07 A3.02.08 A3.02.10 A3.02.11 +A3.02.10 A3.01.10 A3.02.07 A3.02.08 A3.02.09 A3.02.11 A3.02.12 A3.03.10 A3.03.12 +A3.02.11 A3.01.10 A3.01.11 A3.01.12 A3.02.09 A3.02.10 A3.02.12 A3.02.13 A3.03.12 +A3.02.12 A3.01.12 A3.02.10 A3.02.11 A3.02.13 A3.03.12 A3.03.13 A3.03.14 A3.03.15 +A3.02.13 A3.01.12 A3.01.13 A3.01.14 A3.02.11 A3.02.12 A3.02.14 A3.02.15 A3.03.14 A3.03.15 +A3.02.14 A3.01.14 A3.01.15 A3.02.13 A3.02.15 +A3.02.15 A3.02.13 A3.02.14 A3.03.15 +A3.03.00 A3.03.01 A3.03.03 A3.03.04 +A3.03.01 A3.03.00 A3.03.04 A3.04.01 A3.04.04 +A3.03.02 A3.02.01 A3.03.03 A3.03.05 A3.03.06 +A3.03.03 A3.03.00 A3.03.02 A3.03.04 A3.03.05 A3.03.06 A3.03.07 +A3.03.04 A3.03.00 A3.03.01 A3.03.03 A3.03.06 A3.03.07 A3.04.01 A3.04.04 A3.04.07 +A3.03.05 A3.02.01 A3.02.02 A3.02.04 A3.02.06 A3.03.02 A3.03.03 A3.03.06 A3.03.08 +A3.03.06 A3.02.06 A3.03.02 A3.03.03 A3.03.04 A3.03.05 A3.03.07 A3.03.08 A3.03.09 +A3.03.07 A3.03.03 A3.03.04 A3.03.06 A3.03.08 A3.03.09 A3.04.04 A3.04.07 A3.04.09 +A3.03.08 A3.02.06 A3.02.08 A3.03.05 A3.03.06 A3.03.07 A3.03.09 A3.03.10 A3.03.11 +A3.03.09 A3.03.06 A3.03.07 A3.03.08 A3.03.10 A3.03.11 A3.04.07 A3.04.09 A3.04.11 +A3.03.10 A3.02.06 A3.02.08 A3.02.10 A3.03.08 A3.03.09 A3.03.11 A3.03.12 A3.03.13 +A3.03.11 A3.03.08 A3.03.09 A3.03.10 A3.03.12 A3.03.13 A3.04.09 A3.04.11 A3.04.13 +A3.03.12 A3.02.08 A3.02.10 A3.02.11 A3.02.12 A3.03.10 A3.03.11 A3.03.13 A3.03.14 +A3.03.13 A3.02.12 A3.03.10 A3.03.11 A3.03.12 A3.03.14 A3.04.11 A3.04.13 A3.04.14 +A3.03.14 A3.02.12 A3.02.13 A3.03.12 A3.03.13 A3.03.15 A3.04.13 A3.04.14 A3.04.15 +A3.03.15 A3.02.12 A3.02.13 A3.02.15 A3.03.14 A3.04.14 A3.04.15 +A3.04.00 A3.04.01 A3.04.03 A3.04.04 +A3.04.01 A3.03.01 A3.03.04 A3.04.00 A3.04.04 +A3.04.02 A3.04.03 A3.04.05 A3.04.06 A3.05.02 +A3.04.03 A3.04.00 A3.04.02 A3.04.04 A3.04.05 A3.04.06 A3.04.07 +A3.04.04 A3.03.01 A3.03.04 A3.03.07 A3.04.00 A3.04.01 A3.04.03 A3.04.06 A3.04.07 +A3.04.05 A3.04.02 A3.04.03 A3.04.06 A3.04.08 A3.05.02 A3.05.04 A3.05.06 +A3.04.06 A3.04.02 A3.04.03 A3.04.04 A3.04.05 A3.04.07 A3.04.08 A3.04.09 A3.05.06 +A3.04.07 A3.03.04 A3.03.07 A3.03.09 A3.04.03 A3.04.04 A3.04.06 A3.04.08 A3.04.09 +A3.04.08 A3.04.05 A3.04.06 A3.04.07 A3.04.09 A3.04.10 A3.04.11 A3.05.06 A3.05.08 +A3.04.09 A3.03.07 A3.03.09 A3.03.11 A3.04.06 A3.04.07 A3.04.08 A3.04.10 A3.04.11 +A3.04.10 A3.04.08 A3.04.09 A3.04.11 A3.04.12 A3.04.13 A3.05.06 A3.05.08 A3.05.10 +A3.04.11 A3.03.09 A3.03.11 A3.03.13 A3.04.08 A3.04.09 A3.04.10 A3.04.12 A3.04.13 +A3.04.12 A3.04.10 A3.04.11 A3.04.13 A3.04.14 A3.05.08 A3.05.10 A3.05.11 A3.05.12 +A3.04.13 A3.03.11 A3.03.13 A3.03.14 A3.04.10 A3.04.11 A3.04.12 A3.04.14 A3.05.12 +A3.04.14 A3.03.13 A3.03.14 A3.03.15 A3.04.12 A3.04.13 A3.04.15 A3.05.12 A3.05.13 +A3.04.15 A3.03.14 A3.03.15 A3.04.14 A3.05.12 A3.05.13 A3.05.14 +A3.05.00 A3.05.01 A3.05.03 A3.05.05 A3.06.00 A3.06.02 +A3.05.01 A3.05.00 A3.05.02 A3.05.03 A3.05.04 +A3.05.02 A3.04.02 A3.04.05 A3.05.01 A3.05.03 A3.05.04 A3.05.06 +A3.05.03 A3.05.00 A3.05.01 A3.05.02 A3.05.04 A3.05.05 A3.05.07 A3.06.02 +A3.05.04 A3.04.05 A3.05.01 A3.05.02 A3.05.03 A3.05.05 A3.05.06 A3.05.07 A3.05.08 +A3.05.05 A3.05.00 A3.05.03 A3.05.04 A3.05.07 A3.05.09 A3.06.02 A3.06.04 A3.06.06 +A3.05.06 A3.04.05 A3.04.06 A3.04.08 A3.04.10 A3.05.02 A3.05.04 A3.05.07 A3.05.08 +A3.05.07 A3.05.03 A3.05.04 A3.05.05 A3.05.06 A3.05.08 A3.05.09 A3.05.10 A3.06.06 +A3.05.08 A3.04.08 A3.04.10 A3.04.12 A3.05.04 A3.05.06 A3.05.07 A3.05.09 A3.05.10 +A3.05.09 A3.05.05 A3.05.07 A3.05.08 A3.05.10 A3.05.11 A3.06.06 A3.06.07 A3.06.09 +A3.05.10 A3.04.10 A3.04.12 A3.05.07 A3.05.08 A3.05.09 A3.05.11 A3.05.12 A3.06.09 +A3.05.11 A3.04.12 A3.05.09 A3.05.10 A3.05.12 A3.05.13 A3.06.09 A3.06.10 A3.06.11 +A3.05.12 A3.04.12 A3.04.13 A3.04.14 A3.04.15 A3.05.10 A3.05.11 A3.05.13 A3.06.11 +A3.05.13 A3.04.14 A3.04.15 A3.05.11 A3.05.12 A3.05.14 A3.06.11 A3.06.12 A3.06.13 +A3.05.14 A3.04.15 A3.05.13 A3.06.13 A3.06.15 +A3.06.00 A3.05.00 A3.06.01 A3.06.02 A3.06.04 +A3.06.01 A3.06.00 A3.06.03 A3.06.04 A3.06.05 A3.07.01 +A3.06.02 A3.05.00 A3.05.03 A3.05.05 A3.06.00 A3.06.04 A3.06.06 +A3.06.03 A3.06.01 A3.06.04 A3.06.05 A3.07.01 A3.07.04 A3.07.07 +A3.06.04 A3.05.05 A3.06.00 A3.06.01 A3.06.02 A3.06.03 A3.06.05 A3.06.06 A3.06.07 +A3.06.05 A3.06.01 A3.06.03 A3.06.04 A3.06.06 A3.06.07 A3.06.08 A3.07.04 A3.07.07 +A3.06.06 A3.05.05 A3.05.07 A3.05.09 A3.06.02 A3.06.04 A3.06.05 A3.06.07 A3.06.09 +A3.06.07 A3.05.09 A3.06.04 A3.06.05 A3.06.06 A3.06.08 A3.06.09 A3.06.10 A3.07.07 +A3.06.08 A3.06.05 A3.06.07 A3.06.09 A3.06.10 A3.07.07 A3.07.08 A3.07.10 A3.07.12 +A3.06.09 A3.05.09 A3.05.10 A3.05.11 A3.06.06 A3.06.07 A3.06.08 A3.06.10 A3.06.11 +A3.06.10 A3.05.11 A3.06.07 A3.06.08 A3.06.09 A3.06.11 A3.06.12 A3.07.10 A3.07.12 +A3.06.11 A3.05.11 A3.05.12 A3.05.13 A3.06.09 A3.06.10 A3.06.12 A3.06.13 A3.07.12 +A3.06.12 A3.05.13 A3.06.10 A3.06.11 A3.06.13 A3.06.14 A3.07.12 A3.07.13 A3.07.14 +A3.06.13 A3.05.13 A3.05.14 A3.06.11 A3.06.12 A3.06.14 A3.06.15 +A3.06.14 A3.06.12 A3.06.13 A3.06.15 A3.07.14 A3.07.15 +A3.06.15 A3.05.14 A3.06.13 A3.06.14 +A3.07.00 A3.07.02 A3.07.03 A3.08.00 A3.08.03 +A3.07.01 A3.06.01 A3.06.03 A3.07.02 A3.07.04 A3.07.05 +A3.07.02 A3.07.00 A3.07.01 A3.07.03 A3.07.04 A3.07.05 A3.07.06 +A3.07.03 A3.07.00 A3.07.02 A3.07.05 A3.07.06 A3.08.00 A3.08.03 A3.08.06 +A3.07.04 A3.06.03 A3.06.05 A3.07.01 A3.07.02 A3.07.05 A3.07.07 A3.07.08 +A3.07.05 A3.07.01 A3.07.02 A3.07.03 A3.07.04 A3.07.06 A3.07.07 A3.07.08 A3.07.09 +A3.07.06 A3.07.02 A3.07.03 A3.07.05 A3.07.08 A3.07.09 A3.08.03 A3.08.06 A3.08.09 +A3.07.07 A3.06.03 A3.06.05 A3.06.07 A3.06.08 A3.07.04 A3.07.05 A3.07.08 A3.07.10 +A3.07.08 A3.06.08 A3.07.04 A3.07.05 A3.07.06 A3.07.07 A3.07.09 A3.07.10 A3.07.11 +A3.07.09 A3.07.05 A3.07.06 A3.07.08 A3.07.10 A3.07.11 A3.08.06 A3.08.09 A3.08.11 +A3.07.10 A3.06.08 A3.06.10 A3.07.07 A3.07.08 A3.07.09 A3.07.11 A3.07.12 A3.07.13 +A3.07.11 A3.07.08 A3.07.09 A3.07.10 A3.07.12 A3.07.13 A3.08.09 A3.08.11 A3.08.13 +A3.07.12 A3.06.08 A3.06.10 A3.06.11 A3.06.12 A3.07.10 A3.07.11 A3.07.13 A3.07.14 +A3.07.13 A3.06.12 A3.07.10 A3.07.11 A3.07.12 A3.07.14 A3.08.11 A3.08.13 A3.08.14 +A3.07.14 A3.06.12 A3.06.14 A3.07.12 A3.07.13 A3.07.15 A3.08.13 A3.08.14 A3.08.15 +A3.07.15 A3.06.14 A3.07.14 A3.08.14 A3.08.15 +A3.08.00 A3.07.00 A3.07.03 A3.08.02 A3.08.03 +A3.08.01 A3.08.02 A3.08.04 A3.08.05 A3.09.00 A3.09.04 +A3.08.02 A3.08.00 A3.08.01 A3.08.03 A3.08.04 A3.08.05 A3.08.06 +A3.08.03 A3.07.00 A3.07.03 A3.07.06 A3.08.00 A3.08.02 A3.08.05 A3.08.06 +A3.08.04 A3.08.01 A3.08.02 A3.08.05 A3.08.07 A3.08.08 A3.09.04 A3.09.06 +A3.08.05 A3.08.01 A3.08.02 A3.08.03 A3.08.04 A3.08.06 A3.08.07 A3.08.08 A3.08.09 +A3.08.06 A3.07.03 A3.07.06 A3.07.09 A3.08.02 A3.08.03 A3.08.05 A3.08.08 A3.08.09 +A3.08.07 A3.08.04 A3.08.05 A3.08.08 A3.08.10 A3.09.04 A3.09.06 A3.09.08 A3.09.09 +A3.08.08 A3.08.04 A3.08.05 A3.08.06 A3.08.07 A3.08.09 A3.08.10 A3.08.11 A3.09.09 +A3.08.09 A3.07.06 A3.07.09 A3.07.11 A3.08.05 A3.08.06 A3.08.08 A3.08.10 A3.08.11 +A3.08.10 A3.08.07 A3.08.08 A3.08.09 A3.08.11 A3.08.12 A3.08.13 A3.09.09 A3.09.11 +A3.08.11 A3.07.09 A3.07.11 A3.07.13 A3.08.08 A3.08.09 A3.08.10 A3.08.12 A3.08.13 +A3.08.12 A3.08.10 A3.08.11 A3.08.13 A3.08.14 A3.09.09 A3.09.11 A3.09.12 A3.09.13 +A3.08.13 A3.07.11 A3.07.13 A3.07.14 A3.08.10 A3.08.11 A3.08.12 A3.08.14 A3.09.13 +A3.08.14 A3.07.13 A3.07.14 A3.07.15 A3.08.12 A3.08.13 A3.08.15 A3.09.13 A3.09.15 +A3.08.15 A3.07.14 A3.07.15 A3.08.14 A3.09.15 +A3.09.00 A3.08.01 A3.09.02 A3.09.04 +A3.09.01 A3.09.02 A3.09.03 A3.09.05 A3.10.00 +A3.09.02 A3.09.00 A3.09.01 A3.09.04 A3.09.05 A3.09.06 +A3.09.03 A3.09.01 A3.09.05 A3.09.07 A3.10.00 A3.10.03 A3.10.05 +A3.09.04 A3.08.01 A3.08.04 A3.08.07 A3.09.00 A3.09.02 A3.09.05 A3.09.06 +A3.09.05 A3.09.01 A3.09.02 A3.09.03 A3.09.04 A3.09.06 A3.09.07 A3.09.08 A3.10.05 +A3.09.06 A3.08.04 A3.08.07 A3.09.02 A3.09.04 A3.09.05 A3.09.07 A3.09.08 A3.09.09 +A3.09.07 A3.09.03 A3.09.05 A3.09.06 A3.09.08 A3.09.10 A3.10.05 A3.10.07 A3.10.09 +A3.09.08 A3.08.07 A3.09.05 A3.09.06 A3.09.07 A3.09.09 A3.09.10 A3.09.11 A3.10.09 +A3.09.09 A3.08.07 A3.08.08 A3.08.10 A3.08.12 A3.09.06 A3.09.08 A3.09.10 A3.09.11 +A3.09.10 A3.09.07 A3.09.08 A3.09.09 A3.09.11 A3.09.12 A3.10.09 A3.10.10 A3.10.11 +A3.09.11 A3.08.10 A3.08.12 A3.09.08 A3.09.09 A3.09.10 A3.09.12 A3.09.13 A3.10.11 +A3.09.12 A3.08.12 A3.09.10 A3.09.11 A3.09.13 A3.09.14 A3.10.11 A3.10.12 A3.10.13 +A3.09.13 A3.08.12 A3.08.13 A3.08.14 A3.09.11 A3.09.12 A3.09.14 A3.09.15 A3.10.13 +A3.09.14 A3.09.12 A3.09.13 A3.09.15 A3.10.13 A3.10.14 +A3.09.15 A3.08.14 A3.08.15 A3.09.13 A3.09.14 A3.10.14 +A3.10.00 A3.09.01 A3.09.03 A3.10.02 A3.10.03 A3.10.05 +A3.10.01 A3.10.02 A3.11.02 A3.11.05 +A3.10.02 A3.10.00 A3.10.01 A3.10.03 A3.10.04 A3.10.06 A3.11.05 +A3.10.03 A3.09.03 A3.10.00 A3.10.02 A3.10.04 A3.10.05 A3.10.07 +A3.10.04 A3.10.02 A3.10.03 A3.10.05 A3.10.06 A3.10.07 A3.10.08 A3.11.05 +A3.10.05 A3.09.03 A3.09.05 A3.09.07 A3.10.00 A3.10.03 A3.10.04 A3.10.07 A3.10.09 +A3.10.06 A3.10.02 A3.10.04 A3.10.07 A3.10.08 A3.11.05 A3.11.06 A3.11.08 A3.11.10 +A3.10.07 A3.09.07 A3.10.03 A3.10.04 A3.10.05 A3.10.06 A3.10.08 A3.10.09 A3.10.10 +A3.10.08 A3.10.04 A3.10.06 A3.10.07 A3.10.09 A3.10.10 A3.11.08 A3.11.10 A3.11.12 +A3.10.09 A3.09.07 A3.09.08 A3.09.10 A3.10.05 A3.10.07 A3.10.08 A3.10.10 A3.10.11 +A3.10.10 A3.09.10 A3.10.07 A3.10.08 A3.10.09 A3.10.11 A3.10.12 A3.11.10 A3.11.12 +A3.10.11 A3.09.10 A3.09.11 A3.09.12 A3.10.09 A3.10.10 A3.10.12 A3.10.13 A3.11.12 +A3.10.12 A3.09.12 A3.10.10 A3.10.11 A3.10.13 A3.11.12 A3.11.13 A3.11.14 A3.11.15 +A3.10.13 A3.09.12 A3.09.13 A3.09.14 A3.10.11 A3.10.12 A3.10.14 A3.10.15 A3.11.14 A3.11.15 +A3.10.14 A3.09.14 A3.09.15 A3.10.13 A3.10.15 +A3.10.15 A3.10.13 A3.10.14 A3.11.15 +A3.11.00 A3.11.01 A3.11.03 A3.11.04 +A3.11.01 A3.11.00 A3.11.04 A3.12.01 A3.12.04 +A3.11.02 A3.10.01 A3.11.03 A3.11.05 A3.11.06 +A3.11.03 A3.11.00 A3.11.02 A3.11.04 A3.11.05 A3.11.06 A3.11.07 +A3.11.04 A3.11.00 A3.11.01 A3.11.03 A3.11.06 A3.11.07 A3.12.01 A3.12.04 A3.12.07 +A3.11.05 A3.10.01 A3.10.02 A3.10.04 A3.10.06 A3.11.02 A3.11.03 A3.11.06 A3.11.08 +A3.11.06 A3.10.06 A3.11.02 A3.11.03 A3.11.04 A3.11.05 A3.11.07 A3.11.08 A3.11.09 +A3.11.07 A3.11.03 A3.11.04 A3.11.06 A3.11.08 A3.11.09 A3.12.04 A3.12.07 A3.12.09 +A3.11.08 A3.10.06 A3.10.08 A3.11.05 A3.11.06 A3.11.07 A3.11.09 A3.11.10 A3.11.11 +A3.11.09 A3.11.06 A3.11.07 A3.11.08 A3.11.10 A3.11.11 A3.12.07 A3.12.09 A3.12.11 +A3.11.10 A3.10.06 A3.10.08 A3.10.10 A3.11.08 A3.11.09 A3.11.11 A3.11.12 A3.11.13 +A3.11.11 A3.11.08 A3.11.09 A3.11.10 A3.11.12 A3.11.13 A3.12.09 A3.12.11 A3.12.13 +A3.11.12 A3.10.08 A3.10.10 A3.10.11 A3.10.12 A3.11.10 A3.11.11 A3.11.13 A3.11.14 +A3.11.13 A3.10.12 A3.11.10 A3.11.11 A3.11.12 A3.11.14 A3.12.11 A3.12.13 A3.12.14 +A3.11.14 A3.10.12 A3.10.13 A3.11.12 A3.11.13 A3.11.15 A3.12.13 A3.12.14 A3.12.15 +A3.11.15 A3.10.12 A3.10.13 A3.10.15 A3.11.14 A3.12.14 A3.12.15 +A3.12.00 A3.12.01 A3.12.03 A3.12.04 +A3.12.01 A3.11.01 A3.11.04 A3.12.00 A3.12.04 +A3.12.02 A3.12.03 A3.12.05 A3.12.06 A3.13.02 +A3.12.03 A3.12.00 A3.12.02 A3.12.04 A3.12.05 A3.12.06 A3.12.07 +A3.12.04 A3.11.01 A3.11.04 A3.11.07 A3.12.00 A3.12.01 A3.12.03 A3.12.06 A3.12.07 +A3.12.05 A3.12.02 A3.12.03 A3.12.06 A3.12.08 A3.13.02 A3.13.04 A3.13.06 +A3.12.06 A3.12.02 A3.12.03 A3.12.04 A3.12.05 A3.12.07 A3.12.08 A3.12.09 A3.13.06 +A3.12.07 A3.11.04 A3.11.07 A3.11.09 A3.12.03 A3.12.04 A3.12.06 A3.12.08 A3.12.09 +A3.12.08 A3.12.05 A3.12.06 A3.12.07 A3.12.09 A3.12.10 A3.12.11 A3.13.06 A3.13.08 +A3.12.09 A3.11.07 A3.11.09 A3.11.11 A3.12.06 A3.12.07 A3.12.08 A3.12.10 A3.12.11 +A3.12.10 A3.12.08 A3.12.09 A3.12.11 A3.12.12 A3.12.13 A3.13.06 A3.13.08 A3.13.10 +A3.12.11 A3.11.09 A3.11.11 A3.11.13 A3.12.08 A3.12.09 A3.12.10 A3.12.12 A3.12.13 +A3.12.12 A3.12.10 A3.12.11 A3.12.13 A3.12.14 A3.13.08 A3.13.10 A3.13.11 A3.13.12 +A3.12.13 A3.11.11 A3.11.13 A3.11.14 A3.12.10 A3.12.11 A3.12.12 A3.12.14 A3.13.12 +A3.12.14 A3.11.13 A3.11.14 A3.11.15 A3.12.12 A3.12.13 A3.12.15 A3.13.12 A3.13.13 +A3.12.15 A3.11.14 A3.11.15 A3.12.14 A3.13.12 A3.13.13 A3.13.14 +A3.13.00 A3.13.01 A3.13.03 A3.13.05 A3.14.00 A3.14.02 +A3.13.01 A3.13.00 A3.13.02 A3.13.03 A3.13.04 +A3.13.02 A3.12.02 A3.12.05 A3.13.01 A3.13.03 A3.13.04 A3.13.06 +A3.13.03 A3.13.00 A3.13.01 A3.13.02 A3.13.04 A3.13.05 A3.13.07 A3.14.02 +A3.13.04 A3.12.05 A3.13.01 A3.13.02 A3.13.03 A3.13.05 A3.13.06 A3.13.07 A3.13.08 +A3.13.05 A3.13.00 A3.13.03 A3.13.04 A3.13.07 A3.13.09 A3.14.02 A3.14.04 A3.14.06 +A3.13.06 A3.12.05 A3.12.06 A3.12.08 A3.12.10 A3.13.02 A3.13.04 A3.13.07 A3.13.08 +A3.13.07 A3.13.03 A3.13.04 A3.13.05 A3.13.06 A3.13.08 A3.13.09 A3.13.10 A3.14.06 +A3.13.08 A3.12.08 A3.12.10 A3.12.12 A3.13.04 A3.13.06 A3.13.07 A3.13.09 A3.13.10 +A3.13.09 A3.13.05 A3.13.07 A3.13.08 A3.13.10 A3.13.11 A3.14.06 A3.14.07 A3.14.09 +A3.13.10 A3.12.10 A3.12.12 A3.13.07 A3.13.08 A3.13.09 A3.13.11 A3.13.12 A3.14.09 +A3.13.11 A3.12.12 A3.13.09 A3.13.10 A3.13.12 A3.13.13 A3.14.09 A3.14.10 A3.14.11 +A3.13.12 A3.12.12 A3.12.13 A3.12.14 A3.12.15 A3.13.10 A3.13.11 A3.13.13 A3.14.11 +A3.13.13 A3.12.14 A3.12.15 A3.13.11 A3.13.12 A3.13.14 A3.14.11 A3.14.12 A3.14.13 +A3.13.14 A3.12.15 A3.13.13 A3.14.13 A3.14.15 +A3.14.00 A3.13.00 A3.14.01 A3.14.02 A3.14.04 +A3.14.01 A3.14.00 A3.14.03 A3.14.04 A3.14.05 A3.15.01 +A3.14.02 A3.13.00 A3.13.03 A3.13.05 A3.14.00 A3.14.04 A3.14.06 +A3.14.03 A3.14.01 A3.14.04 A3.14.05 A3.15.01 A3.15.04 A3.15.07 +A3.14.04 A3.13.05 A3.14.00 A3.14.01 A3.14.02 A3.14.03 A3.14.05 A3.14.06 A3.14.07 +A3.14.05 A3.14.01 A3.14.03 A3.14.04 A3.14.06 A3.14.07 A3.14.08 A3.15.04 A3.15.07 +A3.14.06 A3.13.05 A3.13.07 A3.13.09 A3.14.02 A3.14.04 A3.14.05 A3.14.07 A3.14.09 +A3.14.07 A3.13.09 A3.14.04 A3.14.05 A3.14.06 A3.14.08 A3.14.09 A3.14.10 A3.15.07 +A3.14.08 A3.14.05 A3.14.07 A3.14.09 A3.14.10 A3.15.07 A3.15.08 A3.15.10 A3.15.12 +A3.14.09 A3.13.09 A3.13.10 A3.13.11 A3.14.06 A3.14.07 A3.14.08 A3.14.10 A3.14.11 +A3.14.10 A3.13.11 A3.14.07 A3.14.08 A3.14.09 A3.14.11 A3.14.12 A3.15.10 A3.15.12 +A3.14.11 A3.13.11 A3.13.12 A3.13.13 A3.14.09 A3.14.10 A3.14.12 A3.14.13 A3.15.12 +A3.14.12 A3.13.13 A3.14.10 A3.14.11 A3.14.13 A3.14.14 A3.15.12 A3.15.13 A3.15.14 +A3.14.13 A3.13.13 A3.13.14 A3.14.11 A3.14.12 A3.14.14 A3.14.15 +A3.14.14 A3.14.12 A3.14.13 A3.14.15 A3.15.14 A3.15.15 +A3.14.15 A3.13.14 A3.14.13 A3.14.14 +A3.15.00 A3.00.00 A3.00.03 A3.15.02 A3.15.03 +A3.15.01 A3.14.01 A3.14.03 A3.15.02 A3.15.04 A3.15.05 +A3.15.02 A3.15.00 A3.15.01 A3.15.03 A3.15.04 A3.15.05 A3.15.06 +A3.15.03 A3.00.00 A3.00.03 A3.00.06 A3.15.00 A3.15.02 A3.15.05 A3.15.06 +A3.15.04 A3.14.03 A3.14.05 A3.15.01 A3.15.02 A3.15.05 A3.15.07 A3.15.08 +A3.15.05 A3.15.01 A3.15.02 A3.15.03 A3.15.04 A3.15.06 A3.15.07 A3.15.08 A3.15.09 +A3.15.06 A3.00.03 A3.00.06 A3.00.09 A3.15.02 A3.15.03 A3.15.05 A3.15.08 A3.15.09 +A3.15.07 A3.14.03 A3.14.05 A3.14.07 A3.14.08 A3.15.04 A3.15.05 A3.15.08 A3.15.10 +A3.15.08 A3.14.08 A3.15.04 A3.15.05 A3.15.06 A3.15.07 A3.15.09 A3.15.10 A3.15.11 +A3.15.09 A3.00.06 A3.00.09 A3.00.11 A3.15.05 A3.15.06 A3.15.08 A3.15.10 A3.15.11 +A3.15.10 A3.14.08 A3.14.10 A3.15.07 A3.15.08 A3.15.09 A3.15.11 A3.15.12 A3.15.13 +A3.15.11 A3.00.09 A3.00.11 A3.00.13 A3.15.08 A3.15.09 A3.15.10 A3.15.12 A3.15.13 +A3.15.12 A3.14.08 A3.14.10 A3.14.11 A3.14.12 A3.15.10 A3.15.11 A3.15.13 A3.15.14 +A3.15.13 A3.00.11 A3.00.13 A3.00.14 A3.14.12 A3.15.10 A3.15.11 A3.15.12 A3.15.14 +A3.15.14 A3.00.13 A3.00.14 A3.00.15 A3.14.12 A3.14.14 A3.15.12 A3.15.13 A3.15.15 +A3.15.15 A3.00.14 A3.00.15 A3.14.14 A3.15.14 +C1.00.00 C1.00.07 C1.00.12 +C1.00.01 C1.00.02 C1.00.10 C1.00.11 C1.15.02 C1.15.12 +C1.00.02 C1.00.01 C1.00.03 C1.00.06 C1.00.09 C1.00.10 +C1.00.03 C1.00.02 C1.00.05 C1.00.06 C1.00.14 C1.00.15 +C1.00.04 C1.00.05 C1.00.12 C1.00.13 C1.00.14 +C1.00.05 C1.00.03 C1.00.04 C1.00.13 C1.00.14 +C1.00.06 C1.00.02 C1.00.03 C1.00.09 C1.00.14 C1.00.15 +C1.00.07 C1.00.00 C1.00.08 C1.00.12 C1.00.17 C1.00.18 C1.01.13 +C1.00.08 C1.00.07 C1.00.17 C1.01.02 C1.01.13 +C1.00.09 C1.00.02 C1.00.06 C1.00.10 C1.00.15 C1.00.16 +C1.00.10 C1.00.01 C1.00.02 C1.00.09 C1.00.11 C1.00.15 C1.00.16 +C1.00.11 C1.00.01 C1.00.10 C1.00.16 C1.15.02 C1.15.12 C1.15.17 +C1.00.12 C1.00.00 C1.00.04 C1.00.07 C1.00.13 C1.00.17 C1.00.18 C1.00.19 +C1.00.13 C1.00.04 C1.00.05 C1.00.12 C1.00.14 C1.00.18 C1.00.19 C1.00.20 +C1.00.14 C1.00.03 C1.00.04 C1.00.05 C1.00.06 C1.00.13 C1.00.15 C1.00.19 C1.00.20 C1.00.21 +C1.00.15 C1.00.03 C1.00.06 C1.00.09 C1.00.10 C1.00.14 C1.00.16 C1.00.20 C1.00.21 C1.00.22 +C1.00.16 C1.00.09 C1.00.10 C1.00.11 C1.00.15 C1.00.21 C1.00.22 C1.15.12 C1.15.17 C1.15.23 +C1.00.17 C1.00.07 C1.00.08 C1.00.12 C1.00.18 C1.00.23 C1.01.13 C1.01.19 C1.01.21 +C1.00.18 C1.00.07 C1.00.12 C1.00.13 C1.00.17 C1.00.19 C1.00.23 C1.00.24 C1.01.21 +C1.00.19 C1.00.12 C1.00.13 C1.00.14 C1.00.18 C1.00.20 C1.00.23 C1.00.24 C1.00.25 +C1.00.20 C1.00.13 C1.00.14 C1.00.15 C1.00.19 C1.00.21 C1.00.24 C1.00.25 C1.00.26 +C1.00.21 C1.00.14 C1.00.15 C1.00.16 C1.00.20 C1.00.22 C1.00.25 C1.00.26 C1.00.27 +C1.00.22 C1.00.15 C1.00.16 C1.00.21 C1.00.26 C1.00.27 C1.15.17 C1.15.23 C1.15.28 +C1.00.23 C1.00.17 C1.00.18 C1.00.19 C1.00.24 C1.00.28 C1.00.29 C1.01.21 C1.01.26 +C1.00.24 C1.00.18 C1.00.19 C1.00.20 C1.00.23 C1.00.25 C1.00.28 C1.00.29 C1.00.30 +C1.00.25 C1.00.19 C1.00.20 C1.00.21 C1.00.24 C1.00.26 C1.00.29 C1.00.30 C1.00.31 +C1.00.26 C1.00.20 C1.00.21 C1.00.22 C1.00.25 C1.00.27 C1.00.30 C1.00.31 C1.00.32 +C1.00.27 C1.00.21 C1.00.22 C1.00.26 C1.00.31 C1.00.32 C1.15.23 C1.15.28 C1.15.33 +C1.00.28 C1.00.23 C1.00.24 C1.00.29 C1.00.33 C1.01.21 C1.01.26 C1.01.31 C1.01.33 +C1.00.29 C1.00.23 C1.00.24 C1.00.25 C1.00.28 C1.00.30 C1.00.33 C1.00.34 C1.01.33 +C1.00.30 C1.00.24 C1.00.25 C1.00.26 C1.00.29 C1.00.31 C1.00.33 C1.00.34 C1.00.35 +C1.00.31 C1.00.25 C1.00.26 C1.00.27 C1.00.30 C1.00.32 C1.00.34 C1.00.35 C1.00.36 +C1.00.32 C1.00.26 C1.00.27 C1.00.31 C1.00.35 C1.00.36 C1.15.28 C1.15.33 C1.15.37 +C1.00.33 C1.00.28 C1.00.29 C1.00.30 C1.00.34 C1.00.37 C1.00.38 C1.01.33 C1.01.38 +C1.00.34 C1.00.29 C1.00.30 C1.00.31 C1.00.33 C1.00.35 C1.00.37 C1.00.38 C1.00.39 +C1.00.35 C1.00.30 C1.00.31 C1.00.32 C1.00.34 C1.00.36 C1.00.38 C1.00.39 C1.00.40 +C1.00.36 C1.00.31 C1.00.32 C1.00.35 C1.00.39 C1.00.40 C1.15.33 C1.15.37 C1.15.41 +C1.00.37 C1.00.33 C1.00.34 C1.00.38 C1.00.41 C1.00.42 C1.01.33 C1.01.38 C1.01.41 +C1.00.38 C1.00.33 C1.00.34 C1.00.35 C1.00.37 C1.00.39 C1.00.41 C1.00.42 C1.00.43 +C1.00.39 C1.00.34 C1.00.35 C1.00.36 C1.00.38 C1.00.40 C1.00.42 C1.00.43 C1.00.44 +C1.00.40 C1.00.35 C1.00.36 C1.00.39 C1.00.43 C1.00.44 C1.15.37 C1.15.41 C1.15.45 +C1.00.41 C1.00.37 C1.00.38 C1.00.42 C1.00.45 C1.01.38 C1.01.41 C1.01.43 C1.01.45 +C1.00.42 C1.00.37 C1.00.38 C1.00.39 C1.00.41 C1.00.43 C1.00.45 C1.00.46 C1.01.45 +C1.00.43 C1.00.38 C1.00.39 C1.00.40 C1.00.42 C1.00.44 C1.00.45 C1.00.46 C1.00.47 +C1.00.44 C1.00.39 C1.00.40 C1.00.43 C1.00.46 C1.00.47 C1.15.41 C1.15.45 C1.15.48 +C1.00.45 C1.00.41 C1.00.42 C1.00.43 C1.00.46 C1.00.48 C1.00.49 C1.01.45 C1.01.47 +C1.00.46 C1.00.42 C1.00.43 C1.00.44 C1.00.45 C1.00.47 C1.00.48 C1.00.49 C1.00.50 +C1.00.47 C1.00.43 C1.00.44 C1.00.46 C1.00.49 C1.00.50 C1.15.45 C1.15.48 C1.15.51 +C1.00.48 C1.00.45 C1.00.46 C1.00.49 C1.00.51 C1.01.45 C1.01.47 C1.01.49 C1.01.50 +C1.00.49 C1.00.45 C1.00.46 C1.00.47 C1.00.48 C1.00.50 C1.00.51 C1.00.52 C1.01.50 +C1.00.50 C1.00.46 C1.00.47 C1.00.49 C1.00.51 C1.00.52 C1.15.48 C1.15.51 C1.15.53 +C1.00.51 C1.00.48 C1.00.49 C1.00.50 C1.00.52 C1.00.53 C1.00.54 C1.00.55 C1.01.50 C1.01.53 +C1.00.52 C1.00.49 C1.00.50 C1.00.51 C1.00.54 C1.00.55 C1.00.56 C1.15.51 C1.15.53 C1.15.56 +C1.00.53 C1.00.51 C1.00.54 C1.00.57 C1.01.50 C1.01.53 C1.01.55 C1.01.57 +C1.00.54 C1.00.51 C1.00.52 C1.00.53 C1.00.55 C1.00.57 C1.00.58 C1.01.57 +C1.00.55 C1.00.51 C1.00.52 C1.00.54 C1.00.56 C1.00.57 C1.00.58 C1.00.59 +C1.00.56 C1.00.52 C1.00.55 C1.00.58 C1.00.59 C1.15.53 C1.15.56 C1.15.59 +C1.00.57 C1.00.53 C1.00.54 C1.00.55 C1.00.58 C1.00.60 C1.00.61 C1.01.57 C1.01.59 +C1.00.58 C1.00.54 C1.00.55 C1.00.56 C1.00.57 C1.00.59 C1.00.60 C1.00.61 C1.00.62 +C1.00.59 C1.00.55 C1.00.56 C1.00.58 C1.00.61 C1.00.62 C1.15.56 C1.15.59 C1.15.62 +C1.00.60 C1.00.57 C1.00.58 C1.00.61 C1.01.57 C1.01.59 C1.01.62 +C1.00.61 C1.00.57 C1.00.58 C1.00.59 C1.00.60 C1.00.62 C1.01.62 +C1.00.62 C1.00.58 C1.00.59 C1.00.61 C1.15.59 C1.15.62 +C1.01.00 C1.01.04 C1.01.06 C1.01.08 C1.01.12 +C1.01.01 C1.01.03 C1.01.05 C1.01.11 +C1.01.02 C1.00.08 C1.01.05 C1.01.13 +C1.01.03 C1.01.01 C1.01.07 C1.01.09 C1.01.11 +C1.01.04 C1.01.00 C1.01.08 C1.01.10 +C1.01.05 C1.01.01 C1.01.02 C1.01.11 C1.01.13 +C1.01.06 C1.01.00 C1.01.12 C1.01.17 C1.02.06 C1.02.13 +C1.01.07 C1.01.03 C1.01.09 C1.01.10 C1.01.14 +C1.01.08 C1.01.00 C1.01.04 C1.01.10 C1.01.12 C1.01.15 +C1.01.09 C1.01.03 C1.01.07 C1.01.11 C1.01.14 C1.01.16 +C1.01.10 C1.01.04 C1.01.07 C1.01.08 C1.01.12 C1.01.14 C1.01.15 C1.01.18 +C1.01.11 C1.01.01 C1.01.03 C1.01.05 C1.01.09 C1.01.13 C1.01.14 C1.01.16 C1.01.19 +C1.01.12 C1.01.00 C1.01.06 C1.01.08 C1.01.10 C1.01.15 C1.01.17 C1.01.20 C1.02.13 +C1.01.13 C1.00.07 C1.00.08 C1.00.17 C1.01.02 C1.01.05 C1.01.11 C1.01.16 C1.01.19 C1.01.21 +C1.01.14 C1.01.07 C1.01.09 C1.01.10 C1.01.11 C1.01.15 C1.01.16 C1.01.18 C1.01.22 +C1.01.15 C1.01.08 C1.01.10 C1.01.12 C1.01.14 C1.01.17 C1.01.18 C1.01.20 C1.01.23 +C1.01.16 C1.01.09 C1.01.11 C1.01.13 C1.01.14 C1.01.18 C1.01.19 C1.01.22 C1.01.24 +C1.01.17 C1.01.06 C1.01.12 C1.01.15 C1.01.20 C1.01.25 C1.02.13 C1.02.17 C1.02.21 +C1.01.18 C1.01.10 C1.01.14 C1.01.15 C1.01.16 C1.01.20 C1.01.22 C1.01.23 C1.01.27 +C1.01.19 C1.00.17 C1.01.11 C1.01.13 C1.01.16 C1.01.21 C1.01.22 C1.01.24 C1.01.26 +C1.01.20 C1.01.12 C1.01.15 C1.01.17 C1.01.18 C1.01.23 C1.01.25 C1.01.28 C1.02.21 +C1.01.21 C1.00.17 C1.00.18 C1.00.23 C1.00.28 C1.01.13 C1.01.19 C1.01.24 C1.01.26 +C1.01.22 C1.01.14 C1.01.16 C1.01.18 C1.01.19 C1.01.23 C1.01.24 C1.01.27 C1.01.29 +C1.01.23 C1.01.15 C1.01.18 C1.01.20 C1.01.22 C1.01.25 C1.01.27 C1.01.28 C1.01.30 +C1.01.24 C1.01.16 C1.01.19 C1.01.21 C1.01.22 C1.01.26 C1.01.27 C1.01.29 C1.01.31 +C1.01.25 C1.01.17 C1.01.20 C1.01.23 C1.01.28 C1.01.32 C1.02.21 C1.02.24 C1.02.28 +C1.01.26 C1.00.23 C1.00.28 C1.01.19 C1.01.21 C1.01.24 C1.01.29 C1.01.31 C1.01.33 +C1.01.27 C1.01.18 C1.01.22 C1.01.23 C1.01.24 C1.01.28 C1.01.29 C1.01.30 C1.01.34 +C1.01.28 C1.01.20 C1.01.23 C1.01.25 C1.01.27 C1.01.30 C1.01.32 C1.01.35 C1.02.28 +C1.01.29 C1.01.22 C1.01.24 C1.01.26 C1.01.27 C1.01.30 C1.01.31 C1.01.34 C1.01.36 +C1.01.30 C1.01.23 C1.01.27 C1.01.28 C1.01.29 C1.01.32 C1.01.34 C1.01.35 C1.01.37 +C1.01.31 C1.00.28 C1.01.24 C1.01.26 C1.01.29 C1.01.33 C1.01.34 C1.01.36 C1.01.38 +C1.01.32 C1.01.25 C1.01.28 C1.01.30 C1.01.35 C1.02.28 C1.02.31 C1.02.34 C1.02.37 +C1.01.33 C1.00.28 C1.00.29 C1.00.33 C1.00.37 C1.01.26 C1.01.31 C1.01.36 C1.01.38 +C1.01.34 C1.01.27 C1.01.29 C1.01.30 C1.01.31 C1.01.35 C1.01.36 C1.01.37 C1.01.39 +C1.01.35 C1.01.28 C1.01.30 C1.01.32 C1.01.34 C1.01.37 C1.01.40 C1.02.34 C1.02.37 +C1.01.36 C1.01.29 C1.01.31 C1.01.33 C1.01.34 C1.01.37 C1.01.38 C1.01.39 C1.01.41 +C1.01.37 C1.01.30 C1.01.34 C1.01.35 C1.01.36 C1.01.39 C1.01.40 C1.01.42 C1.02.37 +C1.01.38 C1.00.33 C1.00.37 C1.00.41 C1.01.31 C1.01.33 C1.01.36 C1.01.39 C1.01.41 +C1.01.39 C1.01.34 C1.01.36 C1.01.37 C1.01.38 C1.01.40 C1.01.41 C1.01.42 C1.01.43 +C1.01.40 C1.01.35 C1.01.37 C1.01.39 C1.01.42 C1.01.44 C1.02.37 C1.02.40 C1.02.43 +C1.01.41 C1.00.37 C1.00.41 C1.01.36 C1.01.38 C1.01.39 C1.01.42 C1.01.43 C1.01.45 +C1.01.42 C1.01.37 C1.01.39 C1.01.40 C1.01.41 C1.01.43 C1.01.44 C1.01.46 C1.02.43 +C1.01.43 C1.00.41 C1.01.39 C1.01.41 C1.01.42 C1.01.44 C1.01.45 C1.01.46 C1.01.47 +C1.01.44 C1.01.40 C1.01.42 C1.01.43 C1.01.46 C1.01.48 C1.02.43 C1.02.45 C1.02.47 +C1.01.45 C1.00.41 C1.00.42 C1.00.45 C1.00.48 C1.01.41 C1.01.43 C1.01.46 C1.01.47 +C1.01.46 C1.01.42 C1.01.43 C1.01.44 C1.01.45 C1.01.47 C1.01.48 C1.01.49 C1.02.47 +C1.01.47 C1.00.45 C1.00.48 C1.01.43 C1.01.45 C1.01.46 C1.01.48 C1.01.49 C1.01.50 +C1.01.48 C1.01.44 C1.01.46 C1.01.47 C1.01.49 C1.01.51 C1.02.47 C1.02.49 C1.02.51 +C1.01.49 C1.00.48 C1.01.46 C1.01.47 C1.01.48 C1.01.50 C1.01.51 C1.01.52 C1.02.51 +C1.01.50 C1.00.48 C1.00.49 C1.00.51 C1.00.53 C1.01.47 C1.01.49 C1.01.51 C1.01.52 C1.01.53 +C1.01.51 C1.01.48 C1.01.49 C1.01.50 C1.01.52 C1.01.54 C1.01.56 C1.02.51 C1.02.52 C1.02.53 C1.02.55 +C1.01.52 C1.01.49 C1.01.50 C1.01.51 C1.01.53 C1.01.54 C1.01.55 +C1.01.53 C1.00.51 C1.00.53 C1.01.50 C1.01.52 C1.01.54 C1.01.55 C1.01.57 +C1.01.54 C1.01.51 C1.01.52 C1.01.53 C1.01.55 C1.01.56 C1.01.58 C1.02.55 +C1.01.55 C1.00.53 C1.01.52 C1.01.53 C1.01.54 C1.01.56 C1.01.57 C1.01.58 C1.01.59 +C1.01.56 C1.01.51 C1.01.54 C1.01.55 C1.01.58 C1.01.60 C1.02.55 C1.02.57 C1.02.59 +C1.01.57 C1.00.53 C1.00.54 C1.00.57 C1.00.60 C1.01.53 C1.01.55 C1.01.58 C1.01.59 +C1.01.58 C1.01.54 C1.01.55 C1.01.56 C1.01.57 C1.01.59 C1.01.60 C1.01.61 C1.02.59 +C1.01.59 C1.00.57 C1.00.60 C1.01.55 C1.01.57 C1.01.58 C1.01.60 C1.01.61 C1.01.62 +C1.01.60 C1.01.56 C1.01.58 C1.01.59 C1.01.61 C1.02.59 C1.02.61 +C1.01.61 C1.01.58 C1.01.59 C1.01.60 C1.01.62 C1.02.59 C1.02.61 +C1.01.62 C1.00.60 C1.00.61 C1.01.59 C1.01.61 +C1.02.00 C1.02.03 C1.02.06 +C1.02.01 C1.02.02 C1.02.04 C1.02.10 C1.02.14 +C1.02.02 C1.02.01 C1.02.07 C1.02.10 +C1.02.03 C1.02.00 C1.02.06 C1.02.09 C1.02.12 +C1.02.04 C1.02.01 C1.02.05 C1.02.10 C1.02.14 C1.03.02 +C1.02.05 C1.02.04 C1.02.14 C1.03.02 C1.03.08 +C1.02.06 C1.01.06 C1.02.00 C1.02.03 C1.02.12 C1.02.13 C1.02.17 +C1.02.07 C1.02.02 C1.02.10 C1.02.11 C1.02.15 +C1.02.08 C1.02.09 C1.02.11 +C1.02.09 C1.02.03 C1.02.08 C1.02.11 C1.02.12 C1.02.16 +C1.02.10 C1.02.01 C1.02.02 C1.02.04 C1.02.07 C1.02.11 C1.02.14 C1.02.15 C1.02.18 +C1.02.11 C1.02.07 C1.02.08 C1.02.09 C1.02.10 C1.02.12 C1.02.15 C1.02.16 C1.02.19 +C1.02.12 C1.02.03 C1.02.06 C1.02.09 C1.02.11 C1.02.13 C1.02.16 C1.02.17 C1.02.20 +C1.02.13 C1.01.06 C1.01.12 C1.01.17 C1.02.06 C1.02.12 C1.02.17 C1.02.21 +C1.02.14 C1.02.01 C1.02.04 C1.02.05 C1.02.10 C1.02.15 C1.02.18 C1.03.08 C1.03.10 C1.03.15 C1.03.20 +C1.02.15 C1.02.07 C1.02.10 C1.02.11 C1.02.14 C1.02.16 C1.02.18 C1.02.19 C1.02.22 +C1.02.16 C1.02.09 C1.02.11 C1.02.12 C1.02.15 C1.02.17 C1.02.19 C1.02.20 C1.02.23 +C1.02.17 C1.01.17 C1.02.06 C1.02.12 C1.02.13 C1.02.16 C1.02.20 C1.02.21 C1.02.24 +C1.02.18 C1.02.10 C1.02.14 C1.02.15 C1.02.19 C1.02.22 C1.02.25 C1.03.15 C1.03.20 +C1.02.19 C1.02.11 C1.02.15 C1.02.16 C1.02.18 C1.02.20 C1.02.22 C1.02.23 C1.02.26 +C1.02.20 C1.02.12 C1.02.16 C1.02.17 C1.02.19 C1.02.21 C1.02.23 C1.02.24 C1.02.27 +C1.02.21 C1.01.17 C1.01.20 C1.01.25 C1.02.13 C1.02.17 C1.02.20 C1.02.24 C1.02.28 +C1.02.22 C1.02.15 C1.02.18 C1.02.19 C1.02.23 C1.02.25 C1.02.26 C1.02.29 C1.03.20 +C1.02.23 C1.02.16 C1.02.19 C1.02.20 C1.02.22 C1.02.24 C1.02.26 C1.02.27 C1.02.30 +C1.02.24 C1.01.25 C1.02.17 C1.02.20 C1.02.21 C1.02.23 C1.02.27 C1.02.28 C1.02.31 +C1.02.25 C1.02.18 C1.02.22 C1.02.26 C1.02.29 C1.03.20 C1.03.21 C1.03.25 C1.03.29 +C1.02.26 C1.02.19 C1.02.22 C1.02.23 C1.02.25 C1.02.27 C1.02.29 C1.02.30 C1.02.32 +C1.02.27 C1.02.20 C1.02.23 C1.02.24 C1.02.26 C1.02.28 C1.02.30 C1.02.31 C1.02.33 +C1.02.28 C1.01.25 C1.01.28 C1.01.32 C1.02.21 C1.02.24 C1.02.27 C1.02.31 C1.02.34 +C1.02.29 C1.02.22 C1.02.25 C1.02.26 C1.02.30 C1.02.32 C1.03.25 C1.03.29 C1.03.33 +C1.02.30 C1.02.23 C1.02.26 C1.02.27 C1.02.29 C1.02.31 C1.02.32 C1.02.33 C1.02.35 +C1.02.31 C1.01.32 C1.02.24 C1.02.27 C1.02.28 C1.02.30 C1.02.33 C1.02.34 C1.02.36 +C1.02.32 C1.02.26 C1.02.29 C1.02.30 C1.02.33 C1.02.35 C1.02.38 C1.03.29 C1.03.33 +C1.02.33 C1.02.27 C1.02.30 C1.02.31 C1.02.32 C1.02.34 C1.02.35 C1.02.36 C1.02.39 +C1.02.34 C1.01.32 C1.01.35 C1.02.28 C1.02.31 C1.02.33 C1.02.36 C1.02.37 C1.02.40 +C1.02.35 C1.02.30 C1.02.32 C1.02.33 C1.02.36 C1.02.38 C1.02.39 C1.02.41 C1.03.33 +C1.02.36 C1.02.31 C1.02.33 C1.02.34 C1.02.35 C1.02.37 C1.02.39 C1.02.40 C1.02.42 +C1.02.37 C1.01.32 C1.01.35 C1.01.37 C1.01.40 C1.02.34 C1.02.36 C1.02.40 C1.02.43 +C1.02.38 C1.02.32 C1.02.35 C1.02.39 C1.02.41 C1.03.33 C1.03.34 C1.03.37 C1.03.40 +C1.02.39 C1.02.33 C1.02.35 C1.02.36 C1.02.38 C1.02.40 C1.02.41 C1.02.42 C1.02.44 +C1.02.40 C1.01.40 C1.02.34 C1.02.36 C1.02.37 C1.02.39 C1.02.42 C1.02.43 C1.02.45 +C1.02.41 C1.02.35 C1.02.38 C1.02.39 C1.02.42 C1.02.44 C1.03.37 C1.03.40 C1.03.43 +C1.02.42 C1.02.36 C1.02.39 C1.02.40 C1.02.41 C1.02.43 C1.02.44 C1.02.45 C1.02.46 +C1.02.43 C1.01.40 C1.01.42 C1.01.44 C1.02.37 C1.02.40 C1.02.42 C1.02.45 C1.02.47 +C1.02.44 C1.02.39 C1.02.41 C1.02.42 C1.02.45 C1.02.46 C1.02.48 C1.03.40 C1.03.43 +C1.02.45 C1.01.44 C1.02.40 C1.02.42 C1.02.43 C1.02.44 C1.02.46 C1.02.47 C1.02.49 +C1.02.46 C1.02.42 C1.02.44 C1.02.45 C1.02.47 C1.02.48 C1.02.49 C1.02.50 C1.03.43 +C1.02.47 C1.01.44 C1.01.46 C1.01.48 C1.02.43 C1.02.45 C1.02.46 C1.02.49 C1.02.51 +C1.02.48 C1.02.44 C1.02.46 C1.02.49 C1.02.50 C1.03.43 C1.03.44 C1.03.46 C1.03.48 +C1.02.49 C1.01.48 C1.02.45 C1.02.46 C1.02.47 C1.02.48 C1.02.50 C1.02.51 C1.02.52 +C1.02.50 C1.02.46 C1.02.48 C1.02.49 C1.02.51 C1.02.52 C1.03.46 C1.03.48 C1.03.50 +C1.02.51 C1.01.48 C1.01.49 C1.01.51 C1.02.47 C1.02.49 C1.02.50 C1.02.52 C1.02.53 +C1.02.52 C1.01.51 C1.02.49 C1.02.50 C1.02.51 C1.02.53 C1.02.54 C1.02.56 C1.03.48 C1.03.50 C1.03.54 +C1.02.53 C1.01.51 C1.02.51 C1.02.52 C1.02.54 C1.02.55 C1.02.57 +C1.02.54 C1.02.52 C1.02.53 C1.02.55 C1.02.56 C1.02.57 C1.02.58 C1.03.54 +C1.02.55 C1.01.51 C1.01.54 C1.01.56 C1.02.53 C1.02.54 C1.02.57 C1.02.59 +C1.02.56 C1.02.52 C1.02.54 C1.02.57 C1.02.58 C1.02.60 C1.03.54 C1.03.55 C1.03.58 +C1.02.57 C1.01.56 C1.02.53 C1.02.54 C1.02.55 C1.02.56 C1.02.58 C1.02.59 C1.02.61 +C1.02.58 C1.02.54 C1.02.56 C1.02.57 C1.02.59 C1.02.60 C1.02.61 C1.02.62 C1.03.58 +C1.02.59 C1.01.56 C1.01.58 C1.01.60 C1.01.61 C1.02.55 C1.02.57 C1.02.58 C1.02.61 +C1.02.60 C1.02.56 C1.02.58 C1.02.61 C1.02.62 C1.03.58 C1.03.59 C1.03.61 +C1.02.61 C1.01.60 C1.01.61 C1.02.57 C1.02.58 C1.02.59 C1.02.60 C1.02.62 +C1.02.62 C1.02.58 C1.02.60 C1.02.61 C1.03.61 +C1.03.00 C1.03.05 C1.03.07 C1.04.00 C1.04.08 +C1.03.01 C1.03.02 C1.03.03 C1.03.10 +C1.03.02 C1.02.04 C1.02.05 C1.03.01 C1.03.08 C1.03.10 +C1.03.03 C1.03.01 C1.03.04 C1.03.10 C1.03.11 +C1.03.04 C1.03.03 C1.03.06 C1.03.11 C1.03.12 +C1.03.05 C1.03.00 C1.03.07 C1.03.09 C1.03.12 C1.03.13 C1.03.14 +C1.03.06 C1.03.04 C1.03.09 C1.03.11 C1.03.12 +C1.03.07 C1.03.00 C1.03.05 C1.03.13 C1.03.14 C1.04.00 C1.04.08 C1.04.14 +C1.03.08 C1.02.05 C1.02.14 C1.03.02 C1.03.10 C1.03.15 +C1.03.09 C1.03.05 C1.03.06 C1.03.12 C1.03.13 +C1.03.10 C1.02.14 C1.03.01 C1.03.02 C1.03.03 C1.03.08 C1.03.11 C1.03.15 C1.03.16 +C1.03.11 C1.03.03 C1.03.04 C1.03.06 C1.03.10 C1.03.12 C1.03.15 C1.03.16 C1.03.17 +C1.03.12 C1.03.04 C1.03.05 C1.03.06 C1.03.09 C1.03.11 C1.03.13 C1.03.16 C1.03.17 C1.03.18 +C1.03.13 C1.03.05 C1.03.07 C1.03.09 C1.03.12 C1.03.14 C1.03.17 C1.03.18 C1.03.19 +C1.03.14 C1.03.05 C1.03.07 C1.03.13 C1.03.18 C1.03.19 C1.04.08 C1.04.14 C1.04.19 +C1.03.15 C1.02.14 C1.02.18 C1.03.08 C1.03.10 C1.03.11 C1.03.16 C1.03.20 C1.03.21 +C1.03.16 C1.03.10 C1.03.11 C1.03.12 C1.03.15 C1.03.17 C1.03.20 C1.03.21 C1.03.22 +C1.03.17 C1.03.11 C1.03.12 C1.03.13 C1.03.16 C1.03.18 C1.03.21 C1.03.22 C1.03.23 +C1.03.18 C1.03.12 C1.03.13 C1.03.14 C1.03.17 C1.03.19 C1.03.22 C1.03.23 C1.03.24 +C1.03.19 C1.03.13 C1.03.14 C1.03.18 C1.03.23 C1.03.24 C1.04.14 C1.04.19 C1.04.24 +C1.03.20 C1.02.14 C1.02.18 C1.02.22 C1.02.25 C1.03.15 C1.03.16 C1.03.21 C1.03.25 +C1.03.21 C1.02.25 C1.03.15 C1.03.16 C1.03.17 C1.03.20 C1.03.22 C1.03.25 C1.03.26 +C1.03.22 C1.03.16 C1.03.17 C1.03.18 C1.03.21 C1.03.23 C1.03.25 C1.03.26 C1.03.27 +C1.03.23 C1.03.17 C1.03.18 C1.03.19 C1.03.22 C1.03.24 C1.03.26 C1.03.27 C1.03.28 +C1.03.24 C1.03.18 C1.03.19 C1.03.23 C1.03.27 C1.03.28 C1.04.19 C1.04.24 C1.04.28 +C1.03.25 C1.02.25 C1.02.29 C1.03.20 C1.03.21 C1.03.22 C1.03.26 C1.03.29 C1.03.30 +C1.03.26 C1.03.21 C1.03.22 C1.03.23 C1.03.25 C1.03.27 C1.03.29 C1.03.30 C1.03.31 +C1.03.27 C1.03.22 C1.03.23 C1.03.24 C1.03.26 C1.03.28 C1.03.30 C1.03.31 C1.03.32 +C1.03.28 C1.03.23 C1.03.24 C1.03.27 C1.03.31 C1.03.32 C1.04.24 C1.04.28 C1.04.32 +C1.03.29 C1.02.25 C1.02.29 C1.02.32 C1.03.25 C1.03.26 C1.03.30 C1.03.33 C1.03.34 +C1.03.30 C1.03.25 C1.03.26 C1.03.27 C1.03.29 C1.03.31 C1.03.33 C1.03.34 C1.03.35 +C1.03.31 C1.03.26 C1.03.27 C1.03.28 C1.03.30 C1.03.32 C1.03.34 C1.03.35 C1.03.36 +C1.03.32 C1.03.27 C1.03.28 C1.03.31 C1.03.35 C1.03.36 C1.04.28 C1.04.32 C1.04.36 +C1.03.33 C1.02.29 C1.02.32 C1.02.35 C1.02.38 C1.03.29 C1.03.30 C1.03.34 C1.03.37 +C1.03.34 C1.02.38 C1.03.29 C1.03.30 C1.03.31 C1.03.33 C1.03.35 C1.03.37 C1.03.38 +C1.03.35 C1.03.30 C1.03.31 C1.03.32 C1.03.34 C1.03.36 C1.03.37 C1.03.38 C1.03.39 +C1.03.36 C1.03.31 C1.03.32 C1.03.35 C1.03.38 C1.03.39 C1.04.32 C1.04.36 C1.04.39 +C1.03.37 C1.02.38 C1.02.41 C1.03.33 C1.03.34 C1.03.35 C1.03.38 C1.03.40 C1.03.41 +C1.03.38 C1.03.34 C1.03.35 C1.03.36 C1.03.37 C1.03.39 C1.03.40 C1.03.41 C1.03.42 +C1.03.39 C1.03.35 C1.03.36 C1.03.38 C1.03.41 C1.03.42 C1.04.36 C1.04.39 C1.04.42 +C1.03.40 C1.02.38 C1.02.41 C1.02.44 C1.03.37 C1.03.38 C1.03.41 C1.03.43 C1.03.44 +C1.03.41 C1.03.37 C1.03.38 C1.03.39 C1.03.40 C1.03.42 C1.03.43 C1.03.44 C1.03.45 +C1.03.42 C1.03.38 C1.03.39 C1.03.41 C1.03.44 C1.03.45 C1.04.39 C1.04.42 C1.04.45 +C1.03.43 C1.02.41 C1.02.44 C1.02.46 C1.02.48 C1.03.40 C1.03.41 C1.03.44 C1.03.46 +C1.03.44 C1.02.48 C1.03.40 C1.03.41 C1.03.42 C1.03.43 C1.03.45 C1.03.46 C1.03.47 +C1.03.45 C1.03.41 C1.03.42 C1.03.44 C1.03.46 C1.03.47 C1.04.42 C1.04.45 C1.04.47 +C1.03.46 C1.02.48 C1.02.50 C1.03.43 C1.03.44 C1.03.45 C1.03.47 C1.03.48 C1.03.49 +C1.03.47 C1.03.44 C1.03.45 C1.03.46 C1.03.48 C1.03.49 C1.04.45 C1.04.47 C1.04.49 +C1.03.48 C1.02.48 C1.02.50 C1.02.52 C1.03.46 C1.03.47 C1.03.49 C1.03.50 C1.03.51 C1.03.52 +C1.03.49 C1.03.46 C1.03.47 C1.03.48 C1.03.51 C1.03.52 C1.03.53 C1.04.47 C1.04.49 C1.04.53 +C1.03.50 C1.02.50 C1.02.52 C1.03.48 C1.03.51 C1.03.54 C1.03.55 +C1.03.51 C1.03.48 C1.03.49 C1.03.50 C1.03.52 C1.03.54 C1.03.55 C1.03.56 +C1.03.52 C1.03.48 C1.03.49 C1.03.51 C1.03.53 C1.03.55 C1.03.56 C1.03.57 +C1.03.53 C1.03.49 C1.03.52 C1.03.56 C1.03.57 C1.04.49 C1.04.53 C1.04.57 +C1.03.54 C1.02.52 C1.02.54 C1.02.56 C1.03.50 C1.03.51 C1.03.55 C1.03.58 +C1.03.55 C1.02.56 C1.03.50 C1.03.51 C1.03.52 C1.03.54 C1.03.56 C1.03.58 C1.03.59 +C1.03.56 C1.03.51 C1.03.52 C1.03.53 C1.03.55 C1.03.57 C1.03.58 C1.03.59 C1.03.60 +C1.03.57 C1.03.52 C1.03.53 C1.03.56 C1.03.59 C1.03.60 C1.04.53 C1.04.57 C1.04.60 +C1.03.58 C1.02.56 C1.02.58 C1.02.60 C1.03.54 C1.03.55 C1.03.56 C1.03.59 C1.03.61 +C1.03.59 C1.02.60 C1.03.55 C1.03.56 C1.03.57 C1.03.58 C1.03.60 C1.03.61 C1.03.62 +C1.03.60 C1.03.56 C1.03.57 C1.03.59 C1.03.61 C1.03.62 C1.04.57 C1.04.60 C1.04.62 +C1.03.61 C1.02.60 C1.02.62 C1.03.58 C1.03.59 C1.03.60 C1.03.62 +C1.03.62 C1.03.59 C1.03.60 C1.03.61 C1.04.60 C1.04.62 +C1.04.00 C1.03.00 C1.03.07 C1.04.06 C1.04.08 +C1.04.01 C1.04.02 C1.04.04 C1.04.10 +C1.04.02 C1.04.01 C1.04.03 C1.04.10 C1.04.11 +C1.04.03 C1.04.02 C1.04.05 C1.04.10 C1.04.11 +C1.04.04 C1.04.01 C1.04.10 C1.04.15 C1.05.02 C1.05.09 C1.05.13 +C1.04.05 C1.04.03 C1.04.07 C1.04.11 C1.04.12 +C1.04.06 C1.04.00 C1.04.08 C1.04.09 C1.04.12 C1.04.13 C1.04.14 +C1.04.07 C1.04.05 C1.04.09 C1.04.11 C1.04.12 +C1.04.08 C1.03.00 C1.03.07 C1.03.14 C1.04.00 C1.04.06 C1.04.13 C1.04.14 +C1.04.09 C1.04.06 C1.04.07 C1.04.12 C1.04.13 +C1.04.10 C1.04.01 C1.04.02 C1.04.03 C1.04.04 C1.04.11 C1.04.15 C1.04.16 C1.05.13 +C1.04.11 C1.04.02 C1.04.03 C1.04.05 C1.04.07 C1.04.10 C1.04.12 C1.04.15 C1.04.16 C1.04.17 +C1.04.12 C1.04.05 C1.04.06 C1.04.07 C1.04.09 C1.04.11 C1.04.13 C1.04.16 C1.04.17 C1.04.18 +C1.04.13 C1.04.06 C1.04.08 C1.04.09 C1.04.12 C1.04.14 C1.04.17 C1.04.18 C1.04.19 +C1.04.14 C1.03.07 C1.03.14 C1.03.19 C1.04.06 C1.04.08 C1.04.13 C1.04.18 C1.04.19 +C1.04.15 C1.04.04 C1.04.10 C1.04.11 C1.04.16 C1.04.20 C1.04.21 C1.05.13 C1.05.17 +C1.04.16 C1.04.10 C1.04.11 C1.04.12 C1.04.15 C1.04.17 C1.04.20 C1.04.21 C1.04.22 +C1.04.17 C1.04.11 C1.04.12 C1.04.13 C1.04.16 C1.04.18 C1.04.21 C1.04.22 C1.04.23 +C1.04.18 C1.04.12 C1.04.13 C1.04.14 C1.04.17 C1.04.19 C1.04.22 C1.04.23 C1.04.24 +C1.04.19 C1.03.14 C1.03.19 C1.03.24 C1.04.13 C1.04.14 C1.04.18 C1.04.23 C1.04.24 +C1.04.20 C1.04.15 C1.04.16 C1.04.21 C1.04.25 C1.05.13 C1.05.17 C1.05.21 C1.05.24 +C1.04.21 C1.04.15 C1.04.16 C1.04.17 C1.04.20 C1.04.22 C1.04.25 C1.04.26 C1.05.24 +C1.04.22 C1.04.16 C1.04.17 C1.04.18 C1.04.21 C1.04.23 C1.04.25 C1.04.26 C1.04.27 +C1.04.23 C1.04.17 C1.04.18 C1.04.19 C1.04.22 C1.04.24 C1.04.26 C1.04.27 C1.04.28 +C1.04.24 C1.03.19 C1.03.24 C1.03.28 C1.04.18 C1.04.19 C1.04.23 C1.04.27 C1.04.28 +C1.04.25 C1.04.20 C1.04.21 C1.04.22 C1.04.26 C1.04.29 C1.04.30 C1.05.24 C1.05.28 +C1.04.26 C1.04.21 C1.04.22 C1.04.23 C1.04.25 C1.04.27 C1.04.29 C1.04.30 C1.04.31 +C1.04.27 C1.04.22 C1.04.23 C1.04.24 C1.04.26 C1.04.28 C1.04.30 C1.04.31 C1.04.32 +C1.04.28 C1.03.24 C1.03.28 C1.03.32 C1.04.23 C1.04.24 C1.04.27 C1.04.31 C1.04.32 +C1.04.29 C1.04.25 C1.04.26 C1.04.30 C1.04.33 C1.04.34 C1.05.24 C1.05.28 C1.05.31 +C1.04.30 C1.04.25 C1.04.26 C1.04.27 C1.04.29 C1.04.31 C1.04.33 C1.04.34 C1.04.35 +C1.04.31 C1.04.26 C1.04.27 C1.04.28 C1.04.30 C1.04.32 C1.04.34 C1.04.35 C1.04.36 +C1.04.32 C1.03.28 C1.03.32 C1.03.36 C1.04.27 C1.04.28 C1.04.31 C1.04.35 C1.04.36 +C1.04.33 C1.04.29 C1.04.30 C1.04.34 C1.04.37 C1.05.28 C1.05.31 C1.05.34 C1.05.37 +C1.04.34 C1.04.29 C1.04.30 C1.04.31 C1.04.33 C1.04.35 C1.04.37 C1.04.38 C1.05.37 +C1.04.35 C1.04.30 C1.04.31 C1.04.32 C1.04.34 C1.04.36 C1.04.37 C1.04.38 C1.04.39 +C1.04.36 C1.03.32 C1.03.36 C1.03.39 C1.04.31 C1.04.32 C1.04.35 C1.04.38 C1.04.39 +C1.04.37 C1.04.33 C1.04.34 C1.04.35 C1.04.38 C1.04.40 C1.04.41 C1.05.37 C1.05.40 +C1.04.38 C1.04.34 C1.04.35 C1.04.36 C1.04.37 C1.04.39 C1.04.40 C1.04.41 C1.04.42 +C1.04.39 C1.03.36 C1.03.39 C1.03.42 C1.04.35 C1.04.36 C1.04.38 C1.04.41 C1.04.42 +C1.04.40 C1.04.37 C1.04.38 C1.04.41 C1.04.43 C1.04.44 C1.05.37 C1.05.40 C1.05.43 +C1.04.41 C1.04.37 C1.04.38 C1.04.39 C1.04.40 C1.04.42 C1.04.43 C1.04.44 C1.04.45 +C1.04.42 C1.03.39 C1.03.42 C1.03.45 C1.04.38 C1.04.39 C1.04.41 C1.04.44 C1.04.45 +C1.04.43 C1.04.40 C1.04.41 C1.04.44 C1.04.46 C1.05.40 C1.05.43 C1.05.45 C1.05.47 +C1.04.44 C1.04.40 C1.04.41 C1.04.42 C1.04.43 C1.04.45 C1.04.46 C1.04.47 C1.05.47 +C1.04.45 C1.03.42 C1.03.45 C1.03.47 C1.04.41 C1.04.42 C1.04.44 C1.04.46 C1.04.47 +C1.04.46 C1.04.43 C1.04.44 C1.04.45 C1.04.47 C1.04.48 C1.04.49 C1.05.47 C1.05.49 +C1.04.47 C1.03.45 C1.03.47 C1.03.49 C1.04.44 C1.04.45 C1.04.46 C1.04.48 C1.04.49 +C1.04.48 C1.04.46 C1.04.47 C1.04.49 C1.04.50 C1.04.51 C1.04.52 C1.05.47 C1.05.49 C1.05.51 +C1.04.49 C1.03.47 C1.03.49 C1.03.53 C1.04.46 C1.04.47 C1.04.48 C1.04.51 C1.04.52 C1.04.53 +C1.04.50 C1.04.48 C1.04.51 C1.04.54 C1.04.55 C1.05.49 C1.05.51 +C1.04.51 C1.04.48 C1.04.49 C1.04.50 C1.04.52 C1.04.54 C1.04.55 C1.04.56 +C1.04.52 C1.04.48 C1.04.49 C1.04.51 C1.04.53 C1.04.55 C1.04.56 C1.04.57 +C1.04.53 C1.03.49 C1.03.53 C1.03.57 C1.04.49 C1.04.52 C1.04.56 C1.04.57 +C1.04.54 C1.04.50 C1.04.51 C1.04.55 C1.04.58 C1.05.51 C1.05.53 C1.05.55 +C1.04.55 C1.04.50 C1.04.51 C1.04.52 C1.04.54 C1.04.56 C1.04.58 C1.04.59 C1.05.55 +C1.04.56 C1.04.51 C1.04.52 C1.04.53 C1.04.55 C1.04.57 C1.04.58 C1.04.59 C1.04.60 +C1.04.57 C1.03.53 C1.03.57 C1.03.60 C1.04.52 C1.04.53 C1.04.56 C1.04.59 C1.04.60 +C1.04.58 C1.04.54 C1.04.55 C1.04.56 C1.04.59 C1.04.61 C1.05.55 C1.05.57 C1.05.59 +C1.04.59 C1.04.55 C1.04.56 C1.04.57 C1.04.58 C1.04.60 C1.04.61 C1.04.62 C1.05.59 +C1.04.60 C1.03.57 C1.03.60 C1.03.62 C1.04.56 C1.04.57 C1.04.59 C1.04.61 C1.04.62 +C1.04.61 C1.04.58 C1.04.59 C1.04.60 C1.04.62 C1.05.59 C1.05.62 +C1.04.62 C1.03.60 C1.03.62 C1.04.59 C1.04.60 C1.04.61 C1.05.62 +C1.05.00 C1.05.02 C1.05.05 C1.05.09 +C1.05.01 C1.05.03 C1.05.06 C1.05.12 +C1.05.02 C1.04.04 C1.05.00 C1.05.09 C1.05.13 +C1.05.03 C1.05.01 C1.05.06 C1.05.07 C1.05.08 C1.05.12 +C1.05.04 C1.05.05 C1.05.07 C1.05.10 +C1.05.05 C1.05.00 C1.05.04 C1.05.09 C1.05.10 C1.05.14 +C1.05.06 C1.05.01 C1.05.03 C1.05.11 C1.05.12 C1.05.16 C1.06.06 +C1.05.07 C1.05.03 C1.05.04 C1.05.08 C1.05.10 +C1.05.08 C1.05.03 C1.05.07 C1.05.10 C1.05.12 C1.05.15 +C1.05.09 C1.04.04 C1.05.00 C1.05.02 C1.05.05 C1.05.10 C1.05.13 C1.05.14 C1.05.17 +C1.05.10 C1.05.04 C1.05.05 C1.05.07 C1.05.08 C1.05.09 C1.05.12 C1.05.14 C1.05.15 C1.05.18 +C1.05.11 C1.05.06 C1.05.12 C1.05.16 C1.05.20 C1.06.06 C1.06.12 C1.06.17 +C1.05.12 C1.05.01 C1.05.03 C1.05.06 C1.05.08 C1.05.10 C1.05.11 C1.05.15 C1.05.16 C1.05.19 +C1.05.13 C1.04.04 C1.04.10 C1.04.15 C1.04.20 C1.05.02 C1.05.09 C1.05.14 C1.05.17 +C1.05.14 C1.05.05 C1.05.09 C1.05.10 C1.05.13 C1.05.15 C1.05.17 C1.05.18 C1.05.21 +C1.05.15 C1.05.08 C1.05.10 C1.05.12 C1.05.14 C1.05.16 C1.05.18 C1.05.19 C1.05.22 +C1.05.16 C1.05.06 C1.05.11 C1.05.12 C1.05.15 C1.05.19 C1.05.20 C1.05.23 C1.06.17 +C1.05.17 C1.04.15 C1.04.20 C1.05.09 C1.05.13 C1.05.14 C1.05.18 C1.05.21 C1.05.24 +C1.05.18 C1.05.10 C1.05.14 C1.05.15 C1.05.17 C1.05.19 C1.05.21 C1.05.22 C1.05.25 +C1.05.19 C1.05.12 C1.05.15 C1.05.16 C1.05.18 C1.05.20 C1.05.22 C1.05.23 C1.05.26 +C1.05.20 C1.05.11 C1.05.16 C1.05.19 C1.05.23 C1.05.27 C1.06.17 C1.06.20 C1.06.25 +C1.05.21 C1.04.20 C1.05.14 C1.05.17 C1.05.18 C1.05.22 C1.05.24 C1.05.25 C1.05.28 +C1.05.22 C1.05.15 C1.05.18 C1.05.19 C1.05.21 C1.05.23 C1.05.25 C1.05.26 C1.05.29 +C1.05.23 C1.05.16 C1.05.19 C1.05.20 C1.05.22 C1.05.26 C1.05.27 C1.05.30 C1.06.25 +C1.05.24 C1.04.20 C1.04.21 C1.04.25 C1.04.29 C1.05.17 C1.05.21 C1.05.25 C1.05.28 +C1.05.25 C1.05.18 C1.05.21 C1.05.22 C1.05.24 C1.05.26 C1.05.28 C1.05.29 C1.05.31 +C1.05.26 C1.05.19 C1.05.22 C1.05.23 C1.05.25 C1.05.27 C1.05.29 C1.05.30 C1.05.32 +C1.05.27 C1.05.20 C1.05.23 C1.05.26 C1.05.30 C1.05.33 C1.06.25 C1.06.28 C1.06.32 +C1.05.28 C1.04.25 C1.04.29 C1.04.33 C1.05.21 C1.05.24 C1.05.25 C1.05.29 C1.05.31 +C1.05.29 C1.05.22 C1.05.25 C1.05.26 C1.05.28 C1.05.30 C1.05.31 C1.05.32 C1.05.34 +C1.05.30 C1.05.23 C1.05.26 C1.05.27 C1.05.29 C1.05.32 C1.05.33 C1.05.36 C1.06.32 +C1.05.31 C1.04.29 C1.04.33 C1.05.25 C1.05.28 C1.05.29 C1.05.32 C1.05.34 C1.05.37 +C1.05.32 C1.05.26 C1.05.29 C1.05.30 C1.05.31 C1.05.33 C1.05.34 C1.05.36 C1.05.38 +C1.05.33 C1.05.27 C1.05.30 C1.05.32 C1.05.35 C1.05.36 C1.05.39 C1.06.32 C1.06.35 +C1.05.34 C1.04.33 C1.05.29 C1.05.31 C1.05.32 C1.05.36 C1.05.37 C1.05.38 C1.05.40 +C1.05.35 C1.05.33 C1.05.36 C1.05.39 C1.05.42 C1.06.32 C1.06.35 C1.06.37 C1.06.40 +C1.05.36 C1.05.30 C1.05.32 C1.05.33 C1.05.34 C1.05.35 C1.05.38 C1.05.39 C1.05.41 +C1.05.37 C1.04.33 C1.04.34 C1.04.37 C1.04.40 C1.05.31 C1.05.34 C1.05.38 C1.05.40 +C1.05.38 C1.05.32 C1.05.34 C1.05.36 C1.05.37 C1.05.39 C1.05.40 C1.05.41 C1.05.43 +C1.05.39 C1.05.33 C1.05.35 C1.05.36 C1.05.38 C1.05.41 C1.05.42 C1.05.44 C1.06.40 +C1.05.40 C1.04.37 C1.04.40 C1.04.43 C1.05.34 C1.05.37 C1.05.38 C1.05.41 C1.05.43 +C1.05.41 C1.05.36 C1.05.38 C1.05.39 C1.05.40 C1.05.42 C1.05.43 C1.05.44 C1.05.45 +C1.05.42 C1.05.35 C1.05.39 C1.05.41 C1.05.44 C1.05.46 C1.06.40 C1.06.42 C1.06.44 +C1.05.43 C1.04.40 C1.04.43 C1.05.38 C1.05.40 C1.05.41 C1.05.44 C1.05.45 C1.05.47 +C1.05.44 C1.05.39 C1.05.41 C1.05.42 C1.05.43 C1.05.45 C1.05.46 C1.05.48 C1.06.44 +C1.05.45 C1.04.43 C1.05.41 C1.05.43 C1.05.44 C1.05.46 C1.05.47 C1.05.48 C1.05.49 +C1.05.46 C1.05.42 C1.05.44 C1.05.45 C1.05.48 C1.05.50 C1.06.44 C1.06.46 C1.06.48 +C1.05.47 C1.04.43 C1.04.44 C1.04.46 C1.04.48 C1.05.43 C1.05.45 C1.05.48 C1.05.49 +C1.05.48 C1.05.44 C1.05.45 C1.05.46 C1.05.47 C1.05.49 C1.05.50 C1.05.51 C1.06.48 +C1.05.49 C1.04.46 C1.04.48 C1.04.50 C1.05.45 C1.05.47 C1.05.48 C1.05.50 C1.05.51 +C1.05.50 C1.05.46 C1.05.48 C1.05.49 C1.05.51 C1.05.52 C1.06.48 C1.06.49 C1.06.51 +C1.05.51 C1.04.48 C1.04.50 C1.04.54 C1.05.48 C1.05.49 C1.05.50 C1.05.52 C1.05.53 C1.05.55 C1.06.51 +C1.05.52 C1.05.50 C1.05.51 C1.05.53 C1.05.54 C1.05.56 C1.06.51 +C1.05.53 C1.04.54 C1.05.51 C1.05.52 C1.05.54 C1.05.55 C1.05.56 C1.05.57 +C1.05.54 C1.05.52 C1.05.53 C1.05.56 C1.05.58 C1.06.51 C1.06.55 C1.06.57 +C1.05.55 C1.04.54 C1.04.55 C1.04.58 C1.05.51 C1.05.53 C1.05.56 C1.05.57 C1.05.59 +C1.05.56 C1.05.52 C1.05.53 C1.05.54 C1.05.55 C1.05.57 C1.05.58 C1.05.60 C1.06.57 +C1.05.57 C1.04.58 C1.05.53 C1.05.55 C1.05.56 C1.05.58 C1.05.59 C1.05.60 +C1.05.58 C1.05.54 C1.05.56 C1.05.57 C1.05.60 C1.05.61 C1.06.57 C1.06.59 C1.06.61 +C1.05.59 C1.04.58 C1.04.59 C1.04.61 C1.05.55 C1.05.57 C1.05.60 C1.05.62 +C1.05.60 C1.05.56 C1.05.57 C1.05.58 C1.05.59 C1.05.61 C1.05.62 C1.06.61 +C1.05.61 C1.05.58 C1.05.60 C1.05.62 C1.06.61 C1.06.62 +C1.05.62 C1.04.61 C1.04.62 C1.05.59 C1.05.60 C1.05.61 +C1.06.00 C1.06.02 C1.06.03 C1.06.11 +C1.06.01 C1.06.04 C1.06.06 C1.06.08 C1.06.12 +C1.06.02 C1.06.00 C1.06.05 C1.06.11 C1.06.13 +C1.06.03 C1.06.00 C1.06.07 C1.06.09 C1.06.11 +C1.06.04 C1.06.01 C1.06.08 C1.06.10 +C1.06.05 C1.06.02 C1.06.11 C1.06.13 C1.07.00 C1.07.08 +C1.06.06 C1.05.06 C1.05.11 C1.06.01 C1.06.12 C1.06.17 +C1.06.07 C1.06.03 C1.06.09 C1.06.10 C1.06.14 +C1.06.08 C1.06.01 C1.06.04 C1.06.10 C1.06.12 C1.06.15 +C1.06.09 C1.06.03 C1.06.07 C1.06.11 C1.06.14 C1.06.16 +C1.06.10 C1.06.04 C1.06.07 C1.06.08 C1.06.12 C1.06.14 C1.06.15 C1.06.18 +C1.06.11 C1.06.00 C1.06.02 C1.06.03 C1.06.05 C1.06.09 C1.06.13 C1.06.14 C1.06.16 C1.06.19 +C1.06.12 C1.05.11 C1.06.01 C1.06.06 C1.06.08 C1.06.10 C1.06.15 C1.06.17 C1.06.20 +C1.06.13 C1.06.02 C1.06.05 C1.06.11 C1.06.16 C1.06.19 C1.06.21 C1.07.07 C1.07.08 C1.07.18 +C1.06.14 C1.06.07 C1.06.09 C1.06.10 C1.06.11 C1.06.15 C1.06.16 C1.06.18 C1.06.22 +C1.06.15 C1.06.08 C1.06.10 C1.06.12 C1.06.14 C1.06.17 C1.06.18 C1.06.20 C1.06.23 +C1.06.16 C1.06.09 C1.06.11 C1.06.13 C1.06.14 C1.06.18 C1.06.19 C1.06.22 C1.06.24 +C1.06.17 C1.05.11 C1.05.16 C1.05.20 C1.06.06 C1.06.12 C1.06.15 C1.06.20 C1.06.25 +C1.06.18 C1.06.10 C1.06.14 C1.06.15 C1.06.16 C1.06.20 C1.06.22 C1.06.23 C1.06.27 +C1.06.19 C1.06.11 C1.06.13 C1.06.16 C1.06.21 C1.06.22 C1.06.24 C1.06.26 C1.07.18 +C1.06.20 C1.05.20 C1.06.12 C1.06.15 C1.06.17 C1.06.18 C1.06.23 C1.06.25 C1.06.28 +C1.06.21 C1.06.13 C1.06.19 C1.06.24 C1.06.26 C1.07.18 C1.07.19 C1.07.24 C1.07.29 +C1.06.22 C1.06.14 C1.06.16 C1.06.18 C1.06.19 C1.06.23 C1.06.24 C1.06.27 C1.06.29 +C1.06.23 C1.06.15 C1.06.18 C1.06.20 C1.06.22 C1.06.25 C1.06.27 C1.06.28 C1.06.30 +C1.06.24 C1.06.16 C1.06.19 C1.06.21 C1.06.22 C1.06.26 C1.06.27 C1.06.29 C1.06.31 +C1.06.25 C1.05.20 C1.05.23 C1.05.27 C1.06.17 C1.06.20 C1.06.23 C1.06.28 C1.06.32 +C1.06.26 C1.06.19 C1.06.21 C1.06.24 C1.06.29 C1.06.31 C1.06.33 C1.07.24 C1.07.29 +C1.06.27 C1.06.18 C1.06.22 C1.06.23 C1.06.24 C1.06.28 C1.06.29 C1.06.30 C1.06.34 +C1.06.28 C1.05.27 C1.06.20 C1.06.23 C1.06.25 C1.06.27 C1.06.30 C1.06.32 C1.06.35 +C1.06.29 C1.06.22 C1.06.24 C1.06.26 C1.06.27 C1.06.30 C1.06.31 C1.06.34 C1.06.36 +C1.06.30 C1.06.23 C1.06.27 C1.06.28 C1.06.29 C1.06.32 C1.06.34 C1.06.35 C1.06.37 +C1.06.31 C1.06.24 C1.06.26 C1.06.29 C1.06.33 C1.06.34 C1.06.36 C1.06.38 C1.07.29 +C1.06.32 C1.05.27 C1.05.30 C1.05.33 C1.05.35 C1.06.25 C1.06.28 C1.06.30 C1.06.35 +C1.06.33 C1.06.26 C1.06.31 C1.06.36 C1.06.38 C1.07.29 C1.07.30 C1.07.34 C1.07.38 +C1.06.34 C1.06.27 C1.06.29 C1.06.30 C1.06.31 C1.06.35 C1.06.36 C1.06.37 C1.06.39 +C1.06.35 C1.05.33 C1.05.35 C1.06.28 C1.06.30 C1.06.32 C1.06.34 C1.06.37 C1.06.40 +C1.06.36 C1.06.29 C1.06.31 C1.06.33 C1.06.34 C1.06.37 C1.06.38 C1.06.39 C1.06.41 +C1.06.37 C1.05.35 C1.06.30 C1.06.34 C1.06.35 C1.06.36 C1.06.39 C1.06.40 C1.06.42 +C1.06.38 C1.06.31 C1.06.33 C1.06.36 C1.06.39 C1.06.41 C1.07.34 C1.07.38 C1.07.42 +C1.06.39 C1.06.34 C1.06.36 C1.06.37 C1.06.38 C1.06.40 C1.06.41 C1.06.42 C1.06.43 +C1.06.40 C1.05.35 C1.05.39 C1.05.42 C1.06.35 C1.06.37 C1.06.39 C1.06.42 C1.06.44 +C1.06.41 C1.06.36 C1.06.38 C1.06.39 C1.06.42 C1.06.43 C1.06.45 C1.07.38 C1.07.42 +C1.06.42 C1.05.42 C1.06.37 C1.06.39 C1.06.40 C1.06.41 C1.06.43 C1.06.44 C1.06.46 +C1.06.43 C1.06.39 C1.06.41 C1.06.42 C1.06.44 C1.06.45 C1.06.46 C1.06.47 C1.07.42 +C1.06.44 C1.05.42 C1.05.44 C1.05.46 C1.06.40 C1.06.42 C1.06.43 C1.06.46 C1.06.48 +C1.06.45 C1.06.41 C1.06.43 C1.06.46 C1.06.47 C1.07.42 C1.07.43 C1.07.46 C1.07.49 +C1.06.46 C1.05.46 C1.06.42 C1.06.43 C1.06.44 C1.06.45 C1.06.47 C1.06.48 C1.06.49 +C1.06.47 C1.06.43 C1.06.45 C1.06.46 C1.06.48 C1.06.49 C1.06.50 C1.07.46 C1.07.49 +C1.06.48 C1.05.46 C1.05.48 C1.05.50 C1.06.44 C1.06.46 C1.06.47 C1.06.49 C1.06.51 +C1.06.49 C1.05.50 C1.06.46 C1.06.47 C1.06.48 C1.06.50 C1.06.51 C1.06.52 C1.07.49 +C1.06.50 C1.06.47 C1.06.49 C1.06.51 C1.06.52 C1.06.53 C1.06.54 C1.07.49 C1.07.50 C1.07.52 +C1.06.51 C1.05.50 C1.05.51 C1.05.52 C1.05.54 C1.06.48 C1.06.49 C1.06.50 C1.06.52 C1.06.55 C1.06.57 +C1.06.52 C1.06.49 C1.06.50 C1.06.51 C1.06.53 C1.06.55 C1.06.56 +C1.06.53 C1.06.50 C1.06.52 C1.06.54 C1.06.55 C1.06.56 C1.06.58 C1.07.52 +C1.06.54 C1.06.50 C1.06.53 C1.06.56 C1.06.58 C1.07.52 C1.07.54 C1.07.57 +C1.06.55 C1.05.54 C1.06.51 C1.06.52 C1.06.53 C1.06.56 C1.06.57 C1.06.59 +C1.06.56 C1.06.52 C1.06.53 C1.06.54 C1.06.55 C1.06.57 C1.06.58 C1.06.59 C1.06.60 +C1.06.57 C1.05.54 C1.05.56 C1.05.58 C1.06.51 C1.06.55 C1.06.56 C1.06.59 C1.06.61 +C1.06.58 C1.06.53 C1.06.54 C1.06.56 C1.06.59 C1.06.60 C1.07.54 C1.07.57 C1.07.60 +C1.06.59 C1.05.58 C1.06.55 C1.06.56 C1.06.57 C1.06.58 C1.06.60 C1.06.61 C1.06.62 +C1.06.60 C1.06.56 C1.06.58 C1.06.59 C1.06.61 C1.06.62 C1.07.57 C1.07.60 +C1.06.61 C1.05.58 C1.05.60 C1.05.61 C1.06.57 C1.06.59 C1.06.60 C1.06.62 +C1.06.62 C1.05.61 C1.06.59 C1.06.60 C1.06.61 C1.07.60 +C1.07.00 C1.06.05 C1.07.07 C1.07.08 +C1.07.01 C1.07.02 C1.07.04 C1.07.06 C1.07.10 C1.07.11 +C1.07.02 C1.07.01 C1.07.11 C1.07.12 C1.08.01 C1.08.11 +C1.07.03 C1.07.07 C1.07.13 C1.07.14 +C1.07.04 C1.07.01 C1.07.05 C1.07.06 C1.07.09 +C1.07.05 C1.07.04 C1.07.09 C1.07.14 C1.07.15 +C1.07.06 C1.07.01 C1.07.04 C1.07.09 C1.07.10 C1.07.15 C1.07.16 +C1.07.07 C1.06.13 C1.07.00 C1.07.03 C1.07.08 C1.07.13 C1.07.18 C1.07.19 +C1.07.08 C1.06.05 C1.06.13 C1.07.00 C1.07.07 C1.07.18 +C1.07.09 C1.07.04 C1.07.05 C1.07.06 C1.07.15 C1.07.16 +C1.07.10 C1.07.01 C1.07.06 C1.07.11 C1.07.16 C1.07.17 +C1.07.11 C1.07.01 C1.07.02 C1.07.10 C1.07.12 C1.07.16 C1.07.17 +C1.07.12 C1.07.02 C1.07.11 C1.07.17 C1.08.01 C1.08.11 C1.08.16 +C1.07.13 C1.07.03 C1.07.07 C1.07.14 C1.07.18 C1.07.19 C1.07.20 +C1.07.14 C1.07.03 C1.07.05 C1.07.13 C1.07.15 C1.07.19 C1.07.20 C1.07.21 +C1.07.15 C1.07.05 C1.07.06 C1.07.09 C1.07.14 C1.07.16 C1.07.20 C1.07.21 C1.07.22 +C1.07.16 C1.07.06 C1.07.09 C1.07.10 C1.07.11 C1.07.15 C1.07.17 C1.07.21 C1.07.22 C1.07.23 +C1.07.17 C1.07.10 C1.07.11 C1.07.12 C1.07.16 C1.07.22 C1.07.23 C1.08.11 C1.08.16 C1.08.22 +C1.07.18 C1.06.13 C1.06.19 C1.06.21 C1.07.07 C1.07.08 C1.07.13 C1.07.19 C1.07.24 +C1.07.19 C1.06.21 C1.07.07 C1.07.13 C1.07.14 C1.07.18 C1.07.20 C1.07.24 C1.07.25 +C1.07.20 C1.07.13 C1.07.14 C1.07.15 C1.07.19 C1.07.21 C1.07.24 C1.07.25 C1.07.26 +C1.07.21 C1.07.14 C1.07.15 C1.07.16 C1.07.20 C1.07.22 C1.07.25 C1.07.26 C1.07.27 +C1.07.22 C1.07.15 C1.07.16 C1.07.17 C1.07.21 C1.07.23 C1.07.26 C1.07.27 C1.07.28 +C1.07.23 C1.07.16 C1.07.17 C1.07.22 C1.07.27 C1.07.28 C1.08.16 C1.08.22 C1.08.27 +C1.07.24 C1.06.21 C1.06.26 C1.07.18 C1.07.19 C1.07.20 C1.07.25 C1.07.29 C1.07.30 +C1.07.25 C1.07.19 C1.07.20 C1.07.21 C1.07.24 C1.07.26 C1.07.29 C1.07.30 C1.07.31 +C1.07.26 C1.07.20 C1.07.21 C1.07.22 C1.07.25 C1.07.27 C1.07.30 C1.07.31 C1.07.32 +C1.07.27 C1.07.21 C1.07.22 C1.07.23 C1.07.26 C1.07.28 C1.07.31 C1.07.32 C1.07.33 +C1.07.28 C1.07.22 C1.07.23 C1.07.27 C1.07.32 C1.07.33 C1.08.22 C1.08.27 C1.08.32 +C1.07.29 C1.06.21 C1.06.26 C1.06.31 C1.06.33 C1.07.24 C1.07.25 C1.07.30 C1.07.34 +C1.07.30 C1.06.33 C1.07.24 C1.07.25 C1.07.26 C1.07.29 C1.07.31 C1.07.34 C1.07.35 +C1.07.31 C1.07.25 C1.07.26 C1.07.27 C1.07.30 C1.07.32 C1.07.34 C1.07.35 C1.07.36 +C1.07.32 C1.07.26 C1.07.27 C1.07.28 C1.07.31 C1.07.33 C1.07.35 C1.07.36 C1.07.37 +C1.07.33 C1.07.27 C1.07.28 C1.07.32 C1.07.36 C1.07.37 C1.08.27 C1.08.32 C1.08.36 +C1.07.34 C1.06.33 C1.06.38 C1.07.29 C1.07.30 C1.07.31 C1.07.35 C1.07.38 C1.07.39 +C1.07.35 C1.07.30 C1.07.31 C1.07.32 C1.07.34 C1.07.36 C1.07.38 C1.07.39 C1.07.40 +C1.07.36 C1.07.31 C1.07.32 C1.07.33 C1.07.35 C1.07.37 C1.07.39 C1.07.40 C1.07.41 +C1.07.37 C1.07.32 C1.07.33 C1.07.36 C1.07.40 C1.07.41 C1.08.32 C1.08.36 C1.08.40 +C1.07.38 C1.06.33 C1.06.38 C1.06.41 C1.07.34 C1.07.35 C1.07.39 C1.07.42 C1.07.43 +C1.07.39 C1.07.34 C1.07.35 C1.07.36 C1.07.38 C1.07.40 C1.07.42 C1.07.43 C1.07.44 +C1.07.40 C1.07.35 C1.07.36 C1.07.37 C1.07.39 C1.07.41 C1.07.43 C1.07.44 C1.07.45 +C1.07.41 C1.07.36 C1.07.37 C1.07.40 C1.07.44 C1.07.45 C1.08.36 C1.08.40 C1.08.44 +C1.07.42 C1.06.38 C1.06.41 C1.06.43 C1.06.45 C1.07.38 C1.07.39 C1.07.43 C1.07.46 +C1.07.43 C1.06.45 C1.07.38 C1.07.39 C1.07.40 C1.07.42 C1.07.44 C1.07.46 C1.07.47 +C1.07.44 C1.07.39 C1.07.40 C1.07.41 C1.07.43 C1.07.45 C1.07.46 C1.07.47 C1.07.48 +C1.07.45 C1.07.40 C1.07.41 C1.07.44 C1.07.47 C1.07.48 C1.08.40 C1.08.44 C1.08.47 +C1.07.46 C1.06.45 C1.06.47 C1.07.42 C1.07.43 C1.07.44 C1.07.47 C1.07.49 C1.07.50 +C1.07.47 C1.07.43 C1.07.44 C1.07.45 C1.07.46 C1.07.48 C1.07.49 C1.07.50 C1.07.51 +C1.07.48 C1.07.44 C1.07.45 C1.07.47 C1.07.50 C1.07.51 C1.08.44 C1.08.47 C1.08.50 +C1.07.49 C1.06.45 C1.06.47 C1.06.49 C1.06.50 C1.07.46 C1.07.47 C1.07.50 C1.07.52 +C1.07.50 C1.06.50 C1.07.46 C1.07.47 C1.07.48 C1.07.49 C1.07.51 C1.07.52 C1.07.53 +C1.07.51 C1.07.47 C1.07.48 C1.07.50 C1.07.52 C1.07.53 C1.08.47 C1.08.50 C1.08.52 +C1.07.52 C1.06.50 C1.06.53 C1.06.54 C1.07.49 C1.07.50 C1.07.51 C1.07.53 C1.07.54 C1.07.55 +C1.07.53 C1.07.50 C1.07.51 C1.07.52 C1.07.54 C1.07.55 C1.07.56 C1.08.50 C1.08.52 C1.08.56 +C1.07.54 C1.06.54 C1.06.58 C1.07.52 C1.07.53 C1.07.55 C1.07.57 C1.07.58 +C1.07.55 C1.07.52 C1.07.53 C1.07.54 C1.07.56 C1.07.57 C1.07.58 C1.07.59 +C1.07.56 C1.07.53 C1.07.55 C1.07.58 C1.07.59 C1.08.52 C1.08.56 C1.08.59 +C1.07.57 C1.06.54 C1.06.58 C1.06.60 C1.07.54 C1.07.55 C1.07.58 C1.07.60 C1.07.61 +C1.07.58 C1.07.54 C1.07.55 C1.07.56 C1.07.57 C1.07.59 C1.07.60 C1.07.61 C1.07.62 +C1.07.59 C1.07.55 C1.07.56 C1.07.58 C1.07.61 C1.07.62 C1.08.56 C1.08.59 C1.08.62 +C1.07.60 C1.06.58 C1.06.60 C1.06.62 C1.07.57 C1.07.58 C1.07.61 +C1.07.61 C1.07.57 C1.07.58 C1.07.59 C1.07.60 C1.07.62 +C1.07.62 C1.07.58 C1.07.59 C1.07.61 C1.08.59 C1.08.62 +C1.08.00 C1.08.07 C1.08.12 +C1.08.01 C1.07.02 C1.07.12 C1.08.02 C1.08.10 C1.08.11 +C1.08.02 C1.08.01 C1.08.03 C1.08.06 C1.08.09 C1.08.10 +C1.08.03 C1.08.02 C1.08.05 C1.08.06 C1.08.14 C1.08.15 +C1.08.04 C1.08.05 C1.08.12 C1.08.13 C1.08.14 +C1.08.05 C1.08.03 C1.08.04 C1.08.13 C1.08.14 +C1.08.06 C1.08.02 C1.08.03 C1.08.09 C1.08.14 C1.08.15 +C1.08.07 C1.08.00 C1.08.08 C1.08.12 C1.08.17 C1.08.18 C1.09.13 +C1.08.08 C1.08.07 C1.08.17 C1.09.02 C1.09.13 +C1.08.09 C1.08.02 C1.08.06 C1.08.10 C1.08.15 C1.08.16 +C1.08.10 C1.08.01 C1.08.02 C1.08.09 C1.08.11 C1.08.15 C1.08.16 +C1.08.11 C1.07.02 C1.07.12 C1.07.17 C1.08.01 C1.08.10 C1.08.16 +C1.08.12 C1.08.00 C1.08.04 C1.08.07 C1.08.13 C1.08.17 C1.08.18 C1.08.19 +C1.08.13 C1.08.04 C1.08.05 C1.08.12 C1.08.14 C1.08.18 C1.08.19 C1.08.20 +C1.08.14 C1.08.03 C1.08.04 C1.08.05 C1.08.06 C1.08.13 C1.08.15 C1.08.19 C1.08.20 C1.08.21 +C1.08.15 C1.08.03 C1.08.06 C1.08.09 C1.08.10 C1.08.14 C1.08.16 C1.08.20 C1.08.21 C1.08.22 +C1.08.16 C1.07.12 C1.07.17 C1.07.23 C1.08.09 C1.08.10 C1.08.11 C1.08.15 C1.08.21 C1.08.22 +C1.08.17 C1.08.07 C1.08.08 C1.08.12 C1.08.18 C1.08.23 C1.09.13 C1.09.19 C1.09.21 +C1.08.18 C1.08.07 C1.08.12 C1.08.13 C1.08.17 C1.08.19 C1.08.23 C1.08.24 C1.09.21 +C1.08.19 C1.08.12 C1.08.13 C1.08.14 C1.08.18 C1.08.20 C1.08.23 C1.08.24 C1.08.25 +C1.08.20 C1.08.13 C1.08.14 C1.08.15 C1.08.19 C1.08.21 C1.08.24 C1.08.25 C1.08.26 +C1.08.21 C1.08.14 C1.08.15 C1.08.16 C1.08.20 C1.08.22 C1.08.25 C1.08.26 C1.08.27 +C1.08.22 C1.07.17 C1.07.23 C1.07.28 C1.08.15 C1.08.16 C1.08.21 C1.08.26 C1.08.27 +C1.08.23 C1.08.17 C1.08.18 C1.08.19 C1.08.24 C1.08.28 C1.08.29 C1.09.21 C1.09.26 +C1.08.24 C1.08.18 C1.08.19 C1.08.20 C1.08.23 C1.08.25 C1.08.28 C1.08.29 C1.08.30 +C1.08.25 C1.08.19 C1.08.20 C1.08.21 C1.08.24 C1.08.26 C1.08.29 C1.08.30 C1.08.31 +C1.08.26 C1.08.20 C1.08.21 C1.08.22 C1.08.25 C1.08.27 C1.08.30 C1.08.31 C1.08.32 +C1.08.27 C1.07.23 C1.07.28 C1.07.33 C1.08.21 C1.08.22 C1.08.26 C1.08.31 C1.08.32 +C1.08.28 C1.08.23 C1.08.24 C1.08.29 C1.08.33 C1.09.21 C1.09.26 C1.09.31 C1.09.33 +C1.08.29 C1.08.23 C1.08.24 C1.08.25 C1.08.28 C1.08.30 C1.08.33 C1.08.34 C1.09.33 +C1.08.30 C1.08.24 C1.08.25 C1.08.26 C1.08.29 C1.08.31 C1.08.33 C1.08.34 C1.08.35 +C1.08.31 C1.08.25 C1.08.26 C1.08.27 C1.08.30 C1.08.32 C1.08.34 C1.08.35 C1.08.36 +C1.08.32 C1.07.28 C1.07.33 C1.07.37 C1.08.26 C1.08.27 C1.08.31 C1.08.35 C1.08.36 +C1.08.33 C1.08.28 C1.08.29 C1.08.30 C1.08.34 C1.08.37 C1.08.38 C1.09.33 C1.09.38 +C1.08.34 C1.08.29 C1.08.30 C1.08.31 C1.08.33 C1.08.35 C1.08.37 C1.08.38 C1.08.39 +C1.08.35 C1.08.30 C1.08.31 C1.08.32 C1.08.34 C1.08.36 C1.08.38 C1.08.39 C1.08.40 +C1.08.36 C1.07.33 C1.07.37 C1.07.41 C1.08.31 C1.08.32 C1.08.35 C1.08.39 C1.08.40 +C1.08.37 C1.08.33 C1.08.34 C1.08.38 C1.08.41 C1.08.42 C1.09.33 C1.09.38 C1.09.41 +C1.08.38 C1.08.33 C1.08.34 C1.08.35 C1.08.37 C1.08.39 C1.08.41 C1.08.42 C1.08.43 +C1.08.39 C1.08.34 C1.08.35 C1.08.36 C1.08.38 C1.08.40 C1.08.42 C1.08.43 C1.08.44 +C1.08.40 C1.07.37 C1.07.41 C1.07.45 C1.08.35 C1.08.36 C1.08.39 C1.08.43 C1.08.44 +C1.08.41 C1.08.37 C1.08.38 C1.08.42 C1.08.45 C1.09.38 C1.09.41 C1.09.43 C1.09.45 +C1.08.42 C1.08.37 C1.08.38 C1.08.39 C1.08.41 C1.08.43 C1.08.45 C1.08.46 C1.09.45 +C1.08.43 C1.08.38 C1.08.39 C1.08.40 C1.08.42 C1.08.44 C1.08.45 C1.08.46 C1.08.47 +C1.08.44 C1.07.41 C1.07.45 C1.07.48 C1.08.39 C1.08.40 C1.08.43 C1.08.46 C1.08.47 +C1.08.45 C1.08.41 C1.08.42 C1.08.43 C1.08.46 C1.08.48 C1.08.49 C1.09.45 C1.09.47 +C1.08.46 C1.08.42 C1.08.43 C1.08.44 C1.08.45 C1.08.47 C1.08.48 C1.08.49 C1.08.50 +C1.08.47 C1.07.45 C1.07.48 C1.07.51 C1.08.43 C1.08.44 C1.08.46 C1.08.49 C1.08.50 +C1.08.48 C1.08.45 C1.08.46 C1.08.49 C1.08.51 C1.09.45 C1.09.47 C1.09.49 C1.09.50 +C1.08.49 C1.08.45 C1.08.46 C1.08.47 C1.08.48 C1.08.50 C1.08.51 C1.08.52 C1.09.50 +C1.08.50 C1.07.48 C1.07.51 C1.07.53 C1.08.46 C1.08.47 C1.08.49 C1.08.51 C1.08.52 +C1.08.51 C1.08.48 C1.08.49 C1.08.50 C1.08.52 C1.08.53 C1.08.54 C1.08.55 C1.09.50 C1.09.53 +C1.08.52 C1.07.51 C1.07.53 C1.07.56 C1.08.49 C1.08.50 C1.08.51 C1.08.54 C1.08.55 C1.08.56 +C1.08.53 C1.08.51 C1.08.54 C1.08.57 C1.09.50 C1.09.53 C1.09.55 C1.09.57 +C1.08.54 C1.08.51 C1.08.52 C1.08.53 C1.08.55 C1.08.57 C1.08.58 C1.09.57 +C1.08.55 C1.08.51 C1.08.52 C1.08.54 C1.08.56 C1.08.57 C1.08.58 C1.08.59 +C1.08.56 C1.07.53 C1.07.56 C1.07.59 C1.08.52 C1.08.55 C1.08.58 C1.08.59 +C1.08.57 C1.08.53 C1.08.54 C1.08.55 C1.08.58 C1.08.60 C1.08.61 C1.09.57 C1.09.59 +C1.08.58 C1.08.54 C1.08.55 C1.08.56 C1.08.57 C1.08.59 C1.08.60 C1.08.61 C1.08.62 +C1.08.59 C1.07.56 C1.07.59 C1.07.62 C1.08.55 C1.08.56 C1.08.58 C1.08.61 C1.08.62 +C1.08.60 C1.08.57 C1.08.58 C1.08.61 C1.09.57 C1.09.59 C1.09.62 +C1.08.61 C1.08.57 C1.08.58 C1.08.59 C1.08.60 C1.08.62 C1.09.62 +C1.08.62 C1.07.59 C1.07.62 C1.08.58 C1.08.59 C1.08.61 +C1.09.00 C1.09.04 C1.09.06 C1.09.08 C1.09.12 +C1.09.01 C1.09.03 C1.09.05 C1.09.11 +C1.09.02 C1.08.08 C1.09.05 C1.09.13 +C1.09.03 C1.09.01 C1.09.07 C1.09.09 C1.09.11 +C1.09.04 C1.09.00 C1.09.08 C1.09.10 +C1.09.05 C1.09.01 C1.09.02 C1.09.11 C1.09.13 +C1.09.06 C1.09.00 C1.09.12 C1.09.17 C1.10.06 C1.10.12 +C1.09.07 C1.09.03 C1.09.09 C1.09.10 C1.09.14 +C1.09.08 C1.09.00 C1.09.04 C1.09.10 C1.09.12 C1.09.15 +C1.09.09 C1.09.03 C1.09.07 C1.09.11 C1.09.14 C1.09.16 +C1.09.10 C1.09.04 C1.09.07 C1.09.08 C1.09.12 C1.09.14 C1.09.15 C1.09.18 +C1.09.11 C1.09.01 C1.09.03 C1.09.05 C1.09.09 C1.09.13 C1.09.14 C1.09.16 C1.09.19 +C1.09.12 C1.09.00 C1.09.06 C1.09.08 C1.09.10 C1.09.15 C1.09.17 C1.09.20 C1.10.12 +C1.09.13 C1.08.07 C1.08.08 C1.08.17 C1.09.02 C1.09.05 C1.09.11 C1.09.16 C1.09.19 C1.09.21 +C1.09.14 C1.09.07 C1.09.09 C1.09.10 C1.09.11 C1.09.15 C1.09.16 C1.09.18 C1.09.22 +C1.09.15 C1.09.08 C1.09.10 C1.09.12 C1.09.14 C1.09.17 C1.09.18 C1.09.20 C1.09.23 +C1.09.16 C1.09.09 C1.09.11 C1.09.13 C1.09.14 C1.09.18 C1.09.19 C1.09.22 C1.09.24 +C1.09.17 C1.09.06 C1.09.12 C1.09.15 C1.09.20 C1.09.25 C1.10.12 C1.10.17 C1.10.21 +C1.09.18 C1.09.10 C1.09.14 C1.09.15 C1.09.16 C1.09.20 C1.09.22 C1.09.23 C1.09.27 +C1.09.19 C1.08.17 C1.09.11 C1.09.13 C1.09.16 C1.09.21 C1.09.22 C1.09.24 C1.09.26 +C1.09.20 C1.09.12 C1.09.15 C1.09.17 C1.09.18 C1.09.23 C1.09.25 C1.09.28 C1.10.21 +C1.09.21 C1.08.17 C1.08.18 C1.08.23 C1.08.28 C1.09.13 C1.09.19 C1.09.24 C1.09.26 +C1.09.22 C1.09.14 C1.09.16 C1.09.18 C1.09.19 C1.09.23 C1.09.24 C1.09.27 C1.09.29 +C1.09.23 C1.09.15 C1.09.18 C1.09.20 C1.09.22 C1.09.25 C1.09.27 C1.09.28 C1.09.30 +C1.09.24 C1.09.16 C1.09.19 C1.09.21 C1.09.22 C1.09.26 C1.09.27 C1.09.29 C1.09.31 +C1.09.25 C1.09.17 C1.09.20 C1.09.23 C1.09.28 C1.09.32 C1.10.21 C1.10.24 C1.10.28 +C1.09.26 C1.08.23 C1.08.28 C1.09.19 C1.09.21 C1.09.24 C1.09.29 C1.09.31 C1.09.33 +C1.09.27 C1.09.18 C1.09.22 C1.09.23 C1.09.24 C1.09.28 C1.09.29 C1.09.30 C1.09.34 +C1.09.28 C1.09.20 C1.09.23 C1.09.25 C1.09.27 C1.09.30 C1.09.32 C1.09.35 C1.10.28 +C1.09.29 C1.09.22 C1.09.24 C1.09.26 C1.09.27 C1.09.30 C1.09.31 C1.09.34 C1.09.36 +C1.09.30 C1.09.23 C1.09.27 C1.09.28 C1.09.29 C1.09.32 C1.09.34 C1.09.35 C1.09.37 +C1.09.31 C1.08.28 C1.09.24 C1.09.26 C1.09.29 C1.09.33 C1.09.34 C1.09.36 C1.09.38 +C1.09.32 C1.09.25 C1.09.28 C1.09.30 C1.09.35 C1.10.28 C1.10.31 C1.10.34 C1.10.36 +C1.09.33 C1.08.28 C1.08.29 C1.08.33 C1.08.37 C1.09.26 C1.09.31 C1.09.36 C1.09.38 +C1.09.34 C1.09.27 C1.09.29 C1.09.30 C1.09.31 C1.09.35 C1.09.36 C1.09.37 C1.09.39 +C1.09.35 C1.09.28 C1.09.30 C1.09.32 C1.09.34 C1.09.37 C1.09.40 C1.10.34 C1.10.36 +C1.09.36 C1.09.29 C1.09.31 C1.09.33 C1.09.34 C1.09.37 C1.09.38 C1.09.39 C1.09.41 +C1.09.37 C1.09.30 C1.09.34 C1.09.35 C1.09.36 C1.09.39 C1.09.40 C1.09.42 C1.10.36 +C1.09.38 C1.08.33 C1.08.37 C1.08.41 C1.09.31 C1.09.33 C1.09.36 C1.09.39 C1.09.41 +C1.09.39 C1.09.34 C1.09.36 C1.09.37 C1.09.38 C1.09.40 C1.09.41 C1.09.42 C1.09.43 +C1.09.40 C1.09.35 C1.09.37 C1.09.39 C1.09.42 C1.09.44 C1.10.36 C1.10.40 C1.10.43 +C1.09.41 C1.08.37 C1.08.41 C1.09.36 C1.09.38 C1.09.39 C1.09.42 C1.09.43 C1.09.45 +C1.09.42 C1.09.37 C1.09.39 C1.09.40 C1.09.41 C1.09.43 C1.09.44 C1.09.46 C1.10.43 +C1.09.43 C1.08.41 C1.09.39 C1.09.41 C1.09.42 C1.09.44 C1.09.45 C1.09.46 C1.09.47 +C1.09.44 C1.09.40 C1.09.42 C1.09.43 C1.09.46 C1.09.48 C1.10.43 C1.10.45 C1.10.47 +C1.09.45 C1.08.41 C1.08.42 C1.08.45 C1.08.48 C1.09.41 C1.09.43 C1.09.46 C1.09.47 +C1.09.46 C1.09.42 C1.09.43 C1.09.44 C1.09.45 C1.09.47 C1.09.48 C1.09.49 C1.10.47 +C1.09.47 C1.08.45 C1.08.48 C1.09.43 C1.09.45 C1.09.46 C1.09.48 C1.09.49 C1.09.50 +C1.09.48 C1.09.44 C1.09.46 C1.09.47 C1.09.49 C1.09.51 C1.10.47 C1.10.49 C1.10.51 +C1.09.49 C1.08.48 C1.09.46 C1.09.47 C1.09.48 C1.09.50 C1.09.51 C1.09.52 C1.10.51 +C1.09.50 C1.08.48 C1.08.49 C1.08.51 C1.08.53 C1.09.47 C1.09.49 C1.09.51 C1.09.52 C1.09.53 +C1.09.51 C1.09.48 C1.09.49 C1.09.50 C1.09.52 C1.09.54 C1.09.56 C1.10.51 C1.10.52 C1.10.53 C1.10.55 +C1.09.52 C1.09.49 C1.09.50 C1.09.51 C1.09.53 C1.09.54 C1.09.55 +C1.09.53 C1.08.51 C1.08.53 C1.09.50 C1.09.52 C1.09.54 C1.09.55 C1.09.57 +C1.09.54 C1.09.51 C1.09.52 C1.09.53 C1.09.55 C1.09.56 C1.09.58 C1.10.55 +C1.09.55 C1.08.53 C1.09.52 C1.09.53 C1.09.54 C1.09.56 C1.09.57 C1.09.58 C1.09.59 +C1.09.56 C1.09.51 C1.09.54 C1.09.55 C1.09.58 C1.09.60 C1.10.55 C1.10.57 C1.10.59 +C1.09.57 C1.08.53 C1.08.54 C1.08.57 C1.08.60 C1.09.53 C1.09.55 C1.09.58 C1.09.59 +C1.09.58 C1.09.54 C1.09.55 C1.09.56 C1.09.57 C1.09.59 C1.09.60 C1.09.61 C1.10.59 +C1.09.59 C1.08.57 C1.08.60 C1.09.55 C1.09.57 C1.09.58 C1.09.60 C1.09.61 C1.09.62 +C1.09.60 C1.09.56 C1.09.58 C1.09.59 C1.09.61 C1.10.59 C1.10.61 +C1.09.61 C1.09.58 C1.09.59 C1.09.60 C1.09.62 C1.10.59 C1.10.61 +C1.09.62 C1.08.60 C1.08.61 C1.09.59 C1.09.61 +C1.10.00 C1.10.03 C1.10.06 +C1.10.01 C1.10.02 C1.10.04 C1.10.10 C1.10.14 +C1.10.02 C1.10.01 C1.10.07 C1.10.10 +C1.10.03 C1.10.00 C1.10.06 C1.10.09 C1.10.13 +C1.10.04 C1.10.01 C1.10.05 C1.10.10 C1.10.14 C1.11.02 +C1.10.05 C1.10.04 C1.10.14 C1.11.02 C1.11.08 +C1.10.06 C1.09.06 C1.10.00 C1.10.03 C1.10.12 C1.10.13 C1.10.17 +C1.10.07 C1.10.02 C1.10.10 C1.10.11 C1.10.15 +C1.10.08 C1.10.09 C1.10.11 +C1.10.09 C1.10.03 C1.10.08 C1.10.11 C1.10.13 C1.10.16 +C1.10.10 C1.10.01 C1.10.02 C1.10.04 C1.10.07 C1.10.11 C1.10.14 C1.10.15 C1.10.18 +C1.10.11 C1.10.07 C1.10.08 C1.10.09 C1.10.10 C1.10.13 C1.10.15 C1.10.16 C1.10.19 +C1.10.12 C1.09.06 C1.09.12 C1.09.17 C1.10.06 C1.10.13 C1.10.17 C1.10.21 +C1.10.13 C1.10.03 C1.10.06 C1.10.09 C1.10.11 C1.10.12 C1.10.16 C1.10.17 C1.10.20 +C1.10.14 C1.10.01 C1.10.04 C1.10.05 C1.10.10 C1.10.15 C1.10.18 C1.11.08 C1.11.10 C1.11.15 C1.11.20 +C1.10.15 C1.10.07 C1.10.10 C1.10.11 C1.10.14 C1.10.16 C1.10.18 C1.10.19 C1.10.22 +C1.10.16 C1.10.09 C1.10.11 C1.10.13 C1.10.15 C1.10.17 C1.10.19 C1.10.20 C1.10.23 +C1.10.17 C1.09.17 C1.10.06 C1.10.12 C1.10.13 C1.10.16 C1.10.20 C1.10.21 C1.10.24 +C1.10.18 C1.10.10 C1.10.14 C1.10.15 C1.10.19 C1.10.22 C1.10.25 C1.11.15 C1.11.20 +C1.10.19 C1.10.11 C1.10.15 C1.10.16 C1.10.18 C1.10.20 C1.10.22 C1.10.23 C1.10.26 +C1.10.20 C1.10.13 C1.10.16 C1.10.17 C1.10.19 C1.10.21 C1.10.23 C1.10.24 C1.10.27 +C1.10.21 C1.09.17 C1.09.20 C1.09.25 C1.10.12 C1.10.17 C1.10.20 C1.10.24 C1.10.28 +C1.10.22 C1.10.15 C1.10.18 C1.10.19 C1.10.23 C1.10.25 C1.10.26 C1.10.29 C1.11.20 +C1.10.23 C1.10.16 C1.10.19 C1.10.20 C1.10.22 C1.10.24 C1.10.26 C1.10.27 C1.10.30 +C1.10.24 C1.09.25 C1.10.17 C1.10.20 C1.10.21 C1.10.23 C1.10.27 C1.10.28 C1.10.31 +C1.10.25 C1.10.18 C1.10.22 C1.10.26 C1.10.29 C1.11.20 C1.11.21 C1.11.25 C1.11.29 +C1.10.26 C1.10.19 C1.10.22 C1.10.23 C1.10.25 C1.10.27 C1.10.29 C1.10.30 C1.10.32 +C1.10.27 C1.10.20 C1.10.23 C1.10.24 C1.10.26 C1.10.28 C1.10.30 C1.10.31 C1.10.33 +C1.10.28 C1.09.25 C1.09.28 C1.09.32 C1.10.21 C1.10.24 C1.10.27 C1.10.31 C1.10.34 +C1.10.29 C1.10.22 C1.10.25 C1.10.26 C1.10.30 C1.10.32 C1.11.25 C1.11.29 C1.11.33 +C1.10.30 C1.10.23 C1.10.26 C1.10.27 C1.10.29 C1.10.31 C1.10.32 C1.10.33 C1.10.35 +C1.10.31 C1.09.32 C1.10.24 C1.10.27 C1.10.28 C1.10.30 C1.10.33 C1.10.34 C1.10.37 +C1.10.32 C1.10.26 C1.10.29 C1.10.30 C1.10.33 C1.10.35 C1.10.38 C1.11.29 C1.11.33 +C1.10.33 C1.10.27 C1.10.30 C1.10.31 C1.10.32 C1.10.34 C1.10.35 C1.10.37 C1.10.39 +C1.10.34 C1.09.32 C1.09.35 C1.10.28 C1.10.31 C1.10.33 C1.10.36 C1.10.37 C1.10.40 +C1.10.35 C1.10.30 C1.10.32 C1.10.33 C1.10.37 C1.10.38 C1.10.39 C1.10.41 C1.11.33 +C1.10.36 C1.09.32 C1.09.35 C1.09.37 C1.09.40 C1.10.34 C1.10.37 C1.10.40 C1.10.43 +C1.10.37 C1.10.31 C1.10.33 C1.10.34 C1.10.35 C1.10.36 C1.10.39 C1.10.40 C1.10.42 +C1.10.38 C1.10.32 C1.10.35 C1.10.39 C1.10.41 C1.11.33 C1.11.34 C1.11.37 C1.11.40 +C1.10.39 C1.10.33 C1.10.35 C1.10.37 C1.10.38 C1.10.40 C1.10.41 C1.10.42 C1.10.44 +C1.10.40 C1.09.40 C1.10.34 C1.10.36 C1.10.37 C1.10.39 C1.10.42 C1.10.43 C1.10.45 +C1.10.41 C1.10.35 C1.10.38 C1.10.39 C1.10.42 C1.10.44 C1.11.37 C1.11.40 C1.11.43 +C1.10.42 C1.10.37 C1.10.39 C1.10.40 C1.10.41 C1.10.43 C1.10.44 C1.10.45 C1.10.46 +C1.10.43 C1.09.40 C1.09.42 C1.09.44 C1.10.36 C1.10.40 C1.10.42 C1.10.45 C1.10.47 +C1.10.44 C1.10.39 C1.10.41 C1.10.42 C1.10.45 C1.10.46 C1.10.48 C1.11.40 C1.11.43 +C1.10.45 C1.09.44 C1.10.40 C1.10.42 C1.10.43 C1.10.44 C1.10.46 C1.10.47 C1.10.49 +C1.10.46 C1.10.42 C1.10.44 C1.10.45 C1.10.47 C1.10.48 C1.10.49 C1.10.50 C1.11.43 +C1.10.47 C1.09.44 C1.09.46 C1.09.48 C1.10.43 C1.10.45 C1.10.46 C1.10.49 C1.10.51 +C1.10.48 C1.10.44 C1.10.46 C1.10.49 C1.10.50 C1.11.43 C1.11.44 C1.11.46 C1.11.48 +C1.10.49 C1.09.48 C1.10.45 C1.10.46 C1.10.47 C1.10.48 C1.10.50 C1.10.51 C1.10.52 +C1.10.50 C1.10.46 C1.10.48 C1.10.49 C1.10.51 C1.10.52 C1.11.46 C1.11.48 C1.11.50 +C1.10.51 C1.09.48 C1.09.49 C1.09.51 C1.10.47 C1.10.49 C1.10.50 C1.10.52 C1.10.53 +C1.10.52 C1.09.51 C1.10.49 C1.10.50 C1.10.51 C1.10.53 C1.10.54 C1.10.56 C1.11.48 C1.11.50 C1.11.54 +C1.10.53 C1.09.51 C1.10.51 C1.10.52 C1.10.54 C1.10.55 C1.10.57 +C1.10.54 C1.10.52 C1.10.53 C1.10.55 C1.10.56 C1.10.57 C1.10.58 C1.11.54 +C1.10.55 C1.09.51 C1.09.54 C1.09.56 C1.10.53 C1.10.54 C1.10.57 C1.10.59 +C1.10.56 C1.10.52 C1.10.54 C1.10.57 C1.10.58 C1.10.60 C1.11.54 C1.11.55 C1.11.58 +C1.10.57 C1.09.56 C1.10.53 C1.10.54 C1.10.55 C1.10.56 C1.10.58 C1.10.59 C1.10.61 +C1.10.58 C1.10.54 C1.10.56 C1.10.57 C1.10.59 C1.10.60 C1.10.61 C1.10.62 C1.11.58 +C1.10.59 C1.09.56 C1.09.58 C1.09.60 C1.09.61 C1.10.55 C1.10.57 C1.10.58 C1.10.61 +C1.10.60 C1.10.56 C1.10.58 C1.10.61 C1.10.62 C1.11.58 C1.11.59 C1.11.61 +C1.10.61 C1.09.60 C1.09.61 C1.10.57 C1.10.58 C1.10.59 C1.10.60 C1.10.62 +C1.10.62 C1.10.58 C1.10.60 C1.10.61 C1.11.61 +C1.11.00 C1.11.05 C1.11.07 C1.12.00 C1.12.08 +C1.11.01 C1.11.02 C1.11.03 C1.11.10 +C1.11.02 C1.10.04 C1.10.05 C1.11.01 C1.11.08 C1.11.10 +C1.11.03 C1.11.01 C1.11.04 C1.11.10 C1.11.11 +C1.11.04 C1.11.03 C1.11.06 C1.11.11 C1.11.12 +C1.11.05 C1.11.00 C1.11.07 C1.11.09 C1.11.12 C1.11.13 C1.11.14 +C1.11.06 C1.11.04 C1.11.09 C1.11.11 C1.11.12 +C1.11.07 C1.11.00 C1.11.05 C1.11.13 C1.11.14 C1.12.00 C1.12.08 C1.12.14 +C1.11.08 C1.10.05 C1.10.14 C1.11.02 C1.11.10 C1.11.15 +C1.11.09 C1.11.05 C1.11.06 C1.11.12 C1.11.13 +C1.11.10 C1.10.14 C1.11.01 C1.11.02 C1.11.03 C1.11.08 C1.11.11 C1.11.15 C1.11.16 +C1.11.11 C1.11.03 C1.11.04 C1.11.06 C1.11.10 C1.11.12 C1.11.15 C1.11.16 C1.11.17 +C1.11.12 C1.11.04 C1.11.05 C1.11.06 C1.11.09 C1.11.11 C1.11.13 C1.11.16 C1.11.17 C1.11.18 +C1.11.13 C1.11.05 C1.11.07 C1.11.09 C1.11.12 C1.11.14 C1.11.17 C1.11.18 C1.11.19 +C1.11.14 C1.11.05 C1.11.07 C1.11.13 C1.11.18 C1.11.19 C1.12.08 C1.12.14 C1.12.19 +C1.11.15 C1.10.14 C1.10.18 C1.11.08 C1.11.10 C1.11.11 C1.11.16 C1.11.20 C1.11.21 +C1.11.16 C1.11.10 C1.11.11 C1.11.12 C1.11.15 C1.11.17 C1.11.20 C1.11.21 C1.11.22 +C1.11.17 C1.11.11 C1.11.12 C1.11.13 C1.11.16 C1.11.18 C1.11.21 C1.11.22 C1.11.23 +C1.11.18 C1.11.12 C1.11.13 C1.11.14 C1.11.17 C1.11.19 C1.11.22 C1.11.23 C1.11.24 +C1.11.19 C1.11.13 C1.11.14 C1.11.18 C1.11.23 C1.11.24 C1.12.14 C1.12.19 C1.12.24 +C1.11.20 C1.10.14 C1.10.18 C1.10.22 C1.10.25 C1.11.15 C1.11.16 C1.11.21 C1.11.25 +C1.11.21 C1.10.25 C1.11.15 C1.11.16 C1.11.17 C1.11.20 C1.11.22 C1.11.25 C1.11.26 +C1.11.22 C1.11.16 C1.11.17 C1.11.18 C1.11.21 C1.11.23 C1.11.25 C1.11.26 C1.11.27 +C1.11.23 C1.11.17 C1.11.18 C1.11.19 C1.11.22 C1.11.24 C1.11.26 C1.11.27 C1.11.28 +C1.11.24 C1.11.18 C1.11.19 C1.11.23 C1.11.27 C1.11.28 C1.12.19 C1.12.24 C1.12.28 +C1.11.25 C1.10.25 C1.10.29 C1.11.20 C1.11.21 C1.11.22 C1.11.26 C1.11.29 C1.11.30 +C1.11.26 C1.11.21 C1.11.22 C1.11.23 C1.11.25 C1.11.27 C1.11.29 C1.11.30 C1.11.31 +C1.11.27 C1.11.22 C1.11.23 C1.11.24 C1.11.26 C1.11.28 C1.11.30 C1.11.31 C1.11.32 +C1.11.28 C1.11.23 C1.11.24 C1.11.27 C1.11.31 C1.11.32 C1.12.24 C1.12.28 C1.12.32 +C1.11.29 C1.10.25 C1.10.29 C1.10.32 C1.11.25 C1.11.26 C1.11.30 C1.11.33 C1.11.34 +C1.11.30 C1.11.25 C1.11.26 C1.11.27 C1.11.29 C1.11.31 C1.11.33 C1.11.34 C1.11.35 +C1.11.31 C1.11.26 C1.11.27 C1.11.28 C1.11.30 C1.11.32 C1.11.34 C1.11.35 C1.11.36 +C1.11.32 C1.11.27 C1.11.28 C1.11.31 C1.11.35 C1.11.36 C1.12.28 C1.12.32 C1.12.36 +C1.11.33 C1.10.29 C1.10.32 C1.10.35 C1.10.38 C1.11.29 C1.11.30 C1.11.34 C1.11.37 +C1.11.34 C1.10.38 C1.11.29 C1.11.30 C1.11.31 C1.11.33 C1.11.35 C1.11.37 C1.11.38 +C1.11.35 C1.11.30 C1.11.31 C1.11.32 C1.11.34 C1.11.36 C1.11.37 C1.11.38 C1.11.39 +C1.11.36 C1.11.31 C1.11.32 C1.11.35 C1.11.38 C1.11.39 C1.12.32 C1.12.36 C1.12.39 +C1.11.37 C1.10.38 C1.10.41 C1.11.33 C1.11.34 C1.11.35 C1.11.38 C1.11.40 C1.11.41 +C1.11.38 C1.11.34 C1.11.35 C1.11.36 C1.11.37 C1.11.39 C1.11.40 C1.11.41 C1.11.42 +C1.11.39 C1.11.35 C1.11.36 C1.11.38 C1.11.41 C1.11.42 C1.12.36 C1.12.39 C1.12.42 +C1.11.40 C1.10.38 C1.10.41 C1.10.44 C1.11.37 C1.11.38 C1.11.41 C1.11.43 C1.11.44 +C1.11.41 C1.11.37 C1.11.38 C1.11.39 C1.11.40 C1.11.42 C1.11.43 C1.11.44 C1.11.45 +C1.11.42 C1.11.38 C1.11.39 C1.11.41 C1.11.44 C1.11.45 C1.12.39 C1.12.42 C1.12.45 +C1.11.43 C1.10.41 C1.10.44 C1.10.46 C1.10.48 C1.11.40 C1.11.41 C1.11.44 C1.11.46 +C1.11.44 C1.10.48 C1.11.40 C1.11.41 C1.11.42 C1.11.43 C1.11.45 C1.11.46 C1.11.47 +C1.11.45 C1.11.41 C1.11.42 C1.11.44 C1.11.46 C1.11.47 C1.12.42 C1.12.45 C1.12.47 +C1.11.46 C1.10.48 C1.10.50 C1.11.43 C1.11.44 C1.11.45 C1.11.47 C1.11.48 C1.11.49 +C1.11.47 C1.11.44 C1.11.45 C1.11.46 C1.11.48 C1.11.49 C1.12.45 C1.12.47 C1.12.49 +C1.11.48 C1.10.48 C1.10.50 C1.10.52 C1.11.46 C1.11.47 C1.11.49 C1.11.50 C1.11.51 C1.11.52 +C1.11.49 C1.11.46 C1.11.47 C1.11.48 C1.11.51 C1.11.52 C1.11.53 C1.12.47 C1.12.49 C1.12.53 +C1.11.50 C1.10.50 C1.10.52 C1.11.48 C1.11.51 C1.11.54 C1.11.55 +C1.11.51 C1.11.48 C1.11.49 C1.11.50 C1.11.52 C1.11.54 C1.11.55 C1.11.56 +C1.11.52 C1.11.48 C1.11.49 C1.11.51 C1.11.53 C1.11.55 C1.11.56 C1.11.57 +C1.11.53 C1.11.49 C1.11.52 C1.11.56 C1.11.57 C1.12.49 C1.12.53 C1.12.57 +C1.11.54 C1.10.52 C1.10.54 C1.10.56 C1.11.50 C1.11.51 C1.11.55 C1.11.58 +C1.11.55 C1.10.56 C1.11.50 C1.11.51 C1.11.52 C1.11.54 C1.11.56 C1.11.58 C1.11.59 +C1.11.56 C1.11.51 C1.11.52 C1.11.53 C1.11.55 C1.11.57 C1.11.58 C1.11.59 C1.11.60 +C1.11.57 C1.11.52 C1.11.53 C1.11.56 C1.11.59 C1.11.60 C1.12.53 C1.12.57 C1.12.60 +C1.11.58 C1.10.56 C1.10.58 C1.10.60 C1.11.54 C1.11.55 C1.11.56 C1.11.59 C1.11.61 +C1.11.59 C1.10.60 C1.11.55 C1.11.56 C1.11.57 C1.11.58 C1.11.60 C1.11.61 C1.11.62 +C1.11.60 C1.11.56 C1.11.57 C1.11.59 C1.11.61 C1.11.62 C1.12.57 C1.12.60 C1.12.62 +C1.11.61 C1.10.60 C1.10.62 C1.11.58 C1.11.59 C1.11.60 C1.11.62 +C1.11.62 C1.11.59 C1.11.60 C1.11.61 C1.12.60 C1.12.62 +C1.12.00 C1.11.00 C1.11.07 C1.12.06 C1.12.08 +C1.12.01 C1.12.02 C1.12.04 C1.12.10 +C1.12.02 C1.12.01 C1.12.03 C1.12.10 C1.12.11 +C1.12.03 C1.12.02 C1.12.05 C1.12.10 C1.12.11 +C1.12.04 C1.12.01 C1.12.10 C1.12.15 C1.13.02 C1.13.09 C1.13.13 +C1.12.05 C1.12.03 C1.12.07 C1.12.11 C1.12.12 +C1.12.06 C1.12.00 C1.12.08 C1.12.09 C1.12.12 C1.12.13 C1.12.14 +C1.12.07 C1.12.05 C1.12.09 C1.12.11 C1.12.12 +C1.12.08 C1.11.00 C1.11.07 C1.11.14 C1.12.00 C1.12.06 C1.12.13 C1.12.14 +C1.12.09 C1.12.06 C1.12.07 C1.12.12 C1.12.13 +C1.12.10 C1.12.01 C1.12.02 C1.12.03 C1.12.04 C1.12.11 C1.12.15 C1.12.16 C1.13.13 +C1.12.11 C1.12.02 C1.12.03 C1.12.05 C1.12.07 C1.12.10 C1.12.12 C1.12.15 C1.12.16 C1.12.17 +C1.12.12 C1.12.05 C1.12.06 C1.12.07 C1.12.09 C1.12.11 C1.12.13 C1.12.16 C1.12.17 C1.12.18 +C1.12.13 C1.12.06 C1.12.08 C1.12.09 C1.12.12 C1.12.14 C1.12.17 C1.12.18 C1.12.19 +C1.12.14 C1.11.07 C1.11.14 C1.11.19 C1.12.06 C1.12.08 C1.12.13 C1.12.18 C1.12.19 +C1.12.15 C1.12.04 C1.12.10 C1.12.11 C1.12.16 C1.12.20 C1.12.21 C1.13.13 C1.13.17 +C1.12.16 C1.12.10 C1.12.11 C1.12.12 C1.12.15 C1.12.17 C1.12.20 C1.12.21 C1.12.22 +C1.12.17 C1.12.11 C1.12.12 C1.12.13 C1.12.16 C1.12.18 C1.12.21 C1.12.22 C1.12.23 +C1.12.18 C1.12.12 C1.12.13 C1.12.14 C1.12.17 C1.12.19 C1.12.22 C1.12.23 C1.12.24 +C1.12.19 C1.11.14 C1.11.19 C1.11.24 C1.12.13 C1.12.14 C1.12.18 C1.12.23 C1.12.24 +C1.12.20 C1.12.15 C1.12.16 C1.12.21 C1.12.25 C1.13.13 C1.13.17 C1.13.21 C1.13.24 +C1.12.21 C1.12.15 C1.12.16 C1.12.17 C1.12.20 C1.12.22 C1.12.25 C1.12.26 C1.13.24 +C1.12.22 C1.12.16 C1.12.17 C1.12.18 C1.12.21 C1.12.23 C1.12.25 C1.12.26 C1.12.27 +C1.12.23 C1.12.17 C1.12.18 C1.12.19 C1.12.22 C1.12.24 C1.12.26 C1.12.27 C1.12.28 +C1.12.24 C1.11.19 C1.11.24 C1.11.28 C1.12.18 C1.12.19 C1.12.23 C1.12.27 C1.12.28 +C1.12.25 C1.12.20 C1.12.21 C1.12.22 C1.12.26 C1.12.29 C1.12.30 C1.13.24 C1.13.28 +C1.12.26 C1.12.21 C1.12.22 C1.12.23 C1.12.25 C1.12.27 C1.12.29 C1.12.30 C1.12.31 +C1.12.27 C1.12.22 C1.12.23 C1.12.24 C1.12.26 C1.12.28 C1.12.30 C1.12.31 C1.12.32 +C1.12.28 C1.11.24 C1.11.28 C1.11.32 C1.12.23 C1.12.24 C1.12.27 C1.12.31 C1.12.32 +C1.12.29 C1.12.25 C1.12.26 C1.12.30 C1.12.33 C1.12.34 C1.13.24 C1.13.28 C1.13.31 +C1.12.30 C1.12.25 C1.12.26 C1.12.27 C1.12.29 C1.12.31 C1.12.33 C1.12.34 C1.12.35 +C1.12.31 C1.12.26 C1.12.27 C1.12.28 C1.12.30 C1.12.32 C1.12.34 C1.12.35 C1.12.36 +C1.12.32 C1.11.28 C1.11.32 C1.11.36 C1.12.27 C1.12.28 C1.12.31 C1.12.35 C1.12.36 +C1.12.33 C1.12.29 C1.12.30 C1.12.34 C1.12.37 C1.13.28 C1.13.31 C1.13.34 C1.13.37 +C1.12.34 C1.12.29 C1.12.30 C1.12.31 C1.12.33 C1.12.35 C1.12.37 C1.12.38 C1.13.37 +C1.12.35 C1.12.30 C1.12.31 C1.12.32 C1.12.34 C1.12.36 C1.12.37 C1.12.38 C1.12.39 +C1.12.36 C1.11.32 C1.11.36 C1.11.39 C1.12.31 C1.12.32 C1.12.35 C1.12.38 C1.12.39 +C1.12.37 C1.12.33 C1.12.34 C1.12.35 C1.12.38 C1.12.40 C1.12.41 C1.13.37 C1.13.40 +C1.12.38 C1.12.34 C1.12.35 C1.12.36 C1.12.37 C1.12.39 C1.12.40 C1.12.41 C1.12.42 +C1.12.39 C1.11.36 C1.11.39 C1.11.42 C1.12.35 C1.12.36 C1.12.38 C1.12.41 C1.12.42 +C1.12.40 C1.12.37 C1.12.38 C1.12.41 C1.12.43 C1.12.44 C1.13.37 C1.13.40 C1.13.43 +C1.12.41 C1.12.37 C1.12.38 C1.12.39 C1.12.40 C1.12.42 C1.12.43 C1.12.44 C1.12.45 +C1.12.42 C1.11.39 C1.11.42 C1.11.45 C1.12.38 C1.12.39 C1.12.41 C1.12.44 C1.12.45 +C1.12.43 C1.12.40 C1.12.41 C1.12.44 C1.12.46 C1.13.40 C1.13.43 C1.13.45 C1.13.47 +C1.12.44 C1.12.40 C1.12.41 C1.12.42 C1.12.43 C1.12.45 C1.12.46 C1.12.47 C1.13.47 +C1.12.45 C1.11.42 C1.11.45 C1.11.47 C1.12.41 C1.12.42 C1.12.44 C1.12.46 C1.12.47 +C1.12.46 C1.12.43 C1.12.44 C1.12.45 C1.12.47 C1.12.48 C1.12.49 C1.13.47 C1.13.49 +C1.12.47 C1.11.45 C1.11.47 C1.11.49 C1.12.44 C1.12.45 C1.12.46 C1.12.48 C1.12.49 +C1.12.48 C1.12.46 C1.12.47 C1.12.49 C1.12.50 C1.12.51 C1.12.52 C1.13.47 C1.13.49 C1.13.51 +C1.12.49 C1.11.47 C1.11.49 C1.11.53 C1.12.46 C1.12.47 C1.12.48 C1.12.51 C1.12.52 C1.12.53 +C1.12.50 C1.12.48 C1.12.51 C1.12.54 C1.12.55 C1.13.49 C1.13.51 +C1.12.51 C1.12.48 C1.12.49 C1.12.50 C1.12.52 C1.12.54 C1.12.55 C1.12.56 +C1.12.52 C1.12.48 C1.12.49 C1.12.51 C1.12.53 C1.12.55 C1.12.56 C1.12.57 +C1.12.53 C1.11.49 C1.11.53 C1.11.57 C1.12.49 C1.12.52 C1.12.56 C1.12.57 +C1.12.54 C1.12.50 C1.12.51 C1.12.55 C1.12.58 C1.13.51 C1.13.53 C1.13.55 +C1.12.55 C1.12.50 C1.12.51 C1.12.52 C1.12.54 C1.12.56 C1.12.58 C1.12.59 C1.13.55 +C1.12.56 C1.12.51 C1.12.52 C1.12.53 C1.12.55 C1.12.57 C1.12.58 C1.12.59 C1.12.60 +C1.12.57 C1.11.53 C1.11.57 C1.11.60 C1.12.52 C1.12.53 C1.12.56 C1.12.59 C1.12.60 +C1.12.58 C1.12.54 C1.12.55 C1.12.56 C1.12.59 C1.12.61 C1.13.55 C1.13.57 C1.13.59 +C1.12.59 C1.12.55 C1.12.56 C1.12.57 C1.12.58 C1.12.60 C1.12.61 C1.12.62 C1.13.59 +C1.12.60 C1.11.57 C1.11.60 C1.11.62 C1.12.56 C1.12.57 C1.12.59 C1.12.61 C1.12.62 +C1.12.61 C1.12.58 C1.12.59 C1.12.60 C1.12.62 C1.13.59 C1.13.62 +C1.12.62 C1.11.60 C1.11.62 C1.12.59 C1.12.60 C1.12.61 C1.13.62 +C1.13.00 C1.13.02 C1.13.05 C1.13.09 +C1.13.01 C1.13.03 C1.13.06 C1.13.11 +C1.13.02 C1.12.04 C1.13.00 C1.13.09 C1.13.13 +C1.13.03 C1.13.01 C1.13.06 C1.13.07 C1.13.08 C1.13.11 +C1.13.04 C1.13.05 C1.13.07 C1.13.10 +C1.13.05 C1.13.00 C1.13.04 C1.13.09 C1.13.10 C1.13.14 +C1.13.06 C1.13.01 C1.13.03 C1.13.11 C1.13.12 C1.13.16 C1.14.06 +C1.13.07 C1.13.03 C1.13.04 C1.13.08 C1.13.10 +C1.13.08 C1.13.03 C1.13.07 C1.13.10 C1.13.11 C1.13.15 +C1.13.09 C1.12.04 C1.13.00 C1.13.02 C1.13.05 C1.13.10 C1.13.13 C1.13.14 C1.13.17 +C1.13.10 C1.13.04 C1.13.05 C1.13.07 C1.13.08 C1.13.09 C1.13.11 C1.13.14 C1.13.15 C1.13.18 +C1.13.11 C1.13.01 C1.13.03 C1.13.06 C1.13.08 C1.13.10 C1.13.12 C1.13.15 C1.13.16 C1.13.19 +C1.13.12 C1.13.06 C1.13.11 C1.13.16 C1.13.20 C1.14.06 C1.14.12 C1.14.17 +C1.13.13 C1.12.04 C1.12.10 C1.12.15 C1.12.20 C1.13.02 C1.13.09 C1.13.14 C1.13.17 +C1.13.14 C1.13.05 C1.13.09 C1.13.10 C1.13.13 C1.13.15 C1.13.17 C1.13.18 C1.13.21 +C1.13.15 C1.13.08 C1.13.10 C1.13.11 C1.13.14 C1.13.16 C1.13.18 C1.13.19 C1.13.22 +C1.13.16 C1.13.06 C1.13.11 C1.13.12 C1.13.15 C1.13.19 C1.13.20 C1.13.23 C1.14.17 +C1.13.17 C1.12.15 C1.12.20 C1.13.09 C1.13.13 C1.13.14 C1.13.18 C1.13.21 C1.13.24 +C1.13.18 C1.13.10 C1.13.14 C1.13.15 C1.13.17 C1.13.19 C1.13.21 C1.13.22 C1.13.25 +C1.13.19 C1.13.11 C1.13.15 C1.13.16 C1.13.18 C1.13.20 C1.13.22 C1.13.23 C1.13.26 +C1.13.20 C1.13.12 C1.13.16 C1.13.19 C1.13.23 C1.13.27 C1.14.17 C1.14.20 C1.14.25 +C1.13.21 C1.12.20 C1.13.14 C1.13.17 C1.13.18 C1.13.22 C1.13.24 C1.13.25 C1.13.28 +C1.13.22 C1.13.15 C1.13.18 C1.13.19 C1.13.21 C1.13.23 C1.13.25 C1.13.26 C1.13.29 +C1.13.23 C1.13.16 C1.13.19 C1.13.20 C1.13.22 C1.13.26 C1.13.27 C1.13.30 C1.14.25 +C1.13.24 C1.12.20 C1.12.21 C1.12.25 C1.12.29 C1.13.17 C1.13.21 C1.13.25 C1.13.28 +C1.13.25 C1.13.18 C1.13.21 C1.13.22 C1.13.24 C1.13.26 C1.13.28 C1.13.29 C1.13.31 +C1.13.26 C1.13.19 C1.13.22 C1.13.23 C1.13.25 C1.13.27 C1.13.29 C1.13.30 C1.13.32 +C1.13.27 C1.13.20 C1.13.23 C1.13.26 C1.13.30 C1.13.33 C1.14.25 C1.14.28 C1.14.32 +C1.13.28 C1.12.25 C1.12.29 C1.12.33 C1.13.21 C1.13.24 C1.13.25 C1.13.29 C1.13.31 +C1.13.29 C1.13.22 C1.13.25 C1.13.26 C1.13.28 C1.13.30 C1.13.31 C1.13.32 C1.13.34 +C1.13.30 C1.13.23 C1.13.26 C1.13.27 C1.13.29 C1.13.32 C1.13.33 C1.13.36 C1.14.32 +C1.13.31 C1.12.29 C1.12.33 C1.13.25 C1.13.28 C1.13.29 C1.13.32 C1.13.34 C1.13.37 +C1.13.32 C1.13.26 C1.13.29 C1.13.30 C1.13.31 C1.13.33 C1.13.34 C1.13.36 C1.13.38 +C1.13.33 C1.13.27 C1.13.30 C1.13.32 C1.13.35 C1.13.36 C1.13.39 C1.14.32 C1.14.35 +C1.13.34 C1.12.33 C1.13.29 C1.13.31 C1.13.32 C1.13.36 C1.13.37 C1.13.38 C1.13.40 +C1.13.35 C1.13.33 C1.13.36 C1.13.39 C1.13.42 C1.14.32 C1.14.35 C1.14.37 C1.14.40 +C1.13.36 C1.13.30 C1.13.32 C1.13.33 C1.13.34 C1.13.35 C1.13.38 C1.13.39 C1.13.41 +C1.13.37 C1.12.33 C1.12.34 C1.12.37 C1.12.40 C1.13.31 C1.13.34 C1.13.38 C1.13.40 +C1.13.38 C1.13.32 C1.13.34 C1.13.36 C1.13.37 C1.13.39 C1.13.40 C1.13.41 C1.13.43 +C1.13.39 C1.13.33 C1.13.35 C1.13.36 C1.13.38 C1.13.41 C1.13.42 C1.13.44 C1.14.40 +C1.13.40 C1.12.37 C1.12.40 C1.12.43 C1.13.34 C1.13.37 C1.13.38 C1.13.41 C1.13.43 +C1.13.41 C1.13.36 C1.13.38 C1.13.39 C1.13.40 C1.13.42 C1.13.43 C1.13.44 C1.13.45 +C1.13.42 C1.13.35 C1.13.39 C1.13.41 C1.13.44 C1.13.46 C1.14.40 C1.14.42 C1.14.44 +C1.13.43 C1.12.40 C1.12.43 C1.13.38 C1.13.40 C1.13.41 C1.13.44 C1.13.45 C1.13.47 +C1.13.44 C1.13.39 C1.13.41 C1.13.42 C1.13.43 C1.13.45 C1.13.46 C1.13.48 C1.14.44 +C1.13.45 C1.12.43 C1.13.41 C1.13.43 C1.13.44 C1.13.46 C1.13.47 C1.13.48 C1.13.49 +C1.13.46 C1.13.42 C1.13.44 C1.13.45 C1.13.48 C1.13.50 C1.14.44 C1.14.46 C1.14.48 +C1.13.47 C1.12.43 C1.12.44 C1.12.46 C1.12.48 C1.13.43 C1.13.45 C1.13.48 C1.13.49 +C1.13.48 C1.13.44 C1.13.45 C1.13.46 C1.13.47 C1.13.49 C1.13.50 C1.13.51 C1.14.48 +C1.13.49 C1.12.46 C1.12.48 C1.12.50 C1.13.45 C1.13.47 C1.13.48 C1.13.50 C1.13.51 +C1.13.50 C1.13.46 C1.13.48 C1.13.49 C1.13.51 C1.13.52 C1.14.48 C1.14.49 C1.14.51 +C1.13.51 C1.12.48 C1.12.50 C1.12.54 C1.13.48 C1.13.49 C1.13.50 C1.13.52 C1.13.53 C1.13.55 C1.14.51 +C1.13.52 C1.13.50 C1.13.51 C1.13.53 C1.13.54 C1.13.56 C1.14.51 +C1.13.53 C1.12.54 C1.13.51 C1.13.52 C1.13.54 C1.13.55 C1.13.56 C1.13.57 +C1.13.54 C1.13.52 C1.13.53 C1.13.56 C1.13.58 C1.14.51 C1.14.55 C1.14.57 +C1.13.55 C1.12.54 C1.12.55 C1.12.58 C1.13.51 C1.13.53 C1.13.56 C1.13.57 C1.13.59 +C1.13.56 C1.13.52 C1.13.53 C1.13.54 C1.13.55 C1.13.57 C1.13.58 C1.13.60 C1.14.57 +C1.13.57 C1.12.58 C1.13.53 C1.13.55 C1.13.56 C1.13.58 C1.13.59 C1.13.60 +C1.13.58 C1.13.54 C1.13.56 C1.13.57 C1.13.60 C1.13.61 C1.14.57 C1.14.59 C1.14.61 +C1.13.59 C1.12.58 C1.12.59 C1.12.61 C1.13.55 C1.13.57 C1.13.60 C1.13.62 +C1.13.60 C1.13.56 C1.13.57 C1.13.58 C1.13.59 C1.13.61 C1.13.62 C1.14.61 +C1.13.61 C1.13.58 C1.13.60 C1.13.62 C1.14.61 C1.14.62 +C1.13.62 C1.12.61 C1.12.62 C1.13.59 C1.13.60 C1.13.61 +C1.14.00 C1.14.02 C1.14.03 C1.14.11 +C1.14.01 C1.14.04 C1.14.06 C1.14.08 C1.14.12 +C1.14.02 C1.14.00 C1.14.05 C1.14.11 C1.14.13 +C1.14.03 C1.14.00 C1.14.07 C1.14.09 C1.14.11 +C1.14.04 C1.14.01 C1.14.08 C1.14.10 +C1.14.05 C1.14.02 C1.14.11 C1.14.13 C1.15.00 C1.15.08 +C1.14.06 C1.13.06 C1.13.12 C1.14.01 C1.14.12 C1.14.17 +C1.14.07 C1.14.03 C1.14.09 C1.14.10 C1.14.14 +C1.14.08 C1.14.01 C1.14.04 C1.14.10 C1.14.12 C1.14.15 +C1.14.09 C1.14.03 C1.14.07 C1.14.11 C1.14.14 C1.14.16 +C1.14.10 C1.14.04 C1.14.07 C1.14.08 C1.14.12 C1.14.14 C1.14.15 C1.14.18 +C1.14.11 C1.14.00 C1.14.02 C1.14.03 C1.14.05 C1.14.09 C1.14.13 C1.14.14 C1.14.16 C1.14.19 +C1.14.12 C1.13.12 C1.14.01 C1.14.06 C1.14.08 C1.14.10 C1.14.15 C1.14.17 C1.14.20 +C1.14.13 C1.14.02 C1.14.05 C1.14.11 C1.14.16 C1.14.19 C1.14.21 C1.15.07 C1.15.08 C1.15.18 +C1.14.14 C1.14.07 C1.14.09 C1.14.10 C1.14.11 C1.14.15 C1.14.16 C1.14.18 C1.14.22 +C1.14.15 C1.14.08 C1.14.10 C1.14.12 C1.14.14 C1.14.17 C1.14.18 C1.14.20 C1.14.23 +C1.14.16 C1.14.09 C1.14.11 C1.14.13 C1.14.14 C1.14.18 C1.14.19 C1.14.22 C1.14.24 +C1.14.17 C1.13.12 C1.13.16 C1.13.20 C1.14.06 C1.14.12 C1.14.15 C1.14.20 C1.14.25 +C1.14.18 C1.14.10 C1.14.14 C1.14.15 C1.14.16 C1.14.20 C1.14.22 C1.14.23 C1.14.27 +C1.14.19 C1.14.11 C1.14.13 C1.14.16 C1.14.21 C1.14.22 C1.14.24 C1.14.26 C1.15.18 +C1.14.20 C1.13.20 C1.14.12 C1.14.15 C1.14.17 C1.14.18 C1.14.23 C1.14.25 C1.14.28 +C1.14.21 C1.14.13 C1.14.19 C1.14.24 C1.14.26 C1.15.18 C1.15.19 C1.15.24 C1.15.29 +C1.14.22 C1.14.14 C1.14.16 C1.14.18 C1.14.19 C1.14.23 C1.14.24 C1.14.27 C1.14.29 +C1.14.23 C1.14.15 C1.14.18 C1.14.20 C1.14.22 C1.14.25 C1.14.27 C1.14.28 C1.14.30 +C1.14.24 C1.14.16 C1.14.19 C1.14.21 C1.14.22 C1.14.26 C1.14.27 C1.14.29 C1.14.31 +C1.14.25 C1.13.20 C1.13.23 C1.13.27 C1.14.17 C1.14.20 C1.14.23 C1.14.28 C1.14.32 +C1.14.26 C1.14.19 C1.14.21 C1.14.24 C1.14.29 C1.14.31 C1.14.33 C1.15.24 C1.15.29 +C1.14.27 C1.14.18 C1.14.22 C1.14.23 C1.14.24 C1.14.28 C1.14.29 C1.14.30 C1.14.34 +C1.14.28 C1.13.27 C1.14.20 C1.14.23 C1.14.25 C1.14.27 C1.14.30 C1.14.32 C1.14.35 +C1.14.29 C1.14.22 C1.14.24 C1.14.26 C1.14.27 C1.14.30 C1.14.31 C1.14.34 C1.14.36 +C1.14.30 C1.14.23 C1.14.27 C1.14.28 C1.14.29 C1.14.32 C1.14.34 C1.14.35 C1.14.37 +C1.14.31 C1.14.24 C1.14.26 C1.14.29 C1.14.33 C1.14.34 C1.14.36 C1.14.38 C1.15.29 +C1.14.32 C1.13.27 C1.13.30 C1.13.33 C1.13.35 C1.14.25 C1.14.28 C1.14.30 C1.14.35 +C1.14.33 C1.14.26 C1.14.31 C1.14.36 C1.14.38 C1.15.29 C1.15.30 C1.15.34 C1.15.38 +C1.14.34 C1.14.27 C1.14.29 C1.14.30 C1.14.31 C1.14.35 C1.14.36 C1.14.37 C1.14.39 +C1.14.35 C1.13.33 C1.13.35 C1.14.28 C1.14.30 C1.14.32 C1.14.34 C1.14.37 C1.14.40 +C1.14.36 C1.14.29 C1.14.31 C1.14.33 C1.14.34 C1.14.37 C1.14.38 C1.14.39 C1.14.41 +C1.14.37 C1.13.35 C1.14.30 C1.14.34 C1.14.35 C1.14.36 C1.14.39 C1.14.40 C1.14.42 +C1.14.38 C1.14.31 C1.14.33 C1.14.36 C1.14.39 C1.14.41 C1.15.34 C1.15.38 C1.15.42 +C1.14.39 C1.14.34 C1.14.36 C1.14.37 C1.14.38 C1.14.40 C1.14.41 C1.14.42 C1.14.43 +C1.14.40 C1.13.35 C1.13.39 C1.13.42 C1.14.35 C1.14.37 C1.14.39 C1.14.42 C1.14.44 +C1.14.41 C1.14.36 C1.14.38 C1.14.39 C1.14.42 C1.14.43 C1.14.45 C1.15.38 C1.15.42 +C1.14.42 C1.13.42 C1.14.37 C1.14.39 C1.14.40 C1.14.41 C1.14.43 C1.14.44 C1.14.46 +C1.14.43 C1.14.39 C1.14.41 C1.14.42 C1.14.44 C1.14.45 C1.14.46 C1.14.47 C1.15.42 +C1.14.44 C1.13.42 C1.13.44 C1.13.46 C1.14.40 C1.14.42 C1.14.43 C1.14.46 C1.14.48 +C1.14.45 C1.14.41 C1.14.43 C1.14.46 C1.14.47 C1.15.42 C1.15.43 C1.15.46 C1.15.49 +C1.14.46 C1.13.46 C1.14.42 C1.14.43 C1.14.44 C1.14.45 C1.14.47 C1.14.48 C1.14.49 +C1.14.47 C1.14.43 C1.14.45 C1.14.46 C1.14.48 C1.14.49 C1.14.50 C1.15.46 C1.15.49 +C1.14.48 C1.13.46 C1.13.48 C1.13.50 C1.14.44 C1.14.46 C1.14.47 C1.14.49 C1.14.51 +C1.14.49 C1.13.50 C1.14.46 C1.14.47 C1.14.48 C1.14.50 C1.14.51 C1.14.52 C1.15.49 +C1.14.50 C1.14.47 C1.14.49 C1.14.51 C1.14.52 C1.14.53 C1.14.54 C1.15.49 C1.15.50 C1.15.52 +C1.14.51 C1.13.50 C1.13.51 C1.13.52 C1.13.54 C1.14.48 C1.14.49 C1.14.50 C1.14.52 C1.14.55 C1.14.57 +C1.14.52 C1.14.49 C1.14.50 C1.14.51 C1.14.53 C1.14.55 C1.14.56 +C1.14.53 C1.14.50 C1.14.52 C1.14.54 C1.14.55 C1.14.56 C1.14.58 C1.15.52 +C1.14.54 C1.14.50 C1.14.53 C1.14.56 C1.14.58 C1.15.52 C1.15.54 C1.15.57 +C1.14.55 C1.13.54 C1.14.51 C1.14.52 C1.14.53 C1.14.56 C1.14.57 C1.14.59 +C1.14.56 C1.14.52 C1.14.53 C1.14.54 C1.14.55 C1.14.57 C1.14.58 C1.14.59 C1.14.60 +C1.14.57 C1.13.54 C1.13.56 C1.13.58 C1.14.51 C1.14.55 C1.14.56 C1.14.59 C1.14.61 +C1.14.58 C1.14.53 C1.14.54 C1.14.56 C1.14.59 C1.14.60 C1.15.54 C1.15.57 C1.15.60 +C1.14.59 C1.13.58 C1.14.55 C1.14.56 C1.14.57 C1.14.58 C1.14.60 C1.14.61 C1.14.62 +C1.14.60 C1.14.56 C1.14.58 C1.14.59 C1.14.61 C1.14.62 C1.15.57 C1.15.60 +C1.14.61 C1.13.58 C1.13.60 C1.13.61 C1.14.57 C1.14.59 C1.14.60 C1.14.62 +C1.14.62 C1.13.61 C1.14.59 C1.14.60 C1.14.61 C1.15.60 +C1.15.00 C1.14.05 C1.15.07 C1.15.08 +C1.15.01 C1.15.02 C1.15.04 C1.15.06 C1.15.10 C1.15.11 +C1.15.02 C1.00.01 C1.00.11 C1.15.01 C1.15.11 C1.15.12 +C1.15.03 C1.15.07 C1.15.13 C1.15.14 +C1.15.04 C1.15.01 C1.15.05 C1.15.06 C1.15.09 +C1.15.05 C1.15.04 C1.15.09 C1.15.14 C1.15.15 +C1.15.06 C1.15.01 C1.15.04 C1.15.09 C1.15.10 C1.15.15 C1.15.16 +C1.15.07 C1.14.13 C1.15.00 C1.15.03 C1.15.08 C1.15.13 C1.15.18 C1.15.19 +C1.15.08 C1.14.05 C1.14.13 C1.15.00 C1.15.07 C1.15.18 +C1.15.09 C1.15.04 C1.15.05 C1.15.06 C1.15.15 C1.15.16 +C1.15.10 C1.15.01 C1.15.06 C1.15.11 C1.15.16 C1.15.17 +C1.15.11 C1.15.01 C1.15.02 C1.15.10 C1.15.12 C1.15.16 C1.15.17 +C1.15.12 C1.00.01 C1.00.11 C1.00.16 C1.15.02 C1.15.11 C1.15.17 +C1.15.13 C1.15.03 C1.15.07 C1.15.14 C1.15.18 C1.15.19 C1.15.20 +C1.15.14 C1.15.03 C1.15.05 C1.15.13 C1.15.15 C1.15.19 C1.15.20 C1.15.21 +C1.15.15 C1.15.05 C1.15.06 C1.15.09 C1.15.14 C1.15.16 C1.15.20 C1.15.21 C1.15.22 +C1.15.16 C1.15.06 C1.15.09 C1.15.10 C1.15.11 C1.15.15 C1.15.17 C1.15.21 C1.15.22 C1.15.23 +C1.15.17 C1.00.11 C1.00.16 C1.00.22 C1.15.10 C1.15.11 C1.15.12 C1.15.16 C1.15.22 C1.15.23 +C1.15.18 C1.14.13 C1.14.19 C1.14.21 C1.15.07 C1.15.08 C1.15.13 C1.15.19 C1.15.24 +C1.15.19 C1.14.21 C1.15.07 C1.15.13 C1.15.14 C1.15.18 C1.15.20 C1.15.24 C1.15.25 +C1.15.20 C1.15.13 C1.15.14 C1.15.15 C1.15.19 C1.15.21 C1.15.24 C1.15.25 C1.15.26 +C1.15.21 C1.15.14 C1.15.15 C1.15.16 C1.15.20 C1.15.22 C1.15.25 C1.15.26 C1.15.27 +C1.15.22 C1.15.15 C1.15.16 C1.15.17 C1.15.21 C1.15.23 C1.15.26 C1.15.27 C1.15.28 +C1.15.23 C1.00.16 C1.00.22 C1.00.27 C1.15.16 C1.15.17 C1.15.22 C1.15.27 C1.15.28 +C1.15.24 C1.14.21 C1.14.26 C1.15.18 C1.15.19 C1.15.20 C1.15.25 C1.15.29 C1.15.30 +C1.15.25 C1.15.19 C1.15.20 C1.15.21 C1.15.24 C1.15.26 C1.15.29 C1.15.30 C1.15.31 +C1.15.26 C1.15.20 C1.15.21 C1.15.22 C1.15.25 C1.15.27 C1.15.30 C1.15.31 C1.15.32 +C1.15.27 C1.15.21 C1.15.22 C1.15.23 C1.15.26 C1.15.28 C1.15.31 C1.15.32 C1.15.33 +C1.15.28 C1.00.22 C1.00.27 C1.00.32 C1.15.22 C1.15.23 C1.15.27 C1.15.32 C1.15.33 +C1.15.29 C1.14.21 C1.14.26 C1.14.31 C1.14.33 C1.15.24 C1.15.25 C1.15.30 C1.15.34 +C1.15.30 C1.14.33 C1.15.24 C1.15.25 C1.15.26 C1.15.29 C1.15.31 C1.15.34 C1.15.35 +C1.15.31 C1.15.25 C1.15.26 C1.15.27 C1.15.30 C1.15.32 C1.15.34 C1.15.35 C1.15.36 +C1.15.32 C1.15.26 C1.15.27 C1.15.28 C1.15.31 C1.15.33 C1.15.35 C1.15.36 C1.15.37 +C1.15.33 C1.00.27 C1.00.32 C1.00.36 C1.15.27 C1.15.28 C1.15.32 C1.15.36 C1.15.37 +C1.15.34 C1.14.33 C1.14.38 C1.15.29 C1.15.30 C1.15.31 C1.15.35 C1.15.38 C1.15.39 +C1.15.35 C1.15.30 C1.15.31 C1.15.32 C1.15.34 C1.15.36 C1.15.38 C1.15.39 C1.15.40 +C1.15.36 C1.15.31 C1.15.32 C1.15.33 C1.15.35 C1.15.37 C1.15.39 C1.15.40 C1.15.41 +C1.15.37 C1.00.32 C1.00.36 C1.00.40 C1.15.32 C1.15.33 C1.15.36 C1.15.40 C1.15.41 +C1.15.38 C1.14.33 C1.14.38 C1.14.41 C1.15.34 C1.15.35 C1.15.39 C1.15.42 C1.15.43 +C1.15.39 C1.15.34 C1.15.35 C1.15.36 C1.15.38 C1.15.40 C1.15.42 C1.15.43 C1.15.44 +C1.15.40 C1.15.35 C1.15.36 C1.15.37 C1.15.39 C1.15.41 C1.15.43 C1.15.44 C1.15.45 +C1.15.41 C1.00.36 C1.00.40 C1.00.44 C1.15.36 C1.15.37 C1.15.40 C1.15.44 C1.15.45 +C1.15.42 C1.14.38 C1.14.41 C1.14.43 C1.14.45 C1.15.38 C1.15.39 C1.15.43 C1.15.46 +C1.15.43 C1.14.45 C1.15.38 C1.15.39 C1.15.40 C1.15.42 C1.15.44 C1.15.46 C1.15.47 +C1.15.44 C1.15.39 C1.15.40 C1.15.41 C1.15.43 C1.15.45 C1.15.46 C1.15.47 C1.15.48 +C1.15.45 C1.00.40 C1.00.44 C1.00.47 C1.15.40 C1.15.41 C1.15.44 C1.15.47 C1.15.48 +C1.15.46 C1.14.45 C1.14.47 C1.15.42 C1.15.43 C1.15.44 C1.15.47 C1.15.49 C1.15.50 +C1.15.47 C1.15.43 C1.15.44 C1.15.45 C1.15.46 C1.15.48 C1.15.49 C1.15.50 C1.15.51 +C1.15.48 C1.00.44 C1.00.47 C1.00.50 C1.15.44 C1.15.45 C1.15.47 C1.15.50 C1.15.51 +C1.15.49 C1.14.45 C1.14.47 C1.14.49 C1.14.50 C1.15.46 C1.15.47 C1.15.50 C1.15.52 +C1.15.50 C1.14.50 C1.15.46 C1.15.47 C1.15.48 C1.15.49 C1.15.51 C1.15.52 C1.15.53 +C1.15.51 C1.00.47 C1.00.50 C1.00.52 C1.15.47 C1.15.48 C1.15.50 C1.15.52 C1.15.53 +C1.15.52 C1.14.50 C1.14.53 C1.14.54 C1.15.49 C1.15.50 C1.15.51 C1.15.53 C1.15.54 C1.15.55 +C1.15.53 C1.00.50 C1.00.52 C1.00.56 C1.15.50 C1.15.51 C1.15.52 C1.15.54 C1.15.55 C1.15.56 +C1.15.54 C1.14.54 C1.14.58 C1.15.52 C1.15.53 C1.15.55 C1.15.57 C1.15.58 +C1.15.55 C1.15.52 C1.15.53 C1.15.54 C1.15.56 C1.15.57 C1.15.58 C1.15.59 +C1.15.56 C1.00.52 C1.00.56 C1.00.59 C1.15.53 C1.15.55 C1.15.58 C1.15.59 +C1.15.57 C1.14.54 C1.14.58 C1.14.60 C1.15.54 C1.15.55 C1.15.58 C1.15.60 C1.15.61 +C1.15.58 C1.15.54 C1.15.55 C1.15.56 C1.15.57 C1.15.59 C1.15.60 C1.15.61 C1.15.62 +C1.15.59 C1.00.56 C1.00.59 C1.00.62 C1.15.55 C1.15.56 C1.15.58 C1.15.61 C1.15.62 +C1.15.60 C1.14.58 C1.14.60 C1.14.62 C1.15.57 C1.15.58 C1.15.61 +C1.15.61 C1.15.57 C1.15.58 C1.15.59 C1.15.60 C1.15.62 +C1.15.62 C1.00.59 C1.00.62 C1.15.58 C1.15.59 C1.15.61 +C2.00.00 C2.00.01 C2.00.05 C2.00.06 +C2.00.01 C2.00.00 C2.00.02 C2.00.05 C2.00.06 +C2.00.02 C2.00.01 C2.00.06 C2.15.01 C2.15.06 +C2.00.03 C2.00.04 C2.00.07 C2.00.08 C2.01.04 +C2.00.04 C2.00.03 C2.00.05 C2.00.07 C2.00.08 C2.00.09 +C2.00.05 C2.00.00 C2.00.01 C2.00.04 C2.00.06 C2.00.08 C2.00.09 C2.00.10 +C2.00.06 C2.00.00 C2.00.01 C2.00.02 C2.00.05 C2.00.09 C2.00.10 C2.15.01 C2.15.06 C2.15.10 +C2.00.07 C2.00.03 C2.00.04 C2.00.08 C2.00.11 C2.01.04 C2.01.07 C2.01.10 +C2.00.08 C2.00.03 C2.00.04 C2.00.05 C2.00.07 C2.00.09 C2.00.11 C2.00.12 C2.01.10 +C2.00.09 C2.00.04 C2.00.05 C2.00.06 C2.00.08 C2.00.10 C2.00.11 C2.00.12 C2.00.13 +C2.00.10 C2.00.05 C2.00.06 C2.00.09 C2.00.12 C2.00.13 C2.15.06 C2.15.10 C2.15.13 +C2.00.11 C2.00.07 C2.00.08 C2.00.09 C2.00.12 C2.00.14 C2.00.15 C2.01.10 C2.01.13 +C2.00.12 C2.00.08 C2.00.09 C2.00.10 C2.00.11 C2.00.13 C2.00.14 C2.00.15 C2.00.16 +C2.00.13 C2.00.09 C2.00.10 C2.00.12 C2.00.15 C2.00.16 C2.15.10 C2.15.13 C2.15.16 +C2.00.14 C2.00.11 C2.00.12 C2.00.15 C2.00.17 C2.00.18 C2.01.10 C2.01.13 C2.01.16 +C2.00.15 C2.00.11 C2.00.12 C2.00.13 C2.00.14 C2.00.16 C2.00.17 C2.00.18 C2.00.19 +C2.00.16 C2.00.12 C2.00.13 C2.00.15 C2.00.18 C2.00.19 C2.15.13 C2.15.16 C2.15.19 +C2.00.17 C2.00.14 C2.00.15 C2.00.18 C2.00.20 C2.01.13 C2.01.16 C2.01.18 C2.01.20 +C2.00.18 C2.00.14 C2.00.15 C2.00.16 C2.00.17 C2.00.19 C2.00.20 C2.00.21 C2.01.20 +C2.00.19 C2.00.15 C2.00.16 C2.00.18 C2.00.20 C2.00.21 C2.15.16 C2.15.19 C2.15.21 +C2.00.20 C2.00.17 C2.00.18 C2.00.19 C2.00.21 C2.00.22 C2.00.23 C2.01.20 C2.01.22 +C2.00.21 C2.00.18 C2.00.19 C2.00.20 C2.00.22 C2.00.23 C2.15.19 C2.15.21 C2.15.23 +C2.00.22 C2.00.20 C2.00.21 C2.00.23 C2.00.24 C2.00.25 C2.01.20 C2.01.22 C2.01.24 +C2.00.23 C2.00.20 C2.00.21 C2.00.22 C2.00.24 C2.00.25 C2.15.21 C2.15.23 C2.15.25 +C2.00.24 C2.00.22 C2.00.23 C2.00.25 C2.00.26 C2.01.22 C2.01.24 C2.01.25 C2.01.26 +C2.00.25 C2.00.22 C2.00.23 C2.00.24 C2.00.26 C2.01.26 C2.15.23 C2.15.25 C2.15.26 +C2.00.26 C2.00.24 C2.00.25 C2.00.27 C2.01.26 C2.01.28 C2.15.25 C2.15.26 C2.15.27 +C2.00.27 C2.00.26 C2.00.28 C2.00.29 C2.01.26 C2.01.28 C2.01.30 C2.15.26 C2.15.27 C2.15.29 +C2.00.28 C2.00.27 C2.00.29 C2.01.28 C2.01.30 C2.01.31 +C2.00.29 C2.00.27 C2.00.28 C2.15.27 C2.15.29 +C2.01.00 C2.01.05 C2.02.00 C2.02.06 +C2.01.01 C2.01.03 C2.01.05 +C2.01.02 C2.01.04 C2.01.06 C2.01.07 +C2.01.03 C2.01.01 C2.01.05 C2.01.06 C2.01.09 +C2.01.04 C2.00.03 C2.00.07 C2.01.02 C2.01.06 C2.01.07 C2.01.10 +C2.01.05 C2.01.00 C2.01.01 C2.01.03 C2.01.06 C2.01.08 C2.01.09 C2.01.12 C2.02.06 +C2.01.06 C2.01.02 C2.01.03 C2.01.04 C2.01.05 C2.01.07 C2.01.09 C2.01.11 +C2.01.07 C2.00.07 C2.01.02 C2.01.04 C2.01.06 C2.01.09 C2.01.10 C2.01.11 C2.01.13 +C2.01.08 C2.01.05 C2.01.09 C2.01.12 C2.01.14 C2.02.06 C2.02.09 C2.02.11 +C2.01.09 C2.01.03 C2.01.05 C2.01.06 C2.01.07 C2.01.08 C2.01.11 C2.01.12 C2.01.15 +C2.01.10 C2.00.07 C2.00.08 C2.00.11 C2.00.14 C2.01.04 C2.01.07 C2.01.11 C2.01.13 +C2.01.11 C2.01.06 C2.01.07 C2.01.09 C2.01.10 C2.01.12 C2.01.13 C2.01.15 C2.01.16 +C2.01.12 C2.01.05 C2.01.08 C2.01.09 C2.01.11 C2.01.14 C2.01.15 C2.01.17 C2.02.11 +C2.01.13 C2.00.11 C2.00.14 C2.00.17 C2.01.07 C2.01.10 C2.01.11 C2.01.15 C2.01.16 +C2.01.14 C2.01.08 C2.01.12 C2.01.15 C2.01.17 C2.01.19 C2.02.11 C2.02.14 C2.02.16 +C2.01.15 C2.01.09 C2.01.11 C2.01.12 C2.01.13 C2.01.14 C2.01.16 C2.01.17 C2.01.18 +C2.01.16 C2.00.14 C2.00.17 C2.01.11 C2.01.13 C2.01.15 C2.01.17 C2.01.18 C2.01.20 +C2.01.17 C2.01.12 C2.01.14 C2.01.15 C2.01.16 C2.01.18 C2.01.19 C2.01.21 C2.02.16 +C2.01.18 C2.00.17 C2.01.15 C2.01.16 C2.01.17 C2.01.19 C2.01.20 C2.01.21 C2.01.22 +C2.01.19 C2.01.14 C2.01.17 C2.01.18 C2.01.21 C2.01.23 C2.02.16 C2.02.18 C2.02.20 +C2.01.20 C2.00.17 C2.00.18 C2.00.20 C2.00.22 C2.01.16 C2.01.18 C2.01.21 C2.01.22 +C2.01.21 C2.01.17 C2.01.18 C2.01.19 C2.01.20 C2.01.22 C2.01.23 C2.01.24 C2.02.20 +C2.01.22 C2.00.20 C2.00.22 C2.00.24 C2.01.18 C2.01.20 C2.01.21 C2.01.23 C2.01.24 +C2.01.23 C2.01.19 C2.01.21 C2.01.22 C2.01.24 C2.01.25 C2.02.20 C2.02.22 C2.02.24 +C2.01.24 C2.00.22 C2.00.24 C2.01.21 C2.01.22 C2.01.23 C2.01.25 C2.01.26 C2.02.24 +C2.01.25 C2.00.24 C2.01.23 C2.01.24 C2.01.26 C2.01.27 C2.01.28 C2.02.24 C2.02.25 +C2.01.26 C2.00.24 C2.00.25 C2.00.26 C2.00.27 C2.01.24 C2.01.25 C2.01.27 C2.01.28 +C2.01.27 C2.01.25 C2.01.26 C2.01.28 C2.01.29 C2.02.24 C2.02.25 C2.02.26 C2.02.27 +C2.01.28 C2.00.26 C2.00.27 C2.00.28 C2.01.25 C2.01.26 C2.01.27 C2.01.29 C2.01.30 C2.02.27 +C2.01.29 C2.01.27 C2.01.28 C2.01.30 C2.01.31 C2.02.27 C2.02.29 +C2.01.30 C2.00.27 C2.00.28 C2.01.28 C2.01.29 C2.01.31 C2.02.29 +C2.01.31 C2.00.28 C2.01.29 C2.01.30 C2.02.29 C2.02.30 +C2.02.00 C2.01.00 C2.02.03 C2.02.06 +C2.02.01 C2.02.02 C2.02.07 C2.02.08 +C2.02.02 C2.02.01 C2.02.04 C2.02.07 C2.02.08 C2.03.01 +C2.02.03 C2.02.00 C2.02.05 C2.02.06 C2.02.09 +C2.02.04 C2.02.02 C2.02.08 C2.03.01 C2.03.06 +C2.02.05 C2.02.03 C2.02.07 C2.02.09 C2.02.10 +C2.02.06 C2.01.00 C2.01.05 C2.01.08 C2.02.00 C2.02.03 C2.02.09 C2.02.11 +C2.02.07 C2.02.01 C2.02.02 C2.02.05 C2.02.08 C2.02.09 C2.02.10 C2.02.12 +C2.02.08 C2.02.01 C2.02.02 C2.02.04 C2.02.07 C2.02.10 C2.02.12 C2.02.13 C2.03.01 C2.03.06 +C2.02.09 C2.01.08 C2.02.03 C2.02.05 C2.02.06 C2.02.07 C2.02.10 C2.02.11 C2.02.14 +C2.02.10 C2.02.05 C2.02.07 C2.02.08 C2.02.09 C2.02.11 C2.02.12 C2.02.14 C2.02.15 +C2.02.11 C2.01.08 C2.01.12 C2.01.14 C2.02.06 C2.02.09 C2.02.10 C2.02.14 C2.02.16 +C2.02.12 C2.02.07 C2.02.08 C2.02.10 C2.02.13 C2.02.14 C2.02.15 C2.02.17 C2.03.06 +C2.02.13 C2.02.08 C2.02.12 C2.02.15 C2.02.17 C2.03.06 C2.03.07 C2.03.11 C2.03.15 +C2.02.14 C2.01.14 C2.02.09 C2.02.10 C2.02.11 C2.02.12 C2.02.15 C2.02.16 C2.02.18 +C2.02.15 C2.02.10 C2.02.12 C2.02.13 C2.02.14 C2.02.16 C2.02.17 C2.02.18 C2.02.19 +C2.02.16 C2.01.14 C2.01.17 C2.01.19 C2.02.11 C2.02.14 C2.02.15 C2.02.18 C2.02.20 +C2.02.17 C2.02.12 C2.02.13 C2.02.15 C2.02.18 C2.02.19 C2.02.21 C2.03.11 C2.03.15 +C2.02.18 C2.01.19 C2.02.14 C2.02.15 C2.02.16 C2.02.17 C2.02.19 C2.02.20 C2.02.22 +C2.02.19 C2.02.15 C2.02.17 C2.02.18 C2.02.20 C2.02.21 C2.02.22 C2.02.23 C2.03.15 +C2.02.20 C2.01.19 C2.01.21 C2.01.23 C2.02.16 C2.02.18 C2.02.19 C2.02.22 C2.02.24 +C2.02.21 C2.02.17 C2.02.19 C2.02.22 C2.02.23 C2.03.15 C2.03.16 C2.03.19 C2.03.22 +C2.02.22 C2.01.23 C2.02.18 C2.02.19 C2.02.20 C2.02.21 C2.02.23 C2.02.24 C2.02.25 +C2.02.23 C2.02.19 C2.02.21 C2.02.22 C2.02.24 C2.02.25 C2.02.26 C2.03.19 C2.03.22 +C2.02.24 C2.01.23 C2.01.24 C2.01.25 C2.01.27 C2.02.20 C2.02.22 C2.02.23 C2.02.25 +C2.02.25 C2.01.25 C2.01.27 C2.02.22 C2.02.23 C2.02.24 C2.02.26 C2.02.27 C2.03.22 +C2.02.26 C2.01.27 C2.02.23 C2.02.25 C2.02.27 C2.02.28 C2.03.22 C2.03.23 C2.03.25 +C2.02.27 C2.01.27 C2.01.28 C2.01.29 C2.02.25 C2.02.26 C2.02.28 C2.02.29 C2.02.30 C2.03.25 +C2.02.28 C2.02.26 C2.02.27 C2.02.29 C2.02.30 C2.02.31 C2.03.25 C2.03.26 C2.03.27 C2.03.29 +C2.02.29 C2.01.29 C2.01.30 C2.01.31 C2.02.27 C2.02.28 C2.02.30 +C2.02.30 C2.01.31 C2.02.27 C2.02.28 C2.02.29 C2.02.31 +C2.02.31 C2.02.28 C2.02.30 C2.03.29 C2.03.30 +C2.03.00 C2.03.03 C2.03.04 C2.03.05 C2.04.00 C2.04.05 +C2.03.01 C2.02.02 C2.02.04 C2.02.08 C2.03.02 C2.03.06 C2.03.07 +C2.03.02 C2.03.01 C2.03.03 C2.03.06 C2.03.07 C2.03.08 +C2.03.03 C2.03.00 C2.03.02 C2.03.04 C2.03.07 C2.03.08 C2.03.09 +C2.03.04 C2.03.00 C2.03.03 C2.03.05 C2.03.08 C2.03.09 C2.03.10 +C2.03.05 C2.03.00 C2.03.04 C2.03.09 C2.03.10 C2.04.00 C2.04.05 C2.04.10 +C2.03.06 C2.02.04 C2.02.08 C2.02.12 C2.02.13 C2.03.01 C2.03.02 C2.03.07 C2.03.11 +C2.03.07 C2.02.13 C2.03.01 C2.03.02 C2.03.03 C2.03.06 C2.03.08 C2.03.11 C2.03.12 +C2.03.08 C2.03.02 C2.03.03 C2.03.04 C2.03.07 C2.03.09 C2.03.11 C2.03.12 C2.03.13 +C2.03.09 C2.03.03 C2.03.04 C2.03.05 C2.03.08 C2.03.10 C2.03.12 C2.03.13 C2.03.14 +C2.03.10 C2.03.04 C2.03.05 C2.03.09 C2.03.13 C2.03.14 C2.04.05 C2.04.10 C2.04.14 +C2.03.11 C2.02.13 C2.02.17 C2.03.06 C2.03.07 C2.03.08 C2.03.12 C2.03.15 C2.03.16 +C2.03.12 C2.03.07 C2.03.08 C2.03.09 C2.03.11 C2.03.13 C2.03.15 C2.03.16 C2.03.17 +C2.03.13 C2.03.08 C2.03.09 C2.03.10 C2.03.12 C2.03.14 C2.03.16 C2.03.17 C2.03.18 +C2.03.14 C2.03.09 C2.03.10 C2.03.13 C2.03.17 C2.03.18 C2.04.10 C2.04.14 C2.04.18 +C2.03.15 C2.02.13 C2.02.17 C2.02.19 C2.02.21 C2.03.11 C2.03.12 C2.03.16 C2.03.19 +C2.03.16 C2.02.21 C2.03.11 C2.03.12 C2.03.13 C2.03.15 C2.03.17 C2.03.19 C2.03.20 +C2.03.17 C2.03.12 C2.03.13 C2.03.14 C2.03.16 C2.03.18 C2.03.19 C2.03.20 C2.03.21 +C2.03.18 C2.03.13 C2.03.14 C2.03.17 C2.03.20 C2.03.21 C2.04.14 C2.04.18 C2.04.21 +C2.03.19 C2.02.21 C2.02.23 C2.03.15 C2.03.16 C2.03.17 C2.03.20 C2.03.22 C2.03.23 +C2.03.20 C2.03.16 C2.03.17 C2.03.18 C2.03.19 C2.03.21 C2.03.22 C2.03.23 C2.03.24 +C2.03.21 C2.03.17 C2.03.18 C2.03.20 C2.03.23 C2.03.24 C2.04.18 C2.04.21 C2.04.24 +C2.03.22 C2.02.21 C2.02.23 C2.02.25 C2.02.26 C2.03.19 C2.03.20 C2.03.23 C2.03.25 +C2.03.23 C2.02.26 C2.03.19 C2.03.20 C2.03.21 C2.03.22 C2.03.24 C2.03.25 C2.03.26 +C2.03.24 C2.03.20 C2.03.21 C2.03.23 C2.03.25 C2.03.26 C2.04.21 C2.04.24 C2.04.26 +C2.03.25 C2.02.26 C2.02.27 C2.02.28 C2.03.22 C2.03.23 C2.03.24 C2.03.26 C2.03.27 +C2.03.26 C2.02.28 C2.03.23 C2.03.24 C2.03.25 C2.03.27 C2.03.28 C2.04.24 C2.04.26 C2.04.28 +C2.03.27 C2.02.28 C2.03.25 C2.03.26 C2.03.28 C2.03.29 C2.03.30 +C2.03.28 C2.03.26 C2.03.27 C2.03.29 C2.03.30 C2.04.26 C2.04.28 C2.04.30 +C2.03.29 C2.02.28 C2.02.31 C2.03.27 C2.03.28 C2.03.30 +C2.03.30 C2.02.31 C2.03.27 C2.03.28 C2.03.29 C2.04.28 C2.04.30 +C2.04.00 C2.03.00 C2.03.05 C2.04.03 C2.04.04 C2.04.05 +C2.04.01 C2.04.02 C2.04.06 C2.04.07 C2.05.02 C2.05.04 C2.05.08 +C2.04.02 C2.04.01 C2.04.03 C2.04.06 C2.04.07 C2.04.08 +C2.04.03 C2.04.00 C2.04.02 C2.04.04 C2.04.07 C2.04.08 C2.04.09 +C2.04.04 C2.04.00 C2.04.03 C2.04.05 C2.04.08 C2.04.09 C2.04.10 +C2.04.05 C2.03.00 C2.03.05 C2.03.10 C2.04.00 C2.04.04 C2.04.09 C2.04.10 +C2.04.06 C2.04.01 C2.04.02 C2.04.07 C2.04.11 C2.05.04 C2.05.08 C2.05.12 C2.05.13 +C2.04.07 C2.04.01 C2.04.02 C2.04.03 C2.04.06 C2.04.08 C2.04.11 C2.04.12 C2.05.13 +C2.04.08 C2.04.02 C2.04.03 C2.04.04 C2.04.07 C2.04.09 C2.04.11 C2.04.12 C2.04.13 +C2.04.09 C2.04.03 C2.04.04 C2.04.05 C2.04.08 C2.04.10 C2.04.12 C2.04.13 C2.04.14 +C2.04.10 C2.03.05 C2.03.10 C2.03.14 C2.04.04 C2.04.05 C2.04.09 C2.04.13 C2.04.14 +C2.04.11 C2.04.06 C2.04.07 C2.04.08 C2.04.12 C2.04.15 C2.04.16 C2.05.13 C2.05.17 +C2.04.12 C2.04.07 C2.04.08 C2.04.09 C2.04.11 C2.04.13 C2.04.15 C2.04.16 C2.04.17 +C2.04.13 C2.04.08 C2.04.09 C2.04.10 C2.04.12 C2.04.14 C2.04.16 C2.04.17 C2.04.18 +C2.04.14 C2.03.10 C2.03.14 C2.03.18 C2.04.09 C2.04.10 C2.04.13 C2.04.17 C2.04.18 +C2.04.15 C2.04.11 C2.04.12 C2.04.16 C2.04.19 C2.05.13 C2.05.17 C2.05.19 C2.05.21 +C2.04.16 C2.04.11 C2.04.12 C2.04.13 C2.04.15 C2.04.17 C2.04.19 C2.04.20 C2.05.21 +C2.04.17 C2.04.12 C2.04.13 C2.04.14 C2.04.16 C2.04.18 C2.04.19 C2.04.20 C2.04.21 +C2.04.18 C2.03.14 C2.03.18 C2.03.21 C2.04.13 C2.04.14 C2.04.17 C2.04.20 C2.04.21 +C2.04.19 C2.04.15 C2.04.16 C2.04.17 C2.04.20 C2.04.22 C2.04.23 C2.05.21 C2.05.23 +C2.04.20 C2.04.16 C2.04.17 C2.04.18 C2.04.19 C2.04.21 C2.04.22 C2.04.23 C2.04.24 +C2.04.21 C2.03.18 C2.03.21 C2.03.24 C2.04.17 C2.04.18 C2.04.20 C2.04.23 C2.04.24 +C2.04.22 C2.04.19 C2.04.20 C2.04.23 C2.04.25 C2.05.21 C2.05.23 C2.05.25 C2.05.26 +C2.04.23 C2.04.19 C2.04.20 C2.04.21 C2.04.22 C2.04.24 C2.04.25 C2.04.26 C2.05.26 +C2.04.24 C2.03.21 C2.03.24 C2.03.26 C2.04.20 C2.04.21 C2.04.23 C2.04.25 C2.04.26 +C2.04.25 C2.04.22 C2.04.23 C2.04.24 C2.04.26 C2.04.27 C2.05.26 C2.05.27 C2.05.28 +C2.04.26 C2.03.24 C2.03.26 C2.03.28 C2.04.23 C2.04.24 C2.04.25 C2.04.27 C2.04.28 C2.05.28 +C2.04.27 C2.04.25 C2.04.26 C2.04.28 C2.04.29 C2.04.30 C2.05.28 +C2.04.28 C2.03.26 C2.03.28 C2.03.30 C2.04.26 C2.04.27 C2.04.29 C2.04.30 +C2.04.29 C2.04.27 C2.04.28 C2.04.30 C2.05.28 C2.05.31 +C2.04.30 C2.03.28 C2.03.30 C2.04.27 C2.04.28 C2.04.29 +C2.05.00 C2.05.02 C2.05.07 C2.05.08 +C2.05.01 C2.05.06 C2.06.00 C2.06.03 +C2.05.02 C2.04.01 C2.05.00 C2.05.04 C2.05.07 C2.05.08 +C2.05.03 C2.05.05 C2.05.06 C2.05.09 +C2.05.04 C2.04.01 C2.04.06 C2.05.02 C2.05.08 +C2.05.05 C2.05.03 C2.05.07 C2.05.09 C2.05.10 +C2.05.06 C2.05.01 C2.05.03 C2.05.09 C2.05.11 C2.06.03 C2.06.08 +C2.05.07 C2.05.00 C2.05.02 C2.05.05 C2.05.08 C2.05.09 C2.05.10 C2.05.12 +C2.05.08 C2.04.01 C2.04.06 C2.05.00 C2.05.02 C2.05.04 C2.05.07 C2.05.10 C2.05.12 C2.05.13 +C2.05.09 C2.05.03 C2.05.05 C2.05.06 C2.05.07 C2.05.10 C2.05.11 C2.05.14 C2.06.08 +C2.05.10 C2.05.05 C2.05.07 C2.05.08 C2.05.09 C2.05.11 C2.05.12 C2.05.14 C2.05.15 +C2.05.11 C2.05.06 C2.05.09 C2.05.10 C2.05.14 C2.05.16 C2.06.08 C2.06.12 C2.06.14 +C2.05.12 C2.04.06 C2.05.07 C2.05.08 C2.05.10 C2.05.13 C2.05.14 C2.05.15 C2.05.17 +C2.05.13 C2.04.06 C2.04.07 C2.04.11 C2.04.15 C2.05.08 C2.05.12 C2.05.15 C2.05.17 +C2.05.14 C2.05.09 C2.05.10 C2.05.11 C2.05.12 C2.05.15 C2.05.16 C2.05.18 C2.06.14 +C2.05.15 C2.05.10 C2.05.12 C2.05.13 C2.05.14 C2.05.16 C2.05.17 C2.05.18 C2.05.19 +C2.05.16 C2.05.11 C2.05.14 C2.05.15 C2.05.18 C2.05.20 C2.06.14 C2.06.17 C2.06.19 +C2.05.17 C2.04.11 C2.04.15 C2.05.12 C2.05.13 C2.05.15 C2.05.18 C2.05.19 C2.05.21 +C2.05.18 C2.05.14 C2.05.15 C2.05.16 C2.05.17 C2.05.19 C2.05.20 C2.05.22 C2.06.19 +C2.05.19 C2.04.15 C2.05.15 C2.05.17 C2.05.18 C2.05.20 C2.05.21 C2.05.22 C2.05.23 +C2.05.20 C2.05.16 C2.05.18 C2.05.19 C2.05.22 C2.05.24 C2.06.19 C2.06.21 C2.06.23 +C2.05.21 C2.04.15 C2.04.16 C2.04.19 C2.04.22 C2.05.17 C2.05.19 C2.05.22 C2.05.23 +C2.05.22 C2.05.18 C2.05.19 C2.05.20 C2.05.21 C2.05.23 C2.05.24 C2.05.25 C2.06.23 +C2.05.23 C2.04.19 C2.04.22 C2.05.19 C2.05.21 C2.05.22 C2.05.24 C2.05.25 C2.05.26 +C2.05.24 C2.05.20 C2.05.22 C2.05.23 C2.05.25 C2.06.23 C2.06.24 C2.06.25 C2.06.27 +C2.05.25 C2.04.22 C2.05.22 C2.05.23 C2.05.24 C2.05.26 C2.05.27 C2.06.25 C2.06.27 +C2.05.26 C2.04.22 C2.04.23 C2.04.25 C2.05.23 C2.05.25 C2.05.27 C2.05.28 C2.06.27 +C2.05.27 C2.04.25 C2.05.25 C2.05.26 C2.05.28 C2.05.29 C2.05.30 C2.06.27 C2.06.28 +C2.05.28 C2.04.25 C2.04.26 C2.04.27 C2.04.29 C2.05.26 C2.05.27 C2.05.30 C2.05.31 +C2.05.29 C2.05.27 C2.05.30 C2.06.27 C2.06.28 C2.06.29 C2.06.31 +C2.05.30 C2.05.27 C2.05.28 C2.05.29 C2.05.31 C2.06.29 C2.06.31 +C2.05.31 C2.04.29 C2.05.28 C2.05.30 +C2.06.00 C2.05.01 C2.06.03 C2.06.05 +C2.06.01 C2.06.05 C2.06.06 +C2.06.02 C2.06.04 C2.06.06 C2.06.07 +C2.06.03 C2.05.01 C2.05.06 C2.06.00 C2.06.05 C2.06.08 +C2.06.04 C2.06.02 C2.06.06 C2.06.07 C2.06.10 C2.07.03 C2.07.07 +C2.06.05 C2.06.00 C2.06.01 C2.06.03 C2.06.06 C2.06.08 C2.06.09 C2.06.12 +C2.06.06 C2.06.01 C2.06.02 C2.06.04 C2.06.05 C2.06.07 C2.06.09 C2.06.11 +C2.06.07 C2.06.02 C2.06.04 C2.06.06 C2.06.09 C2.06.10 C2.06.11 C2.06.13 C2.07.07 +C2.06.08 C2.05.06 C2.05.09 C2.05.11 C2.06.03 C2.06.05 C2.06.09 C2.06.12 C2.06.14 +C2.06.09 C2.06.05 C2.06.06 C2.06.07 C2.06.08 C2.06.11 C2.06.12 C2.06.15 +C2.06.10 C2.06.04 C2.06.07 C2.06.11 C2.06.13 C2.07.07 C2.07.08 C2.07.11 C2.07.14 +C2.06.11 C2.06.06 C2.06.07 C2.06.09 C2.06.10 C2.06.12 C2.06.13 C2.06.15 C2.06.16 +C2.06.12 C2.05.11 C2.06.05 C2.06.08 C2.06.09 C2.06.11 C2.06.14 C2.06.15 C2.06.17 +C2.06.13 C2.06.07 C2.06.10 C2.06.11 C2.06.15 C2.06.16 C2.07.11 C2.07.14 C2.07.17 +C2.06.14 C2.05.11 C2.05.14 C2.05.16 C2.06.08 C2.06.12 C2.06.15 C2.06.17 C2.06.19 +C2.06.15 C2.06.09 C2.06.11 C2.06.12 C2.06.13 C2.06.14 C2.06.16 C2.06.17 C2.06.18 +C2.06.16 C2.06.11 C2.06.13 C2.06.15 C2.06.17 C2.06.18 C2.06.20 C2.07.14 C2.07.17 +C2.06.17 C2.05.16 C2.06.12 C2.06.14 C2.06.15 C2.06.16 C2.06.18 C2.06.19 C2.06.21 +C2.06.18 C2.06.15 C2.06.16 C2.06.17 C2.06.19 C2.06.20 C2.06.21 C2.06.22 C2.07.17 +C2.06.19 C2.05.16 C2.05.18 C2.05.20 C2.06.14 C2.06.17 C2.06.18 C2.06.21 C2.06.23 +C2.06.20 C2.06.16 C2.06.18 C2.06.21 C2.06.22 C2.07.17 C2.07.18 C2.07.20 C2.07.22 +C2.06.21 C2.05.20 C2.06.17 C2.06.18 C2.06.19 C2.06.20 C2.06.22 C2.06.23 C2.06.24 +C2.06.22 C2.06.18 C2.06.20 C2.06.21 C2.06.23 C2.06.24 C2.07.20 C2.07.22 C2.07.24 +C2.06.23 C2.05.20 C2.05.22 C2.05.24 C2.06.19 C2.06.21 C2.06.22 C2.06.24 C2.06.25 +C2.06.24 C2.05.24 C2.06.21 C2.06.22 C2.06.23 C2.06.25 C2.06.26 C2.07.22 C2.07.24 +C2.06.25 C2.05.24 C2.05.25 C2.06.23 C2.06.24 C2.06.26 C2.06.27 C2.06.28 C2.07.24 +C2.06.26 C2.06.24 C2.06.25 C2.06.27 C2.06.28 C2.07.24 C2.07.25 C2.07.26 C2.07.27 +C2.06.27 C2.05.24 C2.05.25 C2.05.26 C2.05.27 C2.05.29 C2.06.25 C2.06.26 C2.06.28 +C2.06.28 C2.05.27 C2.05.29 C2.06.25 C2.06.26 C2.06.27 C2.06.29 C2.06.30 C2.07.26 C2.07.27 C2.07.28 +C2.06.29 C2.05.29 C2.05.30 C2.06.28 C2.06.30 C2.06.31 +C2.06.30 C2.06.28 C2.06.29 C2.06.31 C2.07.27 C2.07.28 +C2.06.31 C2.05.29 C2.05.30 C2.06.29 C2.06.30 C2.07.28 +C2.07.00 C2.07.02 C2.07.05 C2.07.06 +C2.07.01 C2.07.02 C2.07.06 C2.08.00 C2.08.06 +C2.07.02 C2.07.00 C2.07.01 C2.07.05 C2.07.06 +C2.07.03 C2.06.04 C2.07.04 C2.07.07 C2.07.08 +C2.07.04 C2.07.03 C2.07.05 C2.07.07 C2.07.08 C2.07.09 +C2.07.05 C2.07.00 C2.07.02 C2.07.04 C2.07.06 C2.07.08 C2.07.09 C2.07.10 +C2.07.06 C2.07.00 C2.07.01 C2.07.02 C2.07.05 C2.07.09 C2.07.10 C2.08.00 C2.08.06 C2.08.10 +C2.07.07 C2.06.04 C2.06.07 C2.06.10 C2.07.03 C2.07.04 C2.07.08 C2.07.11 +C2.07.08 C2.06.10 C2.07.03 C2.07.04 C2.07.05 C2.07.07 C2.07.09 C2.07.11 C2.07.12 +C2.07.09 C2.07.04 C2.07.05 C2.07.06 C2.07.08 C2.07.10 C2.07.11 C2.07.12 C2.07.13 +C2.07.10 C2.07.05 C2.07.06 C2.07.09 C2.07.12 C2.07.13 C2.08.06 C2.08.10 C2.08.13 +C2.07.11 C2.06.10 C2.06.13 C2.07.07 C2.07.08 C2.07.09 C2.07.12 C2.07.14 C2.07.15 +C2.07.12 C2.07.08 C2.07.09 C2.07.10 C2.07.11 C2.07.13 C2.07.14 C2.07.15 C2.07.16 +C2.07.13 C2.07.09 C2.07.10 C2.07.12 C2.07.15 C2.07.16 C2.08.10 C2.08.13 C2.08.16 +C2.07.14 C2.06.10 C2.06.13 C2.06.16 C2.07.11 C2.07.12 C2.07.15 C2.07.17 C2.07.18 +C2.07.15 C2.07.11 C2.07.12 C2.07.13 C2.07.14 C2.07.16 C2.07.17 C2.07.18 C2.07.19 +C2.07.16 C2.07.12 C2.07.13 C2.07.15 C2.07.18 C2.07.19 C2.08.13 C2.08.16 C2.08.19 +C2.07.17 C2.06.13 C2.06.16 C2.06.18 C2.06.20 C2.07.14 C2.07.15 C2.07.18 C2.07.20 +C2.07.18 C2.06.20 C2.07.14 C2.07.15 C2.07.16 C2.07.17 C2.07.19 C2.07.20 C2.07.21 +C2.07.19 C2.07.15 C2.07.16 C2.07.18 C2.07.20 C2.07.21 C2.08.16 C2.08.19 C2.08.21 +C2.07.20 C2.06.20 C2.06.22 C2.07.17 C2.07.18 C2.07.19 C2.07.21 C2.07.22 C2.07.23 +C2.07.21 C2.07.18 C2.07.19 C2.07.20 C2.07.22 C2.07.23 C2.08.19 C2.08.21 C2.08.23 +C2.07.22 C2.06.20 C2.06.22 C2.06.24 C2.07.20 C2.07.21 C2.07.23 C2.07.24 C2.07.25 +C2.07.23 C2.07.20 C2.07.21 C2.07.22 C2.07.24 C2.07.25 C2.08.21 C2.08.23 C2.08.25 +C2.07.24 C2.06.22 C2.06.24 C2.06.25 C2.06.26 C2.07.22 C2.07.23 C2.07.25 C2.07.26 +C2.07.25 C2.06.26 C2.07.22 C2.07.23 C2.07.24 C2.07.26 C2.08.23 C2.08.25 C2.08.26 +C2.07.26 C2.06.26 C2.06.28 C2.07.24 C2.07.25 C2.07.27 C2.08.25 C2.08.26 C2.08.27 +C2.07.27 C2.06.26 C2.06.28 C2.06.30 C2.07.26 C2.07.28 C2.07.29 C2.08.26 C2.08.27 C2.08.29 +C2.07.28 C2.06.28 C2.06.30 C2.06.31 C2.07.27 C2.07.29 +C2.07.29 C2.07.27 C2.07.28 C2.08.27 C2.08.29 +C2.08.00 C2.07.01 C2.07.06 C2.08.01 C2.08.06 +C2.08.01 C2.08.00 C2.08.02 C2.08.05 C2.08.06 +C2.08.02 C2.08.01 C2.08.05 C2.08.06 +C2.08.03 C2.08.04 C2.08.07 C2.08.08 C2.09.04 +C2.08.04 C2.08.03 C2.08.05 C2.08.07 C2.08.08 C2.08.09 +C2.08.05 C2.08.01 C2.08.02 C2.08.04 C2.08.06 C2.08.08 C2.08.09 C2.08.10 +C2.08.06 C2.07.01 C2.07.06 C2.07.10 C2.08.00 C2.08.01 C2.08.02 C2.08.05 C2.08.09 C2.08.10 +C2.08.07 C2.08.03 C2.08.04 C2.08.08 C2.08.11 C2.09.04 C2.09.07 C2.09.10 +C2.08.08 C2.08.03 C2.08.04 C2.08.05 C2.08.07 C2.08.09 C2.08.11 C2.08.12 C2.09.10 +C2.08.09 C2.08.04 C2.08.05 C2.08.06 C2.08.08 C2.08.10 C2.08.11 C2.08.12 C2.08.13 +C2.08.10 C2.07.06 C2.07.10 C2.07.13 C2.08.05 C2.08.06 C2.08.09 C2.08.12 C2.08.13 +C2.08.11 C2.08.07 C2.08.08 C2.08.09 C2.08.12 C2.08.14 C2.08.15 C2.09.10 C2.09.13 +C2.08.12 C2.08.08 C2.08.09 C2.08.10 C2.08.11 C2.08.13 C2.08.14 C2.08.15 C2.08.16 +C2.08.13 C2.07.10 C2.07.13 C2.07.16 C2.08.09 C2.08.10 C2.08.12 C2.08.15 C2.08.16 +C2.08.14 C2.08.11 C2.08.12 C2.08.15 C2.08.17 C2.08.18 C2.09.10 C2.09.13 C2.09.16 +C2.08.15 C2.08.11 C2.08.12 C2.08.13 C2.08.14 C2.08.16 C2.08.17 C2.08.18 C2.08.19 +C2.08.16 C2.07.13 C2.07.16 C2.07.19 C2.08.12 C2.08.13 C2.08.15 C2.08.18 C2.08.19 +C2.08.17 C2.08.14 C2.08.15 C2.08.18 C2.08.20 C2.09.13 C2.09.16 C2.09.18 C2.09.20 +C2.08.18 C2.08.14 C2.08.15 C2.08.16 C2.08.17 C2.08.19 C2.08.20 C2.08.21 C2.09.20 +C2.08.19 C2.07.16 C2.07.19 C2.07.21 C2.08.15 C2.08.16 C2.08.18 C2.08.20 C2.08.21 +C2.08.20 C2.08.17 C2.08.18 C2.08.19 C2.08.21 C2.08.22 C2.08.23 C2.09.20 C2.09.22 +C2.08.21 C2.07.19 C2.07.21 C2.07.23 C2.08.18 C2.08.19 C2.08.20 C2.08.22 C2.08.23 +C2.08.22 C2.08.20 C2.08.21 C2.08.23 C2.08.24 C2.08.25 C2.09.20 C2.09.22 C2.09.24 +C2.08.23 C2.07.21 C2.07.23 C2.07.25 C2.08.20 C2.08.21 C2.08.22 C2.08.24 C2.08.25 +C2.08.24 C2.08.22 C2.08.23 C2.08.25 C2.08.26 C2.09.22 C2.09.24 C2.09.25 C2.09.26 +C2.08.25 C2.07.23 C2.07.25 C2.07.26 C2.08.22 C2.08.23 C2.08.24 C2.08.26 C2.09.26 +C2.08.26 C2.07.25 C2.07.26 C2.07.27 C2.08.24 C2.08.25 C2.08.27 C2.09.26 C2.09.28 +C2.08.27 C2.07.26 C2.07.27 C2.07.29 C2.08.26 C2.08.28 C2.08.29 C2.09.26 C2.09.28 C2.09.30 +C2.08.28 C2.08.27 C2.08.29 C2.09.28 C2.09.30 C2.09.31 +C2.08.29 C2.07.27 C2.07.29 C2.08.27 C2.08.28 +C2.09.00 C2.09.05 C2.10.00 C2.10.06 +C2.09.01 C2.09.03 C2.09.05 +C2.09.02 C2.09.04 C2.09.06 C2.09.07 +C2.09.03 C2.09.01 C2.09.05 C2.09.06 C2.09.09 +C2.09.04 C2.08.03 C2.08.07 C2.09.02 C2.09.06 C2.09.07 C2.09.10 +C2.09.05 C2.09.00 C2.09.01 C2.09.03 C2.09.06 C2.09.08 C2.09.09 C2.09.12 C2.10.06 +C2.09.06 C2.09.02 C2.09.03 C2.09.04 C2.09.05 C2.09.07 C2.09.09 C2.09.11 +C2.09.07 C2.08.07 C2.09.02 C2.09.04 C2.09.06 C2.09.09 C2.09.10 C2.09.11 C2.09.13 +C2.09.08 C2.09.05 C2.09.09 C2.09.12 C2.09.14 C2.10.06 C2.10.09 C2.10.11 +C2.09.09 C2.09.03 C2.09.05 C2.09.06 C2.09.07 C2.09.08 C2.09.11 C2.09.12 C2.09.15 +C2.09.10 C2.08.07 C2.08.08 C2.08.11 C2.08.14 C2.09.04 C2.09.07 C2.09.11 C2.09.13 +C2.09.11 C2.09.06 C2.09.07 C2.09.09 C2.09.10 C2.09.12 C2.09.13 C2.09.15 C2.09.16 +C2.09.12 C2.09.05 C2.09.08 C2.09.09 C2.09.11 C2.09.14 C2.09.15 C2.09.17 C2.10.11 +C2.09.13 C2.08.11 C2.08.14 C2.08.17 C2.09.07 C2.09.10 C2.09.11 C2.09.15 C2.09.16 +C2.09.14 C2.09.08 C2.09.12 C2.09.15 C2.09.17 C2.09.19 C2.10.11 C2.10.14 C2.10.16 +C2.09.15 C2.09.09 C2.09.11 C2.09.12 C2.09.13 C2.09.14 C2.09.16 C2.09.17 C2.09.18 +C2.09.16 C2.08.14 C2.08.17 C2.09.11 C2.09.13 C2.09.15 C2.09.17 C2.09.18 C2.09.20 +C2.09.17 C2.09.12 C2.09.14 C2.09.15 C2.09.16 C2.09.18 C2.09.19 C2.09.21 C2.10.16 +C2.09.18 C2.08.17 C2.09.15 C2.09.16 C2.09.17 C2.09.19 C2.09.20 C2.09.21 C2.09.22 +C2.09.19 C2.09.14 C2.09.17 C2.09.18 C2.09.21 C2.09.23 C2.10.16 C2.10.18 C2.10.20 +C2.09.20 C2.08.17 C2.08.18 C2.08.20 C2.08.22 C2.09.16 C2.09.18 C2.09.21 C2.09.22 +C2.09.21 C2.09.17 C2.09.18 C2.09.19 C2.09.20 C2.09.22 C2.09.23 C2.09.24 C2.10.20 +C2.09.22 C2.08.20 C2.08.22 C2.08.24 C2.09.18 C2.09.20 C2.09.21 C2.09.23 C2.09.24 +C2.09.23 C2.09.19 C2.09.21 C2.09.22 C2.09.24 C2.09.25 C2.10.20 C2.10.22 C2.10.24 +C2.09.24 C2.08.22 C2.08.24 C2.09.21 C2.09.22 C2.09.23 C2.09.25 C2.09.26 C2.10.24 +C2.09.25 C2.08.24 C2.09.23 C2.09.24 C2.09.26 C2.09.27 C2.09.28 C2.10.24 C2.10.25 +C2.09.26 C2.08.24 C2.08.25 C2.08.26 C2.08.27 C2.09.24 C2.09.25 C2.09.27 C2.09.28 +C2.09.27 C2.09.25 C2.09.26 C2.09.28 C2.09.29 C2.10.24 C2.10.25 C2.10.26 C2.10.27 +C2.09.28 C2.08.26 C2.08.27 C2.08.28 C2.09.25 C2.09.26 C2.09.27 C2.09.29 C2.09.30 C2.10.27 +C2.09.29 C2.09.27 C2.09.28 C2.09.30 C2.09.31 C2.10.27 C2.10.29 +C2.09.30 C2.08.27 C2.08.28 C2.09.28 C2.09.29 C2.09.31 C2.10.29 +C2.09.31 C2.08.28 C2.09.29 C2.09.30 C2.10.29 C2.10.30 +C2.10.00 C2.09.00 C2.10.03 C2.10.06 +C2.10.01 C2.10.02 C2.10.07 C2.10.08 +C2.10.02 C2.10.01 C2.10.04 C2.10.07 C2.10.08 C2.11.01 +C2.10.03 C2.10.00 C2.10.05 C2.10.06 C2.10.09 +C2.10.04 C2.10.02 C2.10.08 C2.11.01 C2.11.06 +C2.10.05 C2.10.03 C2.10.07 C2.10.09 C2.10.10 +C2.10.06 C2.09.00 C2.09.05 C2.09.08 C2.10.00 C2.10.03 C2.10.09 C2.10.11 +C2.10.07 C2.10.01 C2.10.02 C2.10.05 C2.10.08 C2.10.09 C2.10.10 C2.10.12 +C2.10.08 C2.10.01 C2.10.02 C2.10.04 C2.10.07 C2.10.10 C2.10.12 C2.10.13 C2.11.01 C2.11.06 +C2.10.09 C2.09.08 C2.10.03 C2.10.05 C2.10.06 C2.10.07 C2.10.10 C2.10.11 C2.10.14 +C2.10.10 C2.10.05 C2.10.07 C2.10.08 C2.10.09 C2.10.11 C2.10.12 C2.10.14 C2.10.15 +C2.10.11 C2.09.08 C2.09.12 C2.09.14 C2.10.06 C2.10.09 C2.10.10 C2.10.14 C2.10.16 +C2.10.12 C2.10.07 C2.10.08 C2.10.10 C2.10.13 C2.10.14 C2.10.15 C2.10.17 C2.11.06 +C2.10.13 C2.10.08 C2.10.12 C2.10.15 C2.10.17 C2.11.06 C2.11.07 C2.11.11 C2.11.15 +C2.10.14 C2.09.14 C2.10.09 C2.10.10 C2.10.11 C2.10.12 C2.10.15 C2.10.16 C2.10.18 +C2.10.15 C2.10.10 C2.10.12 C2.10.13 C2.10.14 C2.10.16 C2.10.17 C2.10.18 C2.10.19 +C2.10.16 C2.09.14 C2.09.17 C2.09.19 C2.10.11 C2.10.14 C2.10.15 C2.10.18 C2.10.20 +C2.10.17 C2.10.12 C2.10.13 C2.10.15 C2.10.18 C2.10.19 C2.10.21 C2.11.11 C2.11.15 +C2.10.18 C2.09.19 C2.10.14 C2.10.15 C2.10.16 C2.10.17 C2.10.19 C2.10.20 C2.10.22 +C2.10.19 C2.10.15 C2.10.17 C2.10.18 C2.10.20 C2.10.21 C2.10.22 C2.10.23 C2.11.15 +C2.10.20 C2.09.19 C2.09.21 C2.09.23 C2.10.16 C2.10.18 C2.10.19 C2.10.22 C2.10.24 +C2.10.21 C2.10.17 C2.10.19 C2.10.22 C2.10.23 C2.11.15 C2.11.16 C2.11.19 C2.11.22 +C2.10.22 C2.09.23 C2.10.18 C2.10.19 C2.10.20 C2.10.21 C2.10.23 C2.10.24 C2.10.25 +C2.10.23 C2.10.19 C2.10.21 C2.10.22 C2.10.24 C2.10.25 C2.10.26 C2.11.19 C2.11.22 +C2.10.24 C2.09.23 C2.09.24 C2.09.25 C2.09.27 C2.10.20 C2.10.22 C2.10.23 C2.10.25 +C2.10.25 C2.09.25 C2.09.27 C2.10.22 C2.10.23 C2.10.24 C2.10.26 C2.10.27 C2.11.22 +C2.10.26 C2.09.27 C2.10.23 C2.10.25 C2.10.27 C2.10.28 C2.11.22 C2.11.23 C2.11.25 +C2.10.27 C2.09.27 C2.09.28 C2.09.29 C2.10.25 C2.10.26 C2.10.28 C2.10.29 C2.10.30 C2.11.25 +C2.10.28 C2.10.26 C2.10.27 C2.10.29 C2.10.30 C2.10.31 C2.11.25 C2.11.26 C2.11.27 C2.11.29 +C2.10.29 C2.09.29 C2.09.30 C2.09.31 C2.10.27 C2.10.28 C2.10.30 +C2.10.30 C2.09.31 C2.10.27 C2.10.28 C2.10.29 C2.10.31 +C2.10.31 C2.10.28 C2.10.30 C2.11.29 C2.11.30 +C2.11.00 C2.11.03 C2.11.04 C2.11.05 C2.12.00 C2.12.05 +C2.11.01 C2.10.02 C2.10.04 C2.10.08 C2.11.02 C2.11.06 C2.11.07 +C2.11.02 C2.11.01 C2.11.03 C2.11.06 C2.11.07 C2.11.08 +C2.11.03 C2.11.00 C2.11.02 C2.11.04 C2.11.07 C2.11.08 C2.11.09 +C2.11.04 C2.11.00 C2.11.03 C2.11.05 C2.11.08 C2.11.09 C2.11.10 +C2.11.05 C2.11.00 C2.11.04 C2.11.09 C2.11.10 C2.12.00 C2.12.05 C2.12.10 +C2.11.06 C2.10.04 C2.10.08 C2.10.12 C2.10.13 C2.11.01 C2.11.02 C2.11.07 C2.11.11 +C2.11.07 C2.10.13 C2.11.01 C2.11.02 C2.11.03 C2.11.06 C2.11.08 C2.11.11 C2.11.12 +C2.11.08 C2.11.02 C2.11.03 C2.11.04 C2.11.07 C2.11.09 C2.11.11 C2.11.12 C2.11.13 +C2.11.09 C2.11.03 C2.11.04 C2.11.05 C2.11.08 C2.11.10 C2.11.12 C2.11.13 C2.11.14 +C2.11.10 C2.11.04 C2.11.05 C2.11.09 C2.11.13 C2.11.14 C2.12.05 C2.12.10 C2.12.14 +C2.11.11 C2.10.13 C2.10.17 C2.11.06 C2.11.07 C2.11.08 C2.11.12 C2.11.15 C2.11.16 +C2.11.12 C2.11.07 C2.11.08 C2.11.09 C2.11.11 C2.11.13 C2.11.15 C2.11.16 C2.11.17 +C2.11.13 C2.11.08 C2.11.09 C2.11.10 C2.11.12 C2.11.14 C2.11.16 C2.11.17 C2.11.18 +C2.11.14 C2.11.09 C2.11.10 C2.11.13 C2.11.17 C2.11.18 C2.12.10 C2.12.14 C2.12.18 +C2.11.15 C2.10.13 C2.10.17 C2.10.19 C2.10.21 C2.11.11 C2.11.12 C2.11.16 C2.11.19 +C2.11.16 C2.10.21 C2.11.11 C2.11.12 C2.11.13 C2.11.15 C2.11.17 C2.11.19 C2.11.20 +C2.11.17 C2.11.12 C2.11.13 C2.11.14 C2.11.16 C2.11.18 C2.11.19 C2.11.20 C2.11.21 +C2.11.18 C2.11.13 C2.11.14 C2.11.17 C2.11.20 C2.11.21 C2.12.14 C2.12.18 C2.12.21 +C2.11.19 C2.10.21 C2.10.23 C2.11.15 C2.11.16 C2.11.17 C2.11.20 C2.11.22 C2.11.23 +C2.11.20 C2.11.16 C2.11.17 C2.11.18 C2.11.19 C2.11.21 C2.11.22 C2.11.23 C2.11.24 +C2.11.21 C2.11.17 C2.11.18 C2.11.20 C2.11.23 C2.11.24 C2.12.18 C2.12.21 C2.12.24 +C2.11.22 C2.10.21 C2.10.23 C2.10.25 C2.10.26 C2.11.19 C2.11.20 C2.11.23 C2.11.25 +C2.11.23 C2.10.26 C2.11.19 C2.11.20 C2.11.21 C2.11.22 C2.11.24 C2.11.25 C2.11.26 +C2.11.24 C2.11.20 C2.11.21 C2.11.23 C2.11.25 C2.11.26 C2.12.21 C2.12.24 C2.12.26 +C2.11.25 C2.10.26 C2.10.27 C2.10.28 C2.11.22 C2.11.23 C2.11.24 C2.11.26 C2.11.27 +C2.11.26 C2.10.28 C2.11.23 C2.11.24 C2.11.25 C2.11.27 C2.11.28 C2.12.24 C2.12.26 C2.12.28 +C2.11.27 C2.10.28 C2.11.25 C2.11.26 C2.11.28 C2.11.29 C2.11.30 +C2.11.28 C2.11.26 C2.11.27 C2.11.29 C2.11.30 C2.12.26 C2.12.28 C2.12.30 +C2.11.29 C2.10.28 C2.10.31 C2.11.27 C2.11.28 C2.11.30 +C2.11.30 C2.10.31 C2.11.27 C2.11.28 C2.11.29 C2.12.28 C2.12.30 +C2.12.00 C2.11.00 C2.11.05 C2.12.03 C2.12.04 C2.12.05 +C2.12.01 C2.12.02 C2.12.06 C2.12.07 C2.13.02 C2.13.04 C2.13.08 +C2.12.02 C2.12.01 C2.12.03 C2.12.06 C2.12.07 C2.12.08 +C2.12.03 C2.12.00 C2.12.02 C2.12.04 C2.12.07 C2.12.08 C2.12.09 +C2.12.04 C2.12.00 C2.12.03 C2.12.05 C2.12.08 C2.12.09 C2.12.10 +C2.12.05 C2.11.00 C2.11.05 C2.11.10 C2.12.00 C2.12.04 C2.12.09 C2.12.10 +C2.12.06 C2.12.01 C2.12.02 C2.12.07 C2.12.11 C2.13.04 C2.13.08 C2.13.12 C2.13.13 +C2.12.07 C2.12.01 C2.12.02 C2.12.03 C2.12.06 C2.12.08 C2.12.11 C2.12.12 C2.13.13 +C2.12.08 C2.12.02 C2.12.03 C2.12.04 C2.12.07 C2.12.09 C2.12.11 C2.12.12 C2.12.13 +C2.12.09 C2.12.03 C2.12.04 C2.12.05 C2.12.08 C2.12.10 C2.12.12 C2.12.13 C2.12.14 +C2.12.10 C2.11.05 C2.11.10 C2.11.14 C2.12.04 C2.12.05 C2.12.09 C2.12.13 C2.12.14 +C2.12.11 C2.12.06 C2.12.07 C2.12.08 C2.12.12 C2.12.15 C2.12.16 C2.13.13 C2.13.17 +C2.12.12 C2.12.07 C2.12.08 C2.12.09 C2.12.11 C2.12.13 C2.12.15 C2.12.16 C2.12.17 +C2.12.13 C2.12.08 C2.12.09 C2.12.10 C2.12.12 C2.12.14 C2.12.16 C2.12.17 C2.12.18 +C2.12.14 C2.11.10 C2.11.14 C2.11.18 C2.12.09 C2.12.10 C2.12.13 C2.12.17 C2.12.18 +C2.12.15 C2.12.11 C2.12.12 C2.12.16 C2.12.19 C2.13.13 C2.13.17 C2.13.19 C2.13.21 +C2.12.16 C2.12.11 C2.12.12 C2.12.13 C2.12.15 C2.12.17 C2.12.19 C2.12.20 C2.13.21 +C2.12.17 C2.12.12 C2.12.13 C2.12.14 C2.12.16 C2.12.18 C2.12.19 C2.12.20 C2.12.21 +C2.12.18 C2.11.14 C2.11.18 C2.11.21 C2.12.13 C2.12.14 C2.12.17 C2.12.20 C2.12.21 +C2.12.19 C2.12.15 C2.12.16 C2.12.17 C2.12.20 C2.12.22 C2.12.23 C2.13.21 C2.13.23 +C2.12.20 C2.12.16 C2.12.17 C2.12.18 C2.12.19 C2.12.21 C2.12.22 C2.12.23 C2.12.24 +C2.12.21 C2.11.18 C2.11.21 C2.11.24 C2.12.17 C2.12.18 C2.12.20 C2.12.23 C2.12.24 +C2.12.22 C2.12.19 C2.12.20 C2.12.23 C2.12.25 C2.13.21 C2.13.23 C2.13.25 C2.13.26 +C2.12.23 C2.12.19 C2.12.20 C2.12.21 C2.12.22 C2.12.24 C2.12.25 C2.12.26 C2.13.26 +C2.12.24 C2.11.21 C2.11.24 C2.11.26 C2.12.20 C2.12.21 C2.12.23 C2.12.25 C2.12.26 +C2.12.25 C2.12.22 C2.12.23 C2.12.24 C2.12.26 C2.12.27 C2.13.26 C2.13.27 C2.13.28 +C2.12.26 C2.11.24 C2.11.26 C2.11.28 C2.12.23 C2.12.24 C2.12.25 C2.12.27 C2.12.28 C2.13.28 +C2.12.27 C2.12.25 C2.12.26 C2.12.28 C2.12.29 C2.12.30 C2.13.28 +C2.12.28 C2.11.26 C2.11.28 C2.11.30 C2.12.26 C2.12.27 C2.12.29 C2.12.30 +C2.12.29 C2.12.27 C2.12.28 C2.12.30 C2.13.28 C2.13.31 +C2.12.30 C2.11.28 C2.11.30 C2.12.27 C2.12.28 C2.12.29 +C2.13.00 C2.13.02 C2.13.07 +C2.13.01 C2.13.06 C2.14.00 C2.14.03 +C2.13.02 C2.12.01 C2.13.00 C2.13.04 C2.13.07 C2.13.08 +C2.13.03 C2.13.05 C2.13.06 C2.13.09 +C2.13.04 C2.12.01 C2.12.06 C2.13.02 C2.13.08 +C2.13.05 C2.13.03 C2.13.07 C2.13.09 C2.13.10 +C2.13.06 C2.13.01 C2.13.03 C2.13.09 C2.13.11 C2.14.03 C2.14.08 +C2.13.07 C2.13.00 C2.13.02 C2.13.05 C2.13.08 C2.13.09 C2.13.10 C2.13.12 +C2.13.08 C2.12.01 C2.12.06 C2.13.02 C2.13.04 C2.13.07 C2.13.10 C2.13.12 C2.13.13 +C2.13.09 C2.13.03 C2.13.05 C2.13.06 C2.13.07 C2.13.10 C2.13.11 C2.13.14 C2.14.08 +C2.13.10 C2.13.05 C2.13.07 C2.13.08 C2.13.09 C2.13.11 C2.13.12 C2.13.14 C2.13.15 +C2.13.11 C2.13.06 C2.13.09 C2.13.10 C2.13.14 C2.13.16 C2.14.08 C2.14.12 C2.14.14 +C2.13.12 C2.12.06 C2.13.07 C2.13.08 C2.13.10 C2.13.13 C2.13.14 C2.13.15 C2.13.17 +C2.13.13 C2.12.06 C2.12.07 C2.12.11 C2.12.15 C2.13.08 C2.13.12 C2.13.15 C2.13.17 +C2.13.14 C2.13.09 C2.13.10 C2.13.11 C2.13.12 C2.13.15 C2.13.16 C2.13.18 C2.14.14 +C2.13.15 C2.13.10 C2.13.12 C2.13.13 C2.13.14 C2.13.16 C2.13.17 C2.13.18 C2.13.19 +C2.13.16 C2.13.11 C2.13.14 C2.13.15 C2.13.18 C2.13.20 C2.14.14 C2.14.17 C2.14.19 +C2.13.17 C2.12.11 C2.12.15 C2.13.12 C2.13.13 C2.13.15 C2.13.18 C2.13.19 C2.13.21 +C2.13.18 C2.13.14 C2.13.15 C2.13.16 C2.13.17 C2.13.19 C2.13.20 C2.13.22 C2.14.19 +C2.13.19 C2.12.15 C2.13.15 C2.13.17 C2.13.18 C2.13.20 C2.13.21 C2.13.22 C2.13.23 +C2.13.20 C2.13.16 C2.13.18 C2.13.19 C2.13.22 C2.13.24 C2.14.19 C2.14.21 C2.14.23 +C2.13.21 C2.12.15 C2.12.16 C2.12.19 C2.12.22 C2.13.17 C2.13.19 C2.13.22 C2.13.23 +C2.13.22 C2.13.18 C2.13.19 C2.13.20 C2.13.21 C2.13.23 C2.13.24 C2.13.25 C2.14.23 +C2.13.23 C2.12.19 C2.12.22 C2.13.19 C2.13.21 C2.13.22 C2.13.24 C2.13.25 C2.13.26 +C2.13.24 C2.13.20 C2.13.22 C2.13.23 C2.13.25 C2.14.23 C2.14.24 C2.14.25 C2.14.27 +C2.13.25 C2.12.22 C2.13.22 C2.13.23 C2.13.24 C2.13.26 C2.13.27 C2.14.25 C2.14.27 +C2.13.26 C2.12.22 C2.12.23 C2.12.25 C2.13.23 C2.13.25 C2.13.27 C2.13.28 C2.14.27 +C2.13.27 C2.12.25 C2.13.25 C2.13.26 C2.13.28 C2.13.29 C2.13.30 C2.14.27 C2.14.28 +C2.13.28 C2.12.25 C2.12.26 C2.12.27 C2.12.29 C2.13.26 C2.13.27 C2.13.30 C2.13.31 +C2.13.29 C2.13.27 C2.13.30 C2.14.27 C2.14.28 C2.14.29 C2.14.31 +C2.13.30 C2.13.27 C2.13.28 C2.13.29 C2.13.31 C2.14.29 C2.14.31 +C2.13.31 C2.12.29 C2.13.28 C2.13.30 +C2.14.00 C2.13.01 C2.14.03 C2.14.05 +C2.14.01 C2.14.05 C2.14.06 +C2.14.02 C2.14.04 C2.14.06 C2.14.07 +C2.14.03 C2.13.01 C2.13.06 C2.14.00 C2.14.05 C2.14.08 +C2.14.04 C2.14.02 C2.14.06 C2.14.07 C2.14.10 C2.15.03 C2.15.07 +C2.14.05 C2.14.00 C2.14.01 C2.14.03 C2.14.06 C2.14.08 C2.14.09 C2.14.12 +C2.14.06 C2.14.01 C2.14.02 C2.14.04 C2.14.05 C2.14.07 C2.14.09 C2.14.11 +C2.14.07 C2.14.02 C2.14.04 C2.14.06 C2.14.09 C2.14.10 C2.14.11 C2.14.13 C2.15.07 +C2.14.08 C2.13.06 C2.13.09 C2.13.11 C2.14.03 C2.14.05 C2.14.09 C2.14.12 C2.14.14 +C2.14.09 C2.14.05 C2.14.06 C2.14.07 C2.14.08 C2.14.11 C2.14.12 C2.14.15 +C2.14.10 C2.14.04 C2.14.07 C2.14.11 C2.14.13 C2.15.07 C2.15.08 C2.15.11 C2.15.14 +C2.14.11 C2.14.06 C2.14.07 C2.14.09 C2.14.10 C2.14.12 C2.14.13 C2.14.15 C2.14.16 +C2.14.12 C2.13.11 C2.14.05 C2.14.08 C2.14.09 C2.14.11 C2.14.14 C2.14.15 C2.14.17 +C2.14.13 C2.14.07 C2.14.10 C2.14.11 C2.14.15 C2.14.16 C2.15.11 C2.15.14 C2.15.17 +C2.14.14 C2.13.11 C2.13.14 C2.13.16 C2.14.08 C2.14.12 C2.14.15 C2.14.17 C2.14.19 +C2.14.15 C2.14.09 C2.14.11 C2.14.12 C2.14.13 C2.14.14 C2.14.16 C2.14.17 C2.14.18 +C2.14.16 C2.14.11 C2.14.13 C2.14.15 C2.14.17 C2.14.18 C2.14.20 C2.15.14 C2.15.17 +C2.14.17 C2.13.16 C2.14.12 C2.14.14 C2.14.15 C2.14.16 C2.14.18 C2.14.19 C2.14.21 +C2.14.18 C2.14.15 C2.14.16 C2.14.17 C2.14.19 C2.14.20 C2.14.21 C2.14.22 C2.15.17 +C2.14.19 C2.13.16 C2.13.18 C2.13.20 C2.14.14 C2.14.17 C2.14.18 C2.14.21 C2.14.23 +C2.14.20 C2.14.16 C2.14.18 C2.14.21 C2.14.22 C2.15.17 C2.15.18 C2.15.20 C2.15.22 +C2.14.21 C2.13.20 C2.14.17 C2.14.18 C2.14.19 C2.14.20 C2.14.22 C2.14.23 C2.14.24 +C2.14.22 C2.14.18 C2.14.20 C2.14.21 C2.14.23 C2.14.24 C2.15.20 C2.15.22 C2.15.24 +C2.14.23 C2.13.20 C2.13.22 C2.13.24 C2.14.19 C2.14.21 C2.14.22 C2.14.24 C2.14.25 +C2.14.24 C2.13.24 C2.14.21 C2.14.22 C2.14.23 C2.14.25 C2.14.26 C2.15.22 C2.15.24 +C2.14.25 C2.13.24 C2.13.25 C2.14.23 C2.14.24 C2.14.26 C2.14.27 C2.14.28 C2.15.24 +C2.14.26 C2.14.24 C2.14.25 C2.14.27 C2.14.28 C2.15.24 C2.15.25 C2.15.26 C2.15.27 +C2.14.27 C2.13.24 C2.13.25 C2.13.26 C2.13.27 C2.13.29 C2.14.25 C2.14.26 C2.14.28 +C2.14.28 C2.13.27 C2.13.29 C2.14.25 C2.14.26 C2.14.27 C2.14.29 C2.14.30 C2.15.26 C2.15.27 C2.15.28 +C2.14.29 C2.13.29 C2.13.30 C2.14.28 C2.14.30 C2.14.31 +C2.14.30 C2.14.28 C2.14.29 C2.14.31 C2.15.27 C2.15.28 +C2.14.31 C2.13.29 C2.13.30 C2.14.29 C2.14.30 C2.15.28 +C2.15.00 C2.15.02 C2.15.05 C2.15.06 +C2.15.01 C2.00.02 C2.00.06 C2.15.02 C2.15.06 +C2.15.02 C2.15.00 C2.15.01 C2.15.05 C2.15.06 +C2.15.03 C2.14.04 C2.15.04 C2.15.07 C2.15.08 +C2.15.04 C2.15.03 C2.15.05 C2.15.07 C2.15.08 C2.15.09 +C2.15.05 C2.15.00 C2.15.02 C2.15.04 C2.15.06 C2.15.08 C2.15.09 C2.15.10 +C2.15.06 C2.00.02 C2.00.06 C2.00.10 C2.15.00 C2.15.01 C2.15.02 C2.15.05 C2.15.09 C2.15.10 +C2.15.07 C2.14.04 C2.14.07 C2.14.10 C2.15.03 C2.15.04 C2.15.08 C2.15.11 +C2.15.08 C2.14.10 C2.15.03 C2.15.04 C2.15.05 C2.15.07 C2.15.09 C2.15.11 C2.15.12 +C2.15.09 C2.15.04 C2.15.05 C2.15.06 C2.15.08 C2.15.10 C2.15.11 C2.15.12 C2.15.13 +C2.15.10 C2.00.06 C2.00.10 C2.00.13 C2.15.05 C2.15.06 C2.15.09 C2.15.12 C2.15.13 +C2.15.11 C2.14.10 C2.14.13 C2.15.07 C2.15.08 C2.15.09 C2.15.12 C2.15.14 C2.15.15 +C2.15.12 C2.15.08 C2.15.09 C2.15.10 C2.15.11 C2.15.13 C2.15.14 C2.15.15 C2.15.16 +C2.15.13 C2.00.10 C2.00.13 C2.00.16 C2.15.09 C2.15.10 C2.15.12 C2.15.15 C2.15.16 +C2.15.14 C2.14.10 C2.14.13 C2.14.16 C2.15.11 C2.15.12 C2.15.15 C2.15.17 C2.15.18 +C2.15.15 C2.15.11 C2.15.12 C2.15.13 C2.15.14 C2.15.16 C2.15.17 C2.15.18 C2.15.19 +C2.15.16 C2.00.13 C2.00.16 C2.00.19 C2.15.12 C2.15.13 C2.15.15 C2.15.18 C2.15.19 +C2.15.17 C2.14.13 C2.14.16 C2.14.18 C2.14.20 C2.15.14 C2.15.15 C2.15.18 C2.15.20 +C2.15.18 C2.14.20 C2.15.14 C2.15.15 C2.15.16 C2.15.17 C2.15.19 C2.15.20 C2.15.21 +C2.15.19 C2.00.16 C2.00.19 C2.00.21 C2.15.15 C2.15.16 C2.15.18 C2.15.20 C2.15.21 +C2.15.20 C2.14.20 C2.14.22 C2.15.17 C2.15.18 C2.15.19 C2.15.21 C2.15.22 C2.15.23 +C2.15.21 C2.00.19 C2.00.21 C2.00.23 C2.15.18 C2.15.19 C2.15.20 C2.15.22 C2.15.23 +C2.15.22 C2.14.20 C2.14.22 C2.14.24 C2.15.20 C2.15.21 C2.15.23 C2.15.24 C2.15.25 +C2.15.23 C2.00.21 C2.00.23 C2.00.25 C2.15.20 C2.15.21 C2.15.22 C2.15.24 C2.15.25 +C2.15.24 C2.14.22 C2.14.24 C2.14.25 C2.14.26 C2.15.22 C2.15.23 C2.15.25 C2.15.26 +C2.15.25 C2.00.23 C2.00.25 C2.00.26 C2.14.26 C2.15.22 C2.15.23 C2.15.24 C2.15.26 +C2.15.26 C2.00.25 C2.00.26 C2.00.27 C2.14.26 C2.14.28 C2.15.24 C2.15.25 C2.15.27 +C2.15.27 C2.00.26 C2.00.27 C2.00.29 C2.14.26 C2.14.28 C2.14.30 C2.15.26 C2.15.28 C2.15.29 +C2.15.28 C2.14.28 C2.14.30 C2.14.31 C2.15.27 C2.15.29 +C2.15.29 C2.00.27 C2.00.29 C2.15.27 C2.15.28 +C3.00.00 C3.00.02 C3.00.03 C3.15.00 C3.15.03 +C3.00.01 C3.00.02 C3.00.04 C3.00.05 C3.01.00 C3.01.04 +C3.00.02 C3.00.00 C3.00.01 C3.00.03 C3.00.04 C3.00.05 C3.00.06 +C3.00.03 C3.00.00 C3.00.02 C3.00.05 C3.00.06 C3.15.00 C3.15.03 C3.15.06 +C3.00.04 C3.00.01 C3.00.02 C3.00.05 C3.00.07 C3.00.08 C3.01.04 C3.01.06 +C3.00.05 C3.00.01 C3.00.02 C3.00.03 C3.00.04 C3.00.06 C3.00.07 C3.00.08 C3.00.09 +C3.00.06 C3.00.02 C3.00.03 C3.00.05 C3.00.08 C3.00.09 C3.15.03 C3.15.06 C3.15.09 +C3.00.07 C3.00.04 C3.00.05 C3.00.08 C3.00.10 C3.01.04 C3.01.06 C3.01.08 C3.01.09 +C3.00.08 C3.00.04 C3.00.05 C3.00.06 C3.00.07 C3.00.09 C3.00.10 C3.00.11 C3.01.09 +C3.00.09 C3.00.05 C3.00.06 C3.00.08 C3.00.10 C3.00.11 C3.15.06 C3.15.09 C3.15.11 +C3.00.10 C3.00.07 C3.00.08 C3.00.09 C3.00.11 C3.00.12 C3.00.13 C3.01.09 C3.01.11 +C3.00.11 C3.00.08 C3.00.09 C3.00.10 C3.00.12 C3.00.13 C3.15.09 C3.15.11 C3.15.13 +C3.00.12 C3.00.10 C3.00.11 C3.00.13 C3.00.14 C3.01.09 C3.01.11 C3.01.12 C3.01.13 +C3.00.13 C3.00.10 C3.00.11 C3.00.12 C3.00.14 C3.01.13 C3.15.11 C3.15.13 C3.15.14 +C3.00.14 C3.00.12 C3.00.13 C3.00.15 C3.01.13 C3.01.15 C3.15.13 C3.15.14 C3.15.15 +C3.00.15 C3.00.14 C3.01.15 C3.15.14 C3.15.15 +C3.01.00 C3.00.01 C3.01.02 C3.01.04 +C3.01.01 C3.01.02 C3.01.03 C3.01.05 C3.02.00 +C3.01.02 C3.01.00 C3.01.01 C3.01.04 C3.01.05 C3.01.06 +C3.01.03 C3.01.01 C3.01.05 C3.01.07 C3.02.00 C3.02.03 C3.02.05 +C3.01.04 C3.00.01 C3.00.04 C3.00.07 C3.01.00 C3.01.02 C3.01.05 C3.01.06 +C3.01.05 C3.01.01 C3.01.02 C3.01.03 C3.01.04 C3.01.06 C3.01.07 C3.01.08 C3.02.05 +C3.01.06 C3.00.04 C3.00.07 C3.01.02 C3.01.04 C3.01.05 C3.01.07 C3.01.08 C3.01.09 +C3.01.07 C3.01.03 C3.01.05 C3.01.06 C3.01.08 C3.01.10 C3.02.05 C3.02.07 C3.02.09 +C3.01.08 C3.00.07 C3.01.05 C3.01.06 C3.01.07 C3.01.09 C3.01.10 C3.01.11 C3.02.09 +C3.01.09 C3.00.07 C3.00.08 C3.00.10 C3.00.12 C3.01.06 C3.01.08 C3.01.10 C3.01.11 +C3.01.10 C3.01.07 C3.01.08 C3.01.09 C3.01.11 C3.01.12 C3.02.09 C3.02.10 C3.02.11 +C3.01.11 C3.00.10 C3.00.12 C3.01.08 C3.01.09 C3.01.10 C3.01.12 C3.01.13 C3.02.11 +C3.01.12 C3.00.12 C3.01.10 C3.01.11 C3.01.13 C3.01.14 C3.02.11 C3.02.12 C3.02.13 +C3.01.13 C3.00.12 C3.00.13 C3.00.14 C3.01.11 C3.01.12 C3.01.14 C3.01.15 C3.02.13 +C3.01.14 C3.01.12 C3.01.13 C3.01.15 C3.02.13 C3.02.14 +C3.01.15 C3.00.14 C3.00.15 C3.01.13 C3.01.14 C3.02.14 +C3.02.00 C3.01.01 C3.01.03 C3.02.02 C3.02.03 C3.02.05 +C3.02.01 C3.02.02 C3.03.02 C3.03.05 +C3.02.02 C3.02.00 C3.02.01 C3.02.03 C3.02.04 C3.02.06 C3.03.05 +C3.02.03 C3.01.03 C3.02.00 C3.02.02 C3.02.04 C3.02.05 C3.02.07 +C3.02.04 C3.02.02 C3.02.03 C3.02.05 C3.02.06 C3.02.07 C3.02.08 C3.03.05 +C3.02.05 C3.01.03 C3.01.05 C3.01.07 C3.02.00 C3.02.03 C3.02.04 C3.02.07 C3.02.09 +C3.02.06 C3.02.02 C3.02.04 C3.02.07 C3.02.08 C3.03.05 C3.03.06 C3.03.08 C3.03.10 +C3.02.07 C3.01.07 C3.02.03 C3.02.04 C3.02.05 C3.02.06 C3.02.08 C3.02.09 C3.02.10 +C3.02.08 C3.02.04 C3.02.06 C3.02.07 C3.02.09 C3.02.10 C3.03.08 C3.03.10 C3.03.12 +C3.02.09 C3.01.07 C3.01.08 C3.01.10 C3.02.05 C3.02.07 C3.02.08 C3.02.10 C3.02.11 +C3.02.10 C3.01.10 C3.02.07 C3.02.08 C3.02.09 C3.02.11 C3.02.12 C3.03.10 C3.03.12 +C3.02.11 C3.01.10 C3.01.11 C3.01.12 C3.02.09 C3.02.10 C3.02.12 C3.02.13 C3.03.12 +C3.02.12 C3.01.12 C3.02.10 C3.02.11 C3.02.13 C3.03.12 C3.03.13 C3.03.14 C3.03.15 +C3.02.13 C3.01.12 C3.01.13 C3.01.14 C3.02.11 C3.02.12 C3.02.14 C3.02.15 C3.03.14 C3.03.15 +C3.02.14 C3.01.14 C3.01.15 C3.02.13 C3.02.15 +C3.02.15 C3.02.13 C3.02.14 C3.03.15 +C3.03.00 C3.03.01 C3.03.03 C3.03.04 +C3.03.01 C3.03.00 C3.03.04 C3.04.01 C3.04.04 +C3.03.02 C3.02.01 C3.03.03 C3.03.05 C3.03.06 +C3.03.03 C3.03.00 C3.03.02 C3.03.04 C3.03.05 C3.03.06 C3.03.07 +C3.03.04 C3.03.00 C3.03.01 C3.03.03 C3.03.06 C3.03.07 C3.04.01 C3.04.04 C3.04.07 +C3.03.05 C3.02.01 C3.02.02 C3.02.04 C3.02.06 C3.03.02 C3.03.03 C3.03.06 C3.03.08 +C3.03.06 C3.02.06 C3.03.02 C3.03.03 C3.03.04 C3.03.05 C3.03.07 C3.03.08 C3.03.09 +C3.03.07 C3.03.03 C3.03.04 C3.03.06 C3.03.08 C3.03.09 C3.04.04 C3.04.07 C3.04.09 +C3.03.08 C3.02.06 C3.02.08 C3.03.05 C3.03.06 C3.03.07 C3.03.09 C3.03.10 C3.03.11 +C3.03.09 C3.03.06 C3.03.07 C3.03.08 C3.03.10 C3.03.11 C3.04.07 C3.04.09 C3.04.11 +C3.03.10 C3.02.06 C3.02.08 C3.02.10 C3.03.08 C3.03.09 C3.03.11 C3.03.12 C3.03.13 +C3.03.11 C3.03.08 C3.03.09 C3.03.10 C3.03.12 C3.03.13 C3.04.09 C3.04.11 C3.04.13 +C3.03.12 C3.02.08 C3.02.10 C3.02.11 C3.02.12 C3.03.10 C3.03.11 C3.03.13 C3.03.14 +C3.03.13 C3.02.12 C3.03.10 C3.03.11 C3.03.12 C3.03.14 C3.04.11 C3.04.13 C3.04.14 +C3.03.14 C3.02.12 C3.02.13 C3.03.12 C3.03.13 C3.03.15 C3.04.13 C3.04.14 C3.04.15 +C3.03.15 C3.02.12 C3.02.13 C3.02.15 C3.03.14 C3.04.14 C3.04.15 +C3.04.00 C3.04.01 C3.04.03 C3.04.04 +C3.04.01 C3.03.01 C3.03.04 C3.04.00 C3.04.04 +C3.04.02 C3.04.03 C3.04.05 C3.04.06 C3.05.02 +C3.04.03 C3.04.00 C3.04.02 C3.04.04 C3.04.05 C3.04.06 C3.04.07 +C3.04.04 C3.03.01 C3.03.04 C3.03.07 C3.04.00 C3.04.01 C3.04.03 C3.04.06 C3.04.07 +C3.04.05 C3.04.02 C3.04.03 C3.04.06 C3.04.08 C3.05.02 C3.05.04 C3.05.06 +C3.04.06 C3.04.02 C3.04.03 C3.04.04 C3.04.05 C3.04.07 C3.04.08 C3.04.09 C3.05.06 +C3.04.07 C3.03.04 C3.03.07 C3.03.09 C3.04.03 C3.04.04 C3.04.06 C3.04.08 C3.04.09 +C3.04.08 C3.04.05 C3.04.06 C3.04.07 C3.04.09 C3.04.10 C3.04.11 C3.05.06 C3.05.08 +C3.04.09 C3.03.07 C3.03.09 C3.03.11 C3.04.06 C3.04.07 C3.04.08 C3.04.10 C3.04.11 +C3.04.10 C3.04.08 C3.04.09 C3.04.11 C3.04.12 C3.04.13 C3.05.06 C3.05.08 C3.05.10 +C3.04.11 C3.03.09 C3.03.11 C3.03.13 C3.04.08 C3.04.09 C3.04.10 C3.04.12 C3.04.13 +C3.04.12 C3.04.10 C3.04.11 C3.04.13 C3.04.14 C3.05.08 C3.05.10 C3.05.11 C3.05.12 +C3.04.13 C3.03.11 C3.03.13 C3.03.14 C3.04.10 C3.04.11 C3.04.12 C3.04.14 C3.05.12 +C3.04.14 C3.03.13 C3.03.14 C3.03.15 C3.04.12 C3.04.13 C3.04.15 C3.05.12 C3.05.13 +C3.04.15 C3.03.14 C3.03.15 C3.04.14 C3.05.12 C3.05.13 C3.05.14 +C3.05.00 C3.05.01 C3.05.03 C3.05.05 C3.06.00 C3.06.02 +C3.05.01 C3.05.00 C3.05.02 C3.05.03 C3.05.04 +C3.05.02 C3.04.02 C3.04.05 C3.05.01 C3.05.03 C3.05.04 C3.05.06 +C3.05.03 C3.05.00 C3.05.01 C3.05.02 C3.05.04 C3.05.05 C3.05.07 C3.06.02 +C3.05.04 C3.04.05 C3.05.01 C3.05.02 C3.05.03 C3.05.05 C3.05.06 C3.05.07 C3.05.08 +C3.05.05 C3.05.00 C3.05.03 C3.05.04 C3.05.07 C3.05.09 C3.06.02 C3.06.04 C3.06.06 +C3.05.06 C3.04.05 C3.04.06 C3.04.08 C3.04.10 C3.05.02 C3.05.04 C3.05.07 C3.05.08 +C3.05.07 C3.05.03 C3.05.04 C3.05.05 C3.05.06 C3.05.08 C3.05.09 C3.05.10 C3.06.06 +C3.05.08 C3.04.08 C3.04.10 C3.04.12 C3.05.04 C3.05.06 C3.05.07 C3.05.09 C3.05.10 +C3.05.09 C3.05.05 C3.05.07 C3.05.08 C3.05.10 C3.05.11 C3.06.06 C3.06.07 C3.06.09 +C3.05.10 C3.04.10 C3.04.12 C3.05.07 C3.05.08 C3.05.09 C3.05.11 C3.05.12 C3.06.09 +C3.05.11 C3.04.12 C3.05.09 C3.05.10 C3.05.12 C3.05.13 C3.06.09 C3.06.10 C3.06.11 +C3.05.12 C3.04.12 C3.04.13 C3.04.14 C3.04.15 C3.05.10 C3.05.11 C3.05.13 C3.06.11 +C3.05.13 C3.04.14 C3.04.15 C3.05.11 C3.05.12 C3.05.14 C3.06.11 C3.06.12 C3.06.13 +C3.05.14 C3.04.15 C3.05.13 C3.06.13 C3.06.15 +C3.06.00 C3.05.00 C3.06.01 C3.06.02 C3.06.04 +C3.06.01 C3.06.00 C3.06.03 C3.06.04 C3.06.05 C3.07.01 +C3.06.02 C3.05.00 C3.05.03 C3.05.05 C3.06.00 C3.06.04 C3.06.06 +C3.06.03 C3.06.01 C3.06.04 C3.06.05 C3.07.01 C3.07.04 C3.07.07 +C3.06.04 C3.05.05 C3.06.00 C3.06.01 C3.06.02 C3.06.03 C3.06.05 C3.06.06 C3.06.07 +C3.06.05 C3.06.01 C3.06.03 C3.06.04 C3.06.06 C3.06.07 C3.06.08 C3.07.04 C3.07.07 +C3.06.06 C3.05.05 C3.05.07 C3.05.09 C3.06.02 C3.06.04 C3.06.05 C3.06.07 C3.06.09 +C3.06.07 C3.05.09 C3.06.04 C3.06.05 C3.06.06 C3.06.08 C3.06.09 C3.06.10 C3.07.07 +C3.06.08 C3.06.05 C3.06.07 C3.06.09 C3.06.10 C3.07.07 C3.07.08 C3.07.10 C3.07.12 +C3.06.09 C3.05.09 C3.05.10 C3.05.11 C3.06.06 C3.06.07 C3.06.08 C3.06.10 C3.06.11 +C3.06.10 C3.05.11 C3.06.07 C3.06.08 C3.06.09 C3.06.11 C3.06.12 C3.07.10 C3.07.12 +C3.06.11 C3.05.11 C3.05.12 C3.05.13 C3.06.09 C3.06.10 C3.06.12 C3.06.13 C3.07.12 +C3.06.12 C3.05.13 C3.06.10 C3.06.11 C3.06.13 C3.06.14 C3.07.12 C3.07.13 C3.07.14 +C3.06.13 C3.05.13 C3.05.14 C3.06.11 C3.06.12 C3.06.14 C3.06.15 +C3.06.14 C3.06.12 C3.06.13 C3.06.15 C3.07.14 C3.07.15 +C3.06.15 C3.05.14 C3.06.13 C3.06.14 +C3.07.00 C3.07.02 C3.07.03 C3.08.00 C3.08.03 +C3.07.01 C3.06.01 C3.06.03 C3.07.02 C3.07.04 C3.07.05 +C3.07.02 C3.07.00 C3.07.01 C3.07.03 C3.07.04 C3.07.05 C3.07.06 +C3.07.03 C3.07.00 C3.07.02 C3.07.05 C3.07.06 C3.08.00 C3.08.03 C3.08.06 +C3.07.04 C3.06.03 C3.06.05 C3.07.01 C3.07.02 C3.07.05 C3.07.07 C3.07.08 +C3.07.05 C3.07.01 C3.07.02 C3.07.03 C3.07.04 C3.07.06 C3.07.07 C3.07.08 C3.07.09 +C3.07.06 C3.07.02 C3.07.03 C3.07.05 C3.07.08 C3.07.09 C3.08.03 C3.08.06 C3.08.09 +C3.07.07 C3.06.03 C3.06.05 C3.06.07 C3.06.08 C3.07.04 C3.07.05 C3.07.08 C3.07.10 +C3.07.08 C3.06.08 C3.07.04 C3.07.05 C3.07.06 C3.07.07 C3.07.09 C3.07.10 C3.07.11 +C3.07.09 C3.07.05 C3.07.06 C3.07.08 C3.07.10 C3.07.11 C3.08.06 C3.08.09 C3.08.11 +C3.07.10 C3.06.08 C3.06.10 C3.07.07 C3.07.08 C3.07.09 C3.07.11 C3.07.12 C3.07.13 +C3.07.11 C3.07.08 C3.07.09 C3.07.10 C3.07.12 C3.07.13 C3.08.09 C3.08.11 C3.08.13 +C3.07.12 C3.06.08 C3.06.10 C3.06.11 C3.06.12 C3.07.10 C3.07.11 C3.07.13 C3.07.14 +C3.07.13 C3.06.12 C3.07.10 C3.07.11 C3.07.12 C3.07.14 C3.08.11 C3.08.13 C3.08.14 +C3.07.14 C3.06.12 C3.06.14 C3.07.12 C3.07.13 C3.07.15 C3.08.13 C3.08.14 C3.08.15 +C3.07.15 C3.06.14 C3.07.14 C3.08.14 C3.08.15 +C3.08.00 C3.07.00 C3.07.03 C3.08.02 C3.08.03 +C3.08.01 C3.08.02 C3.08.04 C3.08.05 C3.09.00 C3.09.04 +C3.08.02 C3.08.00 C3.08.01 C3.08.03 C3.08.04 C3.08.05 C3.08.06 +C3.08.03 C3.07.00 C3.07.03 C3.07.06 C3.08.00 C3.08.02 C3.08.05 C3.08.06 +C3.08.04 C3.08.01 C3.08.02 C3.08.05 C3.08.07 C3.08.08 C3.09.04 C3.09.06 +C3.08.05 C3.08.01 C3.08.02 C3.08.03 C3.08.04 C3.08.06 C3.08.07 C3.08.08 C3.08.09 +C3.08.06 C3.07.03 C3.07.06 C3.07.09 C3.08.02 C3.08.03 C3.08.05 C3.08.08 C3.08.09 +C3.08.07 C3.08.04 C3.08.05 C3.08.08 C3.08.10 C3.09.04 C3.09.06 C3.09.08 C3.09.09 +C3.08.08 C3.08.04 C3.08.05 C3.08.06 C3.08.07 C3.08.09 C3.08.10 C3.08.11 C3.09.09 +C3.08.09 C3.07.06 C3.07.09 C3.07.11 C3.08.05 C3.08.06 C3.08.08 C3.08.10 C3.08.11 +C3.08.10 C3.08.07 C3.08.08 C3.08.09 C3.08.11 C3.08.12 C3.08.13 C3.09.09 C3.09.11 +C3.08.11 C3.07.09 C3.07.11 C3.07.13 C3.08.08 C3.08.09 C3.08.10 C3.08.12 C3.08.13 +C3.08.12 C3.08.10 C3.08.11 C3.08.13 C3.08.14 C3.09.09 C3.09.11 C3.09.12 C3.09.13 +C3.08.13 C3.07.11 C3.07.13 C3.07.14 C3.08.10 C3.08.11 C3.08.12 C3.08.14 C3.09.13 +C3.08.14 C3.07.13 C3.07.14 C3.07.15 C3.08.12 C3.08.13 C3.08.15 C3.09.13 C3.09.15 +C3.08.15 C3.07.14 C3.07.15 C3.08.14 C3.09.15 +C3.09.00 C3.08.01 C3.09.02 C3.09.04 +C3.09.01 C3.09.02 C3.09.03 C3.09.05 C3.10.00 +C3.09.02 C3.09.00 C3.09.01 C3.09.04 C3.09.05 C3.09.06 +C3.09.03 C3.09.01 C3.09.05 C3.09.07 C3.10.00 C3.10.03 C3.10.05 +C3.09.04 C3.08.01 C3.08.04 C3.08.07 C3.09.00 C3.09.02 C3.09.05 C3.09.06 +C3.09.05 C3.09.01 C3.09.02 C3.09.03 C3.09.04 C3.09.06 C3.09.07 C3.09.08 C3.10.05 +C3.09.06 C3.08.04 C3.08.07 C3.09.02 C3.09.04 C3.09.05 C3.09.07 C3.09.08 C3.09.09 +C3.09.07 C3.09.03 C3.09.05 C3.09.06 C3.09.08 C3.09.10 C3.10.05 C3.10.07 C3.10.09 +C3.09.08 C3.08.07 C3.09.05 C3.09.06 C3.09.07 C3.09.09 C3.09.10 C3.09.11 C3.10.09 +C3.09.09 C3.08.07 C3.08.08 C3.08.10 C3.08.12 C3.09.06 C3.09.08 C3.09.10 C3.09.11 +C3.09.10 C3.09.07 C3.09.08 C3.09.09 C3.09.11 C3.09.12 C3.10.09 C3.10.10 C3.10.11 +C3.09.11 C3.08.10 C3.08.12 C3.09.08 C3.09.09 C3.09.10 C3.09.12 C3.09.13 C3.10.11 +C3.09.12 C3.08.12 C3.09.10 C3.09.11 C3.09.13 C3.09.14 C3.10.11 C3.10.12 C3.10.13 +C3.09.13 C3.08.12 C3.08.13 C3.08.14 C3.09.11 C3.09.12 C3.09.14 C3.09.15 C3.10.13 +C3.09.14 C3.09.12 C3.09.13 C3.09.15 C3.10.13 C3.10.14 +C3.09.15 C3.08.14 C3.08.15 C3.09.13 C3.09.14 C3.10.14 +C3.10.00 C3.09.01 C3.09.03 C3.10.02 C3.10.03 C3.10.05 +C3.10.01 C3.10.02 C3.11.02 C3.11.05 +C3.10.02 C3.10.00 C3.10.01 C3.10.03 C3.10.04 C3.10.06 C3.11.05 +C3.10.03 C3.09.03 C3.10.00 C3.10.02 C3.10.04 C3.10.05 C3.10.07 +C3.10.04 C3.10.02 C3.10.03 C3.10.05 C3.10.06 C3.10.07 C3.10.08 C3.11.05 +C3.10.05 C3.09.03 C3.09.05 C3.09.07 C3.10.00 C3.10.03 C3.10.04 C3.10.07 C3.10.09 +C3.10.06 C3.10.02 C3.10.04 C3.10.07 C3.10.08 C3.11.05 C3.11.06 C3.11.08 C3.11.10 +C3.10.07 C3.09.07 C3.10.03 C3.10.04 C3.10.05 C3.10.06 C3.10.08 C3.10.09 C3.10.10 +C3.10.08 C3.10.04 C3.10.06 C3.10.07 C3.10.09 C3.10.10 C3.11.08 C3.11.10 C3.11.12 +C3.10.09 C3.09.07 C3.09.08 C3.09.10 C3.10.05 C3.10.07 C3.10.08 C3.10.10 C3.10.11 +C3.10.10 C3.09.10 C3.10.07 C3.10.08 C3.10.09 C3.10.11 C3.10.12 C3.11.10 C3.11.12 +C3.10.11 C3.09.10 C3.09.11 C3.09.12 C3.10.09 C3.10.10 C3.10.12 C3.10.13 C3.11.12 +C3.10.12 C3.09.12 C3.10.10 C3.10.11 C3.10.13 C3.11.12 C3.11.13 C3.11.14 C3.11.15 +C3.10.13 C3.09.12 C3.09.13 C3.09.14 C3.10.11 C3.10.12 C3.10.14 C3.10.15 C3.11.14 C3.11.15 +C3.10.14 C3.09.14 C3.09.15 C3.10.13 C3.10.15 +C3.10.15 C3.10.13 C3.10.14 C3.11.15 +C3.11.00 C3.11.01 C3.11.03 C3.11.04 +C3.11.01 C3.11.00 C3.11.04 C3.12.01 C3.12.04 +C3.11.02 C3.10.01 C3.11.03 C3.11.05 C3.11.06 +C3.11.03 C3.11.00 C3.11.02 C3.11.04 C3.11.05 C3.11.06 C3.11.07 +C3.11.04 C3.11.00 C3.11.01 C3.11.03 C3.11.06 C3.11.07 C3.12.01 C3.12.04 C3.12.07 +C3.11.05 C3.10.01 C3.10.02 C3.10.04 C3.10.06 C3.11.02 C3.11.03 C3.11.06 C3.11.08 +C3.11.06 C3.10.06 C3.11.02 C3.11.03 C3.11.04 C3.11.05 C3.11.07 C3.11.08 C3.11.09 +C3.11.07 C3.11.03 C3.11.04 C3.11.06 C3.11.08 C3.11.09 C3.12.04 C3.12.07 C3.12.09 +C3.11.08 C3.10.06 C3.10.08 C3.11.05 C3.11.06 C3.11.07 C3.11.09 C3.11.10 C3.11.11 +C3.11.09 C3.11.06 C3.11.07 C3.11.08 C3.11.10 C3.11.11 C3.12.07 C3.12.09 C3.12.11 +C3.11.10 C3.10.06 C3.10.08 C3.10.10 C3.11.08 C3.11.09 C3.11.11 C3.11.12 C3.11.13 +C3.11.11 C3.11.08 C3.11.09 C3.11.10 C3.11.12 C3.11.13 C3.12.09 C3.12.11 C3.12.13 +C3.11.12 C3.10.08 C3.10.10 C3.10.11 C3.10.12 C3.11.10 C3.11.11 C3.11.13 C3.11.14 +C3.11.13 C3.10.12 C3.11.10 C3.11.11 C3.11.12 C3.11.14 C3.12.11 C3.12.13 C3.12.14 +C3.11.14 C3.10.12 C3.10.13 C3.11.12 C3.11.13 C3.11.15 C3.12.13 C3.12.14 C3.12.15 +C3.11.15 C3.10.12 C3.10.13 C3.10.15 C3.11.14 C3.12.14 C3.12.15 +C3.12.00 C3.12.01 C3.12.03 C3.12.04 +C3.12.01 C3.11.01 C3.11.04 C3.12.00 C3.12.04 +C3.12.02 C3.12.03 C3.12.05 C3.12.06 C3.13.02 +C3.12.03 C3.12.00 C3.12.02 C3.12.04 C3.12.05 C3.12.06 C3.12.07 +C3.12.04 C3.11.01 C3.11.04 C3.11.07 C3.12.00 C3.12.01 C3.12.03 C3.12.06 C3.12.07 +C3.12.05 C3.12.02 C3.12.03 C3.12.06 C3.12.08 C3.13.02 C3.13.04 C3.13.06 +C3.12.06 C3.12.02 C3.12.03 C3.12.04 C3.12.05 C3.12.07 C3.12.08 C3.12.09 C3.13.06 +C3.12.07 C3.11.04 C3.11.07 C3.11.09 C3.12.03 C3.12.04 C3.12.06 C3.12.08 C3.12.09 +C3.12.08 C3.12.05 C3.12.06 C3.12.07 C3.12.09 C3.12.10 C3.12.11 C3.13.06 C3.13.08 +C3.12.09 C3.11.07 C3.11.09 C3.11.11 C3.12.06 C3.12.07 C3.12.08 C3.12.10 C3.12.11 +C3.12.10 C3.12.08 C3.12.09 C3.12.11 C3.12.12 C3.12.13 C3.13.06 C3.13.08 C3.13.10 +C3.12.11 C3.11.09 C3.11.11 C3.11.13 C3.12.08 C3.12.09 C3.12.10 C3.12.12 C3.12.13 +C3.12.12 C3.12.10 C3.12.11 C3.12.13 C3.12.14 C3.13.08 C3.13.10 C3.13.11 C3.13.12 +C3.12.13 C3.11.11 C3.11.13 C3.11.14 C3.12.10 C3.12.11 C3.12.12 C3.12.14 C3.13.12 +C3.12.14 C3.11.13 C3.11.14 C3.11.15 C3.12.12 C3.12.13 C3.12.15 C3.13.12 C3.13.13 +C3.12.15 C3.11.14 C3.11.15 C3.12.14 C3.13.12 C3.13.13 C3.13.14 +C3.13.00 C3.13.01 C3.13.03 C3.13.05 C3.14.00 C3.14.02 +C3.13.01 C3.13.00 C3.13.02 C3.13.03 C3.13.04 +C3.13.02 C3.12.02 C3.12.05 C3.13.01 C3.13.03 C3.13.04 C3.13.06 +C3.13.03 C3.13.00 C3.13.01 C3.13.02 C3.13.04 C3.13.05 C3.13.07 C3.14.02 +C3.13.04 C3.12.05 C3.13.01 C3.13.02 C3.13.03 C3.13.05 C3.13.06 C3.13.07 C3.13.08 +C3.13.05 C3.13.00 C3.13.03 C3.13.04 C3.13.07 C3.13.09 C3.14.02 C3.14.04 C3.14.06 +C3.13.06 C3.12.05 C3.12.06 C3.12.08 C3.12.10 C3.13.02 C3.13.04 C3.13.07 C3.13.08 +C3.13.07 C3.13.03 C3.13.04 C3.13.05 C3.13.06 C3.13.08 C3.13.09 C3.13.10 C3.14.06 +C3.13.08 C3.12.08 C3.12.10 C3.12.12 C3.13.04 C3.13.06 C3.13.07 C3.13.09 C3.13.10 +C3.13.09 C3.13.05 C3.13.07 C3.13.08 C3.13.10 C3.13.11 C3.14.06 C3.14.07 C3.14.09 +C3.13.10 C3.12.10 C3.12.12 C3.13.07 C3.13.08 C3.13.09 C3.13.11 C3.13.12 C3.14.09 +C3.13.11 C3.12.12 C3.13.09 C3.13.10 C3.13.12 C3.13.13 C3.14.09 C3.14.10 C3.14.11 +C3.13.12 C3.12.12 C3.12.13 C3.12.14 C3.12.15 C3.13.10 C3.13.11 C3.13.13 C3.14.11 +C3.13.13 C3.12.14 C3.12.15 C3.13.11 C3.13.12 C3.13.14 C3.14.11 C3.14.12 C3.14.13 +C3.13.14 C3.12.15 C3.13.13 C3.14.13 C3.14.15 +C3.14.00 C3.13.00 C3.14.01 C3.14.02 C3.14.04 +C3.14.01 C3.14.00 C3.14.03 C3.14.04 C3.14.05 C3.15.01 +C3.14.02 C3.13.00 C3.13.03 C3.13.05 C3.14.00 C3.14.04 C3.14.06 +C3.14.03 C3.14.01 C3.14.04 C3.14.05 C3.15.01 C3.15.04 C3.15.07 +C3.14.04 C3.13.05 C3.14.00 C3.14.01 C3.14.02 C3.14.03 C3.14.05 C3.14.06 C3.14.07 +C3.14.05 C3.14.01 C3.14.03 C3.14.04 C3.14.06 C3.14.07 C3.14.08 C3.15.04 C3.15.07 +C3.14.06 C3.13.05 C3.13.07 C3.13.09 C3.14.02 C3.14.04 C3.14.05 C3.14.07 C3.14.09 +C3.14.07 C3.13.09 C3.14.04 C3.14.05 C3.14.06 C3.14.08 C3.14.09 C3.14.10 C3.15.07 +C3.14.08 C3.14.05 C3.14.07 C3.14.09 C3.14.10 C3.15.07 C3.15.08 C3.15.10 C3.15.12 +C3.14.09 C3.13.09 C3.13.10 C3.13.11 C3.14.06 C3.14.07 C3.14.08 C3.14.10 C3.14.11 +C3.14.10 C3.13.11 C3.14.07 C3.14.08 C3.14.09 C3.14.11 C3.14.12 C3.15.10 C3.15.12 +C3.14.11 C3.13.11 C3.13.12 C3.13.13 C3.14.09 C3.14.10 C3.14.12 C3.14.13 C3.15.12 +C3.14.12 C3.13.13 C3.14.10 C3.14.11 C3.14.13 C3.14.14 C3.15.12 C3.15.13 C3.15.14 +C3.14.13 C3.13.13 C3.13.14 C3.14.11 C3.14.12 C3.14.14 C3.14.15 +C3.14.14 C3.14.12 C3.14.13 C3.14.15 C3.15.14 C3.15.15 +C3.14.15 C3.13.14 C3.14.13 C3.14.14 +C3.15.00 C3.00.00 C3.00.03 C3.15.02 C3.15.03 +C3.15.01 C3.14.01 C3.14.03 C3.15.02 C3.15.04 C3.15.05 +C3.15.02 C3.15.00 C3.15.01 C3.15.03 C3.15.04 C3.15.05 C3.15.06 +C3.15.03 C3.00.00 C3.00.03 C3.00.06 C3.15.00 C3.15.02 C3.15.05 C3.15.06 +C3.15.04 C3.14.03 C3.14.05 C3.15.01 C3.15.02 C3.15.05 C3.15.07 C3.15.08 +C3.15.05 C3.15.01 C3.15.02 C3.15.03 C3.15.04 C3.15.06 C3.15.07 C3.15.08 C3.15.09 +C3.15.06 C3.00.03 C3.00.06 C3.00.09 C3.15.02 C3.15.03 C3.15.05 C3.15.08 C3.15.09 +C3.15.07 C3.14.03 C3.14.05 C3.14.07 C3.14.08 C3.15.04 C3.15.05 C3.15.08 C3.15.10 +C3.15.08 C3.14.08 C3.15.04 C3.15.05 C3.15.06 C3.15.07 C3.15.09 C3.15.10 C3.15.11 +C3.15.09 C3.00.06 C3.00.09 C3.00.11 C3.15.05 C3.15.06 C3.15.08 C3.15.10 C3.15.11 +C3.15.10 C3.14.08 C3.14.10 C3.15.07 C3.15.08 C3.15.09 C3.15.11 C3.15.12 C3.15.13 +C3.15.11 C3.00.09 C3.00.11 C3.00.13 C3.15.08 C3.15.09 C3.15.10 C3.15.12 C3.15.13 +C3.15.12 C3.14.08 C3.14.10 C3.14.11 C3.14.12 C3.15.10 C3.15.11 C3.15.13 C3.15.14 +C3.15.13 C3.00.11 C3.00.13 C3.00.14 C3.14.12 C3.15.10 C3.15.11 C3.15.12 C3.15.14 +C3.15.14 C3.00.13 C3.00.14 C3.00.15 C3.14.12 C3.14.14 C3.15.12 C3.15.13 C3.15.15 +C3.15.15 C3.00.14 C3.00.15 C3.14.14 C3.15.14 diff --git a/Calorimeter/CaloIdentifier/share/FCal2DNeighbors.txt b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors.txt new file mode 100755 index 0000000000000000000000000000000000000000..901206acc8e1efb92487103f4ea2dc2502554082 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors.txt @@ -0,0 +1,3533 @@ +# 2D FCal Neighbors +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Mar 10 11:15:50 2004 +# +# 2d neighbors are all touching neighbors including corners. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# +A1.00.00 A1.00.07 A1.00.08 A1.01.05 +A1.00.01 A1.00.02 A1.00.11 A1.00.10 A1.00.06 A1.00.04 +A1.00.02 A1.15.01 A1.15.11 A1.00.12 A1.00.11 A1.00.01 +A1.00.03 A1.00.14 A1.00.13 A1.00.07 +A1.00.04 A1.00.01 A1.00.06 A1.00.09 A1.00.05 +A1.00.05 A1.00.04 A1.00.15 A1.00.09 A1.00.14 +A1.00.06 A1.00.01 A1.00.16 A1.00.10 A1.00.04 A1.00.15 A1.00.09 +A1.00.07 A1.00.19 A1.00.13 A1.00.03 A1.00.18 A1.01.13 A1.00.08 A1.00.00 +A1.00.08 A1.00.18 A1.00.07 A1.01.13 A1.00.00 A1.01.05 +A1.00.09 A1.00.16 A1.00.06 A1.00.04 A1.00.15 A1.00.05 +A1.00.10 A1.00.17 A1.00.11 A1.00.01 A1.00.16 A1.00.06 +A1.00.11 A1.00.17 A1.00.12 A1.00.02 A1.00.01 A1.00.16 A1.00.10 +A1.00.12 A1.15.16 A1.15.01 A1.15.11 A1.00.17 A1.00.02 A1.00.11 +A1.00.13 A1.00.20 A1.00.14 A1.00.19 A1.00.03 A1.00.18 A1.00.07 +A1.00.14 A1.00.21 A1.00.15 A1.00.05 A1.00.20 A1.00.19 A1.00.13 A1.00.03 +A1.00.15 A1.00.22 A1.00.16 A1.00.06 A1.00.21 A1.00.09 A1.00.05 A1.00.20 A1.00.14 +A1.00.16 A1.00.23 A1.00.17 A1.00.11 A1.00.22 A1.00.10 A1.00.06 A1.00.21 A1.00.15 A1.00.09 +A1.00.17 A1.15.22 A1.15.16 A1.15.11 A1.00.23 A1.00.12 A1.00.11 A1.00.22 A1.00.16 A1.00.10 +A1.00.18 A1.00.24 A1.00.19 A1.00.13 A1.01.21 A1.00.07 A1.01.19 A1.01.13 A1.00.08 +A1.00.19 A1.00.25 A1.00.20 A1.00.14 A1.00.24 A1.00.13 A1.01.21 A1.00.18 A1.00.07 +A1.00.20 A1.00.26 A1.00.21 A1.00.15 A1.00.25 A1.00.14 A1.00.24 A1.00.19 A1.00.13 +A1.00.21 A1.00.27 A1.00.22 A1.00.16 A1.00.26 A1.00.15 A1.00.25 A1.00.20 A1.00.14 +A1.00.22 A1.00.28 A1.00.23 A1.00.17 A1.00.27 A1.00.16 A1.00.26 A1.00.21 A1.00.15 +A1.00.23 A1.15.27 A1.15.22 A1.15.16 A1.00.28 A1.00.17 A1.00.27 A1.00.22 A1.00.16 +A1.00.24 A1.00.30 A1.00.25 A1.00.20 A1.00.29 A1.00.19 A1.01.26 A1.01.21 A1.00.18 +A1.00.25 A1.00.31 A1.00.26 A1.00.21 A1.00.30 A1.00.20 A1.00.29 A1.00.24 A1.00.19 +A1.00.26 A1.00.32 A1.00.27 A1.00.22 A1.00.31 A1.00.21 A1.00.30 A1.00.25 A1.00.20 +A1.00.27 A1.00.33 A1.00.28 A1.00.23 A1.00.32 A1.00.22 A1.00.31 A1.00.26 A1.00.21 +A1.00.28 A1.15.32 A1.15.27 A1.15.22 A1.00.33 A1.00.23 A1.00.32 A1.00.27 A1.00.22 +A1.00.29 A1.00.34 A1.00.30 A1.00.25 A1.01.33 A1.00.24 A1.01.31 A1.01.26 A1.01.21 +A1.00.30 A1.00.35 A1.00.31 A1.00.26 A1.00.34 A1.00.25 A1.01.33 A1.00.29 A1.00.24 +A1.00.31 A1.00.36 A1.00.32 A1.00.27 A1.00.35 A1.00.26 A1.00.34 A1.00.30 A1.00.25 +A1.00.32 A1.00.37 A1.00.33 A1.00.28 A1.00.36 A1.00.27 A1.00.35 A1.00.31 A1.00.26 +A1.00.33 A1.15.36 A1.15.32 A1.15.27 A1.00.37 A1.00.28 A1.00.36 A1.00.32 A1.00.27 +A1.00.34 A1.00.39 A1.00.35 A1.00.31 A1.00.38 A1.00.30 A1.01.38 A1.01.33 A1.00.29 +A1.00.35 A1.00.40 A1.00.36 A1.00.32 A1.00.39 A1.00.31 A1.00.38 A1.00.34 A1.00.30 +A1.00.36 A1.00.41 A1.00.37 A1.00.33 A1.00.40 A1.00.32 A1.00.39 A1.00.35 A1.00.31 +A1.00.37 A1.15.40 A1.15.36 A1.15.32 A1.00.41 A1.00.33 A1.00.40 A1.00.36 A1.00.32 +A1.00.38 A1.00.43 A1.00.39 A1.00.35 A1.00.42 A1.00.34 A1.01.41 A1.01.38 A1.01.33 +A1.00.39 A1.00.44 A1.00.40 A1.00.36 A1.00.43 A1.00.35 A1.00.42 A1.00.38 A1.00.34 +A1.00.40 A1.00.45 A1.00.41 A1.00.37 A1.00.44 A1.00.36 A1.00.43 A1.00.39 A1.00.35 +A1.00.41 A1.15.44 A1.15.40 A1.15.36 A1.00.45 A1.00.37 A1.00.44 A1.00.40 A1.00.36 +A1.00.42 A1.00.46 A1.00.43 A1.00.39 A1.01.45 A1.00.38 A1.01.43 A1.01.41 A1.01.38 +A1.00.43 A1.00.47 A1.00.44 A1.00.40 A1.00.46 A1.00.39 A1.01.45 A1.00.42 A1.00.38 +A1.00.44 A1.00.48 A1.00.45 A1.00.41 A1.00.47 A1.00.40 A1.00.46 A1.00.43 A1.00.39 +A1.00.45 A1.15.47 A1.15.44 A1.15.40 A1.00.48 A1.00.41 A1.00.47 A1.00.44 A1.00.40 +A1.00.46 A1.00.50 A1.00.47 A1.00.44 A1.00.49 A1.00.43 A1.01.47 A1.01.45 A1.00.42 +A1.00.47 A1.00.51 A1.00.48 A1.00.45 A1.00.50 A1.00.44 A1.00.49 A1.00.46 A1.00.43 +A1.00.48 A1.15.50 A1.15.47 A1.15.44 A1.00.51 A1.00.45 A1.00.50 A1.00.47 A1.00.44 +A1.00.49 A1.00.52 A1.00.50 A1.00.47 A1.01.50 A1.00.46 A1.01.49 A1.01.47 A1.01.45 +A1.00.50 A1.00.53 A1.00.51 A1.00.48 A1.00.52 A1.00.47 A1.01.50 A1.00.49 A1.00.46 +A1.00.51 A1.15.52 A1.15.50 A1.15.47 A1.00.53 A1.00.48 A1.00.52 A1.00.50 A1.00.47 +A1.00.52 A1.00.53 A1.00.51 A1.00.55 A1.00.54 A1.00.50 A1.01.54 A1.01.53 A1.01.50 A1.00.49 +A1.00.53 A1.15.52 A1.15.50 A1.15.56 A1.00.56 A1.00.51 A1.00.55 A1.00.54 A1.00.52 A1.00.50 +A1.00.54 A1.00.53 A1.00.58 A1.00.55 A1.00.57 A1.00.52 A1.01.58 A1.01.54 +A1.00.55 A1.00.59 A1.00.56 A1.00.53 A1.00.58 A1.00.57 A1.00.54 A1.00.52 +A1.00.56 A1.15.52 A1.15.59 A1.15.56 A1.00.59 A1.00.53 A1.00.58 A1.00.55 +A1.00.57 A1.00.61 A1.00.58 A1.00.55 A1.00.60 A1.00.54 A1.01.60 A1.01.58 A1.01.54 +A1.00.58 A1.00.62 A1.00.59 A1.00.56 A1.00.61 A1.00.55 A1.00.60 A1.00.57 A1.00.54 +A1.00.59 A1.15.62 A1.15.59 A1.15.56 A1.00.62 A1.00.56 A1.00.61 A1.00.58 A1.00.55 +A1.00.60 A1.00.61 A1.00.58 A1.00.57 A1.01.62 A1.01.60 A1.01.58 +A1.00.61 A1.00.62 A1.00.59 A1.00.58 A1.00.60 A1.00.57 +A1.00.62 A1.15.62 A1.15.59 A1.00.59 A1.00.61 A1.00.58 +A1.01.00 A1.01.11 A1.01.02 A1.01.03 +A1.01.01 A1.01.12 A1.01.08 A1.01.04 A1.01.06 +A1.01.02 A1.01.13 A1.01.05 A1.01.11 A1.01.00 +A1.01.03 A1.01.11 A1.01.00 A1.01.09 A1.01.07 +A1.01.04 A1.01.10 A1.01.08 A1.01.01 +A1.01.05 A1.01.13 A1.00.08 A1.00.00 A1.01.11 A1.01.02 +A1.01.06 A1.01.17 A1.01.12 A1.01.01 A1.02.11 A1.02.06 +A1.01.07 A1.01.14 A1.01.09 A1.01.03 A1.01.10 +A1.01.08 A1.01.15 A1.01.10 A1.01.12 A1.01.04 A1.01.01 +A1.01.09 A1.01.16 A1.01.11 A1.01.14 A1.01.03 A1.01.07 +A1.01.10 A1.01.18 A1.01.14 A1.01.07 A1.01.15 A1.01.12 A1.01.08 A1.01.04 +A1.01.11 A1.01.19 A1.01.13 A1.01.05 A1.01.16 A1.01.02 A1.01.00 A1.01.14 A1.01.09 A1.01.03 +A1.01.12 A1.01.20 A1.01.15 A1.01.10 A1.01.17 A1.01.08 A1.01.01 A1.02.11 A1.01.06 +A1.01.13 A1.01.21 A1.00.18 A1.00.07 A1.01.19 A1.00.08 A1.01.05 A1.01.16 A1.01.11 A1.01.02 +A1.01.14 A1.01.22 A1.01.16 A1.01.11 A1.01.18 A1.01.09 A1.01.07 A1.01.15 A1.01.10 +A1.01.15 A1.01.23 A1.01.18 A1.01.14 A1.01.20 A1.01.10 A1.01.17 A1.01.12 A1.01.08 +A1.01.16 A1.01.24 A1.01.19 A1.01.13 A1.01.22 A1.01.11 A1.01.18 A1.01.14 A1.01.09 +A1.01.17 A1.01.25 A1.01.20 A1.01.15 A1.02.20 A1.01.12 A1.02.16 A1.02.11 A1.01.06 +A1.01.18 A1.01.27 A1.01.22 A1.01.16 A1.01.23 A1.01.14 A1.01.20 A1.01.15 A1.01.10 +A1.01.19 A1.01.26 A1.01.21 A1.00.18 A1.01.24 A1.01.13 A1.01.22 A1.01.16 A1.01.11 +A1.01.20 A1.01.28 A1.01.23 A1.01.18 A1.01.25 A1.01.15 A1.02.20 A1.01.17 A1.01.12 +A1.01.21 A1.00.29 A1.00.24 A1.00.19 A1.01.26 A1.00.18 A1.01.24 A1.01.19 A1.01.13 +A1.01.22 A1.01.29 A1.01.24 A1.01.19 A1.01.27 A1.01.16 A1.01.23 A1.01.18 A1.01.14 +A1.01.23 A1.01.30 A1.01.27 A1.01.22 A1.01.28 A1.01.18 A1.01.25 A1.01.20 A1.01.15 +A1.01.24 A1.01.31 A1.01.26 A1.01.21 A1.01.29 A1.01.19 A1.01.27 A1.01.22 A1.01.16 +A1.01.25 A1.01.32 A1.01.28 A1.01.23 A1.02.27 A1.01.20 A1.02.23 A1.02.20 A1.01.17 +A1.01.26 A1.01.33 A1.00.29 A1.00.24 A1.01.31 A1.01.21 A1.01.29 A1.01.24 A1.01.19 +A1.01.27 A1.01.34 A1.01.29 A1.01.24 A1.01.30 A1.01.22 A1.01.28 A1.01.23 A1.01.18 +A1.01.28 A1.01.35 A1.01.30 A1.01.27 A1.01.32 A1.01.23 A1.02.27 A1.01.25 A1.01.20 +A1.01.29 A1.01.36 A1.01.31 A1.01.26 A1.01.34 A1.01.24 A1.01.30 A1.01.27 A1.01.22 +A1.01.30 A1.01.37 A1.01.34 A1.01.29 A1.01.35 A1.01.27 A1.01.32 A1.01.28 A1.01.23 +A1.01.31 A1.01.38 A1.01.33 A1.00.29 A1.01.36 A1.01.26 A1.01.34 A1.01.29 A1.01.24 +A1.01.32 A1.02.35 A1.01.35 A1.01.30 A1.02.33 A1.01.28 A1.02.30 A1.02.27 A1.01.25 +A1.01.33 A1.00.38 A1.00.34 A1.00.30 A1.01.38 A1.00.29 A1.01.36 A1.01.31 A1.01.26 +A1.01.34 A1.01.39 A1.01.36 A1.01.31 A1.01.37 A1.01.29 A1.01.35 A1.01.30 A1.01.27 +A1.01.35 A1.01.40 A1.01.37 A1.01.34 A1.02.35 A1.01.30 A1.02.33 A1.01.32 A1.01.28 +A1.01.36 A1.01.41 A1.01.38 A1.01.33 A1.01.39 A1.01.31 A1.01.37 A1.01.34 A1.01.29 +A1.01.37 A1.01.42 A1.01.39 A1.01.36 A1.01.40 A1.01.34 A1.02.35 A1.01.35 A1.01.30 +A1.01.38 A1.00.42 A1.00.38 A1.00.34 A1.01.41 A1.01.33 A1.01.39 A1.01.36 A1.01.31 +A1.01.39 A1.01.43 A1.01.41 A1.01.38 A1.01.42 A1.01.36 A1.01.40 A1.01.37 A1.01.34 +A1.01.40 A1.01.44 A1.01.42 A1.01.39 A1.02.42 A1.01.37 A1.02.39 A1.02.35 A1.01.35 +A1.01.41 A1.01.45 A1.00.42 A1.00.38 A1.01.43 A1.01.38 A1.01.42 A1.01.39 A1.01.36 +A1.01.42 A1.01.46 A1.01.43 A1.01.41 A1.01.44 A1.01.39 A1.02.42 A1.01.40 A1.01.37 +A1.01.43 A1.01.47 A1.01.45 A1.00.42 A1.01.46 A1.01.41 A1.01.44 A1.01.42 A1.01.39 +A1.01.44 A1.01.48 A1.01.46 A1.01.43 A1.02.46 A1.01.42 A1.02.44 A1.02.42 A1.01.40 +A1.01.45 A1.00.49 A1.00.46 A1.00.43 A1.01.47 A1.00.42 A1.01.46 A1.01.43 A1.01.41 +A1.01.46 A1.01.49 A1.01.47 A1.01.45 A1.01.48 A1.01.43 A1.02.46 A1.01.44 A1.01.42 +A1.01.47 A1.01.50 A1.00.49 A1.00.46 A1.01.49 A1.01.45 A1.01.48 A1.01.46 A1.01.43 +A1.01.48 A1.01.51 A1.01.49 A1.01.47 A1.02.50 A1.01.46 A1.02.48 A1.02.46 A1.01.44 +A1.01.49 A1.01.50 A1.00.49 A1.01.52 A1.01.51 A1.01.47 A1.02.50 A1.01.48 A1.01.46 +A1.01.50 A1.00.52 A1.00.50 A1.01.54 A1.01.53 A1.00.49 A1.01.52 A1.01.51 A1.01.49 A1.01.47 +A1.01.51 A1.01.50 A1.01.57 A1.01.55 A1.01.52 A1.02.54 A1.01.49 A1.02.52 A1.02.51 A1.02.50 A1.01.48 +A1.01.52 A1.01.56 A1.01.53 A1.01.50 A1.01.55 A1.01.51 A1.01.49 +A1.01.53 A1.00.52 A1.01.58 A1.01.54 A1.01.56 A1.01.50 A1.01.55 A1.01.52 +A1.01.54 A1.00.57 A1.00.54 A1.00.52 A1.01.58 A1.01.56 A1.01.53 A1.01.50 +A1.01.55 A1.01.59 A1.01.56 A1.01.53 A1.01.57 A1.01.52 A1.02.54 A1.01.51 +A1.01.56 A1.01.60 A1.01.58 A1.01.54 A1.01.59 A1.01.53 A1.01.57 A1.01.55 A1.01.52 +A1.01.57 A1.01.61 A1.01.59 A1.01.56 A1.02.58 A1.01.55 A1.02.56 A1.02.54 A1.01.51 +A1.01.58 A1.00.60 A1.00.57 A1.00.54 A1.01.60 A1.01.54 A1.01.59 A1.01.56 A1.01.53 +A1.01.59 A1.01.62 A1.01.60 A1.01.58 A1.01.61 A1.01.56 A1.02.58 A1.01.57 A1.01.55 +A1.01.60 A1.00.60 A1.00.57 A1.01.62 A1.01.58 A1.01.61 A1.01.59 A1.01.56 +A1.01.61 A1.01.62 A1.01.60 A1.02.61 A1.01.59 A1.02.60 A1.02.58 A1.01.57 +A1.01.62 A1.00.60 A1.01.60 A1.02.61 A1.01.61 A1.01.59 +A1.02.00 A1.02.09 A1.02.05 A1.02.02 +A1.02.01 A1.02.12 A1.02.06 A1.02.03 +A1.02.02 A1.02.13 A1.02.09 A1.02.00 A1.03.04 +A1.02.03 A1.02.12 A1.02.06 A1.02.08 A1.02.01 A1.02.07 +A1.02.04 A1.02.10 A1.02.07 A1.02.05 +A1.02.05 A1.02.14 A1.02.10 A1.02.09 A1.02.04 A1.02.00 +A1.02.06 A1.02.16 A1.02.11 A1.01.06 A1.02.12 A1.02.03 A1.02.01 +A1.02.07 A1.02.10 A1.02.08 A1.02.03 A1.02.04 +A1.02.08 A1.02.15 A1.02.12 A1.02.10 A1.02.03 A1.02.07 +A1.02.09 A1.02.17 A1.02.14 A1.02.10 A1.02.13 A1.02.05 A1.02.00 A1.03.04 A1.02.02 +A1.02.10 A1.02.18 A1.02.15 A1.02.12 A1.02.14 A1.02.08 A1.02.07 A1.02.09 A1.02.05 A1.02.04 +A1.02.11 A1.02.20 A1.01.17 A1.01.12 A1.02.16 A1.01.06 A1.02.12 A1.02.06 +A1.02.12 A1.02.19 A1.02.16 A1.02.11 A1.02.15 A1.02.06 A1.02.10 A1.02.08 A1.02.03 A1.02.01 +A1.02.13 A1.03.20 A1.02.17 A1.02.14 A1.03.15 A1.02.09 A1.03.10 A1.03.04 A1.02.02 +A1.02.14 A1.02.21 A1.02.18 A1.02.15 A1.02.17 A1.02.10 A1.02.13 A1.02.09 A1.02.05 +A1.02.15 A1.02.22 A1.02.19 A1.02.16 A1.02.18 A1.02.12 A1.02.14 A1.02.10 A1.02.08 +A1.02.16 A1.02.23 A1.02.20 A1.01.17 A1.02.19 A1.02.11 A1.02.15 A1.02.12 A1.02.06 +A1.02.17 A1.02.24 A1.02.21 A1.02.18 A1.03.20 A1.02.14 A1.03.15 A1.02.13 A1.02.09 +A1.02.18 A1.02.25 A1.02.22 A1.02.19 A1.02.21 A1.02.15 A1.02.17 A1.02.14 A1.02.10 +A1.02.19 A1.02.26 A1.02.23 A1.02.20 A1.02.22 A1.02.16 A1.02.18 A1.02.15 A1.02.12 +A1.02.20 A1.02.27 A1.01.25 A1.01.20 A1.02.23 A1.01.17 A1.02.19 A1.02.16 A1.02.11 +A1.02.21 A1.02.28 A1.02.25 A1.02.22 A1.02.24 A1.02.18 A1.03.20 A1.02.17 A1.02.14 +A1.02.22 A1.02.29 A1.02.26 A1.02.23 A1.02.25 A1.02.19 A1.02.21 A1.02.18 A1.02.15 +A1.02.23 A1.02.30 A1.02.27 A1.01.25 A1.02.26 A1.02.20 A1.02.22 A1.02.19 A1.02.16 +A1.02.24 A1.03.29 A1.02.28 A1.02.25 A1.03.25 A1.02.21 A1.03.21 A1.03.20 A1.02.17 +A1.02.25 A1.02.31 A1.02.29 A1.02.26 A1.02.28 A1.02.22 A1.02.24 A1.02.21 A1.02.18 +A1.02.26 A1.02.32 A1.02.30 A1.02.27 A1.02.29 A1.02.23 A1.02.25 A1.02.22 A1.02.19 +A1.02.27 A1.02.33 A1.01.32 A1.01.28 A1.02.30 A1.01.25 A1.02.26 A1.02.23 A1.02.20 +A1.02.28 A1.03.33 A1.02.31 A1.02.29 A1.03.29 A1.02.25 A1.03.25 A1.02.24 A1.02.21 +A1.02.29 A1.02.34 A1.02.32 A1.02.30 A1.02.31 A1.02.26 A1.02.28 A1.02.25 A1.02.22 +A1.02.30 A1.02.36 A1.02.33 A1.01.32 A1.02.32 A1.02.27 A1.02.29 A1.02.26 A1.02.23 +A1.02.31 A1.02.37 A1.02.34 A1.02.32 A1.03.33 A1.02.29 A1.03.29 A1.02.28 A1.02.25 +A1.02.32 A1.02.38 A1.02.36 A1.02.33 A1.02.34 A1.02.30 A1.02.31 A1.02.29 A1.02.26 +A1.02.33 A1.02.39 A1.02.35 A1.01.35 A1.02.36 A1.01.32 A1.02.32 A1.02.30 A1.02.27 +A1.02.34 A1.02.40 A1.02.38 A1.02.36 A1.02.37 A1.02.32 A1.03.33 A1.02.31 A1.02.29 +A1.02.35 A1.02.42 A1.01.40 A1.01.37 A1.02.39 A1.01.35 A1.02.36 A1.02.33 A1.01.32 +A1.02.36 A1.02.41 A1.02.39 A1.02.35 A1.02.38 A1.02.33 A1.02.34 A1.02.32 A1.02.30 +A1.02.37 A1.03.40 A1.02.40 A1.02.38 A1.03.37 A1.02.34 A1.03.34 A1.03.33 A1.02.31 +A1.02.38 A1.02.43 A1.02.41 A1.02.39 A1.02.40 A1.02.36 A1.02.37 A1.02.34 A1.02.32 +A1.02.39 A1.02.44 A1.02.42 A1.01.40 A1.02.41 A1.02.35 A1.02.38 A1.02.36 A1.02.33 +A1.02.40 A1.03.43 A1.02.43 A1.02.41 A1.03.40 A1.02.38 A1.03.37 A1.02.37 A1.02.34 +A1.02.41 A1.02.45 A1.02.44 A1.02.42 A1.02.43 A1.02.39 A1.02.40 A1.02.38 A1.02.36 +A1.02.42 A1.02.46 A1.01.44 A1.01.42 A1.02.44 A1.01.40 A1.02.41 A1.02.39 A1.02.35 +A1.02.43 A1.02.47 A1.02.45 A1.02.44 A1.03.43 A1.02.41 A1.03.40 A1.02.40 A1.02.38 +A1.02.44 A1.02.48 A1.02.46 A1.01.44 A1.02.45 A1.02.42 A1.02.43 A1.02.41 A1.02.39 +A1.02.45 A1.02.49 A1.02.48 A1.02.46 A1.02.47 A1.02.44 A1.03.43 A1.02.43 A1.02.41 +A1.02.46 A1.02.50 A1.01.48 A1.01.46 A1.02.48 A1.01.44 A1.02.45 A1.02.44 A1.02.42 +A1.02.47 A1.03.48 A1.02.49 A1.02.48 A1.03.46 A1.02.45 A1.03.44 A1.03.43 A1.02.43 +A1.02.48 A1.02.51 A1.02.50 A1.01.48 A1.02.49 A1.02.46 A1.02.47 A1.02.45 A1.02.44 +A1.02.49 A1.02.51 A1.02.50 A1.03.50 A1.03.48 A1.02.48 A1.03.46 A1.02.47 A1.02.45 +A1.02.50 A1.01.51 A1.01.49 A1.02.52 A1.02.51 A1.01.48 A1.02.49 A1.02.48 A1.02.46 +A1.02.51 A1.01.51 A1.02.55 A1.02.53 A1.02.52 A1.03.54 A1.02.50 A1.03.50 A1.03.48 A1.02.49 A1.02.48 +A1.02.52 A1.02.56 A1.02.54 A1.01.51 A1.02.53 A1.02.51 A1.02.50 +A1.02.53 A1.02.57 A1.02.56 A1.02.54 A1.02.55 A1.02.52 A1.03.54 A1.02.51 +A1.02.54 A1.02.58 A1.01.57 A1.01.55 A1.02.56 A1.01.51 A1.02.53 A1.02.52 +A1.02.55 A1.02.59 A1.02.57 A1.02.56 A1.03.58 A1.02.53 A1.03.55 A1.03.54 A1.02.51 +A1.02.56 A1.02.60 A1.02.58 A1.01.57 A1.02.57 A1.02.54 A1.02.55 A1.02.53 A1.02.52 +A1.02.57 A1.02.60 A1.02.58 A1.02.59 A1.02.56 A1.03.58 A1.02.55 A1.02.53 +A1.02.58 A1.02.61 A1.01.61 A1.01.59 A1.02.60 A1.01.57 A1.02.57 A1.02.56 A1.02.54 +A1.02.59 A1.02.62 A1.02.60 A1.03.61 A1.02.57 A1.03.59 A1.03.58 A1.02.55 +A1.02.60 A1.02.61 A1.01.61 A1.02.62 A1.02.58 A1.02.59 A1.02.57 A1.02.56 +A1.02.61 A1.01.62 A1.01.61 A1.02.62 A1.02.60 A1.02.58 +A1.02.62 A1.02.61 A1.02.60 A1.03.62 A1.03.61 A1.02.59 +A1.03.00 A1.04.07 A1.03.08 A1.03.06 A1.04.00 +A1.03.01 A1.03.10 A1.03.04 A1.03.02 +A1.03.02 A1.03.11 A1.03.10 A1.03.03 A1.03.01 +A1.03.03 A1.03.11 A1.03.10 A1.03.05 A1.03.02 +A1.03.04 A1.03.15 A1.02.13 A1.02.09 A1.03.10 A1.02.02 A1.03.01 +A1.03.05 A1.03.12 A1.03.11 A1.03.07 A1.03.03 +A1.03.06 A1.03.14 A1.03.13 A1.03.12 A1.03.08 A1.03.09 A1.03.00 +A1.03.07 A1.03.12 A1.03.11 A1.03.09 A1.03.05 +A1.03.08 A1.04.14 A1.03.14 A1.03.13 A1.04.07 A1.03.06 A1.04.00 A1.03.00 +A1.03.09 A1.03.13 A1.03.12 A1.03.06 A1.03.07 +A1.03.10 A1.03.16 A1.03.15 A1.02.13 A1.03.11 A1.03.04 A1.03.03 A1.03.02 A1.03.01 +A1.03.11 A1.03.17 A1.03.16 A1.03.15 A1.03.12 A1.03.10 A1.03.07 A1.03.05 A1.03.03 A1.03.02 +A1.03.12 A1.03.18 A1.03.17 A1.03.16 A1.03.13 A1.03.11 A1.03.06 A1.03.09 A1.03.07 A1.03.05 +A1.03.13 A1.03.19 A1.03.18 A1.03.17 A1.03.14 A1.03.12 A1.03.08 A1.03.06 A1.03.09 +A1.03.14 A1.04.19 A1.03.19 A1.03.18 A1.04.14 A1.03.13 A1.04.07 A1.03.08 A1.03.06 +A1.03.15 A1.03.21 A1.03.20 A1.02.17 A1.03.16 A1.02.13 A1.03.11 A1.03.10 A1.03.04 +A1.03.16 A1.03.22 A1.03.21 A1.03.20 A1.03.17 A1.03.15 A1.03.12 A1.03.11 A1.03.10 +A1.03.17 A1.03.23 A1.03.22 A1.03.21 A1.03.18 A1.03.16 A1.03.13 A1.03.12 A1.03.11 +A1.03.18 A1.03.24 A1.03.23 A1.03.22 A1.03.19 A1.03.17 A1.03.14 A1.03.13 A1.03.12 +A1.03.19 A1.04.24 A1.03.24 A1.03.23 A1.04.19 A1.03.18 A1.04.14 A1.03.14 A1.03.13 +A1.03.20 A1.03.25 A1.02.24 A1.02.21 A1.03.21 A1.02.17 A1.03.16 A1.03.15 A1.02.13 +A1.03.21 A1.03.26 A1.03.25 A1.02.24 A1.03.22 A1.03.20 A1.03.17 A1.03.16 A1.03.15 +A1.03.22 A1.03.27 A1.03.26 A1.03.25 A1.03.23 A1.03.21 A1.03.18 A1.03.17 A1.03.16 +A1.03.23 A1.03.28 A1.03.27 A1.03.26 A1.03.24 A1.03.22 A1.03.19 A1.03.18 A1.03.17 +A1.03.24 A1.04.28 A1.03.28 A1.03.27 A1.04.24 A1.03.23 A1.04.19 A1.03.19 A1.03.18 +A1.03.25 A1.03.30 A1.03.29 A1.02.28 A1.03.26 A1.02.24 A1.03.22 A1.03.21 A1.03.20 +A1.03.26 A1.03.31 A1.03.30 A1.03.29 A1.03.27 A1.03.25 A1.03.23 A1.03.22 A1.03.21 +A1.03.27 A1.03.32 A1.03.31 A1.03.30 A1.03.28 A1.03.26 A1.03.24 A1.03.23 A1.03.22 +A1.03.28 A1.04.32 A1.03.32 A1.03.31 A1.04.28 A1.03.27 A1.04.24 A1.03.24 A1.03.23 +A1.03.29 A1.03.34 A1.03.33 A1.02.31 A1.03.30 A1.02.28 A1.03.26 A1.03.25 A1.02.24 +A1.03.30 A1.03.35 A1.03.34 A1.03.33 A1.03.31 A1.03.29 A1.03.27 A1.03.26 A1.03.25 +A1.03.31 A1.03.36 A1.03.35 A1.03.34 A1.03.32 A1.03.30 A1.03.28 A1.03.27 A1.03.26 +A1.03.32 A1.04.36 A1.03.36 A1.03.35 A1.04.32 A1.03.31 A1.04.28 A1.03.28 A1.03.27 +A1.03.33 A1.03.37 A1.02.37 A1.02.34 A1.03.34 A1.02.31 A1.03.30 A1.03.29 A1.02.28 +A1.03.34 A1.03.38 A1.03.37 A1.02.37 A1.03.35 A1.03.33 A1.03.31 A1.03.30 A1.03.29 +A1.03.35 A1.03.39 A1.03.38 A1.03.37 A1.03.36 A1.03.34 A1.03.32 A1.03.31 A1.03.30 +A1.03.36 A1.04.39 A1.03.39 A1.03.38 A1.04.36 A1.03.35 A1.04.32 A1.03.32 A1.03.31 +A1.03.37 A1.03.41 A1.03.40 A1.02.40 A1.03.38 A1.02.37 A1.03.35 A1.03.34 A1.03.33 +A1.03.38 A1.03.42 A1.03.41 A1.03.40 A1.03.39 A1.03.37 A1.03.36 A1.03.35 A1.03.34 +A1.03.39 A1.04.42 A1.03.42 A1.03.41 A1.04.39 A1.03.38 A1.04.36 A1.03.36 A1.03.35 +A1.03.40 A1.03.44 A1.03.43 A1.02.43 A1.03.41 A1.02.40 A1.03.38 A1.03.37 A1.02.37 +A1.03.41 A1.03.45 A1.03.44 A1.03.43 A1.03.42 A1.03.40 A1.03.39 A1.03.38 A1.03.37 +A1.03.42 A1.04.45 A1.03.45 A1.03.44 A1.04.42 A1.03.41 A1.04.39 A1.03.39 A1.03.38 +A1.03.43 A1.03.46 A1.02.47 A1.02.45 A1.03.44 A1.02.43 A1.03.41 A1.03.40 A1.02.40 +A1.03.44 A1.03.47 A1.03.46 A1.02.47 A1.03.45 A1.03.43 A1.03.42 A1.03.41 A1.03.40 +A1.03.45 A1.04.47 A1.03.47 A1.03.46 A1.04.45 A1.03.44 A1.04.42 A1.03.42 A1.03.41 +A1.03.46 A1.03.49 A1.03.48 A1.02.49 A1.03.47 A1.02.47 A1.03.45 A1.03.44 A1.03.43 +A1.03.47 A1.04.49 A1.03.49 A1.03.48 A1.04.47 A1.03.46 A1.04.45 A1.03.45 A1.03.44 +A1.03.48 A1.02.51 A1.03.52 A1.03.51 A1.03.50 A1.03.49 A1.02.49 A1.03.47 A1.03.46 A1.02.47 +A1.03.49 A1.04.53 A1.03.53 A1.03.52 A1.03.51 A1.04.49 A1.03.48 A1.04.47 A1.03.47 A1.03.46 +A1.03.50 A1.03.55 A1.03.54 A1.02.51 A1.03.51 A1.03.48 A1.02.49 +A1.03.51 A1.03.56 A1.03.55 A1.03.54 A1.03.52 A1.03.50 A1.03.49 A1.03.48 +A1.03.52 A1.03.57 A1.03.56 A1.03.55 A1.03.53 A1.03.51 A1.03.49 A1.03.48 +A1.03.53 A1.04.57 A1.03.57 A1.03.56 A1.04.53 A1.03.52 A1.04.49 A1.03.49 +A1.03.54 A1.03.58 A1.02.55 A1.02.53 A1.03.55 A1.02.51 A1.03.51 A1.03.50 +A1.03.55 A1.03.59 A1.03.58 A1.02.55 A1.03.56 A1.03.54 A1.03.52 A1.03.51 A1.03.50 +A1.03.56 A1.03.60 A1.03.59 A1.03.58 A1.03.57 A1.03.55 A1.03.53 A1.03.52 A1.03.51 +A1.03.57 A1.04.60 A1.03.60 A1.03.59 A1.04.57 A1.03.56 A1.04.53 A1.03.53 A1.03.52 +A1.03.58 A1.03.61 A1.02.59 A1.02.57 A1.03.59 A1.02.55 A1.03.56 A1.03.55 A1.03.54 +A1.03.59 A1.03.62 A1.03.61 A1.02.59 A1.03.60 A1.03.58 A1.03.57 A1.03.56 A1.03.55 +A1.03.60 A1.04.62 A1.03.62 A1.03.61 A1.04.60 A1.03.59 A1.04.57 A1.03.57 A1.03.56 +A1.03.61 A1.02.62 A1.03.62 A1.02.59 A1.03.60 A1.03.59 A1.03.58 +A1.03.62 A1.02.62 A1.04.62 A1.03.61 A1.04.60 A1.03.60 A1.03.59 +A1.04.00 A1.04.05 A1.04.07 A1.03.08 A1.03.00 +A1.04.01 A1.04.10 A1.04.02 A1.04.03 +A1.04.02 A1.05.04 A1.05.05 A1.04.08 A1.04.10 A1.04.01 +A1.04.03 A1.04.10 A1.04.11 A1.04.01 A1.04.04 +A1.04.04 A1.04.11 A1.04.12 A1.04.03 A1.04.06 +A1.04.05 A1.04.12 A1.04.13 A1.04.14 A1.04.09 A1.04.07 A1.04.00 +A1.04.06 A1.04.11 A1.04.12 A1.04.04 A1.04.09 +A1.04.07 A1.04.13 A1.04.14 A1.03.14 A1.04.05 A1.03.08 A1.04.00 A1.03.00 +A1.04.08 A1.05.14 A1.04.15 A1.05.05 A1.04.10 A1.04.02 +A1.04.09 A1.04.12 A1.04.13 A1.04.06 A1.04.05 +A1.04.10 A1.05.14 A1.04.15 A1.04.16 A1.04.08 A1.04.11 A1.04.02 A1.04.01 A1.04.03 +A1.04.11 A1.04.15 A1.04.16 A1.04.17 A1.04.10 A1.04.12 A1.04.03 A1.04.04 A1.04.06 +A1.04.12 A1.04.16 A1.04.17 A1.04.18 A1.04.11 A1.04.13 A1.04.04 A1.04.06 A1.04.09 A1.04.05 +A1.04.13 A1.04.17 A1.04.18 A1.04.19 A1.04.12 A1.04.14 A1.04.09 A1.04.05 A1.04.07 +A1.04.14 A1.04.18 A1.04.19 A1.03.19 A1.04.13 A1.03.14 A1.04.05 A1.04.07 A1.03.08 +A1.04.15 A1.05.18 A1.04.20 A1.04.21 A1.05.14 A1.04.16 A1.04.08 A1.04.10 A1.04.11 +A1.04.16 A1.04.20 A1.04.21 A1.04.22 A1.04.15 A1.04.17 A1.04.10 A1.04.11 A1.04.12 +A1.04.17 A1.04.21 A1.04.22 A1.04.23 A1.04.16 A1.04.18 A1.04.11 A1.04.12 A1.04.13 +A1.04.18 A1.04.22 A1.04.23 A1.04.24 A1.04.17 A1.04.19 A1.04.12 A1.04.13 A1.04.14 +A1.04.19 A1.04.23 A1.04.24 A1.03.24 A1.04.18 A1.03.19 A1.04.13 A1.04.14 A1.03.14 +A1.04.20 A1.05.22 A1.05.25 A1.04.25 A1.05.18 A1.04.21 A1.05.14 A1.04.15 A1.04.16 +A1.04.21 A1.05.25 A1.04.25 A1.04.26 A1.04.20 A1.04.22 A1.04.15 A1.04.16 A1.04.17 +A1.04.22 A1.04.25 A1.04.26 A1.04.27 A1.04.21 A1.04.23 A1.04.16 A1.04.17 A1.04.18 +A1.04.23 A1.04.26 A1.04.27 A1.04.28 A1.04.22 A1.04.24 A1.04.17 A1.04.18 A1.04.19 +A1.04.24 A1.04.27 A1.04.28 A1.03.28 A1.04.23 A1.03.24 A1.04.18 A1.04.19 A1.03.19 +A1.04.25 A1.05.29 A1.04.29 A1.04.30 A1.05.25 A1.04.26 A1.04.20 A1.04.21 A1.04.22 +A1.04.26 A1.04.29 A1.04.30 A1.04.31 A1.04.25 A1.04.27 A1.04.21 A1.04.22 A1.04.23 +A1.04.27 A1.04.30 A1.04.31 A1.04.32 A1.04.26 A1.04.28 A1.04.22 A1.04.23 A1.04.24 +A1.04.28 A1.04.31 A1.04.32 A1.03.32 A1.04.27 A1.03.28 A1.04.23 A1.04.24 A1.03.24 +A1.04.29 A1.05.32 A1.04.33 A1.04.34 A1.05.29 A1.04.30 A1.05.25 A1.04.25 A1.04.26 +A1.04.30 A1.04.33 A1.04.34 A1.04.35 A1.04.29 A1.04.31 A1.04.25 A1.04.26 A1.04.27 +A1.04.31 A1.04.34 A1.04.35 A1.04.36 A1.04.30 A1.04.32 A1.04.26 A1.04.27 A1.04.28 +A1.04.32 A1.04.35 A1.04.36 A1.03.36 A1.04.31 A1.03.32 A1.04.27 A1.04.28 A1.03.28 +A1.04.33 A1.05.35 A1.05.38 A1.04.37 A1.05.32 A1.04.34 A1.05.29 A1.04.29 A1.04.30 +A1.04.34 A1.05.38 A1.04.37 A1.04.38 A1.04.33 A1.04.35 A1.04.29 A1.04.30 A1.04.31 +A1.04.35 A1.04.37 A1.04.38 A1.04.39 A1.04.34 A1.04.36 A1.04.30 A1.04.31 A1.04.32 +A1.04.36 A1.04.38 A1.04.39 A1.03.39 A1.04.35 A1.03.36 A1.04.31 A1.04.32 A1.03.32 +A1.04.37 A1.05.41 A1.04.40 A1.04.41 A1.05.38 A1.04.38 A1.04.33 A1.04.34 A1.04.35 +A1.04.38 A1.04.40 A1.04.41 A1.04.42 A1.04.37 A1.04.39 A1.04.34 A1.04.35 A1.04.36 +A1.04.39 A1.04.41 A1.04.42 A1.03.42 A1.04.38 A1.03.39 A1.04.35 A1.04.36 A1.03.36 +A1.04.40 A1.05.44 A1.04.43 A1.04.44 A1.05.41 A1.04.41 A1.05.38 A1.04.37 A1.04.38 +A1.04.41 A1.04.43 A1.04.44 A1.04.45 A1.04.40 A1.04.42 A1.04.37 A1.04.38 A1.04.39 +A1.04.42 A1.04.44 A1.04.45 A1.03.45 A1.04.41 A1.03.42 A1.04.38 A1.04.39 A1.03.39 +A1.04.43 A1.05.46 A1.05.48 A1.04.46 A1.05.44 A1.04.44 A1.05.41 A1.04.40 A1.04.41 +A1.04.44 A1.05.48 A1.04.46 A1.04.47 A1.04.43 A1.04.45 A1.04.40 A1.04.41 A1.04.42 +A1.04.45 A1.04.46 A1.04.47 A1.03.47 A1.04.44 A1.03.45 A1.04.41 A1.04.42 A1.03.42 +A1.04.46 A1.05.50 A1.04.48 A1.04.49 A1.05.48 A1.04.47 A1.04.43 A1.04.44 A1.04.45 +A1.04.47 A1.04.48 A1.04.49 A1.03.49 A1.04.46 A1.03.47 A1.04.44 A1.04.45 A1.03.45 +A1.04.48 A1.05.52 A1.04.50 A1.04.51 A1.04.52 A1.05.50 A1.04.49 A1.05.48 A1.04.46 A1.04.47 +A1.04.49 A1.04.51 A1.04.52 A1.04.53 A1.03.53 A1.04.48 A1.03.49 A1.04.46 A1.04.47 A1.03.47 +A1.04.50 A1.05.52 A1.04.54 A1.04.55 A1.04.51 A1.05.50 A1.04.48 +A1.04.51 A1.04.54 A1.04.55 A1.04.56 A1.04.50 A1.04.52 A1.04.48 A1.04.49 +A1.04.52 A1.04.55 A1.04.56 A1.04.57 A1.04.51 A1.04.53 A1.04.48 A1.04.49 +A1.04.53 A1.04.56 A1.04.57 A1.03.57 A1.04.52 A1.03.53 A1.04.49 A1.03.49 +A1.04.54 A1.05.54 A1.05.56 A1.04.58 A1.05.52 A1.04.55 A1.04.50 A1.04.51 +A1.04.55 A1.05.56 A1.04.58 A1.04.59 A1.04.54 A1.04.56 A1.04.50 A1.04.51 A1.04.52 +A1.04.56 A1.04.58 A1.04.59 A1.04.60 A1.04.55 A1.04.57 A1.04.51 A1.04.52 A1.04.53 +A1.04.57 A1.04.59 A1.04.60 A1.03.60 A1.04.56 A1.03.57 A1.04.52 A1.04.53 A1.03.53 +A1.04.58 A1.05.58 A1.05.60 A1.04.61 A1.05.56 A1.04.59 A1.04.54 A1.04.55 A1.04.56 +A1.04.59 A1.05.60 A1.04.61 A1.04.62 A1.04.58 A1.04.60 A1.04.55 A1.04.56 A1.04.57 +A1.04.60 A1.04.61 A1.04.62 A1.03.62 A1.04.59 A1.03.60 A1.04.56 A1.04.57 A1.03.57 +A1.04.61 A1.05.62 A1.05.60 A1.04.62 A1.04.58 A1.04.59 A1.04.60 +A1.04.62 A1.04.61 A1.03.62 A1.04.59 A1.04.60 A1.03.60 +A1.05.00 A1.05.08 A1.05.03 +A1.05.01 A1.05.10 A1.05.14 A1.05.02 A1.05.04 +A1.05.02 A1.05.07 A1.05.10 A1.05.01 +A1.05.03 A1.05.08 A1.05.12 A1.05.00 A1.05.09 +A1.05.04 A1.05.10 A1.05.14 A1.05.01 A1.05.05 A1.04.02 +A1.05.05 A1.05.14 A1.05.04 A1.04.08 A1.04.02 +A1.05.06 A1.05.09 A1.05.11 +A1.05.07 A1.05.11 A1.05.15 A1.05.10 A1.05.02 +A1.05.08 A1.06.06 A1.05.13 A1.05.17 A1.05.12 A1.05.00 A1.05.03 +A1.05.09 A1.05.12 A1.05.16 A1.05.03 A1.05.11 A1.05.06 +A1.05.10 A1.05.11 A1.05.15 A1.05.18 A1.05.07 A1.05.14 A1.05.02 A1.05.01 A1.05.04 +A1.05.11 A1.05.12 A1.05.16 A1.05.19 A1.05.09 A1.05.15 A1.05.06 A1.05.07 A1.05.10 +A1.05.12 A1.05.13 A1.05.17 A1.05.20 A1.05.08 A1.05.16 A1.05.03 A1.05.09 A1.05.11 +A1.05.13 A1.06.12 A1.06.17 A1.05.21 A1.06.06 A1.05.17 A1.05.08 A1.05.12 +A1.05.14 A1.05.15 A1.05.18 A1.04.20 A1.05.10 A1.04.15 A1.05.01 A1.05.04 A1.05.05 A1.04.08 A1.04.10 +A1.05.15 A1.05.16 A1.05.19 A1.05.22 A1.05.11 A1.05.18 A1.05.07 A1.05.10 A1.05.14 +A1.05.16 A1.05.17 A1.05.20 A1.05.23 A1.05.12 A1.05.19 A1.05.09 A1.05.11 A1.05.15 +A1.05.17 A1.06.17 A1.05.21 A1.05.24 A1.05.13 A1.05.20 A1.05.08 A1.05.12 A1.05.16 +A1.05.18 A1.05.19 A1.05.22 A1.05.25 A1.05.15 A1.04.20 A1.05.10 A1.05.14 A1.04.15 +A1.05.19 A1.05.20 A1.05.23 A1.05.26 A1.05.16 A1.05.22 A1.05.11 A1.05.15 A1.05.18 +A1.05.20 A1.05.21 A1.05.24 A1.05.27 A1.05.17 A1.05.23 A1.05.12 A1.05.16 A1.05.19 +A1.05.21 A1.06.20 A1.06.25 A1.05.28 A1.06.17 A1.05.24 A1.05.13 A1.05.17 A1.05.20 +A1.05.22 A1.05.23 A1.05.26 A1.05.29 A1.05.19 A1.05.25 A1.05.15 A1.05.18 A1.04.20 +A1.05.23 A1.05.24 A1.05.27 A1.05.30 A1.05.20 A1.05.26 A1.05.16 A1.05.19 A1.05.22 +A1.05.24 A1.06.25 A1.05.28 A1.05.31 A1.05.21 A1.05.27 A1.05.17 A1.05.20 A1.05.23 +A1.05.25 A1.05.26 A1.05.29 A1.04.29 A1.05.22 A1.04.25 A1.05.18 A1.04.20 A1.04.21 +A1.05.26 A1.05.27 A1.05.30 A1.05.32 A1.05.23 A1.05.29 A1.05.19 A1.05.22 A1.05.25 +A1.05.27 A1.05.28 A1.05.31 A1.05.33 A1.05.24 A1.05.30 A1.05.20 A1.05.23 A1.05.26 +A1.05.28 A1.06.28 A1.06.32 A1.05.34 A1.06.25 A1.05.31 A1.05.21 A1.05.24 A1.05.27 +A1.05.29 A1.05.30 A1.05.32 A1.04.33 A1.05.26 A1.04.29 A1.05.22 A1.05.25 A1.04.25 +A1.05.30 A1.05.31 A1.05.33 A1.05.35 A1.05.27 A1.05.32 A1.05.23 A1.05.26 A1.05.29 +A1.05.31 A1.06.32 A1.05.34 A1.05.36 A1.05.28 A1.05.33 A1.05.24 A1.05.27 A1.05.30 +A1.05.32 A1.05.33 A1.05.35 A1.05.38 A1.05.30 A1.04.33 A1.05.26 A1.05.29 A1.04.29 +A1.05.33 A1.05.34 A1.05.36 A1.05.39 A1.05.31 A1.05.35 A1.05.27 A1.05.30 A1.05.32 +A1.05.34 A1.06.35 A1.05.37 A1.05.40 A1.06.32 A1.05.36 A1.05.28 A1.05.31 A1.05.33 +A1.05.35 A1.05.36 A1.05.39 A1.05.41 A1.05.33 A1.05.38 A1.05.30 A1.05.32 A1.04.33 +A1.05.36 A1.05.37 A1.05.40 A1.05.42 A1.05.34 A1.05.39 A1.05.31 A1.05.33 A1.05.35 +A1.05.37 A1.06.37 A1.06.40 A1.05.43 A1.06.35 A1.05.40 A1.06.32 A1.05.34 A1.05.36 +A1.05.38 A1.05.39 A1.05.41 A1.04.40 A1.05.35 A1.04.37 A1.05.32 A1.04.33 A1.04.34 +A1.05.39 A1.05.40 A1.05.42 A1.05.44 A1.05.36 A1.05.41 A1.05.33 A1.05.35 A1.05.38 +A1.05.40 A1.06.40 A1.05.43 A1.05.45 A1.05.37 A1.05.42 A1.05.34 A1.05.36 A1.05.39 +A1.05.41 A1.05.42 A1.05.44 A1.04.43 A1.05.39 A1.04.40 A1.05.35 A1.05.38 A1.04.37 +A1.05.42 A1.05.43 A1.05.45 A1.05.46 A1.05.40 A1.05.44 A1.05.36 A1.05.39 A1.05.41 +A1.05.43 A1.06.42 A1.06.44 A1.05.47 A1.06.40 A1.05.45 A1.05.37 A1.05.40 A1.05.42 +A1.05.44 A1.05.45 A1.05.46 A1.05.48 A1.05.42 A1.04.43 A1.05.39 A1.05.41 A1.04.40 +A1.05.45 A1.06.44 A1.05.47 A1.05.49 A1.05.43 A1.05.46 A1.05.40 A1.05.42 A1.05.44 +A1.05.46 A1.05.47 A1.05.49 A1.05.50 A1.05.45 A1.05.48 A1.05.42 A1.05.44 A1.04.43 +A1.05.47 A1.06.46 A1.06.48 A1.05.51 A1.06.44 A1.05.49 A1.05.43 A1.05.45 A1.05.46 +A1.05.48 A1.05.49 A1.05.50 A1.04.48 A1.05.46 A1.04.46 A1.05.44 A1.04.43 A1.04.44 +A1.05.49 A1.06.48 A1.05.51 A1.05.52 A1.05.47 A1.05.50 A1.05.45 A1.05.46 A1.05.48 +A1.05.50 A1.05.51 A1.05.52 A1.04.50 A1.05.49 A1.04.48 A1.05.46 A1.05.48 A1.04.46 +A1.05.51 A1.06.49 A1.06.51 A1.05.53 A1.06.48 A1.05.52 A1.05.47 A1.05.49 A1.05.50 +A1.05.52 A1.06.51 A1.05.53 A1.05.54 A1.05.56 A1.05.51 A1.04.54 A1.04.50 A1.05.49 A1.05.50 A1.04.48 +A1.05.53 A1.06.51 A1.05.55 A1.05.57 A1.05.54 A1.05.51 A1.05.52 +A1.05.54 A1.05.55 A1.05.57 A1.05.58 A1.05.53 A1.05.56 A1.05.52 A1.04.54 +A1.05.55 A1.06.54 A1.06.56 A1.05.59 A1.06.51 A1.05.57 A1.05.53 A1.05.54 +A1.05.56 A1.05.57 A1.05.58 A1.05.60 A1.05.54 A1.04.58 A1.05.52 A1.04.54 A1.04.55 +A1.05.57 A1.06.56 A1.05.59 A1.05.61 A1.05.55 A1.05.58 A1.05.53 A1.05.54 A1.05.56 +A1.05.58 A1.05.59 A1.05.61 A1.05.62 A1.05.57 A1.05.60 A1.05.54 A1.05.56 A1.04.58 +A1.05.59 A1.06.61 A1.06.58 A1.06.60 A1.06.56 A1.05.61 A1.05.55 A1.05.57 A1.05.58 +A1.05.60 A1.05.61 A1.05.62 A1.05.58 A1.04.61 A1.05.56 A1.04.58 A1.04.59 +A1.05.61 A1.06.61 A1.06.60 A1.05.59 A1.05.62 A1.05.57 A1.05.58 A1.05.60 +A1.05.62 A1.05.61 A1.05.58 A1.05.60 A1.04.61 +A1.06.00 A1.06.04 A1.06.08 A1.06.12 A1.06.06 +A1.06.01 A1.06.05 A1.06.11 A1.06.03 +A1.06.02 A1.07.08 A1.06.13 A1.06.05 +A1.06.03 A1.06.11 A1.06.01 A1.06.09 A1.06.07 +A1.06.04 A1.06.10 A1.06.08 A1.06.00 +A1.06.05 A1.06.13 A1.06.02 A1.06.11 A1.06.01 +A1.06.06 A1.06.12 A1.06.17 A1.06.00 A1.05.13 A1.05.08 +A1.06.07 A1.06.03 A1.06.09 A1.06.14 A1.06.10 +A1.06.08 A1.06.10 A1.06.15 A1.06.04 A1.06.12 A1.06.00 +A1.06.09 A1.06.11 A1.06.16 A1.06.03 A1.06.14 A1.06.07 +A1.06.10 A1.06.14 A1.06.18 A1.06.07 A1.06.15 A1.06.04 A1.06.08 A1.06.12 +A1.06.11 A1.06.13 A1.06.19 A1.06.05 A1.06.16 A1.06.01 A1.06.03 A1.06.09 A1.06.14 +A1.06.12 A1.06.10 A1.06.15 A1.06.20 A1.06.08 A1.06.17 A1.06.00 A1.06.06 A1.05.13 +A1.06.13 A1.07.07 A1.07.17 A1.06.21 A1.07.08 A1.06.19 A1.06.02 A1.06.05 A1.06.11 A1.06.16 +A1.06.14 A1.06.11 A1.06.16 A1.06.22 A1.06.09 A1.06.18 A1.06.07 A1.06.10 A1.06.15 +A1.06.15 A1.06.14 A1.06.18 A1.06.23 A1.06.10 A1.06.20 A1.06.08 A1.06.12 A1.06.17 +A1.06.16 A1.06.13 A1.06.19 A1.06.24 A1.06.11 A1.06.22 A1.06.09 A1.06.14 A1.06.18 +A1.06.17 A1.06.15 A1.06.20 A1.06.25 A1.06.12 A1.05.21 A1.06.06 A1.05.13 A1.05.17 +A1.06.18 A1.06.16 A1.06.22 A1.06.27 A1.06.14 A1.06.23 A1.06.10 A1.06.15 A1.06.20 +A1.06.19 A1.07.17 A1.06.21 A1.06.26 A1.06.13 A1.06.24 A1.06.11 A1.06.16 A1.06.22 +A1.06.20 A1.06.18 A1.06.23 A1.06.28 A1.06.15 A1.06.25 A1.06.12 A1.06.17 A1.05.21 +A1.06.21 A1.07.18 A1.07.23 A1.07.28 A1.07.17 A1.06.26 A1.06.13 A1.06.19 A1.06.24 +A1.06.22 A1.06.19 A1.06.24 A1.06.29 A1.06.16 A1.06.27 A1.06.14 A1.06.18 A1.06.23 +A1.06.23 A1.06.22 A1.06.27 A1.06.30 A1.06.18 A1.06.28 A1.06.15 A1.06.20 A1.06.25 +A1.06.24 A1.06.21 A1.06.26 A1.06.31 A1.06.19 A1.06.29 A1.06.16 A1.06.22 A1.06.27 +A1.06.25 A1.06.23 A1.06.28 A1.06.32 A1.06.20 A1.05.28 A1.06.17 A1.05.21 A1.05.24 +A1.06.26 A1.07.23 A1.07.28 A1.06.33 A1.06.21 A1.06.31 A1.06.19 A1.06.24 A1.06.29 +A1.06.27 A1.06.24 A1.06.29 A1.06.34 A1.06.22 A1.06.30 A1.06.18 A1.06.23 A1.06.28 +A1.06.28 A1.06.27 A1.06.30 A1.06.35 A1.06.23 A1.06.32 A1.06.20 A1.06.25 A1.05.28 +A1.06.29 A1.06.26 A1.06.31 A1.06.36 A1.06.24 A1.06.34 A1.06.22 A1.06.27 A1.06.30 +A1.06.30 A1.06.29 A1.06.34 A1.06.37 A1.06.27 A1.06.35 A1.06.23 A1.06.28 A1.06.32 +A1.06.31 A1.07.28 A1.06.33 A1.06.38 A1.06.26 A1.06.36 A1.06.24 A1.06.29 A1.06.34 +A1.06.32 A1.06.30 A1.06.35 A1.05.37 A1.06.28 A1.05.34 A1.06.25 A1.05.28 A1.05.31 +A1.06.33 A1.07.29 A1.07.33 A1.07.37 A1.07.28 A1.06.38 A1.06.26 A1.06.31 A1.06.36 +A1.06.34 A1.06.31 A1.06.36 A1.06.39 A1.06.29 A1.06.37 A1.06.27 A1.06.30 A1.06.35 +A1.06.35 A1.06.34 A1.06.37 A1.06.40 A1.06.30 A1.05.37 A1.06.28 A1.06.32 A1.05.34 +A1.06.36 A1.06.33 A1.06.38 A1.06.41 A1.06.31 A1.06.39 A1.06.29 A1.06.34 A1.06.37 +A1.06.37 A1.06.36 A1.06.39 A1.06.42 A1.06.34 A1.06.40 A1.06.30 A1.06.35 A1.05.37 +A1.06.38 A1.07.33 A1.07.37 A1.07.41 A1.06.33 A1.06.41 A1.06.31 A1.06.36 A1.06.39 +A1.06.39 A1.06.38 A1.06.41 A1.06.43 A1.06.36 A1.06.42 A1.06.34 A1.06.37 A1.06.40 +A1.06.40 A1.06.39 A1.06.42 A1.06.44 A1.06.37 A1.05.43 A1.06.35 A1.05.37 A1.05.40 +A1.06.41 A1.07.37 A1.07.41 A1.06.45 A1.06.38 A1.06.43 A1.06.36 A1.06.39 A1.06.42 +A1.06.42 A1.06.41 A1.06.43 A1.06.46 A1.06.39 A1.06.44 A1.06.37 A1.06.40 A1.05.43 +A1.06.43 A1.07.41 A1.06.45 A1.06.47 A1.06.41 A1.06.46 A1.06.39 A1.06.42 A1.06.44 +A1.06.44 A1.06.43 A1.06.46 A1.06.48 A1.06.42 A1.05.47 A1.06.40 A1.05.43 A1.05.45 +A1.06.45 A1.07.42 A1.07.45 A1.07.48 A1.07.41 A1.06.47 A1.06.41 A1.06.43 A1.06.46 +A1.06.46 A1.06.45 A1.06.47 A1.06.49 A1.06.43 A1.06.48 A1.06.42 A1.06.44 A1.05.47 +A1.06.47 A1.07.45 A1.07.48 A1.06.50 A1.06.45 A1.06.49 A1.06.43 A1.06.46 A1.06.48 +A1.06.48 A1.06.47 A1.06.49 A1.06.51 A1.06.46 A1.05.51 A1.06.44 A1.05.47 A1.05.49 +A1.06.49 A1.07.48 A1.06.50 A1.06.52 A1.06.47 A1.06.51 A1.06.46 A1.06.48 A1.05.51 +A1.06.50 A1.07.49 A1.07.51 A1.07.53 A1.07.48 A1.06.53 A1.06.52 A1.06.47 A1.06.49 A1.06.51 +A1.06.51 A1.06.50 A1.06.52 A1.06.54 A1.06.56 A1.06.49 A1.05.55 A1.05.53 A1.06.48 A1.05.51 A1.05.52 +A1.06.52 A1.06.50 A1.06.53 A1.06.55 A1.06.54 A1.06.49 A1.06.51 +A1.06.53 A1.07.51 A1.07.53 A1.06.57 A1.06.50 A1.06.55 A1.06.52 A1.06.54 +A1.06.54 A1.06.53 A1.06.55 A1.06.58 A1.06.52 A1.06.56 A1.06.51 A1.05.55 +A1.06.55 A1.07.53 A1.06.57 A1.06.59 A1.06.53 A1.06.58 A1.06.52 A1.06.54 A1.06.56 +A1.06.56 A1.06.55 A1.06.58 A1.06.60 A1.06.54 A1.05.59 A1.06.51 A1.05.55 A1.05.57 +A1.06.57 A1.07.54 A1.07.57 A1.07.60 A1.07.53 A1.06.59 A1.06.53 A1.06.55 A1.06.58 +A1.06.58 A1.06.57 A1.06.59 A1.06.61 A1.06.55 A1.06.60 A1.06.54 A1.06.56 A1.05.59 +A1.06.59 A1.07.57 A1.07.60 A1.06.62 A1.06.57 A1.06.61 A1.06.55 A1.06.58 A1.06.60 +A1.06.60 A1.06.59 A1.06.61 A1.06.58 A1.06.56 A1.05.59 A1.05.61 +A1.06.61 A1.06.62 A1.06.59 A1.06.58 A1.06.60 A1.05.59 A1.05.61 +A1.06.62 A1.07.61 A1.07.60 A1.06.59 A1.06.61 +A1.07.00 A1.07.12 A1.07.07 +A1.07.01 A1.08.02 A1.08.12 A1.07.11 A1.07.10 A1.07.02 +A1.07.02 A1.07.01 A1.07.10 A1.07.09 A1.07.06 A1.07.03 +A1.07.03 A1.07.02 A1.07.15 A1.07.06 A1.07.14 A1.07.05 +A1.07.04 A1.07.14 A1.07.05 A1.07.13 A1.07.12 +A1.07.05 A1.07.03 A1.07.14 A1.07.04 A1.07.13 +A1.07.06 A1.07.02 A1.07.09 A1.07.15 A1.07.03 A1.07.14 +A1.07.07 A1.07.12 A1.07.18 A1.07.00 A1.07.17 A1.07.08 A1.06.13 +A1.07.08 A1.07.07 A1.07.17 A1.06.13 A1.06.02 +A1.07.09 A1.07.16 A1.07.10 A1.07.02 A1.07.15 A1.07.06 +A1.07.10 A1.07.01 A1.07.11 A1.07.16 A1.07.02 A1.07.09 A1.07.15 +A1.07.11 A1.08.17 A1.08.02 A1.08.12 A1.07.01 A1.07.16 A1.07.10 +A1.07.12 A1.07.04 A1.07.13 A1.07.19 A1.07.18 A1.07.00 A1.07.07 A1.07.17 +A1.07.13 A1.07.14 A1.07.20 A1.07.05 A1.07.04 A1.07.19 A1.07.12 A1.07.18 +A1.07.14 A1.07.15 A1.07.21 A1.07.06 A1.07.03 A1.07.20 A1.07.05 A1.07.04 A1.07.13 A1.07.19 +A1.07.15 A1.07.16 A1.07.22 A1.07.10 A1.07.09 A1.07.21 A1.07.06 A1.07.03 A1.07.14 A1.07.20 +A1.07.16 A1.08.17 A1.08.23 A1.08.12 A1.07.11 A1.07.22 A1.07.10 A1.07.09 A1.07.15 A1.07.21 +A1.07.17 A1.07.12 A1.07.18 A1.07.23 A1.07.07 A1.06.21 A1.07.08 A1.06.13 A1.06.19 +A1.07.18 A1.07.13 A1.07.19 A1.07.24 A1.07.12 A1.07.23 A1.07.07 A1.07.17 A1.06.21 +A1.07.19 A1.07.14 A1.07.20 A1.07.25 A1.07.13 A1.07.24 A1.07.12 A1.07.18 A1.07.23 +A1.07.20 A1.07.15 A1.07.21 A1.07.26 A1.07.14 A1.07.25 A1.07.13 A1.07.19 A1.07.24 +A1.07.21 A1.07.16 A1.07.22 A1.07.27 A1.07.15 A1.07.26 A1.07.14 A1.07.20 A1.07.25 +A1.07.22 A1.08.17 A1.08.23 A1.08.28 A1.07.16 A1.07.27 A1.07.15 A1.07.21 A1.07.26 +A1.07.23 A1.07.19 A1.07.24 A1.07.29 A1.07.18 A1.07.28 A1.07.17 A1.06.21 A1.06.26 +A1.07.24 A1.07.20 A1.07.25 A1.07.30 A1.07.19 A1.07.29 A1.07.18 A1.07.23 A1.07.28 +A1.07.25 A1.07.21 A1.07.26 A1.07.31 A1.07.20 A1.07.30 A1.07.19 A1.07.24 A1.07.29 +A1.07.26 A1.07.22 A1.07.27 A1.07.32 A1.07.21 A1.07.31 A1.07.20 A1.07.25 A1.07.30 +A1.07.27 A1.08.23 A1.08.28 A1.08.33 A1.07.22 A1.07.32 A1.07.21 A1.07.26 A1.07.31 +A1.07.28 A1.07.24 A1.07.29 A1.07.33 A1.07.23 A1.06.33 A1.06.21 A1.06.26 A1.06.31 +A1.07.29 A1.07.25 A1.07.30 A1.07.34 A1.07.24 A1.07.33 A1.07.23 A1.07.28 A1.06.33 +A1.07.30 A1.07.26 A1.07.31 A1.07.35 A1.07.25 A1.07.34 A1.07.24 A1.07.29 A1.07.33 +A1.07.31 A1.07.27 A1.07.32 A1.07.36 A1.07.26 A1.07.35 A1.07.25 A1.07.30 A1.07.34 +A1.07.32 A1.08.28 A1.08.33 A1.08.37 A1.07.27 A1.07.36 A1.07.26 A1.07.31 A1.07.35 +A1.07.33 A1.07.30 A1.07.34 A1.07.38 A1.07.29 A1.07.37 A1.07.28 A1.06.33 A1.06.38 +A1.07.34 A1.07.31 A1.07.35 A1.07.39 A1.07.30 A1.07.38 A1.07.29 A1.07.33 A1.07.37 +A1.07.35 A1.07.32 A1.07.36 A1.07.40 A1.07.31 A1.07.39 A1.07.30 A1.07.34 A1.07.38 +A1.07.36 A1.08.33 A1.08.37 A1.08.41 A1.07.32 A1.07.40 A1.07.31 A1.07.35 A1.07.39 +A1.07.37 A1.07.34 A1.07.38 A1.07.42 A1.07.33 A1.07.41 A1.06.33 A1.06.38 A1.06.41 +A1.07.38 A1.07.35 A1.07.39 A1.07.43 A1.07.34 A1.07.42 A1.07.33 A1.07.37 A1.07.41 +A1.07.39 A1.07.36 A1.07.40 A1.07.44 A1.07.35 A1.07.43 A1.07.34 A1.07.38 A1.07.42 +A1.07.40 A1.08.37 A1.08.41 A1.08.45 A1.07.36 A1.07.44 A1.07.35 A1.07.39 A1.07.43 +A1.07.41 A1.07.38 A1.07.42 A1.07.45 A1.07.37 A1.06.45 A1.06.38 A1.06.41 A1.06.43 +A1.07.42 A1.07.39 A1.07.43 A1.07.46 A1.07.38 A1.07.45 A1.07.37 A1.07.41 A1.06.45 +A1.07.43 A1.07.40 A1.07.44 A1.07.47 A1.07.39 A1.07.46 A1.07.38 A1.07.42 A1.07.45 +A1.07.44 A1.08.41 A1.08.45 A1.08.48 A1.07.40 A1.07.47 A1.07.39 A1.07.43 A1.07.46 +A1.07.45 A1.07.43 A1.07.46 A1.07.49 A1.07.42 A1.07.48 A1.07.41 A1.06.45 A1.06.47 +A1.07.46 A1.07.44 A1.07.47 A1.07.50 A1.07.43 A1.07.49 A1.07.42 A1.07.45 A1.07.48 +A1.07.47 A1.08.45 A1.08.48 A1.08.51 A1.07.44 A1.07.50 A1.07.43 A1.07.46 A1.07.49 +A1.07.48 A1.07.46 A1.07.49 A1.07.51 A1.07.45 A1.06.50 A1.06.45 A1.06.47 A1.06.49 +A1.07.49 A1.07.47 A1.07.50 A1.07.52 A1.07.46 A1.07.51 A1.07.45 A1.07.48 A1.06.50 +A1.07.50 A1.08.48 A1.08.51 A1.08.53 A1.07.47 A1.07.52 A1.07.46 A1.07.49 A1.07.51 +A1.07.51 A1.07.50 A1.07.52 A1.07.55 A1.07.49 A1.07.54 A1.07.53 A1.07.48 A1.06.50 A1.06.53 +A1.07.52 A1.08.51 A1.08.53 A1.08.56 A1.07.50 A1.07.56 A1.07.55 A1.07.49 A1.07.51 A1.07.54 +A1.07.53 A1.07.51 A1.07.54 A1.07.57 A1.06.57 A1.06.50 A1.06.53 A1.06.55 +A1.07.54 A1.07.52 A1.07.55 A1.07.58 A1.07.51 A1.07.57 A1.07.53 A1.06.57 +A1.07.55 A1.07.52 A1.07.56 A1.07.59 A1.07.58 A1.07.51 A1.07.54 A1.07.57 +A1.07.56 A1.08.53 A1.08.56 A1.08.59 A1.07.52 A1.07.59 A1.07.55 A1.07.58 +A1.07.57 A1.07.55 A1.07.58 A1.07.61 A1.07.54 A1.07.60 A1.07.53 A1.06.57 A1.06.59 +A1.07.58 A1.07.56 A1.07.59 A1.07.62 A1.07.55 A1.07.61 A1.07.54 A1.07.57 A1.07.60 +A1.07.59 A1.08.56 A1.08.59 A1.08.62 A1.07.56 A1.07.62 A1.07.55 A1.07.58 A1.07.61 +A1.07.60 A1.07.58 A1.07.61 A1.07.57 A1.06.62 A1.06.57 A1.06.59 +A1.07.61 A1.07.59 A1.07.62 A1.07.58 A1.07.57 A1.07.60 A1.06.62 +A1.07.62 A1.08.59 A1.08.62 A1.07.59 A1.07.58 A1.07.61 +A1.08.00 A1.09.05 A1.08.08 A1.08.07 +A1.08.01 A1.08.04 A1.08.06 A1.08.10 A1.08.11 A1.08.02 +A1.08.02 A1.08.01 A1.08.11 A1.08.12 A1.07.01 A1.07.11 +A1.08.03 A1.08.07 A1.08.13 A1.08.14 +A1.08.04 A1.08.05 A1.08.09 A1.08.06 A1.08.01 +A1.08.05 A1.08.14 A1.08.15 A1.08.04 A1.08.09 +A1.08.06 A1.08.15 A1.08.04 A1.08.09 A1.08.16 A1.08.01 A1.08.10 +A1.08.07 A1.09.13 A1.08.00 A1.08.08 A1.08.18 A1.08.03 A1.08.13 A1.08.19 +A1.08.08 A1.09.05 A1.09.13 A1.08.00 A1.08.07 A1.08.18 +A1.08.09 A1.08.05 A1.08.15 A1.08.04 A1.08.06 A1.08.16 +A1.08.10 A1.08.06 A1.08.16 A1.08.01 A1.08.11 A1.08.17 +A1.08.11 A1.08.16 A1.08.01 A1.08.10 A1.08.17 A1.08.02 A1.08.12 +A1.08.12 A1.08.11 A1.08.17 A1.08.02 A1.07.01 A1.07.11 A1.07.16 +A1.08.13 A1.08.07 A1.08.18 A1.08.03 A1.08.19 A1.08.14 A1.08.20 +A1.08.14 A1.08.03 A1.08.13 A1.08.19 A1.08.20 A1.08.05 A1.08.15 A1.08.21 +A1.08.15 A1.08.14 A1.08.20 A1.08.05 A1.08.21 A1.08.09 A1.08.06 A1.08.16 A1.08.22 +A1.08.16 A1.08.15 A1.08.21 A1.08.09 A1.08.06 A1.08.22 A1.08.10 A1.08.11 A1.08.17 A1.08.23 +A1.08.17 A1.08.16 A1.08.22 A1.08.10 A1.08.11 A1.08.23 A1.08.12 A1.07.11 A1.07.16 A1.07.22 +A1.08.18 A1.09.13 A1.09.19 A1.08.08 A1.08.07 A1.09.21 A1.08.13 A1.08.19 A1.08.24 +A1.08.19 A1.08.07 A1.08.18 A1.09.21 A1.08.13 A1.08.24 A1.08.14 A1.08.20 A1.08.25 +A1.08.20 A1.08.13 A1.08.19 A1.08.24 A1.08.14 A1.08.25 A1.08.15 A1.08.21 A1.08.26 +A1.08.21 A1.08.14 A1.08.20 A1.08.25 A1.08.15 A1.08.26 A1.08.16 A1.08.22 A1.08.27 +A1.08.22 A1.08.15 A1.08.21 A1.08.26 A1.08.16 A1.08.27 A1.08.17 A1.08.23 A1.08.28 +A1.08.23 A1.08.16 A1.08.22 A1.08.27 A1.08.17 A1.08.28 A1.07.16 A1.07.22 A1.07.27 +A1.08.24 A1.08.18 A1.09.21 A1.09.26 A1.08.19 A1.08.29 A1.08.20 A1.08.25 A1.08.30 +A1.08.25 A1.08.19 A1.08.24 A1.08.29 A1.08.20 A1.08.30 A1.08.21 A1.08.26 A1.08.31 +A1.08.26 A1.08.20 A1.08.25 A1.08.30 A1.08.21 A1.08.31 A1.08.22 A1.08.27 A1.08.32 +A1.08.27 A1.08.21 A1.08.26 A1.08.31 A1.08.22 A1.08.32 A1.08.23 A1.08.28 A1.08.33 +A1.08.28 A1.08.22 A1.08.27 A1.08.32 A1.08.23 A1.08.33 A1.07.22 A1.07.27 A1.07.32 +A1.08.29 A1.09.21 A1.09.26 A1.09.31 A1.08.24 A1.09.33 A1.08.25 A1.08.30 A1.08.34 +A1.08.30 A1.08.24 A1.08.29 A1.09.33 A1.08.25 A1.08.34 A1.08.26 A1.08.31 A1.08.35 +A1.08.31 A1.08.25 A1.08.30 A1.08.34 A1.08.26 A1.08.35 A1.08.27 A1.08.32 A1.08.36 +A1.08.32 A1.08.26 A1.08.31 A1.08.35 A1.08.27 A1.08.36 A1.08.28 A1.08.33 A1.08.37 +A1.08.33 A1.08.27 A1.08.32 A1.08.36 A1.08.28 A1.08.37 A1.07.27 A1.07.32 A1.07.36 +A1.08.34 A1.08.29 A1.09.33 A1.09.38 A1.08.30 A1.08.38 A1.08.31 A1.08.35 A1.08.39 +A1.08.35 A1.08.30 A1.08.34 A1.08.38 A1.08.31 A1.08.39 A1.08.32 A1.08.36 A1.08.40 +A1.08.36 A1.08.31 A1.08.35 A1.08.39 A1.08.32 A1.08.40 A1.08.33 A1.08.37 A1.08.41 +A1.08.37 A1.08.32 A1.08.36 A1.08.40 A1.08.33 A1.08.41 A1.07.32 A1.07.36 A1.07.40 +A1.08.38 A1.09.33 A1.09.38 A1.09.41 A1.08.34 A1.08.42 A1.08.35 A1.08.39 A1.08.43 +A1.08.39 A1.08.34 A1.08.38 A1.08.42 A1.08.35 A1.08.43 A1.08.36 A1.08.40 A1.08.44 +A1.08.40 A1.08.35 A1.08.39 A1.08.43 A1.08.36 A1.08.44 A1.08.37 A1.08.41 A1.08.45 +A1.08.41 A1.08.36 A1.08.40 A1.08.44 A1.08.37 A1.08.45 A1.07.36 A1.07.40 A1.07.44 +A1.08.42 A1.09.38 A1.09.41 A1.09.43 A1.08.38 A1.09.45 A1.08.39 A1.08.43 A1.08.46 +A1.08.43 A1.08.38 A1.08.42 A1.09.45 A1.08.39 A1.08.46 A1.08.40 A1.08.44 A1.08.47 +A1.08.44 A1.08.39 A1.08.43 A1.08.46 A1.08.40 A1.08.47 A1.08.41 A1.08.45 A1.08.48 +A1.08.45 A1.08.40 A1.08.44 A1.08.47 A1.08.41 A1.08.48 A1.07.40 A1.07.44 A1.07.47 +A1.08.46 A1.08.42 A1.09.45 A1.09.47 A1.08.43 A1.08.49 A1.08.44 A1.08.47 A1.08.50 +A1.08.47 A1.08.43 A1.08.46 A1.08.49 A1.08.44 A1.08.50 A1.08.45 A1.08.48 A1.08.51 +A1.08.48 A1.08.44 A1.08.47 A1.08.50 A1.08.45 A1.08.51 A1.07.44 A1.07.47 A1.07.50 +A1.08.49 A1.09.45 A1.09.47 A1.09.49 A1.08.46 A1.09.50 A1.08.47 A1.08.50 A1.08.52 +A1.08.50 A1.08.46 A1.08.49 A1.09.50 A1.08.47 A1.08.52 A1.08.48 A1.08.51 A1.08.53 +A1.08.51 A1.08.47 A1.08.50 A1.08.52 A1.08.48 A1.08.53 A1.07.47 A1.07.50 A1.07.52 +A1.08.52 A1.08.49 A1.09.50 A1.09.53 A1.08.50 A1.09.54 A1.08.54 A1.08.51 A1.08.53 A1.08.55 +A1.08.53 A1.08.50 A1.08.52 A1.08.54 A1.08.51 A1.08.55 A1.08.56 A1.07.50 A1.07.52 A1.07.56 +A1.08.54 A1.08.52 A1.09.54 A1.09.58 A1.08.57 A1.08.53 A1.08.55 A1.08.58 +A1.08.55 A1.08.52 A1.08.54 A1.08.57 A1.08.53 A1.08.58 A1.08.56 A1.08.59 +A1.08.56 A1.08.53 A1.08.55 A1.08.58 A1.08.59 A1.07.52 A1.07.56 A1.07.59 +A1.08.57 A1.09.54 A1.09.58 A1.09.60 A1.08.54 A1.08.60 A1.08.55 A1.08.58 A1.08.61 +A1.08.58 A1.08.54 A1.08.57 A1.08.60 A1.08.55 A1.08.61 A1.08.56 A1.08.59 A1.08.62 +A1.08.59 A1.08.55 A1.08.58 A1.08.61 A1.08.56 A1.08.62 A1.07.56 A1.07.59 A1.07.62 +A1.08.60 A1.09.58 A1.09.60 A1.09.62 A1.08.57 A1.08.58 A1.08.61 +A1.08.61 A1.08.57 A1.08.60 A1.08.58 A1.08.59 A1.08.62 +A1.08.62 A1.08.58 A1.08.61 A1.08.59 A1.07.59 A1.07.62 +A1.09.00 A1.09.03 A1.09.11 A1.09.02 +A1.09.01 A1.09.06 A1.09.12 A1.09.08 A1.09.04 +A1.09.02 A1.09.00 A1.09.11 A1.09.05 A1.09.13 +A1.09.03 A1.09.07 A1.09.09 A1.09.00 A1.09.11 +A1.09.04 A1.09.01 A1.09.08 A1.09.10 +A1.09.05 A1.09.11 A1.09.02 A1.09.13 A1.08.00 A1.08.08 +A1.09.06 A1.10.06 A1.10.12 A1.09.01 A1.09.12 A1.09.17 +A1.09.07 A1.09.10 A1.09.14 A1.09.03 A1.09.09 +A1.09.08 A1.09.01 A1.09.12 A1.09.04 A1.09.10 A1.09.15 +A1.09.09 A1.09.07 A1.09.14 A1.09.03 A1.09.11 A1.09.16 +A1.09.10 A1.09.12 A1.09.08 A1.09.04 A1.09.15 A1.09.07 A1.09.14 A1.09.18 +A1.09.11 A1.09.14 A1.09.03 A1.09.09 A1.09.00 A1.09.16 A1.09.02 A1.09.05 A1.09.13 A1.09.19 +A1.09.12 A1.09.06 A1.10.12 A1.09.01 A1.09.17 A1.09.08 A1.09.10 A1.09.15 A1.09.20 +A1.09.13 A1.09.11 A1.09.16 A1.09.02 A1.09.05 A1.09.19 A1.08.08 A1.08.07 A1.08.18 A1.09.21 +A1.09.14 A1.09.10 A1.09.15 A1.09.07 A1.09.18 A1.09.09 A1.09.11 A1.09.16 A1.09.22 +A1.09.15 A1.09.12 A1.09.17 A1.09.08 A1.09.10 A1.09.20 A1.09.14 A1.09.18 A1.09.23 +A1.09.16 A1.09.14 A1.09.18 A1.09.09 A1.09.11 A1.09.22 A1.09.13 A1.09.19 A1.09.24 +A1.09.17 A1.09.06 A1.10.12 A1.10.16 A1.09.12 A1.10.20 A1.09.15 A1.09.20 A1.09.25 +A1.09.18 A1.09.10 A1.09.15 A1.09.20 A1.09.14 A1.09.23 A1.09.16 A1.09.22 A1.09.27 +A1.09.19 A1.09.11 A1.09.16 A1.09.22 A1.09.13 A1.09.24 A1.08.18 A1.09.21 A1.09.26 +A1.09.20 A1.09.12 A1.09.17 A1.10.20 A1.09.15 A1.09.25 A1.09.18 A1.09.23 A1.09.28 +A1.09.21 A1.09.13 A1.09.19 A1.09.24 A1.08.18 A1.09.26 A1.08.19 A1.08.24 A1.08.29 +A1.09.22 A1.09.14 A1.09.18 A1.09.23 A1.09.16 A1.09.27 A1.09.19 A1.09.24 A1.09.29 +A1.09.23 A1.09.15 A1.09.20 A1.09.25 A1.09.18 A1.09.28 A1.09.22 A1.09.27 A1.09.30 +A1.09.24 A1.09.16 A1.09.22 A1.09.27 A1.09.19 A1.09.29 A1.09.21 A1.09.26 A1.09.31 +A1.09.25 A1.09.17 A1.10.20 A1.10.23 A1.09.20 A1.10.27 A1.09.23 A1.09.28 A1.09.32 +A1.09.26 A1.09.19 A1.09.24 A1.09.29 A1.09.21 A1.09.31 A1.08.24 A1.08.29 A1.09.33 +A1.09.27 A1.09.18 A1.09.23 A1.09.28 A1.09.22 A1.09.30 A1.09.24 A1.09.29 A1.09.34 +A1.09.28 A1.09.20 A1.09.25 A1.10.27 A1.09.23 A1.09.32 A1.09.27 A1.09.30 A1.09.35 +A1.09.29 A1.09.22 A1.09.27 A1.09.30 A1.09.24 A1.09.34 A1.09.26 A1.09.31 A1.09.36 +A1.09.30 A1.09.23 A1.09.28 A1.09.32 A1.09.27 A1.09.35 A1.09.29 A1.09.34 A1.09.37 +A1.09.31 A1.09.24 A1.09.29 A1.09.34 A1.09.26 A1.09.36 A1.08.29 A1.09.33 A1.09.38 +A1.09.32 A1.09.25 A1.10.27 A1.10.30 A1.09.28 A1.10.33 A1.09.30 A1.09.35 A1.10.35 +A1.09.33 A1.09.26 A1.09.31 A1.09.36 A1.08.29 A1.09.38 A1.08.30 A1.08.34 A1.08.38 +A1.09.34 A1.09.27 A1.09.30 A1.09.35 A1.09.29 A1.09.37 A1.09.31 A1.09.36 A1.09.39 +A1.09.35 A1.09.28 A1.09.32 A1.10.33 A1.09.30 A1.10.35 A1.09.34 A1.09.37 A1.09.40 +A1.09.36 A1.09.29 A1.09.34 A1.09.37 A1.09.31 A1.09.39 A1.09.33 A1.09.38 A1.09.41 +A1.09.37 A1.09.30 A1.09.35 A1.10.35 A1.09.34 A1.09.40 A1.09.36 A1.09.39 A1.09.42 +A1.09.38 A1.09.31 A1.09.36 A1.09.39 A1.09.33 A1.09.41 A1.08.34 A1.08.38 A1.08.42 +A1.09.39 A1.09.34 A1.09.37 A1.09.40 A1.09.36 A1.09.42 A1.09.38 A1.09.41 A1.09.43 +A1.09.40 A1.09.35 A1.10.35 A1.10.39 A1.09.37 A1.10.42 A1.09.39 A1.09.42 A1.09.44 +A1.09.41 A1.09.36 A1.09.39 A1.09.42 A1.09.38 A1.09.43 A1.08.38 A1.08.42 A1.09.45 +A1.09.42 A1.09.37 A1.09.40 A1.10.42 A1.09.39 A1.09.44 A1.09.41 A1.09.43 A1.09.46 +A1.09.43 A1.09.39 A1.09.42 A1.09.44 A1.09.41 A1.09.46 A1.08.42 A1.09.45 A1.09.47 +A1.09.44 A1.09.40 A1.10.42 A1.10.44 A1.09.42 A1.10.46 A1.09.43 A1.09.46 A1.09.48 +A1.09.45 A1.09.41 A1.09.43 A1.09.46 A1.08.42 A1.09.47 A1.08.43 A1.08.46 A1.08.49 +A1.09.46 A1.09.42 A1.09.44 A1.10.46 A1.09.43 A1.09.48 A1.09.45 A1.09.47 A1.09.49 +A1.09.47 A1.09.43 A1.09.46 A1.09.48 A1.09.45 A1.09.49 A1.08.46 A1.08.49 A1.09.50 +A1.09.48 A1.09.44 A1.10.46 A1.10.48 A1.09.46 A1.10.50 A1.09.47 A1.09.49 A1.09.51 +A1.09.49 A1.09.46 A1.09.48 A1.10.50 A1.09.47 A1.09.51 A1.08.49 A1.09.50 A1.09.52 +A1.09.50 A1.09.47 A1.09.49 A1.09.51 A1.08.49 A1.09.52 A1.09.53 A1.08.50 A1.08.52 A1.09.54 +A1.09.51 A1.09.48 A1.10.50 A1.10.51 A1.09.49 A1.10.52 A1.10.54 A1.09.50 A1.09.52 A1.09.55 A1.09.57 +A1.09.52 A1.09.49 A1.09.51 A1.09.50 A1.09.55 A1.09.53 A1.09.56 +A1.09.53 A1.09.50 A1.09.52 A1.09.55 A1.09.56 A1.08.52 A1.09.54 A1.09.58 +A1.09.54 A1.09.50 A1.09.53 A1.09.56 A1.08.52 A1.09.58 A1.08.54 A1.08.57 +A1.09.55 A1.09.51 A1.10.54 A1.09.52 A1.09.57 A1.09.53 A1.09.56 A1.09.59 +A1.09.56 A1.09.52 A1.09.55 A1.09.57 A1.09.53 A1.09.59 A1.09.54 A1.09.58 A1.09.60 +A1.09.57 A1.09.51 A1.10.54 A1.10.56 A1.09.55 A1.10.58 A1.09.56 A1.09.59 A1.09.61 +A1.09.58 A1.09.53 A1.09.56 A1.09.59 A1.09.54 A1.09.60 A1.08.54 A1.08.57 A1.08.60 +A1.09.59 A1.09.55 A1.09.57 A1.10.58 A1.09.56 A1.09.61 A1.09.58 A1.09.60 A1.09.62 +A1.09.60 A1.09.56 A1.09.59 A1.09.61 A1.09.58 A1.09.62 A1.08.57 A1.08.60 +A1.09.61 A1.09.57 A1.10.58 A1.10.60 A1.10.61 A1.09.59 A1.09.60 A1.09.62 +A1.09.62 A1.10.61 A1.09.59 A1.09.61 A1.09.60 A1.08.60 +A1.10.00 A1.10.02 A1.10.09 A1.10.05 +A1.10.01 A1.10.03 A1.10.06 A1.10.11 +A1.10.02 A1.11.04 A1.10.00 A1.10.09 A1.10.13 +A1.10.03 A1.10.07 A1.10.08 A1.10.01 A1.10.06 A1.10.11 +A1.10.04 A1.10.05 A1.10.07 A1.10.10 +A1.10.05 A1.10.00 A1.10.09 A1.10.04 A1.10.10 A1.10.14 +A1.10.06 A1.10.03 A1.10.01 A1.10.11 A1.09.06 A1.10.12 A1.10.16 +A1.10.07 A1.10.04 A1.10.10 A1.10.03 A1.10.08 +A1.10.08 A1.10.07 A1.10.10 A1.10.03 A1.10.11 A1.10.15 +A1.10.09 A1.11.04 A1.10.02 A1.10.00 A1.10.13 A1.10.05 A1.10.10 A1.10.14 A1.10.17 +A1.10.10 A1.10.09 A1.10.05 A1.10.04 A1.10.07 A1.10.14 A1.10.08 A1.10.11 A1.10.15 A1.10.18 +A1.10.11 A1.10.10 A1.10.03 A1.10.08 A1.10.01 A1.10.06 A1.10.15 A1.10.12 A1.10.16 A1.10.19 +A1.10.12 A1.10.06 A1.10.11 A1.09.06 A1.10.16 A1.09.12 A1.09.17 A1.10.20 +A1.10.13 A1.11.04 A1.11.10 A1.10.02 A1.10.09 A1.11.15 A1.10.14 A1.10.17 A1.11.20 +A1.10.14 A1.10.09 A1.10.13 A1.10.05 A1.10.10 A1.10.17 A1.10.15 A1.10.18 A1.10.21 +A1.10.15 A1.10.10 A1.10.14 A1.10.08 A1.10.11 A1.10.18 A1.10.16 A1.10.19 A1.10.22 +A1.10.16 A1.10.06 A1.10.11 A1.10.15 A1.10.12 A1.10.19 A1.09.17 A1.10.20 A1.10.23 +A1.10.17 A1.10.09 A1.10.13 A1.11.15 A1.10.14 A1.11.20 A1.10.18 A1.10.21 A1.10.24 +A1.10.18 A1.10.10 A1.10.14 A1.10.17 A1.10.15 A1.10.21 A1.10.19 A1.10.22 A1.10.25 +A1.10.19 A1.10.11 A1.10.15 A1.10.18 A1.10.16 A1.10.22 A1.10.20 A1.10.23 A1.10.26 +A1.10.20 A1.10.12 A1.10.16 A1.10.19 A1.09.17 A1.10.23 A1.09.20 A1.09.25 A1.10.27 +A1.10.21 A1.10.14 A1.10.17 A1.11.20 A1.10.18 A1.10.24 A1.10.22 A1.10.25 A1.10.28 +A1.10.22 A1.10.15 A1.10.18 A1.10.21 A1.10.19 A1.10.25 A1.10.23 A1.10.26 A1.10.29 +A1.10.23 A1.10.16 A1.10.19 A1.10.22 A1.10.20 A1.10.26 A1.09.25 A1.10.27 A1.10.30 +A1.10.24 A1.10.17 A1.11.20 A1.11.21 A1.10.21 A1.11.25 A1.10.25 A1.10.28 A1.11.29 +A1.10.25 A1.10.18 A1.10.21 A1.10.24 A1.10.22 A1.10.28 A1.10.26 A1.10.29 A1.10.31 +A1.10.26 A1.10.19 A1.10.22 A1.10.25 A1.10.23 A1.10.29 A1.10.27 A1.10.30 A1.10.32 +A1.10.27 A1.10.20 A1.10.23 A1.10.26 A1.09.25 A1.10.30 A1.09.28 A1.09.32 A1.10.33 +A1.10.28 A1.10.21 A1.10.24 A1.11.25 A1.10.25 A1.11.29 A1.10.29 A1.10.31 A1.11.33 +A1.10.29 A1.10.22 A1.10.25 A1.10.28 A1.10.26 A1.10.31 A1.10.30 A1.10.32 A1.10.34 +A1.10.30 A1.10.23 A1.10.26 A1.10.29 A1.10.27 A1.10.32 A1.09.32 A1.10.33 A1.10.36 +A1.10.31 A1.10.25 A1.10.28 A1.11.29 A1.10.29 A1.11.33 A1.10.32 A1.10.34 A1.10.37 +A1.10.32 A1.10.26 A1.10.29 A1.10.31 A1.10.30 A1.10.34 A1.10.33 A1.10.36 A1.10.38 +A1.10.33 A1.10.27 A1.10.30 A1.10.32 A1.09.32 A1.10.36 A1.09.35 A1.10.35 A1.10.39 +A1.10.34 A1.10.29 A1.10.31 A1.11.33 A1.10.32 A1.10.37 A1.10.36 A1.10.38 A1.10.40 +A1.10.35 A1.09.32 A1.10.33 A1.10.36 A1.09.35 A1.10.39 A1.09.37 A1.09.40 A1.10.42 +A1.10.36 A1.10.30 A1.10.32 A1.10.34 A1.10.33 A1.10.38 A1.10.35 A1.10.39 A1.10.41 +A1.10.37 A1.10.31 A1.11.33 A1.11.34 A1.10.34 A1.11.37 A1.10.38 A1.10.40 A1.11.40 +A1.10.38 A1.10.32 A1.10.34 A1.10.37 A1.10.36 A1.10.40 A1.10.39 A1.10.41 A1.10.43 +A1.10.39 A1.10.33 A1.10.36 A1.10.38 A1.10.35 A1.10.41 A1.09.40 A1.10.42 A1.10.44 +A1.10.40 A1.10.34 A1.10.37 A1.11.37 A1.10.38 A1.11.40 A1.10.41 A1.10.43 A1.11.43 +A1.10.41 A1.10.36 A1.10.38 A1.10.40 A1.10.39 A1.10.43 A1.10.42 A1.10.44 A1.10.45 +A1.10.42 A1.10.35 A1.10.39 A1.10.41 A1.09.40 A1.10.44 A1.09.42 A1.09.44 A1.10.46 +A1.10.43 A1.10.38 A1.10.40 A1.11.40 A1.10.41 A1.11.43 A1.10.44 A1.10.45 A1.10.47 +A1.10.44 A1.10.39 A1.10.41 A1.10.43 A1.10.42 A1.10.45 A1.09.44 A1.10.46 A1.10.48 +A1.10.45 A1.10.41 A1.10.43 A1.11.43 A1.10.44 A1.10.47 A1.10.46 A1.10.48 A1.10.49 +A1.10.46 A1.10.42 A1.10.44 A1.10.45 A1.09.44 A1.10.48 A1.09.46 A1.09.48 A1.10.50 +A1.10.47 A1.10.43 A1.11.43 A1.11.44 A1.10.45 A1.11.46 A1.10.48 A1.10.49 A1.11.48 +A1.10.48 A1.10.44 A1.10.45 A1.10.47 A1.10.46 A1.10.49 A1.09.48 A1.10.50 A1.10.51 +A1.10.49 A1.10.45 A1.10.47 A1.11.46 A1.10.48 A1.11.48 A1.10.50 A1.10.51 A1.11.50 +A1.10.50 A1.10.46 A1.10.48 A1.10.49 A1.09.48 A1.10.51 A1.09.49 A1.09.51 A1.10.52 +A1.10.51 A1.10.48 A1.10.49 A1.11.48 A1.10.50 A1.11.50 A1.11.54 A1.09.51 A1.10.52 A1.10.53 A1.10.55 +A1.10.52 A1.10.50 A1.10.51 A1.09.51 A1.10.53 A1.10.54 A1.10.56 +A1.10.53 A1.10.51 A1.11.54 A1.10.52 A1.10.55 A1.10.54 A1.10.56 A1.10.57 +A1.10.54 A1.09.51 A1.10.52 A1.10.53 A1.10.56 A1.09.55 A1.09.57 A1.10.58 +A1.10.55 A1.10.51 A1.11.54 A1.11.55 A1.10.53 A1.11.58 A1.10.56 A1.10.57 A1.10.59 +A1.10.56 A1.10.52 A1.10.53 A1.10.55 A1.10.54 A1.10.57 A1.09.57 A1.10.58 A1.10.60 +A1.10.57 A1.10.53 A1.10.55 A1.11.58 A1.10.56 A1.10.59 A1.10.58 A1.10.60 +A1.10.58 A1.10.54 A1.10.56 A1.10.57 A1.09.57 A1.10.60 A1.10.61 A1.09.59 A1.09.61 +A1.10.59 A1.10.55 A1.11.58 A1.11.59 A1.10.57 A1.11.61 A1.10.60 A1.10.62 +A1.10.60 A1.10.56 A1.10.57 A1.10.59 A1.10.58 A1.10.62 A1.10.61 A1.09.61 +A1.10.61 A1.10.58 A1.10.60 A1.10.62 A1.09.61 A1.09.62 +A1.10.62 A1.10.59 A1.11.61 A1.11.62 A1.10.60 A1.10.61 +A1.11.00 A1.12.00 A1.11.06 A1.11.08 A1.12.07 +A1.11.01 A1.11.02 A1.11.04 A1.11.10 +A1.11.02 A1.11.03 A1.11.01 A1.11.10 A1.11.11 +A1.11.03 A1.11.02 A1.11.05 A1.11.10 A1.11.11 +A1.11.04 A1.11.01 A1.11.10 A1.10.02 A1.10.09 A1.10.13 A1.11.15 +A1.11.05 A1.11.03 A1.11.07 A1.11.11 A1.11.12 +A1.11.06 A1.11.00 A1.11.08 A1.11.09 A1.11.12 A1.11.13 A1.11.14 +A1.11.07 A1.11.09 A1.11.05 A1.11.11 A1.11.12 +A1.11.08 A1.11.00 A1.12.00 A1.11.06 A1.12.07 A1.11.13 A1.11.14 A1.12.14 +A1.11.09 A1.11.06 A1.11.07 A1.11.12 A1.11.13 +A1.11.10 A1.11.02 A1.11.03 A1.11.01 A1.11.04 A1.11.11 A1.10.13 A1.11.15 A1.11.16 +A1.11.11 A1.11.02 A1.11.03 A1.11.05 A1.11.07 A1.11.10 A1.11.12 A1.11.15 A1.11.16 A1.11.17 +A1.11.12 A1.11.06 A1.11.09 A1.11.05 A1.11.07 A1.11.11 A1.11.13 A1.11.16 A1.11.17 A1.11.18 +A1.11.13 A1.11.06 A1.11.08 A1.11.09 A1.11.12 A1.11.14 A1.11.17 A1.11.18 A1.11.19 +A1.11.14 A1.11.06 A1.11.08 A1.12.07 A1.11.13 A1.12.14 A1.11.18 A1.11.19 A1.12.19 +A1.11.15 A1.11.04 A1.11.10 A1.11.11 A1.10.13 A1.11.16 A1.10.17 A1.11.20 A1.11.21 +A1.11.16 A1.11.10 A1.11.11 A1.11.12 A1.11.15 A1.11.17 A1.11.20 A1.11.21 A1.11.22 +A1.11.17 A1.11.11 A1.11.12 A1.11.13 A1.11.16 A1.11.18 A1.11.21 A1.11.22 A1.11.23 +A1.11.18 A1.11.12 A1.11.13 A1.11.14 A1.11.17 A1.11.19 A1.11.22 A1.11.23 A1.11.24 +A1.11.19 A1.11.13 A1.11.14 A1.12.14 A1.11.18 A1.12.19 A1.11.23 A1.11.24 A1.12.24 +A1.11.20 A1.10.13 A1.11.15 A1.11.16 A1.10.17 A1.11.21 A1.10.21 A1.10.24 A1.11.25 +A1.11.21 A1.11.15 A1.11.16 A1.11.17 A1.11.20 A1.11.22 A1.10.24 A1.11.25 A1.11.26 +A1.11.22 A1.11.16 A1.11.17 A1.11.18 A1.11.21 A1.11.23 A1.11.25 A1.11.26 A1.11.27 +A1.11.23 A1.11.17 A1.11.18 A1.11.19 A1.11.22 A1.11.24 A1.11.26 A1.11.27 A1.11.28 +A1.11.24 A1.11.18 A1.11.19 A1.12.19 A1.11.23 A1.12.24 A1.11.27 A1.11.28 A1.12.28 +A1.11.25 A1.11.20 A1.11.21 A1.11.22 A1.10.24 A1.11.26 A1.10.28 A1.11.29 A1.11.30 +A1.11.26 A1.11.21 A1.11.22 A1.11.23 A1.11.25 A1.11.27 A1.11.29 A1.11.30 A1.11.31 +A1.11.27 A1.11.22 A1.11.23 A1.11.24 A1.11.26 A1.11.28 A1.11.30 A1.11.31 A1.11.32 +A1.11.28 A1.11.23 A1.11.24 A1.12.24 A1.11.27 A1.12.28 A1.11.31 A1.11.32 A1.12.32 +A1.11.29 A1.10.24 A1.11.25 A1.11.26 A1.10.28 A1.11.30 A1.10.31 A1.11.33 A1.11.34 +A1.11.30 A1.11.25 A1.11.26 A1.11.27 A1.11.29 A1.11.31 A1.11.33 A1.11.34 A1.11.35 +A1.11.31 A1.11.26 A1.11.27 A1.11.28 A1.11.30 A1.11.32 A1.11.34 A1.11.35 A1.11.36 +A1.11.32 A1.11.27 A1.11.28 A1.12.28 A1.11.31 A1.12.32 A1.11.35 A1.11.36 A1.12.36 +A1.11.33 A1.10.28 A1.11.29 A1.11.30 A1.10.31 A1.11.34 A1.10.34 A1.10.37 A1.11.37 +A1.11.34 A1.11.29 A1.11.30 A1.11.31 A1.11.33 A1.11.35 A1.10.37 A1.11.37 A1.11.38 +A1.11.35 A1.11.30 A1.11.31 A1.11.32 A1.11.34 A1.11.36 A1.11.37 A1.11.38 A1.11.39 +A1.11.36 A1.11.31 A1.11.32 A1.12.32 A1.11.35 A1.12.36 A1.11.38 A1.11.39 A1.12.39 +A1.11.37 A1.11.33 A1.11.34 A1.11.35 A1.10.37 A1.11.38 A1.10.40 A1.11.40 A1.11.41 +A1.11.38 A1.11.34 A1.11.35 A1.11.36 A1.11.37 A1.11.39 A1.11.40 A1.11.41 A1.11.42 +A1.11.39 A1.11.35 A1.11.36 A1.12.36 A1.11.38 A1.12.39 A1.11.41 A1.11.42 A1.12.42 +A1.11.40 A1.10.37 A1.11.37 A1.11.38 A1.10.40 A1.11.41 A1.10.43 A1.11.43 A1.11.44 +A1.11.41 A1.11.37 A1.11.38 A1.11.39 A1.11.40 A1.11.42 A1.11.43 A1.11.44 A1.11.45 +A1.11.42 A1.11.38 A1.11.39 A1.12.39 A1.11.41 A1.12.42 A1.11.44 A1.11.45 A1.12.45 +A1.11.43 A1.10.40 A1.11.40 A1.11.41 A1.10.43 A1.11.44 A1.10.45 A1.10.47 A1.11.46 +A1.11.44 A1.11.40 A1.11.41 A1.11.42 A1.11.43 A1.11.45 A1.10.47 A1.11.46 A1.11.47 +A1.11.45 A1.11.41 A1.11.42 A1.12.42 A1.11.44 A1.12.45 A1.11.46 A1.11.47 A1.12.47 +A1.11.46 A1.11.43 A1.11.44 A1.11.45 A1.10.47 A1.11.47 A1.10.49 A1.11.48 A1.11.49 +A1.11.47 A1.11.44 A1.11.45 A1.12.45 A1.11.46 A1.12.47 A1.11.48 A1.11.49 A1.12.49 +A1.11.48 A1.10.47 A1.11.46 A1.11.47 A1.10.49 A1.11.49 A1.10.51 A1.11.50 A1.11.51 A1.11.52 +A1.11.49 A1.11.46 A1.11.47 A1.12.47 A1.11.48 A1.12.49 A1.11.51 A1.11.52 A1.11.53 A1.12.53 +A1.11.50 A1.10.49 A1.11.48 A1.10.51 A1.11.51 A1.11.54 A1.11.55 +A1.11.51 A1.11.48 A1.11.49 A1.11.50 A1.11.52 A1.11.54 A1.11.55 A1.11.56 +A1.11.52 A1.11.48 A1.11.49 A1.11.51 A1.11.53 A1.11.55 A1.11.56 A1.11.57 +A1.11.53 A1.11.49 A1.12.49 A1.11.52 A1.12.53 A1.11.56 A1.11.57 A1.12.57 +A1.11.54 A1.10.51 A1.11.50 A1.11.51 A1.11.55 A1.10.53 A1.10.55 A1.11.58 +A1.11.55 A1.11.50 A1.11.51 A1.11.52 A1.11.54 A1.11.56 A1.10.55 A1.11.58 A1.11.59 +A1.11.56 A1.11.51 A1.11.52 A1.11.53 A1.11.55 A1.11.57 A1.11.58 A1.11.59 A1.11.60 +A1.11.57 A1.11.52 A1.11.53 A1.12.53 A1.11.56 A1.12.57 A1.11.59 A1.11.60 A1.12.60 +A1.11.58 A1.11.54 A1.11.55 A1.11.56 A1.10.55 A1.11.59 A1.10.57 A1.10.59 A1.11.61 +A1.11.59 A1.11.55 A1.11.56 A1.11.57 A1.11.58 A1.11.60 A1.10.59 A1.11.61 A1.11.62 +A1.11.60 A1.11.56 A1.11.57 A1.12.57 A1.11.59 A1.12.60 A1.11.61 A1.11.62 A1.12.62 +A1.11.61 A1.11.58 A1.11.59 A1.11.60 A1.10.59 A1.11.62 A1.10.62 +A1.11.62 A1.11.59 A1.11.60 A1.12.60 A1.11.61 A1.12.62 A1.10.62 +A1.12.00 A1.11.00 A1.11.08 A1.12.07 A1.12.05 +A1.12.01 A1.12.03 A1.12.10 A1.12.02 +A1.12.02 A1.12.01 A1.12.10 A1.12.08 A1.13.05 A1.13.04 +A1.12.03 A1.12.04 A1.12.01 A1.12.11 A1.12.10 +A1.12.04 A1.12.06 A1.12.03 A1.12.12 A1.12.11 +A1.12.05 A1.12.00 A1.12.07 A1.12.09 A1.12.14 A1.12.13 A1.12.12 +A1.12.06 A1.12.09 A1.12.04 A1.12.12 A1.12.11 +A1.12.07 A1.11.00 A1.12.00 A1.11.08 A1.12.05 A1.11.14 A1.12.14 A1.12.13 +A1.12.08 A1.12.10 A1.12.02 A1.13.05 A1.12.15 A1.13.14 +A1.12.09 A1.12.05 A1.12.06 A1.12.13 A1.12.12 +A1.12.10 A1.12.03 A1.12.01 A1.12.11 A1.12.02 A1.12.08 A1.12.16 A1.12.15 A1.13.14 +A1.12.11 A1.12.06 A1.12.04 A1.12.03 A1.12.12 A1.12.10 A1.12.17 A1.12.16 A1.12.15 +A1.12.12 A1.12.05 A1.12.09 A1.12.06 A1.12.04 A1.12.13 A1.12.11 A1.12.18 A1.12.17 A1.12.16 +A1.12.13 A1.12.07 A1.12.05 A1.12.09 A1.12.14 A1.12.12 A1.12.19 A1.12.18 A1.12.17 +A1.12.14 A1.11.08 A1.12.07 A1.12.05 A1.11.14 A1.12.13 A1.11.19 A1.12.19 A1.12.18 +A1.12.15 A1.12.11 A1.12.10 A1.12.08 A1.12.16 A1.13.14 A1.12.21 A1.12.20 A1.13.18 +A1.12.16 A1.12.12 A1.12.11 A1.12.10 A1.12.17 A1.12.15 A1.12.22 A1.12.21 A1.12.20 +A1.12.17 A1.12.13 A1.12.12 A1.12.11 A1.12.18 A1.12.16 A1.12.23 A1.12.22 A1.12.21 +A1.12.18 A1.12.14 A1.12.13 A1.12.12 A1.12.19 A1.12.17 A1.12.24 A1.12.23 A1.12.22 +A1.12.19 A1.11.14 A1.12.14 A1.12.13 A1.11.19 A1.12.18 A1.11.24 A1.12.24 A1.12.23 +A1.12.20 A1.12.16 A1.12.15 A1.13.14 A1.12.21 A1.13.18 A1.12.25 A1.13.25 A1.13.22 +A1.12.21 A1.12.17 A1.12.16 A1.12.15 A1.12.22 A1.12.20 A1.12.26 A1.12.25 A1.13.25 +A1.12.22 A1.12.18 A1.12.17 A1.12.16 A1.12.23 A1.12.21 A1.12.27 A1.12.26 A1.12.25 +A1.12.23 A1.12.19 A1.12.18 A1.12.17 A1.12.24 A1.12.22 A1.12.28 A1.12.27 A1.12.26 +A1.12.24 A1.11.19 A1.12.19 A1.12.18 A1.11.24 A1.12.23 A1.11.28 A1.12.28 A1.12.27 +A1.12.25 A1.12.22 A1.12.21 A1.12.20 A1.12.26 A1.13.25 A1.12.30 A1.12.29 A1.13.29 +A1.12.26 A1.12.23 A1.12.22 A1.12.21 A1.12.27 A1.12.25 A1.12.31 A1.12.30 A1.12.29 +A1.12.27 A1.12.24 A1.12.23 A1.12.22 A1.12.28 A1.12.26 A1.12.32 A1.12.31 A1.12.30 +A1.12.28 A1.11.24 A1.12.24 A1.12.23 A1.11.28 A1.12.27 A1.11.32 A1.12.32 A1.12.31 +A1.12.29 A1.12.26 A1.12.25 A1.13.25 A1.12.30 A1.13.29 A1.12.34 A1.12.33 A1.13.32 +A1.12.30 A1.12.27 A1.12.26 A1.12.25 A1.12.31 A1.12.29 A1.12.35 A1.12.34 A1.12.33 +A1.12.31 A1.12.28 A1.12.27 A1.12.26 A1.12.32 A1.12.30 A1.12.36 A1.12.35 A1.12.34 +A1.12.32 A1.11.28 A1.12.28 A1.12.27 A1.11.32 A1.12.31 A1.11.36 A1.12.36 A1.12.35 +A1.12.33 A1.12.30 A1.12.29 A1.13.29 A1.12.34 A1.13.32 A1.12.37 A1.13.38 A1.13.35 +A1.12.34 A1.12.31 A1.12.30 A1.12.29 A1.12.35 A1.12.33 A1.12.38 A1.12.37 A1.13.38 +A1.12.35 A1.12.32 A1.12.31 A1.12.30 A1.12.36 A1.12.34 A1.12.39 A1.12.38 A1.12.37 +A1.12.36 A1.11.32 A1.12.32 A1.12.31 A1.11.36 A1.12.35 A1.11.39 A1.12.39 A1.12.38 +A1.12.37 A1.12.35 A1.12.34 A1.12.33 A1.12.38 A1.13.38 A1.12.41 A1.12.40 A1.13.41 +A1.12.38 A1.12.36 A1.12.35 A1.12.34 A1.12.39 A1.12.37 A1.12.42 A1.12.41 A1.12.40 +A1.12.39 A1.11.36 A1.12.36 A1.12.35 A1.11.39 A1.12.38 A1.11.42 A1.12.42 A1.12.41 +A1.12.40 A1.12.38 A1.12.37 A1.13.38 A1.12.41 A1.13.41 A1.12.44 A1.12.43 A1.13.44 +A1.12.41 A1.12.39 A1.12.38 A1.12.37 A1.12.42 A1.12.40 A1.12.45 A1.12.44 A1.12.43 +A1.12.42 A1.11.39 A1.12.39 A1.12.38 A1.11.42 A1.12.41 A1.11.45 A1.12.45 A1.12.44 +A1.12.43 A1.12.41 A1.12.40 A1.13.41 A1.12.44 A1.13.44 A1.12.46 A1.13.48 A1.13.46 +A1.12.44 A1.12.42 A1.12.41 A1.12.40 A1.12.45 A1.12.43 A1.12.47 A1.12.46 A1.13.48 +A1.12.45 A1.11.42 A1.12.42 A1.12.41 A1.11.45 A1.12.44 A1.11.47 A1.12.47 A1.12.46 +A1.12.46 A1.12.45 A1.12.44 A1.12.43 A1.12.47 A1.13.48 A1.12.49 A1.12.48 A1.13.50 +A1.12.47 A1.11.45 A1.12.45 A1.12.44 A1.11.47 A1.12.46 A1.11.49 A1.12.49 A1.12.48 +A1.12.48 A1.12.47 A1.12.46 A1.13.48 A1.12.49 A1.13.50 A1.12.52 A1.12.51 A1.12.50 A1.13.52 +A1.12.49 A1.11.47 A1.12.47 A1.12.46 A1.11.49 A1.12.48 A1.11.53 A1.12.53 A1.12.52 A1.12.51 +A1.12.50 A1.12.48 A1.13.50 A1.12.51 A1.13.52 A1.12.55 A1.12.54 +A1.12.51 A1.12.49 A1.12.48 A1.12.52 A1.12.50 A1.12.56 A1.12.55 A1.12.54 +A1.12.52 A1.12.49 A1.12.48 A1.12.53 A1.12.51 A1.12.57 A1.12.56 A1.12.55 +A1.12.53 A1.11.49 A1.12.49 A1.11.53 A1.12.52 A1.11.57 A1.12.57 A1.12.56 +A1.12.54 A1.12.51 A1.12.50 A1.13.52 A1.12.55 A1.12.58 A1.13.56 A1.13.54 +A1.12.55 A1.12.52 A1.12.51 A1.12.50 A1.12.56 A1.12.54 A1.12.59 A1.12.58 A1.13.56 +A1.12.56 A1.12.53 A1.12.52 A1.12.51 A1.12.57 A1.12.55 A1.12.60 A1.12.59 A1.12.58 +A1.12.57 A1.11.53 A1.12.53 A1.12.52 A1.11.57 A1.12.56 A1.11.60 A1.12.60 A1.12.59 +A1.12.58 A1.12.56 A1.12.55 A1.12.54 A1.12.59 A1.13.56 A1.12.61 A1.13.60 A1.13.58 +A1.12.59 A1.12.57 A1.12.56 A1.12.55 A1.12.60 A1.12.58 A1.12.62 A1.12.61 A1.13.60 +A1.12.60 A1.11.57 A1.12.57 A1.12.56 A1.11.60 A1.12.59 A1.11.62 A1.12.62 A1.12.61 +A1.12.61 A1.12.60 A1.12.59 A1.12.58 A1.12.62 A1.13.60 A1.13.62 +A1.12.62 A1.11.60 A1.12.60 A1.12.59 A1.11.62 A1.12.61 +A1.13.00 A1.13.03 A1.13.06 +A1.13.01 A1.13.04 A1.13.02 A1.13.14 A1.13.10 +A1.13.02 A1.13.01 A1.13.10 A1.13.07 +A1.13.03 A1.13.09 A1.13.00 A1.13.13 A1.13.06 +A1.13.04 A1.12.02 A1.13.05 A1.13.01 A1.13.14 A1.13.10 +A1.13.05 A1.12.02 A1.12.08 A1.13.04 A1.13.14 +A1.13.06 A1.13.03 A1.13.00 A1.13.13 A1.14.06 A1.13.17 A1.13.12 +A1.13.07 A1.13.02 A1.13.10 A1.13.15 A1.13.11 +A1.13.08 A1.13.11 A1.13.09 +A1.13.09 A1.13.11 A1.13.08 A1.13.03 A1.13.16 A1.13.13 +A1.13.10 A1.13.04 A1.13.01 A1.13.02 A1.13.14 A1.13.07 A1.13.18 A1.13.15 A1.13.11 +A1.13.11 A1.13.10 A1.13.07 A1.13.15 A1.13.08 A1.13.09 A1.13.19 A1.13.16 A1.13.13 +A1.13.12 A1.13.13 A1.13.06 A1.14.06 A1.13.17 A1.13.21 A1.14.17 A1.14.12 +A1.13.13 A1.13.11 A1.13.09 A1.13.03 A1.13.16 A1.13.06 A1.13.20 A1.13.17 A1.13.12 +A1.13.14 A1.12.10 A1.12.08 A1.13.05 A1.13.04 A1.13.01 A1.12.15 A1.13.10 A1.12.20 A1.13.18 A1.13.15 +A1.13.15 A1.13.14 A1.13.10 A1.13.07 A1.13.18 A1.13.11 A1.13.22 A1.13.19 A1.13.16 +A1.13.16 A1.13.15 A1.13.11 A1.13.09 A1.13.19 A1.13.13 A1.13.23 A1.13.20 A1.13.17 +A1.13.17 A1.13.16 A1.13.13 A1.13.06 A1.13.20 A1.13.12 A1.13.24 A1.13.21 A1.14.17 +A1.13.18 A1.12.15 A1.13.14 A1.13.10 A1.12.20 A1.13.15 A1.13.25 A1.13.22 A1.13.19 +A1.13.19 A1.13.18 A1.13.15 A1.13.11 A1.13.22 A1.13.16 A1.13.26 A1.13.23 A1.13.20 +A1.13.20 A1.13.19 A1.13.16 A1.13.13 A1.13.23 A1.13.17 A1.13.27 A1.13.24 A1.13.21 +A1.13.21 A1.13.20 A1.13.17 A1.13.12 A1.13.24 A1.14.17 A1.13.28 A1.14.25 A1.14.20 +A1.13.22 A1.12.20 A1.13.18 A1.13.15 A1.13.25 A1.13.19 A1.13.29 A1.13.26 A1.13.23 +A1.13.23 A1.13.22 A1.13.19 A1.13.16 A1.13.26 A1.13.20 A1.13.30 A1.13.27 A1.13.24 +A1.13.24 A1.13.23 A1.13.20 A1.13.17 A1.13.27 A1.13.21 A1.13.31 A1.13.28 A1.14.25 +A1.13.25 A1.12.21 A1.12.20 A1.13.18 A1.12.25 A1.13.22 A1.12.29 A1.13.29 A1.13.26 +A1.13.26 A1.13.25 A1.13.22 A1.13.19 A1.13.29 A1.13.23 A1.13.32 A1.13.30 A1.13.27 +A1.13.27 A1.13.26 A1.13.23 A1.13.20 A1.13.30 A1.13.24 A1.13.33 A1.13.31 A1.13.28 +A1.13.28 A1.13.27 A1.13.24 A1.13.21 A1.13.31 A1.14.25 A1.13.34 A1.14.32 A1.14.28 +A1.13.29 A1.12.25 A1.13.25 A1.13.22 A1.12.29 A1.13.26 A1.12.33 A1.13.32 A1.13.30 +A1.13.30 A1.13.29 A1.13.26 A1.13.23 A1.13.32 A1.13.27 A1.13.35 A1.13.33 A1.13.31 +A1.13.31 A1.13.30 A1.13.27 A1.13.24 A1.13.33 A1.13.28 A1.13.37 A1.13.34 A1.14.32 +A1.13.32 A1.12.29 A1.13.29 A1.13.26 A1.12.33 A1.13.30 A1.13.38 A1.13.35 A1.13.33 +A1.13.33 A1.13.32 A1.13.30 A1.13.27 A1.13.35 A1.13.31 A1.13.39 A1.13.37 A1.13.34 +A1.13.34 A1.13.33 A1.13.31 A1.13.28 A1.13.37 A1.14.32 A1.13.40 A1.13.36 A1.14.35 +A1.13.35 A1.12.33 A1.13.32 A1.13.30 A1.13.38 A1.13.33 A1.13.41 A1.13.39 A1.13.37 +A1.13.36 A1.13.37 A1.13.34 A1.14.32 A1.13.40 A1.14.35 A1.13.43 A1.14.40 A1.14.37 +A1.13.37 A1.13.35 A1.13.33 A1.13.31 A1.13.39 A1.13.34 A1.13.42 A1.13.40 A1.13.36 +A1.13.38 A1.12.34 A1.12.33 A1.13.32 A1.12.37 A1.13.35 A1.12.40 A1.13.41 A1.13.39 +A1.13.39 A1.13.38 A1.13.35 A1.13.33 A1.13.41 A1.13.37 A1.13.44 A1.13.42 A1.13.40 +A1.13.40 A1.13.39 A1.13.37 A1.13.34 A1.13.42 A1.13.36 A1.13.45 A1.13.43 A1.14.40 +A1.13.41 A1.12.37 A1.13.38 A1.13.35 A1.12.40 A1.13.39 A1.12.43 A1.13.44 A1.13.42 +A1.13.42 A1.13.41 A1.13.39 A1.13.37 A1.13.44 A1.13.40 A1.13.46 A1.13.45 A1.13.43 +A1.13.43 A1.13.42 A1.13.40 A1.13.36 A1.13.45 A1.14.40 A1.13.47 A1.14.44 A1.14.42 +A1.13.44 A1.12.40 A1.13.41 A1.13.39 A1.12.43 A1.13.42 A1.13.48 A1.13.46 A1.13.45 +A1.13.45 A1.13.44 A1.13.42 A1.13.40 A1.13.46 A1.13.43 A1.13.49 A1.13.47 A1.14.44 +A1.13.46 A1.12.43 A1.13.44 A1.13.42 A1.13.48 A1.13.45 A1.13.50 A1.13.49 A1.13.47 +A1.13.47 A1.13.46 A1.13.45 A1.13.43 A1.13.49 A1.14.44 A1.13.51 A1.14.48 A1.14.46 +A1.13.48 A1.12.44 A1.12.43 A1.13.44 A1.12.46 A1.13.46 A1.12.48 A1.13.50 A1.13.49 +A1.13.49 A1.13.48 A1.13.46 A1.13.45 A1.13.50 A1.13.47 A1.13.52 A1.13.51 A1.14.48 +A1.13.50 A1.12.46 A1.13.48 A1.13.46 A1.12.48 A1.13.49 A1.12.50 A1.13.52 A1.13.51 +A1.13.51 A1.13.50 A1.13.49 A1.13.47 A1.13.52 A1.14.48 A1.13.53 A1.14.51 A1.14.49 +A1.13.52 A1.12.48 A1.13.50 A1.13.49 A1.12.50 A1.13.51 A1.12.54 A1.13.56 A1.13.54 A1.13.53 A1.14.51 +A1.13.53 A1.13.52 A1.13.51 A1.13.54 A1.14.51 A1.13.57 A1.13.55 +A1.13.54 A1.13.52 A1.12.54 A1.13.56 A1.13.53 A1.13.58 A1.13.57 A1.13.55 +A1.13.55 A1.13.54 A1.13.53 A1.14.51 A1.13.57 A1.13.59 A1.14.56 A1.14.54 +A1.13.56 A1.13.52 A1.12.55 A1.12.54 A1.12.58 A1.13.54 A1.13.60 A1.13.58 A1.13.57 +A1.13.57 A1.13.56 A1.13.54 A1.13.53 A1.13.58 A1.13.55 A1.13.61 A1.13.59 A1.14.56 +A1.13.58 A1.12.58 A1.13.56 A1.13.54 A1.13.60 A1.13.57 A1.13.62 A1.13.61 A1.13.59 +A1.13.59 A1.13.58 A1.13.57 A1.13.55 A1.13.61 A1.14.56 A1.14.61 A1.14.60 A1.14.58 +A1.13.60 A1.12.59 A1.12.58 A1.13.56 A1.12.61 A1.13.58 A1.13.62 A1.13.61 +A1.13.61 A1.13.60 A1.13.58 A1.13.57 A1.13.62 A1.13.59 A1.14.61 A1.14.60 +A1.13.62 A1.12.61 A1.13.60 A1.13.58 A1.13.61 +A1.14.00 A1.14.06 A1.14.12 A1.14.08 A1.14.04 +A1.14.01 A1.14.03 A1.14.11 A1.14.05 +A1.14.02 A1.14.05 A1.14.13 A1.15.08 +A1.14.03 A1.14.07 A1.14.09 A1.14.11 A1.14.01 +A1.14.04 A1.14.00 A1.14.08 A1.14.10 +A1.14.05 A1.14.11 A1.14.01 A1.14.13 A1.14.02 +A1.14.06 A1.13.06 A1.13.12 A1.14.00 A1.14.17 A1.14.12 +A1.14.07 A1.14.10 A1.14.14 A1.14.09 A1.14.03 +A1.14.08 A1.14.00 A1.14.12 A1.14.04 A1.14.15 A1.14.10 +A1.14.09 A1.14.14 A1.14.07 A1.14.03 A1.14.16 A1.14.11 +A1.14.10 A1.14.12 A1.14.08 A1.14.04 A1.14.15 A1.14.18 A1.14.14 A1.14.07 +A1.14.11 A1.14.14 A1.14.09 A1.14.03 A1.14.16 A1.14.01 A1.14.05 A1.14.19 A1.14.13 +A1.14.12 A1.14.06 A1.13.12 A1.14.00 A1.14.17 A1.14.08 A1.14.20 A1.14.15 A1.14.10 +A1.14.13 A1.14.16 A1.14.11 A1.14.05 A1.14.19 A1.14.02 A1.15.08 A1.14.21 A1.15.17 A1.15.07 +A1.14.14 A1.14.15 A1.14.10 A1.14.18 A1.14.07 A1.14.09 A1.14.22 A1.14.16 A1.14.11 +A1.14.15 A1.14.17 A1.14.12 A1.14.08 A1.14.20 A1.14.10 A1.14.23 A1.14.18 A1.14.14 +A1.14.16 A1.14.18 A1.14.14 A1.14.09 A1.14.22 A1.14.11 A1.14.24 A1.14.19 A1.14.13 +A1.14.17 A1.14.06 A1.13.17 A1.13.12 A1.13.21 A1.14.12 A1.14.25 A1.14.20 A1.14.15 +A1.14.18 A1.14.20 A1.14.15 A1.14.10 A1.14.23 A1.14.14 A1.14.27 A1.14.22 A1.14.16 +A1.14.19 A1.14.22 A1.14.16 A1.14.11 A1.14.24 A1.14.13 A1.14.26 A1.14.21 A1.15.17 +A1.14.20 A1.13.21 A1.14.17 A1.14.12 A1.14.25 A1.14.15 A1.14.28 A1.14.23 A1.14.18 +A1.14.21 A1.14.24 A1.14.19 A1.14.13 A1.14.26 A1.15.17 A1.15.28 A1.15.23 A1.15.18 +A1.14.22 A1.14.23 A1.14.18 A1.14.14 A1.14.27 A1.14.16 A1.14.29 A1.14.24 A1.14.19 +A1.14.23 A1.14.25 A1.14.20 A1.14.15 A1.14.28 A1.14.18 A1.14.30 A1.14.27 A1.14.22 +A1.14.24 A1.14.27 A1.14.22 A1.14.16 A1.14.29 A1.14.19 A1.14.31 A1.14.26 A1.14.21 +A1.14.25 A1.13.24 A1.13.21 A1.14.17 A1.13.28 A1.14.20 A1.14.32 A1.14.28 A1.14.23 +A1.14.26 A1.14.29 A1.14.24 A1.14.19 A1.14.31 A1.14.21 A1.14.33 A1.15.28 A1.15.23 +A1.14.27 A1.14.28 A1.14.23 A1.14.18 A1.14.30 A1.14.22 A1.14.34 A1.14.29 A1.14.24 +A1.14.28 A1.13.28 A1.14.25 A1.14.20 A1.14.32 A1.14.23 A1.14.35 A1.14.30 A1.14.27 +A1.14.29 A1.14.30 A1.14.27 A1.14.22 A1.14.34 A1.14.24 A1.14.36 A1.14.31 A1.14.26 +A1.14.30 A1.14.32 A1.14.28 A1.14.23 A1.14.35 A1.14.27 A1.14.37 A1.14.34 A1.14.29 +A1.14.31 A1.14.34 A1.14.29 A1.14.24 A1.14.36 A1.14.26 A1.14.38 A1.14.33 A1.15.28 +A1.14.32 A1.13.31 A1.13.28 A1.14.25 A1.13.34 A1.14.28 A1.13.36 A1.14.35 A1.14.30 +A1.14.33 A1.14.36 A1.14.31 A1.14.26 A1.14.38 A1.15.28 A1.15.37 A1.15.33 A1.15.29 +A1.14.34 A1.14.35 A1.14.30 A1.14.27 A1.14.37 A1.14.29 A1.14.39 A1.14.36 A1.14.31 +A1.14.35 A1.13.34 A1.14.32 A1.14.28 A1.13.36 A1.14.30 A1.14.40 A1.14.37 A1.14.34 +A1.14.36 A1.14.37 A1.14.34 A1.14.29 A1.14.39 A1.14.31 A1.14.41 A1.14.38 A1.14.33 +A1.14.37 A1.13.36 A1.14.35 A1.14.30 A1.14.40 A1.14.34 A1.14.42 A1.14.39 A1.14.36 +A1.14.38 A1.14.39 A1.14.36 A1.14.31 A1.14.41 A1.14.33 A1.15.41 A1.15.37 A1.15.33 +A1.14.39 A1.14.40 A1.14.37 A1.14.34 A1.14.42 A1.14.36 A1.14.43 A1.14.41 A1.14.38 +A1.14.40 A1.13.40 A1.13.36 A1.14.35 A1.13.43 A1.14.37 A1.14.44 A1.14.42 A1.14.39 +A1.14.41 A1.14.42 A1.14.39 A1.14.36 A1.14.43 A1.14.38 A1.14.45 A1.15.41 A1.15.37 +A1.14.42 A1.13.43 A1.14.40 A1.14.37 A1.14.44 A1.14.39 A1.14.46 A1.14.43 A1.14.41 +A1.14.43 A1.14.44 A1.14.42 A1.14.39 A1.14.46 A1.14.41 A1.14.47 A1.14.45 A1.15.41 +A1.14.44 A1.13.45 A1.13.43 A1.14.40 A1.13.47 A1.14.42 A1.14.48 A1.14.46 A1.14.43 +A1.14.45 A1.14.46 A1.14.43 A1.14.41 A1.14.47 A1.15.41 A1.15.48 A1.15.45 A1.15.42 +A1.14.46 A1.13.47 A1.14.44 A1.14.42 A1.14.48 A1.14.43 A1.14.49 A1.14.47 A1.14.45 +A1.14.47 A1.14.48 A1.14.46 A1.14.43 A1.14.49 A1.14.45 A1.14.50 A1.15.48 A1.15.45 +A1.14.48 A1.13.49 A1.13.47 A1.14.44 A1.13.51 A1.14.46 A1.14.51 A1.14.49 A1.14.47 +A1.14.49 A1.13.51 A1.14.48 A1.14.46 A1.14.51 A1.14.47 A1.14.52 A1.14.50 A1.15.48 +A1.14.50 A1.14.51 A1.14.49 A1.14.47 A1.14.52 A1.15.48 A1.14.53 A1.15.53 A1.15.51 A1.15.49 +A1.14.51 A1.13.52 A1.13.51 A1.14.48 A1.13.53 A1.14.49 A1.13.55 A1.14.56 A1.14.54 A1.14.52 A1.14.50 +A1.14.52 A1.14.51 A1.14.49 A1.14.54 A1.14.50 A1.14.55 A1.14.53 +A1.14.53 A1.14.54 A1.14.52 A1.14.50 A1.14.55 A1.14.57 A1.15.53 A1.15.51 +A1.14.54 A1.14.51 A1.13.55 A1.14.56 A1.14.52 A1.14.58 A1.14.55 A1.14.53 +A1.14.55 A1.14.56 A1.14.54 A1.14.52 A1.14.58 A1.14.53 A1.14.59 A1.14.57 A1.15.53 +A1.14.56 A1.14.51 A1.13.57 A1.13.55 A1.13.59 A1.14.54 A1.14.60 A1.14.58 A1.14.55 +A1.14.57 A1.14.58 A1.14.55 A1.14.53 A1.14.59 A1.15.53 A1.15.60 A1.15.57 A1.15.54 +A1.14.58 A1.13.59 A1.14.56 A1.14.54 A1.14.61 A1.14.60 A1.14.55 A1.14.59 A1.14.57 +A1.14.59 A1.14.61 A1.14.60 A1.14.58 A1.14.55 A1.14.57 A1.14.62 A1.15.60 A1.15.57 +A1.14.60 A1.13.61 A1.13.59 A1.14.56 A1.14.61 A1.14.58 A1.14.59 +A1.14.61 A1.13.61 A1.13.59 A1.14.60 A1.14.58 A1.14.59 A1.14.62 +A1.14.62 A1.14.61 A1.14.59 A1.15.60 A1.15.61 +A1.15.00 A1.15.07 A1.15.12 +A1.15.01 A1.15.02 A1.15.10 A1.15.11 A1.00.12 A1.00.02 +A1.15.02 A1.15.03 A1.15.06 A1.15.09 A1.15.10 A1.15.01 +A1.15.03 A1.15.14 A1.15.05 A1.15.15 A1.15.06 A1.15.02 +A1.15.04 A1.15.12 A1.15.13 A1.15.14 A1.15.05 +A1.15.05 A1.15.13 A1.15.04 A1.15.14 A1.15.03 +A1.15.06 A1.15.14 A1.15.03 A1.15.15 A1.15.02 A1.15.09 +A1.15.07 A1.14.13 A1.15.08 A1.15.17 A1.15.00 A1.15.18 A1.15.12 +A1.15.08 A1.14.13 A1.14.02 A1.15.17 A1.15.07 +A1.15.09 A1.15.15 A1.15.06 A1.15.02 A1.15.16 A1.15.10 +A1.15.10 A1.15.15 A1.15.02 A1.15.09 A1.15.16 A1.15.01 A1.15.11 +A1.15.11 A1.15.16 A1.15.10 A1.15.01 A1.00.17 A1.00.12 A1.00.02 +A1.15.12 A1.15.17 A1.15.07 A1.15.00 A1.15.18 A1.15.19 A1.15.13 A1.15.04 +A1.15.13 A1.15.18 A1.15.12 A1.15.19 A1.15.04 A1.15.20 A1.15.14 A1.15.05 +A1.15.14 A1.15.19 A1.15.13 A1.15.04 A1.15.20 A1.15.05 A1.15.03 A1.15.21 A1.15.15 A1.15.06 +A1.15.15 A1.15.20 A1.15.14 A1.15.03 A1.15.21 A1.15.06 A1.15.09 A1.15.22 A1.15.16 A1.15.10 +A1.15.16 A1.15.21 A1.15.15 A1.15.09 A1.15.22 A1.15.10 A1.15.11 A1.00.23 A1.00.17 A1.00.12 +A1.15.17 A1.14.19 A1.14.13 A1.15.08 A1.14.21 A1.15.07 A1.15.23 A1.15.18 A1.15.12 +A1.15.18 A1.14.21 A1.15.17 A1.15.07 A1.15.23 A1.15.12 A1.15.24 A1.15.19 A1.15.13 +A1.15.19 A1.15.23 A1.15.18 A1.15.12 A1.15.24 A1.15.13 A1.15.25 A1.15.20 A1.15.14 +A1.15.20 A1.15.24 A1.15.19 A1.15.13 A1.15.25 A1.15.14 A1.15.26 A1.15.21 A1.15.15 +A1.15.21 A1.15.25 A1.15.20 A1.15.14 A1.15.26 A1.15.15 A1.15.27 A1.15.22 A1.15.16 +A1.15.22 A1.15.26 A1.15.21 A1.15.15 A1.15.27 A1.15.16 A1.00.28 A1.00.23 A1.00.17 +A1.15.23 A1.14.26 A1.14.21 A1.15.17 A1.15.28 A1.15.18 A1.15.29 A1.15.24 A1.15.19 +A1.15.24 A1.15.28 A1.15.23 A1.15.18 A1.15.29 A1.15.19 A1.15.30 A1.15.25 A1.15.20 +A1.15.25 A1.15.29 A1.15.24 A1.15.19 A1.15.30 A1.15.20 A1.15.31 A1.15.26 A1.15.21 +A1.15.26 A1.15.30 A1.15.25 A1.15.20 A1.15.31 A1.15.21 A1.15.32 A1.15.27 A1.15.22 +A1.15.27 A1.15.31 A1.15.26 A1.15.21 A1.15.32 A1.15.22 A1.00.33 A1.00.28 A1.00.23 +A1.15.28 A1.14.31 A1.14.26 A1.14.21 A1.14.33 A1.15.23 A1.15.33 A1.15.29 A1.15.24 +A1.15.29 A1.14.33 A1.15.28 A1.15.23 A1.15.33 A1.15.24 A1.15.34 A1.15.30 A1.15.25 +A1.15.30 A1.15.33 A1.15.29 A1.15.24 A1.15.34 A1.15.25 A1.15.35 A1.15.31 A1.15.26 +A1.15.31 A1.15.34 A1.15.30 A1.15.25 A1.15.35 A1.15.26 A1.15.36 A1.15.32 A1.15.27 +A1.15.32 A1.15.35 A1.15.31 A1.15.26 A1.15.36 A1.15.27 A1.00.37 A1.00.33 A1.00.28 +A1.15.33 A1.14.38 A1.14.33 A1.15.28 A1.15.37 A1.15.29 A1.15.38 A1.15.34 A1.15.30 +A1.15.34 A1.15.37 A1.15.33 A1.15.29 A1.15.38 A1.15.30 A1.15.39 A1.15.35 A1.15.31 +A1.15.35 A1.15.38 A1.15.34 A1.15.30 A1.15.39 A1.15.31 A1.15.40 A1.15.36 A1.15.32 +A1.15.36 A1.15.39 A1.15.35 A1.15.31 A1.15.40 A1.15.32 A1.00.41 A1.00.37 A1.00.33 +A1.15.37 A1.14.41 A1.14.38 A1.14.33 A1.15.41 A1.15.33 A1.15.42 A1.15.38 A1.15.34 +A1.15.38 A1.15.41 A1.15.37 A1.15.33 A1.15.42 A1.15.34 A1.15.43 A1.15.39 A1.15.35 +A1.15.39 A1.15.42 A1.15.38 A1.15.34 A1.15.43 A1.15.35 A1.15.44 A1.15.40 A1.15.36 +A1.15.40 A1.15.43 A1.15.39 A1.15.35 A1.15.44 A1.15.36 A1.00.45 A1.00.41 A1.00.37 +A1.15.41 A1.14.43 A1.14.41 A1.14.38 A1.14.45 A1.15.37 A1.15.45 A1.15.42 A1.15.38 +A1.15.42 A1.14.45 A1.15.41 A1.15.37 A1.15.45 A1.15.38 A1.15.46 A1.15.43 A1.15.39 +A1.15.43 A1.15.45 A1.15.42 A1.15.38 A1.15.46 A1.15.39 A1.15.47 A1.15.44 A1.15.40 +A1.15.44 A1.15.46 A1.15.43 A1.15.39 A1.15.47 A1.15.40 A1.00.48 A1.00.45 A1.00.41 +A1.15.45 A1.14.47 A1.14.45 A1.15.41 A1.15.48 A1.15.42 A1.15.49 A1.15.46 A1.15.43 +A1.15.46 A1.15.48 A1.15.45 A1.15.42 A1.15.49 A1.15.43 A1.15.50 A1.15.47 A1.15.44 +A1.15.47 A1.15.49 A1.15.46 A1.15.43 A1.15.50 A1.15.44 A1.00.51 A1.00.48 A1.00.45 +A1.15.48 A1.14.49 A1.14.47 A1.14.45 A1.14.50 A1.15.45 A1.15.51 A1.15.49 A1.15.46 +A1.15.49 A1.14.50 A1.15.48 A1.15.45 A1.15.51 A1.15.46 A1.15.52 A1.15.50 A1.15.47 +A1.15.50 A1.15.51 A1.15.49 A1.15.46 A1.15.52 A1.15.47 A1.00.53 A1.00.51 A1.00.48 +A1.15.51 A1.14.50 A1.15.48 A1.14.53 A1.15.53 A1.15.49 A1.15.54 A1.15.55 A1.15.52 A1.15.50 +A1.15.52 A1.15.51 A1.15.49 A1.15.54 A1.15.55 A1.15.50 A1.15.56 A1.00.56 A1.00.53 A1.00.51 +A1.15.53 A1.14.50 A1.14.55 A1.14.53 A1.14.57 A1.15.51 A1.15.57 A1.15.54 +A1.15.54 A1.14.57 A1.15.53 A1.15.51 A1.15.57 A1.15.58 A1.15.55 A1.15.52 +A1.15.55 A1.15.51 A1.15.57 A1.15.54 A1.15.58 A1.15.52 A1.15.59 A1.15.56 +A1.15.56 A1.15.58 A1.15.55 A1.15.52 A1.15.59 A1.00.59 A1.00.56 A1.00.53 +A1.15.57 A1.14.59 A1.14.57 A1.15.53 A1.15.60 A1.15.54 A1.15.61 A1.15.58 A1.15.55 +A1.15.58 A1.15.60 A1.15.57 A1.15.54 A1.15.61 A1.15.55 A1.15.62 A1.15.59 A1.15.56 +A1.15.59 A1.15.61 A1.15.58 A1.15.55 A1.15.62 A1.15.56 A1.00.62 A1.00.59 A1.00.56 +A1.15.60 A1.14.59 A1.14.57 A1.14.62 A1.15.57 A1.15.61 A1.15.58 +A1.15.61 A1.14.62 A1.15.60 A1.15.57 A1.15.58 A1.15.62 A1.15.59 +A1.15.62 A1.15.61 A1.15.58 A1.15.59 A1.00.62 A1.00.59 +A2.00.00 A2.00.06 A2.00.01 A2.00.05 +A2.00.01 A2.00.06 A2.00.02 A2.00.05 A2.00.00 +A2.00.02 A2.15.06 A2.15.01 A2.00.06 A2.00.01 +A2.00.03 A2.00.08 A2.00.04 A2.00.07 A2.01.04 +A2.00.04 A2.00.09 A2.00.05 A2.00.08 A2.00.07 A2.00.03 +A2.00.05 A2.00.10 A2.00.06 A2.00.01 A2.00.09 A2.00.00 A2.00.08 A2.00.04 +A2.00.06 A2.15.10 A2.15.06 A2.15.01 A2.00.10 A2.00.02 A2.00.01 A2.00.09 A2.00.05 A2.00.00 +A2.00.07 A2.00.11 A2.00.08 A2.00.04 A2.01.10 A2.00.03 A2.01.07 A2.01.04 +A2.00.08 A2.00.12 A2.00.09 A2.00.05 A2.00.11 A2.00.04 A2.01.10 A2.00.07 A2.00.03 +A2.00.09 A2.00.13 A2.00.10 A2.00.06 A2.00.12 A2.00.05 A2.00.11 A2.00.08 A2.00.04 +A2.00.10 A2.15.13 A2.15.10 A2.15.06 A2.00.13 A2.00.06 A2.00.12 A2.00.09 A2.00.05 +A2.00.11 A2.00.15 A2.00.12 A2.00.09 A2.00.14 A2.00.08 A2.01.13 A2.01.10 A2.00.07 +A2.00.12 A2.00.16 A2.00.13 A2.00.10 A2.00.15 A2.00.09 A2.00.14 A2.00.11 A2.00.08 +A2.00.13 A2.15.16 A2.15.13 A2.15.10 A2.00.16 A2.00.10 A2.00.15 A2.00.12 A2.00.09 +A2.00.14 A2.00.18 A2.00.15 A2.00.12 A2.00.17 A2.00.11 A2.01.16 A2.01.13 A2.01.10 +A2.00.15 A2.00.19 A2.00.16 A2.00.13 A2.00.18 A2.00.12 A2.00.17 A2.00.14 A2.00.11 +A2.00.16 A2.15.19 A2.15.16 A2.15.13 A2.00.19 A2.00.13 A2.00.18 A2.00.15 A2.00.12 +A2.00.17 A2.00.20 A2.00.18 A2.00.15 A2.01.20 A2.00.14 A2.01.18 A2.01.16 A2.01.13 +A2.00.18 A2.00.21 A2.00.19 A2.00.16 A2.00.20 A2.00.15 A2.01.20 A2.00.17 A2.00.14 +A2.00.19 A2.15.21 A2.15.19 A2.15.16 A2.00.21 A2.00.16 A2.00.20 A2.00.18 A2.00.15 +A2.00.20 A2.00.23 A2.00.21 A2.00.19 A2.00.22 A2.00.18 A2.01.22 A2.01.20 A2.00.17 +A2.00.21 A2.15.23 A2.15.21 A2.15.19 A2.00.23 A2.00.19 A2.00.22 A2.00.20 A2.00.18 +A2.00.22 A2.00.25 A2.00.23 A2.00.21 A2.00.24 A2.00.20 A2.01.24 A2.01.22 A2.01.20 +A2.00.23 A2.15.25 A2.15.23 A2.15.21 A2.00.25 A2.00.21 A2.00.24 A2.00.22 A2.00.20 +A2.00.24 A2.00.26 A2.00.25 A2.00.23 A2.01.26 A2.00.22 A2.01.25 A2.01.24 A2.01.22 +A2.00.25 A2.15.26 A2.15.25 A2.15.23 A2.00.26 A2.00.23 A2.01.26 A2.00.24 A2.00.22 +A2.00.26 A2.15.27 A2.15.26 A2.15.25 A2.00.27 A2.00.25 A2.01.28 A2.01.26 A2.00.24 +A2.00.27 A2.15.27 A2.15.26 A2.15.29 A2.00.29 A2.00.26 A2.00.28 A2.01.30 A2.01.28 A2.01.26 +A2.00.28 A2.00.29 A2.00.27 A2.01.31 A2.01.30 A2.01.28 +A2.00.29 A2.15.27 A2.15.29 A2.00.27 A2.00.28 +A2.01.00 A2.01.05 A2.02.06 A2.02.00 +A2.01.01 A2.01.05 A2.01.03 +A2.01.02 A2.01.07 A2.01.04 A2.01.06 +A2.01.03 A2.01.09 A2.01.06 A2.01.05 A2.01.01 +A2.01.04 A2.01.10 A2.00.07 A2.00.03 A2.01.07 A2.01.06 A2.01.02 +A2.01.05 A2.01.12 A2.01.09 A2.01.06 A2.01.08 A2.01.03 A2.01.01 A2.02.06 A2.01.00 +A2.01.06 A2.01.11 A2.01.07 A2.01.04 A2.01.09 A2.01.02 A2.01.05 A2.01.03 +A2.01.07 A2.01.13 A2.01.10 A2.00.07 A2.01.11 A2.01.04 A2.01.09 A2.01.06 A2.01.02 +A2.01.08 A2.01.14 A2.01.12 A2.01.09 A2.02.11 A2.01.05 A2.02.09 A2.02.06 +A2.01.09 A2.01.15 A2.01.11 A2.01.07 A2.01.12 A2.01.06 A2.01.08 A2.01.05 A2.01.03 +A2.01.10 A2.00.14 A2.00.11 A2.00.08 A2.01.13 A2.00.07 A2.01.11 A2.01.07 A2.01.04 +A2.01.11 A2.01.16 A2.01.13 A2.01.10 A2.01.15 A2.01.07 A2.01.12 A2.01.09 A2.01.06 +A2.01.12 A2.01.17 A2.01.15 A2.01.11 A2.01.14 A2.01.09 A2.02.11 A2.01.08 A2.01.05 +A2.01.13 A2.00.17 A2.00.14 A2.00.11 A2.01.16 A2.01.10 A2.01.15 A2.01.11 A2.01.07 +A2.01.14 A2.01.19 A2.01.17 A2.01.15 A2.02.16 A2.01.12 A2.02.14 A2.02.11 A2.01.08 +A2.01.15 A2.01.18 A2.01.16 A2.01.13 A2.01.17 A2.01.11 A2.01.14 A2.01.12 A2.01.09 +A2.01.16 A2.01.20 A2.00.17 A2.00.14 A2.01.18 A2.01.13 A2.01.17 A2.01.15 A2.01.11 +A2.01.17 A2.01.21 A2.01.18 A2.01.16 A2.01.19 A2.01.15 A2.02.16 A2.01.14 A2.01.12 +A2.01.18 A2.01.22 A2.01.20 A2.00.17 A2.01.21 A2.01.16 A2.01.19 A2.01.17 A2.01.15 +A2.01.19 A2.01.23 A2.01.21 A2.01.18 A2.02.20 A2.01.17 A2.02.18 A2.02.16 A2.01.14 +A2.01.20 A2.00.22 A2.00.20 A2.00.18 A2.01.22 A2.00.17 A2.01.21 A2.01.18 A2.01.16 +A2.01.21 A2.01.24 A2.01.22 A2.01.20 A2.01.23 A2.01.18 A2.02.20 A2.01.19 A2.01.17 +A2.01.22 A2.00.24 A2.00.22 A2.00.20 A2.01.24 A2.01.20 A2.01.23 A2.01.21 A2.01.18 +A2.01.23 A2.01.25 A2.01.24 A2.01.22 A2.02.24 A2.01.21 A2.02.22 A2.02.20 A2.01.19 +A2.01.24 A2.01.26 A2.00.24 A2.00.22 A2.01.25 A2.01.22 A2.02.24 A2.01.23 A2.01.21 +A2.01.25 A2.01.28 A2.01.26 A2.00.24 A2.01.27 A2.01.24 A2.02.25 A2.02.24 A2.01.23 +A2.01.26 A2.00.27 A2.00.26 A2.00.25 A2.01.28 A2.00.24 A2.01.27 A2.01.25 A2.01.24 +A2.01.27 A2.01.28 A2.01.26 A2.01.29 A2.02.27 A2.01.25 A2.02.26 A2.02.25 A2.02.24 +A2.01.28 A2.00.27 A2.00.26 A2.00.28 A2.01.30 A2.01.26 A2.01.29 A2.02.27 A2.01.27 A2.01.25 +A2.01.29 A2.01.31 A2.01.30 A2.01.28 A2.02.29 A2.02.27 A2.01.27 +A2.01.30 A2.00.27 A2.00.28 A2.01.31 A2.01.28 A2.02.29 A2.01.29 +A2.01.31 A2.00.28 A2.01.30 A2.02.30 A2.02.29 A2.01.29 +A2.02.00 A2.02.06 A2.01.00 A2.02.03 +A2.02.01 A2.02.08 A2.02.07 A2.02.02 +A2.02.02 A2.02.08 A2.02.07 A2.02.01 A2.03.01 A2.02.04 +A2.02.03 A2.02.09 A2.02.06 A2.02.00 A2.02.05 +A2.02.04 A2.03.06 A2.02.08 A2.03.01 A2.02.02 +A2.02.05 A2.02.10 A2.02.09 A2.02.07 A2.02.03 +A2.02.06 A2.02.11 A2.01.08 A2.01.05 A2.02.09 A2.01.00 A2.02.00 A2.02.03 +A2.02.07 A2.02.12 A2.02.10 A2.02.09 A2.02.08 A2.02.05 A2.02.01 A2.02.02 +A2.02.08 A2.02.13 A2.02.12 A2.02.10 A2.03.06 A2.02.07 A2.02.01 A2.03.01 A2.02.04 A2.02.02 +A2.02.09 A2.02.14 A2.02.11 A2.01.08 A2.02.10 A2.02.06 A2.02.07 A2.02.05 A2.02.03 +A2.02.10 A2.02.15 A2.02.14 A2.02.11 A2.02.12 A2.02.09 A2.02.08 A2.02.07 A2.02.05 +A2.02.11 A2.02.16 A2.01.14 A2.01.12 A2.02.14 A2.01.08 A2.02.10 A2.02.09 A2.02.06 +A2.02.12 A2.02.17 A2.02.15 A2.02.14 A2.02.13 A2.02.10 A2.03.06 A2.02.08 A2.02.07 +A2.02.13 A2.03.15 A2.02.17 A2.02.15 A2.03.11 A2.02.12 A2.03.07 A2.03.06 A2.02.08 +A2.02.14 A2.02.18 A2.02.16 A2.01.14 A2.02.15 A2.02.11 A2.02.12 A2.02.10 A2.02.09 +A2.02.15 A2.02.19 A2.02.18 A2.02.16 A2.02.17 A2.02.14 A2.02.13 A2.02.12 A2.02.10 +A2.02.16 A2.02.20 A2.01.19 A2.01.17 A2.02.18 A2.01.14 A2.02.15 A2.02.14 A2.02.11 +A2.02.17 A2.02.21 A2.02.19 A2.02.18 A2.03.15 A2.02.15 A2.03.11 A2.02.13 A2.02.12 +A2.02.18 A2.02.22 A2.02.20 A2.01.19 A2.02.19 A2.02.16 A2.02.17 A2.02.15 A2.02.14 +A2.02.19 A2.02.23 A2.02.22 A2.02.20 A2.02.21 A2.02.18 A2.03.15 A2.02.17 A2.02.15 +A2.02.20 A2.02.24 A2.01.23 A2.01.21 A2.02.22 A2.01.19 A2.02.19 A2.02.18 A2.02.16 +A2.02.21 A2.03.22 A2.02.23 A2.02.22 A2.03.19 A2.02.19 A2.03.16 A2.03.15 A2.02.17 +A2.02.22 A2.02.25 A2.02.24 A2.01.23 A2.02.23 A2.02.20 A2.02.21 A2.02.19 A2.02.18 +A2.02.23 A2.02.26 A2.02.25 A2.02.24 A2.03.22 A2.02.22 A2.03.19 A2.02.21 A2.02.19 +A2.02.24 A2.01.27 A2.01.25 A2.01.24 A2.02.25 A2.01.23 A2.02.23 A2.02.22 A2.02.20 +A2.02.25 A2.02.27 A2.01.27 A2.01.25 A2.02.26 A2.02.24 A2.03.22 A2.02.23 A2.02.22 +A2.02.26 A2.02.28 A2.02.27 A2.01.27 A2.03.25 A2.02.25 A2.03.23 A2.03.22 A2.02.23 +A2.02.27 A2.01.28 A2.02.30 A2.02.29 A2.01.29 A2.02.28 A2.01.27 A2.03.25 A2.02.26 A2.02.25 +A2.02.28 A2.02.30 A2.02.29 A2.02.31 A2.03.29 A2.02.27 A2.03.27 A2.03.26 A2.03.25 A2.02.26 +A2.02.29 A2.01.31 A2.01.30 A2.02.30 A2.01.29 A2.02.28 A2.02.27 +A2.02.30 A2.01.31 A2.02.29 A2.02.31 A2.02.28 A2.02.27 +A2.02.31 A2.02.30 A2.03.30 A2.03.29 A2.02.28 +A2.03.00 A2.04.05 A2.03.05 A2.03.04 A2.03.03 A2.04.00 +A2.03.01 A2.03.07 A2.03.06 A2.02.08 A2.03.02 A2.02.04 A2.02.02 +A2.03.02 A2.03.08 A2.03.07 A2.03.06 A2.03.03 A2.03.01 +A2.03.03 A2.03.09 A2.03.08 A2.03.07 A2.03.04 A2.03.02 A2.03.00 +A2.03.04 A2.03.10 A2.03.09 A2.03.08 A2.03.05 A2.03.03 A2.03.00 +A2.03.05 A2.04.10 A2.03.10 A2.03.09 A2.04.05 A2.03.04 A2.04.00 A2.03.00 +A2.03.06 A2.03.11 A2.02.13 A2.02.12 A2.03.07 A2.02.08 A2.03.02 A2.03.01 A2.02.04 +A2.03.07 A2.03.12 A2.03.11 A2.02.13 A2.03.08 A2.03.06 A2.03.03 A2.03.02 A2.03.01 +A2.03.08 A2.03.13 A2.03.12 A2.03.11 A2.03.09 A2.03.07 A2.03.04 A2.03.03 A2.03.02 +A2.03.09 A2.03.14 A2.03.13 A2.03.12 A2.03.10 A2.03.08 A2.03.05 A2.03.04 A2.03.03 +A2.03.10 A2.04.14 A2.03.14 A2.03.13 A2.04.10 A2.03.09 A2.04.05 A2.03.05 A2.03.04 +A2.03.11 A2.03.16 A2.03.15 A2.02.17 A2.03.12 A2.02.13 A2.03.08 A2.03.07 A2.03.06 +A2.03.12 A2.03.17 A2.03.16 A2.03.15 A2.03.13 A2.03.11 A2.03.09 A2.03.08 A2.03.07 +A2.03.13 A2.03.18 A2.03.17 A2.03.16 A2.03.14 A2.03.12 A2.03.10 A2.03.09 A2.03.08 +A2.03.14 A2.04.18 A2.03.18 A2.03.17 A2.04.14 A2.03.13 A2.04.10 A2.03.10 A2.03.09 +A2.03.15 A2.03.19 A2.02.21 A2.02.19 A2.03.16 A2.02.17 A2.03.12 A2.03.11 A2.02.13 +A2.03.16 A2.03.20 A2.03.19 A2.02.21 A2.03.17 A2.03.15 A2.03.13 A2.03.12 A2.03.11 +A2.03.17 A2.03.21 A2.03.20 A2.03.19 A2.03.18 A2.03.16 A2.03.14 A2.03.13 A2.03.12 +A2.03.18 A2.04.21 A2.03.21 A2.03.20 A2.04.18 A2.03.17 A2.04.14 A2.03.14 A2.03.13 +A2.03.19 A2.03.23 A2.03.22 A2.02.23 A2.03.20 A2.02.21 A2.03.17 A2.03.16 A2.03.15 +A2.03.20 A2.03.24 A2.03.23 A2.03.22 A2.03.21 A2.03.19 A2.03.18 A2.03.17 A2.03.16 +A2.03.21 A2.04.24 A2.03.24 A2.03.23 A2.04.21 A2.03.20 A2.04.18 A2.03.18 A2.03.17 +A2.03.22 A2.03.25 A2.02.26 A2.02.25 A2.03.23 A2.02.23 A2.03.20 A2.03.19 A2.02.21 +A2.03.23 A2.03.26 A2.03.25 A2.02.26 A2.03.24 A2.03.22 A2.03.21 A2.03.20 A2.03.19 +A2.03.24 A2.04.26 A2.03.26 A2.03.25 A2.04.24 A2.03.23 A2.04.21 A2.03.21 A2.03.20 +A2.03.25 A2.02.28 A2.02.27 A2.03.27 A2.03.26 A2.02.26 A2.03.24 A2.03.23 A2.03.22 +A2.03.26 A2.02.28 A2.04.28 A2.03.28 A2.03.27 A2.04.26 A2.03.25 A2.04.24 A2.03.24 A2.03.23 +A2.03.27 A2.03.30 A2.03.29 A2.02.28 A2.03.28 A2.03.26 A2.03.25 +A2.03.28 A2.04.30 A2.03.30 A2.03.29 A2.04.28 A2.03.27 A2.04.26 A2.03.26 +A2.03.29 A2.02.31 A2.03.30 A2.02.28 A2.03.28 A2.03.27 +A2.03.30 A2.02.31 A2.04.30 A2.03.29 A2.04.28 A2.03.28 A2.03.27 +A2.04.00 A2.04.03 A2.04.04 A2.04.05 A2.03.05 A2.03.00 +A2.04.01 A2.05.08 A2.04.06 A2.04.07 A2.05.02 A2.05.04 A2.04.02 +A2.04.02 A2.04.06 A2.04.07 A2.04.08 A2.04.01 A2.04.03 +A2.04.03 A2.04.07 A2.04.08 A2.04.09 A2.04.02 A2.04.04 A2.04.00 +A2.04.04 A2.04.08 A2.04.09 A2.04.10 A2.04.03 A2.04.05 A2.04.00 +A2.04.05 A2.04.09 A2.04.10 A2.03.10 A2.04.04 A2.03.05 A2.04.00 A2.03.00 +A2.04.06 A2.05.12 A2.05.13 A2.04.11 A2.05.08 A2.04.07 A2.05.04 A2.04.01 A2.04.02 +A2.04.07 A2.05.13 A2.04.11 A2.04.12 A2.04.06 A2.04.08 A2.04.01 A2.04.02 A2.04.03 +A2.04.08 A2.04.11 A2.04.12 A2.04.13 A2.04.07 A2.04.09 A2.04.02 A2.04.03 A2.04.04 +A2.04.09 A2.04.12 A2.04.13 A2.04.14 A2.04.08 A2.04.10 A2.04.03 A2.04.04 A2.04.05 +A2.04.10 A2.04.13 A2.04.14 A2.03.14 A2.04.09 A2.03.10 A2.04.04 A2.04.05 A2.03.05 +A2.04.11 A2.05.17 A2.04.15 A2.04.16 A2.05.13 A2.04.12 A2.04.06 A2.04.07 A2.04.08 +A2.04.12 A2.04.15 A2.04.16 A2.04.17 A2.04.11 A2.04.13 A2.04.07 A2.04.08 A2.04.09 +A2.04.13 A2.04.16 A2.04.17 A2.04.18 A2.04.12 A2.04.14 A2.04.08 A2.04.09 A2.04.10 +A2.04.14 A2.04.17 A2.04.18 A2.03.18 A2.04.13 A2.03.14 A2.04.09 A2.04.10 A2.03.10 +A2.04.15 A2.05.19 A2.05.21 A2.04.19 A2.05.17 A2.04.16 A2.05.13 A2.04.11 A2.04.12 +A2.04.16 A2.05.21 A2.04.19 A2.04.20 A2.04.15 A2.04.17 A2.04.11 A2.04.12 A2.04.13 +A2.04.17 A2.04.19 A2.04.20 A2.04.21 A2.04.16 A2.04.18 A2.04.12 A2.04.13 A2.04.14 +A2.04.18 A2.04.20 A2.04.21 A2.03.21 A2.04.17 A2.03.18 A2.04.13 A2.04.14 A2.03.14 +A2.04.19 A2.05.23 A2.04.22 A2.04.23 A2.05.21 A2.04.20 A2.04.15 A2.04.16 A2.04.17 +A2.04.20 A2.04.22 A2.04.23 A2.04.24 A2.04.19 A2.04.21 A2.04.16 A2.04.17 A2.04.18 +A2.04.21 A2.04.23 A2.04.24 A2.03.24 A2.04.20 A2.03.21 A2.04.17 A2.04.18 A2.03.18 +A2.04.22 A2.05.25 A2.05.26 A2.04.25 A2.05.23 A2.04.23 A2.05.21 A2.04.19 A2.04.20 +A2.04.23 A2.05.26 A2.04.25 A2.04.26 A2.04.22 A2.04.24 A2.04.19 A2.04.20 A2.04.21 +A2.04.24 A2.04.25 A2.04.26 A2.03.26 A2.04.23 A2.03.24 A2.04.20 A2.04.21 A2.03.21 +A2.04.25 A2.05.27 A2.05.28 A2.04.27 A2.05.26 A2.04.26 A2.04.22 A2.04.23 A2.04.24 +A2.04.26 A2.05.28 A2.04.27 A2.04.28 A2.03.28 A2.04.25 A2.03.26 A2.04.23 A2.04.24 A2.03.24 +A2.04.27 A2.05.28 A2.04.29 A2.04.30 A2.04.28 A2.04.25 A2.04.26 +A2.04.28 A2.04.29 A2.04.30 A2.03.30 A2.04.27 A2.03.28 A2.04.26 A2.03.26 +A2.04.29 A2.05.31 A2.05.28 A2.04.30 A2.04.27 A2.04.28 +A2.04.30 A2.04.29 A2.03.30 A2.04.27 A2.04.28 A2.03.28 +A2.05.00 A2.05.07 A2.05.08 A2.05.02 +A2.05.01 A2.06.03 A2.06.00 A2.05.06 +A2.05.02 A2.05.07 A2.05.08 A2.05.00 A2.05.04 A2.04.01 +A2.05.03 A2.05.06 A2.05.09 A2.05.05 +A2.05.04 A2.05.08 A2.04.06 A2.05.02 A2.04.01 +A2.05.05 A2.05.09 A2.05.10 A2.05.03 A2.05.07 +A2.05.06 A2.06.08 A2.05.11 A2.06.03 A2.05.09 A2.05.01 A2.05.03 +A2.05.07 A2.05.09 A2.05.10 A2.05.12 A2.05.05 A2.05.08 A2.05.00 A2.05.02 +A2.05.08 A2.05.10 A2.05.12 A2.05.13 A2.05.07 A2.04.06 A2.05.00 A2.05.02 A2.05.04 A2.04.01 +A2.05.09 A2.06.08 A2.05.11 A2.05.14 A2.05.06 A2.05.10 A2.05.03 A2.05.05 A2.05.07 +A2.05.10 A2.05.11 A2.05.14 A2.05.15 A2.05.09 A2.05.12 A2.05.05 A2.05.07 A2.05.08 +A2.05.11 A2.06.12 A2.06.14 A2.05.16 A2.06.08 A2.05.14 A2.05.06 A2.05.09 A2.05.10 +A2.05.12 A2.05.14 A2.05.15 A2.05.17 A2.05.10 A2.05.13 A2.05.07 A2.05.08 A2.04.06 +A2.05.13 A2.05.15 A2.05.17 A2.04.15 A2.05.12 A2.04.11 A2.05.08 A2.04.06 A2.04.07 +A2.05.14 A2.06.14 A2.05.16 A2.05.18 A2.05.11 A2.05.15 A2.05.09 A2.05.10 A2.05.12 +A2.05.15 A2.05.16 A2.05.18 A2.05.19 A2.05.14 A2.05.17 A2.05.10 A2.05.12 A2.05.13 +A2.05.16 A2.06.17 A2.06.19 A2.05.20 A2.06.14 A2.05.18 A2.05.11 A2.05.14 A2.05.15 +A2.05.17 A2.05.18 A2.05.19 A2.05.21 A2.05.15 A2.04.15 A2.05.12 A2.05.13 A2.04.11 +A2.05.18 A2.06.19 A2.05.20 A2.05.22 A2.05.16 A2.05.19 A2.05.14 A2.05.15 A2.05.17 +A2.05.19 A2.05.20 A2.05.22 A2.05.23 A2.05.18 A2.05.21 A2.05.15 A2.05.17 A2.04.15 +A2.05.20 A2.06.21 A2.06.23 A2.05.24 A2.06.19 A2.05.22 A2.05.16 A2.05.18 A2.05.19 +A2.05.21 A2.05.22 A2.05.23 A2.04.22 A2.05.19 A2.04.19 A2.05.17 A2.04.15 A2.04.16 +A2.05.22 A2.06.23 A2.05.24 A2.05.25 A2.05.20 A2.05.23 A2.05.18 A2.05.19 A2.05.21 +A2.05.23 A2.05.24 A2.05.25 A2.05.26 A2.05.22 A2.04.22 A2.05.19 A2.05.21 A2.04.19 +A2.05.24 A2.06.24 A2.06.25 A2.06.27 A2.06.23 A2.05.25 A2.05.20 A2.05.22 A2.05.23 +A2.05.25 A2.06.25 A2.06.27 A2.05.27 A2.05.24 A2.05.26 A2.05.22 A2.05.23 A2.04.22 +A2.05.26 A2.06.27 A2.05.27 A2.05.28 A2.05.25 A2.04.25 A2.05.23 A2.04.22 A2.04.23 +A2.05.27 A2.06.28 A2.05.30 A2.05.29 A2.06.27 A2.05.28 A2.05.25 A2.05.26 A2.04.25 +A2.05.28 A2.05.30 A2.05.31 A2.05.27 A2.04.29 A2.04.27 A2.05.26 A2.04.25 A2.04.26 +A2.05.29 A2.06.31 A2.06.28 A2.06.29 A2.05.30 A2.06.27 A2.05.27 +A2.05.30 A2.06.31 A2.06.29 A2.05.29 A2.05.31 A2.05.27 A2.05.28 +A2.05.31 A2.05.30 A2.05.28 A2.04.29 +A2.06.00 A2.06.05 A2.06.03 A2.05.01 +A2.06.01 A2.06.06 A2.06.05 +A2.06.02 A2.06.04 A2.06.07 A2.06.06 +A2.06.03 A2.06.05 A2.06.08 A2.06.00 A2.05.06 A2.05.01 +A2.06.04 A2.07.03 A2.07.07 A2.06.10 A2.06.07 A2.06.02 A2.06.06 +A2.06.05 A2.06.06 A2.06.09 A2.06.12 A2.06.01 A2.06.08 A2.06.03 A2.06.00 +A2.06.06 A2.06.04 A2.06.07 A2.06.11 A2.06.02 A2.06.09 A2.06.01 A2.06.05 +A2.06.07 A2.07.07 A2.06.10 A2.06.13 A2.06.04 A2.06.11 A2.06.02 A2.06.06 A2.06.09 +A2.06.08 A2.06.09 A2.06.12 A2.06.14 A2.06.05 A2.05.11 A2.06.03 A2.05.06 A2.05.09 +A2.06.09 A2.06.07 A2.06.11 A2.06.15 A2.06.06 A2.06.12 A2.06.05 A2.06.08 +A2.06.10 A2.07.08 A2.07.11 A2.07.14 A2.07.07 A2.06.13 A2.06.04 A2.06.07 A2.06.11 +A2.06.11 A2.06.10 A2.06.13 A2.06.16 A2.06.07 A2.06.15 A2.06.06 A2.06.09 A2.06.12 +A2.06.12 A2.06.11 A2.06.15 A2.06.17 A2.06.09 A2.06.14 A2.06.05 A2.06.08 A2.05.11 +A2.06.13 A2.07.11 A2.07.14 A2.07.17 A2.06.10 A2.06.16 A2.06.07 A2.06.11 A2.06.15 +A2.06.14 A2.06.15 A2.06.17 A2.06.19 A2.06.12 A2.05.16 A2.06.08 A2.05.11 A2.05.14 +A2.06.15 A2.06.13 A2.06.16 A2.06.18 A2.06.11 A2.06.17 A2.06.09 A2.06.12 A2.06.14 +A2.06.16 A2.07.14 A2.07.17 A2.06.20 A2.06.13 A2.06.18 A2.06.11 A2.06.15 A2.06.17 +A2.06.17 A2.06.16 A2.06.18 A2.06.21 A2.06.15 A2.06.19 A2.06.12 A2.06.14 A2.05.16 +A2.06.18 A2.07.17 A2.06.20 A2.06.22 A2.06.16 A2.06.21 A2.06.15 A2.06.17 A2.06.19 +A2.06.19 A2.06.18 A2.06.21 A2.06.23 A2.06.17 A2.05.20 A2.06.14 A2.05.16 A2.05.18 +A2.06.20 A2.07.18 A2.07.20 A2.07.22 A2.07.17 A2.06.22 A2.06.16 A2.06.18 A2.06.21 +A2.06.21 A2.06.20 A2.06.22 A2.06.24 A2.06.18 A2.06.23 A2.06.17 A2.06.19 A2.05.20 +A2.06.22 A2.07.20 A2.07.22 A2.07.24 A2.06.20 A2.06.24 A2.06.18 A2.06.21 A2.06.23 +A2.06.23 A2.06.22 A2.06.24 A2.06.25 A2.06.21 A2.05.24 A2.06.19 A2.05.20 A2.05.22 +A2.06.24 A2.07.22 A2.07.24 A2.06.26 A2.06.22 A2.06.25 A2.06.21 A2.06.23 A2.05.24 +A2.06.25 A2.07.24 A2.06.26 A2.06.28 A2.06.24 A2.06.27 A2.06.23 A2.05.24 A2.05.25 +A2.06.26 A2.07.25 A2.07.26 A2.07.27 A2.07.24 A2.06.28 A2.06.24 A2.06.25 A2.06.27 +A2.06.27 A2.06.26 A2.06.28 A2.05.29 A2.06.25 A2.05.27 A2.05.24 A2.05.25 A2.05.26 +A2.06.28 A2.07.26 A2.07.27 A2.07.28 A2.06.26 A2.06.30 A2.06.29 A2.05.29 A2.06.25 A2.06.27 A2.05.27 +A2.06.29 A2.06.31 A2.06.28 A2.06.30 A2.05.30 A2.05.29 +A2.06.30 A2.07.27 A2.07.28 A2.06.31 A2.06.28 A2.06.29 +A2.06.31 A2.07.28 A2.06.30 A2.06.29 A2.05.30 A2.05.29 +A2.07.00 A2.07.06 A2.07.02 A2.07.05 +A2.07.01 A2.08.06 A2.08.00 A2.07.06 A2.07.02 +A2.07.02 A2.07.01 A2.07.06 A2.07.00 A2.07.05 +A2.07.03 A2.07.04 A2.07.08 A2.07.07 A2.06.04 +A2.07.04 A2.07.05 A2.07.09 A2.07.08 A2.07.03 A2.07.07 +A2.07.05 A2.07.06 A2.07.10 A2.07.02 A2.07.00 A2.07.09 A2.07.04 A2.07.08 +A2.07.06 A2.08.06 A2.08.10 A2.08.00 A2.07.01 A2.07.10 A2.07.02 A2.07.00 A2.07.05 A2.07.09 +A2.07.07 A2.07.04 A2.07.08 A2.07.11 A2.07.03 A2.06.10 A2.06.04 A2.06.07 +A2.07.08 A2.07.05 A2.07.09 A2.07.12 A2.07.04 A2.07.11 A2.07.03 A2.07.07 A2.06.10 +A2.07.09 A2.07.06 A2.07.10 A2.07.13 A2.07.05 A2.07.12 A2.07.04 A2.07.08 A2.07.11 +A2.07.10 A2.08.06 A2.08.10 A2.08.13 A2.07.06 A2.07.13 A2.07.05 A2.07.09 A2.07.12 +A2.07.11 A2.07.09 A2.07.12 A2.07.15 A2.07.08 A2.07.14 A2.07.07 A2.06.10 A2.06.13 +A2.07.12 A2.07.10 A2.07.13 A2.07.16 A2.07.09 A2.07.15 A2.07.08 A2.07.11 A2.07.14 +A2.07.13 A2.08.10 A2.08.13 A2.08.16 A2.07.10 A2.07.16 A2.07.09 A2.07.12 A2.07.15 +A2.07.14 A2.07.12 A2.07.15 A2.07.18 A2.07.11 A2.07.17 A2.06.10 A2.06.13 A2.06.16 +A2.07.15 A2.07.13 A2.07.16 A2.07.19 A2.07.12 A2.07.18 A2.07.11 A2.07.14 A2.07.17 +A2.07.16 A2.08.13 A2.08.16 A2.08.19 A2.07.13 A2.07.19 A2.07.12 A2.07.15 A2.07.18 +A2.07.17 A2.07.15 A2.07.18 A2.07.20 A2.07.14 A2.06.20 A2.06.13 A2.06.16 A2.06.18 +A2.07.18 A2.07.16 A2.07.19 A2.07.21 A2.07.15 A2.07.20 A2.07.14 A2.07.17 A2.06.20 +A2.07.19 A2.08.16 A2.08.19 A2.08.21 A2.07.16 A2.07.21 A2.07.15 A2.07.18 A2.07.20 +A2.07.20 A2.07.19 A2.07.21 A2.07.23 A2.07.18 A2.07.22 A2.07.17 A2.06.20 A2.06.22 +A2.07.21 A2.08.19 A2.08.21 A2.08.23 A2.07.19 A2.07.23 A2.07.18 A2.07.20 A2.07.22 +A2.07.22 A2.07.21 A2.07.23 A2.07.25 A2.07.20 A2.07.24 A2.06.20 A2.06.22 A2.06.24 +A2.07.23 A2.08.21 A2.08.23 A2.08.25 A2.07.21 A2.07.25 A2.07.20 A2.07.22 A2.07.24 +A2.07.24 A2.07.23 A2.07.25 A2.07.26 A2.07.22 A2.06.26 A2.06.22 A2.06.24 A2.06.25 +A2.07.25 A2.08.23 A2.08.25 A2.08.26 A2.07.23 A2.07.26 A2.07.22 A2.07.24 A2.06.26 +A2.07.26 A2.08.25 A2.08.26 A2.08.27 A2.07.25 A2.07.27 A2.07.24 A2.06.26 A2.06.28 +A2.07.27 A2.08.26 A2.08.27 A2.08.29 A2.07.26 A2.07.29 A2.07.28 A2.06.26 A2.06.28 A2.06.30 +A2.07.28 A2.07.27 A2.07.29 A2.06.31 A2.06.28 A2.06.30 +A2.07.29 A2.08.27 A2.08.29 A2.07.27 A2.07.28 +A2.08.00 A2.08.01 A2.08.06 A2.07.01 A2.07.06 +A2.08.01 A2.08.05 A2.08.02 A2.08.06 A2.08.00 +A2.08.02 A2.08.05 A2.08.01 A2.08.06 +A2.08.03 A2.09.04 A2.08.07 A2.08.04 A2.08.08 +A2.08.04 A2.08.03 A2.08.07 A2.08.08 A2.08.05 A2.08.09 +A2.08.05 A2.08.04 A2.08.08 A2.08.09 A2.08.02 A2.08.01 A2.08.06 A2.08.10 +A2.08.06 A2.08.05 A2.08.09 A2.08.02 A2.08.01 A2.08.10 A2.08.00 A2.07.01 A2.07.06 A2.07.10 +A2.08.07 A2.09.04 A2.09.07 A2.08.03 A2.09.10 A2.08.04 A2.08.08 A2.08.11 +A2.08.08 A2.08.03 A2.08.07 A2.09.10 A2.08.04 A2.08.11 A2.08.05 A2.08.09 A2.08.12 +A2.08.09 A2.08.04 A2.08.08 A2.08.11 A2.08.05 A2.08.12 A2.08.06 A2.08.10 A2.08.13 +A2.08.10 A2.08.05 A2.08.09 A2.08.12 A2.08.06 A2.08.13 A2.07.06 A2.07.10 A2.07.13 +A2.08.11 A2.08.07 A2.09.10 A2.09.13 A2.08.08 A2.08.14 A2.08.09 A2.08.12 A2.08.15 +A2.08.12 A2.08.08 A2.08.11 A2.08.14 A2.08.09 A2.08.15 A2.08.10 A2.08.13 A2.08.16 +A2.08.13 A2.08.09 A2.08.12 A2.08.15 A2.08.10 A2.08.16 A2.07.10 A2.07.13 A2.07.16 +A2.08.14 A2.09.10 A2.09.13 A2.09.16 A2.08.11 A2.08.17 A2.08.12 A2.08.15 A2.08.18 +A2.08.15 A2.08.11 A2.08.14 A2.08.17 A2.08.12 A2.08.18 A2.08.13 A2.08.16 A2.08.19 +A2.08.16 A2.08.12 A2.08.15 A2.08.18 A2.08.13 A2.08.19 A2.07.13 A2.07.16 A2.07.19 +A2.08.17 A2.09.13 A2.09.16 A2.09.18 A2.08.14 A2.09.20 A2.08.15 A2.08.18 A2.08.20 +A2.08.18 A2.08.14 A2.08.17 A2.09.20 A2.08.15 A2.08.20 A2.08.16 A2.08.19 A2.08.21 +A2.08.19 A2.08.15 A2.08.18 A2.08.20 A2.08.16 A2.08.21 A2.07.16 A2.07.19 A2.07.21 +A2.08.20 A2.08.17 A2.09.20 A2.09.22 A2.08.18 A2.08.22 A2.08.19 A2.08.21 A2.08.23 +A2.08.21 A2.08.18 A2.08.20 A2.08.22 A2.08.19 A2.08.23 A2.07.19 A2.07.21 A2.07.23 +A2.08.22 A2.09.20 A2.09.22 A2.09.24 A2.08.20 A2.08.24 A2.08.21 A2.08.23 A2.08.25 +A2.08.23 A2.08.20 A2.08.22 A2.08.24 A2.08.21 A2.08.25 A2.07.21 A2.07.23 A2.07.25 +A2.08.24 A2.09.22 A2.09.24 A2.09.25 A2.08.22 A2.09.26 A2.08.23 A2.08.25 A2.08.26 +A2.08.25 A2.08.22 A2.08.24 A2.09.26 A2.08.23 A2.08.26 A2.07.23 A2.07.25 A2.07.26 +A2.08.26 A2.08.24 A2.09.26 A2.09.28 A2.08.25 A2.08.27 A2.07.25 A2.07.26 A2.07.27 +A2.08.27 A2.09.26 A2.09.28 A2.09.30 A2.08.26 A2.08.28 A2.08.29 A2.07.26 A2.07.27 A2.07.29 +A2.08.28 A2.09.28 A2.09.30 A2.09.31 A2.08.27 A2.08.29 +A2.08.29 A2.08.27 A2.08.28 A2.07.27 A2.07.29 +A2.09.00 A2.10.00 A2.10.06 A2.09.05 +A2.09.01 A2.09.05 A2.09.03 +A2.09.02 A2.09.06 A2.09.04 A2.09.07 +A2.09.03 A2.09.05 A2.09.01 A2.09.06 A2.09.09 +A2.09.04 A2.09.06 A2.09.02 A2.09.07 A2.08.03 A2.08.07 A2.09.10 +A2.09.05 A2.10.06 A2.09.00 A2.09.08 A2.09.01 A2.09.03 A2.09.06 A2.09.09 A2.09.12 +A2.09.06 A2.09.05 A2.09.03 A2.09.09 A2.09.02 A2.09.04 A2.09.07 A2.09.11 +A2.09.07 A2.09.06 A2.09.09 A2.09.02 A2.09.04 A2.09.11 A2.08.07 A2.09.10 A2.09.13 +A2.09.08 A2.10.06 A2.10.09 A2.09.05 A2.10.11 A2.09.09 A2.09.12 A2.09.14 +A2.09.09 A2.09.05 A2.09.08 A2.09.03 A2.09.06 A2.09.12 A2.09.07 A2.09.11 A2.09.15 +A2.09.10 A2.09.04 A2.09.07 A2.09.11 A2.08.07 A2.09.13 A2.08.08 A2.08.11 A2.08.14 +A2.09.11 A2.09.06 A2.09.09 A2.09.12 A2.09.07 A2.09.15 A2.09.10 A2.09.13 A2.09.16 +A2.09.12 A2.09.05 A2.09.08 A2.10.11 A2.09.09 A2.09.14 A2.09.11 A2.09.15 A2.09.17 +A2.09.13 A2.09.07 A2.09.11 A2.09.15 A2.09.10 A2.09.16 A2.08.11 A2.08.14 A2.08.17 +A2.09.14 A2.09.08 A2.10.11 A2.10.14 A2.09.12 A2.10.16 A2.09.15 A2.09.17 A2.09.19 +A2.09.15 A2.09.09 A2.09.12 A2.09.14 A2.09.11 A2.09.17 A2.09.13 A2.09.16 A2.09.18 +A2.09.16 A2.09.11 A2.09.15 A2.09.17 A2.09.13 A2.09.18 A2.08.14 A2.08.17 A2.09.20 +A2.09.17 A2.09.12 A2.09.14 A2.10.16 A2.09.15 A2.09.19 A2.09.16 A2.09.18 A2.09.21 +A2.09.18 A2.09.15 A2.09.17 A2.09.19 A2.09.16 A2.09.21 A2.08.17 A2.09.20 A2.09.22 +A2.09.19 A2.09.14 A2.10.16 A2.10.18 A2.09.17 A2.10.20 A2.09.18 A2.09.21 A2.09.23 +A2.09.20 A2.09.16 A2.09.18 A2.09.21 A2.08.17 A2.09.22 A2.08.18 A2.08.20 A2.08.22 +A2.09.21 A2.09.17 A2.09.19 A2.10.20 A2.09.18 A2.09.23 A2.09.20 A2.09.22 A2.09.24 +A2.09.22 A2.09.18 A2.09.21 A2.09.23 A2.09.20 A2.09.24 A2.08.20 A2.08.22 A2.08.24 +A2.09.23 A2.09.19 A2.10.20 A2.10.22 A2.09.21 A2.10.24 A2.09.22 A2.09.24 A2.09.25 +A2.09.24 A2.09.21 A2.09.23 A2.10.24 A2.09.22 A2.09.25 A2.08.22 A2.08.24 A2.09.26 +A2.09.25 A2.09.23 A2.10.24 A2.10.25 A2.09.24 A2.09.27 A2.08.24 A2.09.26 A2.09.28 +A2.09.26 A2.09.24 A2.09.25 A2.09.27 A2.08.24 A2.09.28 A2.08.25 A2.08.26 A2.08.27 +A2.09.27 A2.10.24 A2.10.25 A2.10.26 A2.09.25 A2.10.27 A2.09.26 A2.09.28 A2.09.29 +A2.09.28 A2.09.25 A2.09.27 A2.10.27 A2.09.26 A2.09.29 A2.09.30 A2.08.26 A2.08.27 A2.08.28 +A2.09.29 A2.09.27 A2.10.27 A2.09.28 A2.10.29 A2.09.30 A2.09.31 +A2.09.30 A2.09.28 A2.09.29 A2.10.29 A2.09.31 A2.08.27 A2.08.28 +A2.09.31 A2.09.29 A2.10.29 A2.10.30 A2.09.30 A2.08.28 +A2.10.00 A2.10.03 A2.10.06 A2.09.00 +A2.10.01 A2.10.02 A2.10.07 A2.10.08 +A2.10.02 A2.11.01 A2.10.04 A2.10.01 A2.10.07 A2.10.08 +A2.10.03 A2.10.05 A2.10.00 A2.10.06 A2.10.09 +A2.10.04 A2.11.01 A2.10.02 A2.10.08 A2.11.06 +A2.10.05 A2.10.07 A2.10.03 A2.10.09 A2.10.10 +A2.10.06 A2.10.03 A2.10.00 A2.10.09 A2.09.00 A2.09.05 A2.09.08 A2.10.11 +A2.10.07 A2.10.02 A2.10.01 A2.10.08 A2.10.05 A2.10.09 A2.10.10 A2.10.12 +A2.10.08 A2.11.01 A2.10.02 A2.10.04 A2.10.01 A2.10.07 A2.11.06 A2.10.10 A2.10.12 A2.10.13 +A2.10.09 A2.10.07 A2.10.05 A2.10.03 A2.10.06 A2.10.10 A2.09.08 A2.10.11 A2.10.14 +A2.10.10 A2.10.07 A2.10.08 A2.10.05 A2.10.09 A2.10.12 A2.10.11 A2.10.14 A2.10.15 +A2.10.11 A2.10.06 A2.10.09 A2.10.10 A2.09.08 A2.10.14 A2.09.12 A2.09.14 A2.10.16 +A2.10.12 A2.10.07 A2.10.08 A2.11.06 A2.10.10 A2.10.13 A2.10.14 A2.10.15 A2.10.17 +A2.10.13 A2.10.08 A2.11.06 A2.11.07 A2.10.12 A2.11.11 A2.10.15 A2.10.17 A2.11.15 +A2.10.14 A2.10.09 A2.10.10 A2.10.12 A2.10.11 A2.10.15 A2.09.14 A2.10.16 A2.10.18 +A2.10.15 A2.10.10 A2.10.12 A2.10.13 A2.10.14 A2.10.17 A2.10.16 A2.10.18 A2.10.19 +A2.10.16 A2.10.11 A2.10.14 A2.10.15 A2.09.14 A2.10.18 A2.09.17 A2.09.19 A2.10.20 +A2.10.17 A2.10.12 A2.10.13 A2.11.11 A2.10.15 A2.11.15 A2.10.18 A2.10.19 A2.10.21 +A2.10.18 A2.10.14 A2.10.15 A2.10.17 A2.10.16 A2.10.19 A2.09.19 A2.10.20 A2.10.22 +A2.10.19 A2.10.15 A2.10.17 A2.11.15 A2.10.18 A2.10.21 A2.10.20 A2.10.22 A2.10.23 +A2.10.20 A2.10.16 A2.10.18 A2.10.19 A2.09.19 A2.10.22 A2.09.21 A2.09.23 A2.10.24 +A2.10.21 A2.10.17 A2.11.15 A2.11.16 A2.10.19 A2.11.19 A2.10.22 A2.10.23 A2.11.22 +A2.10.22 A2.10.18 A2.10.19 A2.10.21 A2.10.20 A2.10.23 A2.09.23 A2.10.24 A2.10.25 +A2.10.23 A2.10.19 A2.10.21 A2.11.19 A2.10.22 A2.11.22 A2.10.24 A2.10.25 A2.10.26 +A2.10.24 A2.10.20 A2.10.22 A2.10.23 A2.09.23 A2.10.25 A2.09.24 A2.09.25 A2.09.27 +A2.10.25 A2.10.22 A2.10.23 A2.11.22 A2.10.24 A2.10.26 A2.09.25 A2.09.27 A2.10.27 +A2.10.26 A2.10.23 A2.11.22 A2.11.23 A2.10.25 A2.11.25 A2.09.27 A2.10.27 A2.10.28 +A2.10.27 A2.10.25 A2.10.26 A2.11.25 A2.09.27 A2.10.28 A2.09.28 A2.09.29 A2.10.29 A2.10.30 +A2.10.28 A2.10.26 A2.11.25 A2.11.26 A2.10.27 A2.11.27 A2.11.29 A2.10.29 A2.10.30 A2.10.31 +A2.10.29 A2.10.27 A2.10.28 A2.09.29 A2.10.30 A2.09.30 A2.09.31 +A2.10.30 A2.10.27 A2.10.28 A2.10.29 A2.10.31 A2.09.31 +A2.10.31 A2.10.28 A2.11.29 A2.11.30 A2.10.30 +A2.11.00 A2.12.00 A2.11.03 A2.11.04 A2.11.05 A2.12.05 +A2.11.01 A2.11.02 A2.10.02 A2.10.04 A2.10.08 A2.11.06 A2.11.07 +A2.11.02 A2.11.01 A2.11.03 A2.11.06 A2.11.07 A2.11.08 +A2.11.03 A2.11.00 A2.11.02 A2.11.04 A2.11.07 A2.11.08 A2.11.09 +A2.11.04 A2.11.00 A2.11.03 A2.11.05 A2.11.08 A2.11.09 A2.11.10 +A2.11.05 A2.11.00 A2.12.00 A2.11.04 A2.12.05 A2.11.09 A2.11.10 A2.12.10 +A2.11.06 A2.11.01 A2.11.02 A2.10.04 A2.10.08 A2.11.07 A2.10.12 A2.10.13 A2.11.11 +A2.11.07 A2.11.01 A2.11.02 A2.11.03 A2.11.06 A2.11.08 A2.10.13 A2.11.11 A2.11.12 +A2.11.08 A2.11.02 A2.11.03 A2.11.04 A2.11.07 A2.11.09 A2.11.11 A2.11.12 A2.11.13 +A2.11.09 A2.11.03 A2.11.04 A2.11.05 A2.11.08 A2.11.10 A2.11.12 A2.11.13 A2.11.14 +A2.11.10 A2.11.04 A2.11.05 A2.12.05 A2.11.09 A2.12.10 A2.11.13 A2.11.14 A2.12.14 +A2.11.11 A2.11.06 A2.11.07 A2.11.08 A2.10.13 A2.11.12 A2.10.17 A2.11.15 A2.11.16 +A2.11.12 A2.11.07 A2.11.08 A2.11.09 A2.11.11 A2.11.13 A2.11.15 A2.11.16 A2.11.17 +A2.11.13 A2.11.08 A2.11.09 A2.11.10 A2.11.12 A2.11.14 A2.11.16 A2.11.17 A2.11.18 +A2.11.14 A2.11.09 A2.11.10 A2.12.10 A2.11.13 A2.12.14 A2.11.17 A2.11.18 A2.12.18 +A2.11.15 A2.10.13 A2.11.11 A2.11.12 A2.10.17 A2.11.16 A2.10.19 A2.10.21 A2.11.19 +A2.11.16 A2.11.11 A2.11.12 A2.11.13 A2.11.15 A2.11.17 A2.10.21 A2.11.19 A2.11.20 +A2.11.17 A2.11.12 A2.11.13 A2.11.14 A2.11.16 A2.11.18 A2.11.19 A2.11.20 A2.11.21 +A2.11.18 A2.11.13 A2.11.14 A2.12.14 A2.11.17 A2.12.18 A2.11.20 A2.11.21 A2.12.21 +A2.11.19 A2.11.15 A2.11.16 A2.11.17 A2.10.21 A2.11.20 A2.10.23 A2.11.22 A2.11.23 +A2.11.20 A2.11.16 A2.11.17 A2.11.18 A2.11.19 A2.11.21 A2.11.22 A2.11.23 A2.11.24 +A2.11.21 A2.11.17 A2.11.18 A2.12.18 A2.11.20 A2.12.21 A2.11.23 A2.11.24 A2.12.24 +A2.11.22 A2.10.21 A2.11.19 A2.11.20 A2.10.23 A2.11.23 A2.10.25 A2.10.26 A2.11.25 +A2.11.23 A2.11.19 A2.11.20 A2.11.21 A2.11.22 A2.11.24 A2.10.26 A2.11.25 A2.11.26 +A2.11.24 A2.11.20 A2.11.21 A2.12.21 A2.11.23 A2.12.24 A2.11.25 A2.11.26 A2.12.26 +A2.11.25 A2.11.22 A2.11.23 A2.11.24 A2.10.26 A2.11.26 A2.10.27 A2.10.28 A2.11.27 +A2.11.26 A2.11.23 A2.11.24 A2.12.24 A2.11.25 A2.12.26 A2.10.28 A2.11.27 A2.11.28 A2.12.28 +A2.11.27 A2.11.25 A2.11.26 A2.10.28 A2.11.28 A2.11.29 A2.11.30 +A2.11.28 A2.11.26 A2.12.26 A2.11.27 A2.12.28 A2.11.29 A2.11.30 A2.12.30 +A2.11.29 A2.10.28 A2.11.27 A2.11.28 A2.11.30 A2.10.31 +A2.11.30 A2.11.27 A2.11.28 A2.12.28 A2.11.29 A2.12.30 A2.10.31 +A2.12.00 A2.11.00 A2.11.05 A2.12.05 A2.12.04 A2.12.03 +A2.12.01 A2.12.02 A2.13.04 A2.13.02 A2.12.07 A2.12.06 A2.13.08 +A2.12.02 A2.12.03 A2.12.01 A2.12.08 A2.12.07 A2.12.06 +A2.12.03 A2.12.00 A2.12.04 A2.12.02 A2.12.09 A2.12.08 A2.12.07 +A2.12.04 A2.12.00 A2.12.05 A2.12.03 A2.12.10 A2.12.09 A2.12.08 +A2.12.05 A2.11.00 A2.12.00 A2.11.05 A2.12.04 A2.11.10 A2.12.10 A2.12.09 +A2.12.06 A2.12.02 A2.12.01 A2.13.04 A2.12.07 A2.13.08 A2.12.11 A2.13.13 A2.13.12 +A2.12.07 A2.12.03 A2.12.02 A2.12.01 A2.12.08 A2.12.06 A2.12.12 A2.12.11 A2.13.13 +A2.12.08 A2.12.04 A2.12.03 A2.12.02 A2.12.09 A2.12.07 A2.12.13 A2.12.12 A2.12.11 +A2.12.09 A2.12.05 A2.12.04 A2.12.03 A2.12.10 A2.12.08 A2.12.14 A2.12.13 A2.12.12 +A2.12.10 A2.11.05 A2.12.05 A2.12.04 A2.11.10 A2.12.09 A2.11.14 A2.12.14 A2.12.13 +A2.12.11 A2.12.08 A2.12.07 A2.12.06 A2.12.12 A2.13.13 A2.12.16 A2.12.15 A2.13.17 +A2.12.12 A2.12.09 A2.12.08 A2.12.07 A2.12.13 A2.12.11 A2.12.17 A2.12.16 A2.12.15 +A2.12.13 A2.12.10 A2.12.09 A2.12.08 A2.12.14 A2.12.12 A2.12.18 A2.12.17 A2.12.16 +A2.12.14 A2.11.10 A2.12.10 A2.12.09 A2.11.14 A2.12.13 A2.11.18 A2.12.18 A2.12.17 +A2.12.15 A2.12.12 A2.12.11 A2.13.13 A2.12.16 A2.13.17 A2.12.19 A2.13.21 A2.13.19 +A2.12.16 A2.12.13 A2.12.12 A2.12.11 A2.12.17 A2.12.15 A2.12.20 A2.12.19 A2.13.21 +A2.12.17 A2.12.14 A2.12.13 A2.12.12 A2.12.18 A2.12.16 A2.12.21 A2.12.20 A2.12.19 +A2.12.18 A2.11.14 A2.12.14 A2.12.13 A2.11.18 A2.12.17 A2.11.21 A2.12.21 A2.12.20 +A2.12.19 A2.12.17 A2.12.16 A2.12.15 A2.12.20 A2.13.21 A2.12.23 A2.12.22 A2.13.23 +A2.12.20 A2.12.18 A2.12.17 A2.12.16 A2.12.21 A2.12.19 A2.12.24 A2.12.23 A2.12.22 +A2.12.21 A2.11.18 A2.12.18 A2.12.17 A2.11.21 A2.12.20 A2.11.24 A2.12.24 A2.12.23 +A2.12.22 A2.12.20 A2.12.19 A2.13.21 A2.12.23 A2.13.23 A2.12.25 A2.13.26 A2.13.25 +A2.12.23 A2.12.21 A2.12.20 A2.12.19 A2.12.24 A2.12.22 A2.12.26 A2.12.25 A2.13.26 +A2.12.24 A2.11.21 A2.12.21 A2.12.20 A2.11.24 A2.12.23 A2.11.26 A2.12.26 A2.12.25 +A2.12.25 A2.12.24 A2.12.23 A2.12.22 A2.12.26 A2.13.26 A2.12.27 A2.13.28 A2.13.27 +A2.12.26 A2.11.24 A2.12.24 A2.12.23 A2.11.26 A2.12.25 A2.11.28 A2.12.28 A2.12.27 A2.13.28 +A2.12.27 A2.12.26 A2.12.25 A2.12.28 A2.13.28 A2.12.30 A2.12.29 +A2.12.28 A2.11.26 A2.12.26 A2.11.28 A2.12.27 A2.11.30 A2.12.30 A2.12.29 +A2.12.29 A2.12.28 A2.12.27 A2.13.28 A2.12.30 A2.13.31 +A2.12.30 A2.11.28 A2.12.28 A2.12.27 A2.11.30 A2.12.29 +A2.13.00 A2.13.02 A2.13.08 A2.13.07 +A2.13.01 A2.13.06 A2.14.00 A2.14.03 +A2.13.02 A2.12.01 A2.13.04 A2.13.00 A2.13.08 A2.13.07 +A2.13.03 A2.13.05 A2.13.09 A2.13.06 +A2.13.04 A2.12.01 A2.13.02 A2.12.06 A2.13.08 +A2.13.05 A2.13.07 A2.13.03 A2.13.10 A2.13.09 +A2.13.06 A2.13.03 A2.13.09 A2.13.01 A2.14.03 A2.13.11 A2.14.08 +A2.13.07 A2.13.02 A2.13.00 A2.13.08 A2.13.05 A2.13.12 A2.13.10 A2.13.09 +A2.13.08 A2.12.01 A2.13.04 A2.13.02 A2.13.00 A2.12.06 A2.13.07 A2.13.13 A2.13.12 A2.13.10 +A2.13.09 A2.13.07 A2.13.05 A2.13.03 A2.13.10 A2.13.06 A2.13.14 A2.13.11 A2.14.08 +A2.13.10 A2.13.08 A2.13.07 A2.13.05 A2.13.12 A2.13.09 A2.13.15 A2.13.14 A2.13.11 +A2.13.11 A2.13.10 A2.13.09 A2.13.06 A2.13.14 A2.14.08 A2.13.16 A2.14.14 A2.14.12 +A2.13.12 A2.12.06 A2.13.08 A2.13.07 A2.13.13 A2.13.10 A2.13.17 A2.13.15 A2.13.14 +A2.13.13 A2.12.07 A2.12.06 A2.13.08 A2.12.11 A2.13.12 A2.12.15 A2.13.17 A2.13.15 +A2.13.14 A2.13.12 A2.13.10 A2.13.09 A2.13.15 A2.13.11 A2.13.18 A2.13.16 A2.14.14 +A2.13.15 A2.13.13 A2.13.12 A2.13.10 A2.13.17 A2.13.14 A2.13.19 A2.13.18 A2.13.16 +A2.13.16 A2.13.15 A2.13.14 A2.13.11 A2.13.18 A2.14.14 A2.13.20 A2.14.19 A2.14.17 +A2.13.17 A2.12.11 A2.13.13 A2.13.12 A2.12.15 A2.13.15 A2.13.21 A2.13.19 A2.13.18 +A2.13.18 A2.13.17 A2.13.15 A2.13.14 A2.13.19 A2.13.16 A2.13.22 A2.13.20 A2.14.19 +A2.13.19 A2.12.15 A2.13.17 A2.13.15 A2.13.21 A2.13.18 A2.13.23 A2.13.22 A2.13.20 +A2.13.20 A2.13.19 A2.13.18 A2.13.16 A2.13.22 A2.14.19 A2.13.24 A2.14.23 A2.14.21 +A2.13.21 A2.12.16 A2.12.15 A2.13.17 A2.12.19 A2.13.19 A2.12.22 A2.13.23 A2.13.22 +A2.13.22 A2.13.21 A2.13.19 A2.13.18 A2.13.23 A2.13.20 A2.13.25 A2.13.24 A2.14.23 +A2.13.23 A2.12.19 A2.13.21 A2.13.19 A2.12.22 A2.13.22 A2.13.26 A2.13.25 A2.13.24 +A2.13.24 A2.13.23 A2.13.22 A2.13.20 A2.13.25 A2.14.23 A2.14.27 A2.14.25 A2.14.24 +A2.13.25 A2.12.22 A2.13.23 A2.13.22 A2.13.26 A2.13.24 A2.13.27 A2.14.27 A2.14.25 +A2.13.26 A2.12.23 A2.12.22 A2.13.23 A2.12.25 A2.13.25 A2.13.28 A2.13.27 A2.14.27 +A2.13.27 A2.12.25 A2.13.26 A2.13.25 A2.13.28 A2.14.27 A2.13.30 A2.13.29 A2.14.28 +A2.13.28 A2.12.26 A2.12.25 A2.13.26 A2.12.27 A2.13.27 A2.12.29 A2.13.31 A2.13.30 +A2.13.29 A2.13.27 A2.14.27 A2.13.30 A2.14.28 A2.14.31 A2.14.29 +A2.13.30 A2.13.28 A2.13.27 A2.13.31 A2.13.29 A2.14.31 A2.14.29 +A2.13.31 A2.13.28 A2.12.29 A2.13.30 +A2.14.00 A2.13.01 A2.14.03 A2.14.05 +A2.14.01 A2.14.05 A2.14.06 +A2.14.02 A2.14.06 A2.14.07 A2.14.04 +A2.14.03 A2.13.06 A2.13.01 A2.14.00 A2.14.08 A2.14.05 +A2.14.04 A2.14.06 A2.14.02 A2.14.07 A2.15.03 A2.14.10 A2.15.07 +A2.14.05 A2.14.00 A2.14.03 A2.14.08 A2.14.01 A2.14.12 A2.14.09 A2.14.06 +A2.14.06 A2.14.05 A2.14.01 A2.14.09 A2.14.02 A2.14.11 A2.14.07 A2.14.04 +A2.14.07 A2.14.09 A2.14.06 A2.14.02 A2.14.11 A2.14.04 A2.14.13 A2.14.10 A2.15.07 +A2.14.08 A2.13.09 A2.13.06 A2.14.03 A2.13.11 A2.14.05 A2.14.14 A2.14.12 A2.14.09 +A2.14.09 A2.14.08 A2.14.05 A2.14.12 A2.14.06 A2.14.15 A2.14.11 A2.14.07 +A2.14.10 A2.14.11 A2.14.07 A2.14.04 A2.14.13 A2.15.07 A2.15.14 A2.15.11 A2.15.08 +A2.14.11 A2.14.12 A2.14.09 A2.14.06 A2.14.15 A2.14.07 A2.14.16 A2.14.13 A2.14.10 +A2.14.12 A2.13.11 A2.14.08 A2.14.05 A2.14.14 A2.14.09 A2.14.17 A2.14.15 A2.14.11 +A2.14.13 A2.14.15 A2.14.11 A2.14.07 A2.14.16 A2.14.10 A2.15.17 A2.15.14 A2.15.11 +A2.14.14 A2.13.14 A2.13.11 A2.14.08 A2.13.16 A2.14.12 A2.14.19 A2.14.17 A2.14.15 +A2.14.15 A2.14.14 A2.14.12 A2.14.09 A2.14.17 A2.14.11 A2.14.18 A2.14.16 A2.14.13 +A2.14.16 A2.14.17 A2.14.15 A2.14.11 A2.14.18 A2.14.13 A2.14.20 A2.15.17 A2.15.14 +A2.14.17 A2.13.16 A2.14.14 A2.14.12 A2.14.19 A2.14.15 A2.14.21 A2.14.18 A2.14.16 +A2.14.18 A2.14.19 A2.14.17 A2.14.15 A2.14.21 A2.14.16 A2.14.22 A2.14.20 A2.15.17 +A2.14.19 A2.13.18 A2.13.16 A2.14.14 A2.13.20 A2.14.17 A2.14.23 A2.14.21 A2.14.18 +A2.14.20 A2.14.21 A2.14.18 A2.14.16 A2.14.22 A2.15.17 A2.15.22 A2.15.20 A2.15.18 +A2.14.21 A2.13.20 A2.14.19 A2.14.17 A2.14.23 A2.14.18 A2.14.24 A2.14.22 A2.14.20 +A2.14.22 A2.14.23 A2.14.21 A2.14.18 A2.14.24 A2.14.20 A2.15.24 A2.15.22 A2.15.20 +A2.14.23 A2.13.22 A2.13.20 A2.14.19 A2.13.24 A2.14.21 A2.14.25 A2.14.24 A2.14.22 +A2.14.24 A2.13.24 A2.14.23 A2.14.21 A2.14.25 A2.14.22 A2.14.26 A2.15.24 A2.15.22 +A2.14.25 A2.13.25 A2.13.24 A2.14.23 A2.14.27 A2.14.24 A2.14.28 A2.14.26 A2.15.24 +A2.14.26 A2.14.27 A2.14.25 A2.14.24 A2.14.28 A2.15.24 A2.15.27 A2.15.26 A2.15.25 +A2.14.27 A2.13.26 A2.13.25 A2.13.24 A2.13.27 A2.14.25 A2.13.29 A2.14.28 A2.14.26 +A2.14.28 A2.13.27 A2.14.27 A2.14.25 A2.13.29 A2.14.26 A2.14.29 A2.14.30 A2.15.28 A2.15.27 A2.15.26 +A2.14.29 A2.13.30 A2.13.29 A2.14.28 A2.14.31 A2.14.30 +A2.14.30 A2.14.28 A2.14.31 A2.14.29 A2.15.28 A2.15.27 +A2.14.31 A2.13.30 A2.13.29 A2.14.29 A2.14.30 A2.15.28 +A2.15.00 A2.15.05 A2.15.06 A2.15.02 +A2.15.01 A2.15.06 A2.15.02 A2.00.06 A2.00.02 +A2.15.02 A2.15.05 A2.15.00 A2.15.06 A2.15.01 +A2.15.03 A2.14.04 A2.15.07 A2.15.08 A2.15.04 +A2.15.04 A2.15.03 A2.15.07 A2.15.08 A2.15.09 A2.15.05 +A2.15.05 A2.15.08 A2.15.04 A2.15.09 A2.15.00 A2.15.10 A2.15.06 A2.15.02 +A2.15.06 A2.15.09 A2.15.05 A2.15.00 A2.15.10 A2.15.02 A2.15.01 A2.00.10 A2.00.06 A2.00.02 +A2.15.07 A2.14.07 A2.14.04 A2.15.03 A2.14.10 A2.15.11 A2.15.08 A2.15.04 +A2.15.08 A2.15.03 A2.14.10 A2.15.07 A2.15.11 A2.15.04 A2.15.12 A2.15.09 A2.15.05 +A2.15.09 A2.15.11 A2.15.08 A2.15.04 A2.15.12 A2.15.05 A2.15.13 A2.15.10 A2.15.06 +A2.15.10 A2.15.12 A2.15.09 A2.15.05 A2.15.13 A2.15.06 A2.00.13 A2.00.10 A2.00.06 +A2.15.11 A2.14.13 A2.14.10 A2.15.07 A2.15.14 A2.15.08 A2.15.15 A2.15.12 A2.15.09 +A2.15.12 A2.15.14 A2.15.11 A2.15.08 A2.15.15 A2.15.09 A2.15.16 A2.15.13 A2.15.10 +A2.15.13 A2.15.15 A2.15.12 A2.15.09 A2.15.16 A2.15.10 A2.00.16 A2.00.13 A2.00.10 +A2.15.14 A2.14.16 A2.14.13 A2.14.10 A2.15.17 A2.15.11 A2.15.18 A2.15.15 A2.15.12 +A2.15.15 A2.15.17 A2.15.14 A2.15.11 A2.15.18 A2.15.12 A2.15.19 A2.15.16 A2.15.13 +A2.15.16 A2.15.18 A2.15.15 A2.15.12 A2.15.19 A2.15.13 A2.00.19 A2.00.16 A2.00.13 +A2.15.17 A2.14.18 A2.14.16 A2.14.13 A2.14.20 A2.15.14 A2.15.20 A2.15.18 A2.15.15 +A2.15.18 A2.14.20 A2.15.17 A2.15.14 A2.15.20 A2.15.15 A2.15.21 A2.15.19 A2.15.16 +A2.15.19 A2.15.20 A2.15.18 A2.15.15 A2.15.21 A2.15.16 A2.00.21 A2.00.19 A2.00.16 +A2.15.20 A2.14.22 A2.14.20 A2.15.17 A2.15.22 A2.15.18 A2.15.23 A2.15.21 A2.15.19 +A2.15.21 A2.15.22 A2.15.20 A2.15.18 A2.15.23 A2.15.19 A2.00.23 A2.00.21 A2.00.19 +A2.15.22 A2.14.24 A2.14.22 A2.14.20 A2.15.24 A2.15.20 A2.15.25 A2.15.23 A2.15.21 +A2.15.23 A2.15.24 A2.15.22 A2.15.20 A2.15.25 A2.15.21 A2.00.25 A2.00.23 A2.00.21 +A2.15.24 A2.14.25 A2.14.24 A2.14.22 A2.14.26 A2.15.22 A2.15.26 A2.15.25 A2.15.23 +A2.15.25 A2.14.26 A2.15.24 A2.15.22 A2.15.26 A2.15.23 A2.00.26 A2.00.25 A2.00.23 +A2.15.26 A2.14.28 A2.14.26 A2.15.24 A2.15.27 A2.15.25 A2.00.27 A2.00.26 A2.00.25 +A2.15.27 A2.14.28 A2.14.26 A2.14.30 A2.15.28 A2.15.26 A2.15.29 A2.00.29 A2.00.27 A2.00.26 +A2.15.28 A2.14.28 A2.14.31 A2.14.30 A2.15.27 A2.15.29 +A2.15.29 A2.15.28 A2.15.27 A2.00.29 A2.00.27 +A3.00.00 A3.15.03 A3.15.00 A3.00.03 A3.00.02 +A3.00.01 A3.00.05 A3.00.02 A3.00.04 A3.01.03 A3.01.01 +A3.00.02 A3.00.06 A3.00.03 A3.00.00 A3.00.05 A3.00.04 A3.00.01 +A3.00.03 A3.15.06 A3.15.03 A3.15.00 A3.00.06 A3.00.00 A3.00.05 A3.00.02 +A3.00.04 A3.00.08 A3.00.05 A3.00.02 A3.00.07 A3.00.01 A3.01.05 A3.01.03 +A3.00.05 A3.00.09 A3.00.06 A3.00.03 A3.00.08 A3.00.02 A3.00.07 A3.00.04 A3.00.01 +A3.00.06 A3.15.09 A3.15.06 A3.15.03 A3.00.09 A3.00.03 A3.00.08 A3.00.05 A3.00.02 +A3.00.07 A3.00.10 A3.00.08 A3.00.05 A3.01.08 A3.00.04 A3.01.07 A3.01.05 A3.01.03 +A3.00.08 A3.00.11 A3.00.09 A3.00.06 A3.00.10 A3.00.05 A3.01.08 A3.00.07 A3.00.04 +A3.00.09 A3.15.11 A3.15.09 A3.15.06 A3.00.11 A3.00.06 A3.00.10 A3.00.08 A3.00.05 +A3.00.10 A3.00.13 A3.00.11 A3.00.09 A3.00.12 A3.00.08 A3.01.10 A3.01.08 A3.00.07 +A3.00.11 A3.15.13 A3.15.11 A3.15.09 A3.00.13 A3.00.09 A3.00.12 A3.00.10 A3.00.08 +A3.00.12 A3.00.14 A3.00.13 A3.00.11 A3.01.12 A3.00.10 A3.01.11 A3.01.10 A3.01.08 +A3.00.13 A3.15.14 A3.15.13 A3.15.11 A3.00.14 A3.00.11 A3.01.12 A3.00.12 A3.00.10 +A3.00.14 A3.15.14 A3.15.13 A3.15.15 A3.00.15 A3.00.13 A3.01.14 A3.01.12 A3.00.12 +A3.00.15 A3.15.14 A3.15.15 A3.00.14 A3.01.14 +A3.01.00 A3.01.01 A3.01.04 A3.01.02 A3.02.00 +A3.01.01 A3.00.01 A3.01.05 A3.01.03 A3.01.04 A3.01.00 +A3.01.02 A3.01.06 A3.01.04 A3.01.00 A3.02.05 A3.02.03 A3.02.00 +A3.01.03 A3.00.07 A3.00.04 A3.00.01 A3.01.05 A3.01.01 A3.01.04 +A3.01.04 A3.01.07 A3.01.05 A3.01.03 A3.01.01 A3.01.06 A3.01.00 A3.02.05 A3.01.02 +A3.01.05 A3.01.08 A3.00.07 A3.00.04 A3.01.07 A3.01.03 A3.01.01 A3.01.06 A3.01.04 +A3.01.06 A3.01.09 A3.01.07 A3.01.05 A3.02.09 A3.01.04 A3.02.07 A3.02.05 A3.01.02 +A3.01.07 A3.01.10 A3.01.08 A3.00.07 A3.01.09 A3.01.05 A3.02.09 A3.01.06 A3.01.04 +A3.01.08 A3.00.12 A3.00.10 A3.00.08 A3.01.10 A3.00.07 A3.01.09 A3.01.07 A3.01.05 +A3.01.09 A3.01.11 A3.01.10 A3.01.08 A3.02.11 A3.01.07 A3.02.10 A3.02.09 A3.01.06 +A3.01.10 A3.01.12 A3.00.12 A3.00.10 A3.01.11 A3.01.08 A3.02.11 A3.01.09 A3.01.07 +A3.01.11 A3.01.12 A3.00.12 A3.01.13 A3.02.13 A3.01.10 A3.02.12 A3.02.11 A3.01.09 +A3.01.12 A3.00.14 A3.00.13 A3.01.14 A3.00.12 A3.01.13 A3.02.13 A3.01.11 A3.01.10 +A3.01.13 A3.01.14 A3.01.12 A3.01.15 A3.02.14 A3.02.13 A3.01.11 +A3.01.14 A3.00.15 A3.00.14 A3.01.12 A3.01.15 A3.01.13 +A3.01.15 A3.01.14 A3.01.13 A3.02.14 +A3.02.00 A3.01.00 A3.02.05 A3.01.02 A3.02.03 A3.02.01 +A3.02.01 A3.02.04 A3.02.03 A3.02.00 A3.02.02 +A3.02.02 A3.02.06 A3.02.04 A3.02.03 A3.03.05 A3.02.01 A3.03.02 +A3.02.03 A3.02.07 A3.02.05 A3.01.02 A3.02.04 A3.02.00 A3.02.02 A3.02.01 +A3.02.04 A3.02.08 A3.02.07 A3.02.05 A3.02.06 A3.02.03 A3.03.05 A3.02.02 A3.02.01 +A3.02.05 A3.02.09 A3.01.06 A3.01.04 A3.02.07 A3.01.02 A3.02.04 A3.02.03 A3.02.00 +A3.02.06 A3.03.10 A3.02.08 A3.02.07 A3.03.08 A3.02.04 A3.03.06 A3.03.05 A3.02.02 +A3.02.07 A3.02.10 A3.02.09 A3.01.06 A3.02.08 A3.02.05 A3.02.06 A3.02.04 A3.02.03 +A3.02.08 A3.03.12 A3.02.10 A3.02.09 A3.03.10 A3.02.07 A3.03.08 A3.02.06 A3.02.04 +A3.02.09 A3.02.11 A3.01.09 A3.01.07 A3.02.10 A3.01.06 A3.02.08 A3.02.07 A3.02.05 +A3.02.10 A3.02.12 A3.02.11 A3.01.09 A3.03.12 A3.02.09 A3.03.10 A3.02.08 A3.02.07 +A3.02.11 A3.02.13 A3.01.11 A3.01.10 A3.02.12 A3.01.09 A3.03.12 A3.02.10 A3.02.09 +A3.02.12 A3.03.15 A3.02.13 A3.01.11 A3.03.14 A3.02.11 A3.03.13 A3.03.12 A3.02.10 +A3.02.13 A3.01.12 A3.01.13 A3.02.14 A3.03.15 A3.01.11 A3.03.14 A3.02.12 A3.02.11 +A3.02.14 A3.01.15 A3.01.13 A3.03.15 A3.02.13 +A3.03.00 A3.03.04 A3.03.03 A3.03.01 +A3.03.01 A3.04.04 A3.03.04 A3.04.01 A3.03.00 +A3.03.02 A3.03.06 A3.03.05 A3.02.02 A3.03.03 +A3.03.03 A3.03.07 A3.03.06 A3.03.05 A3.03.04 A3.03.02 A3.03.00 +A3.03.04 A3.04.07 A3.03.07 A3.03.06 A3.04.04 A3.03.03 A3.04.01 A3.03.01 A3.03.00 +A3.03.05 A3.03.08 A3.02.06 A3.02.04 A3.03.06 A3.02.02 A3.03.03 A3.03.02 +A3.03.06 A3.03.09 A3.03.08 A3.02.06 A3.03.07 A3.03.05 A3.03.04 A3.03.03 A3.03.02 +A3.03.07 A3.04.09 A3.03.09 A3.03.08 A3.04.07 A3.03.06 A3.04.04 A3.03.04 A3.03.03 +A3.03.08 A3.03.11 A3.03.10 A3.02.08 A3.03.09 A3.02.06 A3.03.07 A3.03.06 A3.03.05 +A3.03.09 A3.04.11 A3.03.11 A3.03.10 A3.04.09 A3.03.08 A3.04.07 A3.03.07 A3.03.06 +A3.03.10 A3.03.13 A3.03.12 A3.02.10 A3.03.11 A3.02.08 A3.03.09 A3.03.08 A3.02.06 +A3.03.11 A3.04.13 A3.03.13 A3.03.12 A3.04.11 A3.03.10 A3.04.09 A3.03.09 A3.03.08 +A3.03.12 A3.03.14 A3.02.12 A3.02.11 A3.03.13 A3.02.10 A3.03.11 A3.03.10 A3.02.08 +A3.03.13 A3.04.14 A3.03.14 A3.02.12 A3.04.13 A3.03.12 A3.04.11 A3.03.11 A3.03.10 +A3.03.14 A3.04.15 A3.03.15 A3.02.13 A3.04.14 A3.02.12 A3.04.13 A3.03.13 A3.03.12 +A3.03.15 A3.02.14 A3.04.15 A3.02.13 A3.04.14 A3.03.14 A3.02.12 +A3.04.00 A3.04.03 A3.04.04 A3.04.01 +A3.04.01 A3.04.04 A3.03.04 A3.04.00 A3.03.01 +A3.04.02 A3.04.05 A3.04.06 A3.05.01 A3.04.03 +A3.04.03 A3.04.05 A3.04.06 A3.04.07 A3.04.02 A3.04.04 A3.04.00 +A3.04.04 A3.04.06 A3.04.07 A3.03.07 A3.04.03 A3.03.04 A3.04.00 A3.04.01 A3.03.01 +A3.04.05 A3.05.04 A3.05.06 A3.04.08 A3.05.02 A3.04.06 A3.05.01 A3.04.02 A3.04.03 +A3.04.06 A3.05.06 A3.04.08 A3.04.09 A3.04.05 A3.04.07 A3.04.02 A3.04.03 A3.04.04 +A3.04.07 A3.04.08 A3.04.09 A3.03.09 A3.04.06 A3.03.07 A3.04.03 A3.04.04 A3.03.04 +A3.04.08 A3.05.08 A3.04.10 A3.04.11 A3.05.06 A3.04.09 A3.04.05 A3.04.06 A3.04.07 +A3.04.09 A3.04.10 A3.04.11 A3.03.11 A3.04.08 A3.03.09 A3.04.06 A3.04.07 A3.03.07 +A3.04.10 A3.05.10 A3.04.12 A3.04.13 A3.05.08 A3.04.11 A3.05.06 A3.04.08 A3.04.09 +A3.04.11 A3.04.12 A3.04.13 A3.03.13 A3.04.10 A3.03.11 A3.04.08 A3.04.09 A3.03.09 +A3.04.12 A3.05.11 A3.05.12 A3.04.14 A3.05.10 A3.04.13 A3.05.08 A3.04.10 A3.04.11 +A3.04.13 A3.05.12 A3.04.14 A3.03.14 A3.04.12 A3.03.13 A3.04.10 A3.04.11 A3.03.11 +A3.04.14 A3.05.13 A3.04.15 A3.03.15 A3.05.12 A3.03.14 A3.04.12 A3.04.13 A3.03.13 +A3.04.15 A3.05.15 A3.05.13 A3.03.15 A3.05.12 A3.04.14 A3.03.14 +A3.05.00 A3.06.01 A3.06.03 A3.05.05 A3.05.03 A3.05.02 +A3.05.01 A3.05.02 A3.04.05 A3.04.02 +A3.05.02 A3.05.00 A3.05.03 A3.05.04 A3.05.06 A3.04.05 A3.05.01 +A3.05.03 A3.06.03 A3.05.05 A3.05.07 A3.05.00 A3.05.04 A3.05.02 +A3.05.04 A3.05.05 A3.05.07 A3.05.08 A3.05.03 A3.05.06 A3.05.02 A3.04.05 +A3.05.05 A3.06.05 A3.06.07 A3.05.09 A3.06.03 A3.05.07 A3.05.00 A3.05.03 A3.05.04 +A3.05.06 A3.05.07 A3.05.08 A3.04.10 A3.05.04 A3.04.08 A3.05.02 A3.04.05 A3.04.06 +A3.05.07 A3.06.07 A3.05.09 A3.05.10 A3.05.05 A3.05.08 A3.05.03 A3.05.04 A3.05.06 +A3.05.08 A3.05.09 A3.05.10 A3.04.12 A3.05.07 A3.04.10 A3.05.04 A3.05.06 A3.04.08 +A3.05.09 A3.06.08 A3.06.10 A3.05.11 A3.06.07 A3.05.10 A3.05.05 A3.05.07 A3.05.08 +A3.05.10 A3.06.10 A3.05.11 A3.05.12 A3.05.09 A3.04.12 A3.05.07 A3.05.08 A3.04.10 +A3.05.11 A3.06.11 A3.06.12 A3.05.13 A3.06.10 A3.05.12 A3.05.09 A3.05.10 A3.04.12 +A3.05.12 A3.06.12 A3.05.13 A3.04.15 A3.05.11 A3.04.14 A3.05.10 A3.04.12 A3.04.13 +A3.05.13 A3.06.13 A3.06.14 A3.05.14 A3.05.15 A3.06.12 A3.04.15 A3.05.11 A3.05.12 A3.04.14 +A3.05.14 A3.06.15 A3.06.14 A3.05.15 A3.05.13 +A3.05.15 A3.05.14 A3.05.13 A3.04.15 +A3.06.00 A3.07.01 A3.06.04 A3.06.02 +A3.06.01 A3.06.02 A3.06.05 A3.06.03 A3.05.00 +A3.06.02 A3.06.04 A3.06.06 A3.06.00 A3.06.05 A3.06.01 +A3.06.03 A3.06.05 A3.06.07 A3.06.01 A3.05.05 A3.05.00 A3.05.03 +A3.06.04 A3.07.01 A3.07.04 A3.07.07 A3.06.06 A3.06.00 A3.06.02 A3.06.05 +A3.06.05 A3.06.04 A3.06.06 A3.06.08 A3.06.02 A3.06.07 A3.06.01 A3.06.03 A3.05.05 +A3.06.06 A3.07.04 A3.07.07 A3.06.09 A3.06.04 A3.06.08 A3.06.02 A3.06.05 A3.06.07 +A3.06.07 A3.06.06 A3.06.08 A3.06.10 A3.06.05 A3.05.09 A3.06.03 A3.05.05 A3.05.07 +A3.06.08 A3.07.07 A3.06.09 A3.06.11 A3.06.06 A3.06.10 A3.06.05 A3.06.07 A3.05.09 +A3.06.09 A3.07.08 A3.07.10 A3.07.12 A3.07.07 A3.06.11 A3.06.06 A3.06.08 A3.06.10 +A3.06.10 A3.06.09 A3.06.11 A3.06.12 A3.06.08 A3.05.11 A3.06.07 A3.05.09 A3.05.10 +A3.06.11 A3.07.10 A3.07.12 A3.06.13 A3.06.09 A3.06.12 A3.06.08 A3.06.10 A3.05.11 +A3.06.12 A3.07.12 A3.06.13 A3.06.14 A3.06.11 A3.05.13 A3.06.10 A3.05.11 A3.05.12 +A3.06.13 A3.07.13 A3.07.14 A3.06.15 A3.07.12 A3.06.14 A3.06.11 A3.06.12 A3.05.13 +A3.06.14 A3.06.15 A3.06.13 A3.05.14 A3.06.12 A3.05.13 +A3.06.15 A3.07.14 A3.07.15 A3.06.13 A3.06.14 A3.05.14 +A3.07.00 A3.08.00 A3.08.03 A3.07.03 A3.07.02 +A3.07.01 A3.07.02 A3.07.05 A3.07.04 A3.06.04 A3.06.00 +A3.07.02 A3.07.00 A3.07.03 A3.07.06 A3.07.05 A3.07.01 A3.07.04 +A3.07.03 A3.08.00 A3.08.03 A3.08.06 A3.07.00 A3.07.06 A3.07.02 A3.07.05 +A3.07.04 A3.07.02 A3.07.05 A3.07.08 A3.07.01 A3.07.07 A3.06.04 A3.06.06 +A3.07.05 A3.07.03 A3.07.06 A3.07.09 A3.07.02 A3.07.08 A3.07.01 A3.07.04 A3.07.07 +A3.07.06 A3.08.03 A3.08.06 A3.08.09 A3.07.03 A3.07.09 A3.07.02 A3.07.05 A3.07.08 +A3.07.07 A3.07.05 A3.07.08 A3.07.10 A3.07.04 A3.06.09 A3.06.04 A3.06.06 A3.06.08 +A3.07.08 A3.07.06 A3.07.09 A3.07.11 A3.07.05 A3.07.10 A3.07.04 A3.07.07 A3.06.09 +A3.07.09 A3.08.06 A3.08.09 A3.08.11 A3.07.06 A3.07.11 A3.07.05 A3.07.08 A3.07.10 +A3.07.10 A3.07.09 A3.07.11 A3.07.13 A3.07.08 A3.07.12 A3.07.07 A3.06.09 A3.06.11 +A3.07.11 A3.08.09 A3.08.11 A3.08.13 A3.07.09 A3.07.13 A3.07.08 A3.07.10 A3.07.12 +A3.07.12 A3.07.11 A3.07.13 A3.07.14 A3.07.10 A3.06.13 A3.06.09 A3.06.11 A3.06.12 +A3.07.13 A3.08.11 A3.08.13 A3.08.14 A3.07.11 A3.07.14 A3.07.10 A3.07.12 A3.06.13 +A3.07.14 A3.08.13 A3.08.14 A3.08.15 A3.07.13 A3.07.15 A3.06.15 A3.07.12 A3.06.13 +A3.07.15 A3.08.14 A3.08.15 A3.07.14 A3.06.15 +A3.08.00 A3.08.02 A3.08.03 A3.07.00 A3.07.03 +A3.08.01 A3.09.01 A3.09.03 A3.08.04 A3.08.02 A3.08.05 +A3.08.02 A3.08.01 A3.08.04 A3.08.05 A3.08.00 A3.08.03 A3.08.06 +A3.08.03 A3.08.02 A3.08.05 A3.08.00 A3.08.06 A3.07.00 A3.07.03 A3.07.06 +A3.08.04 A3.09.03 A3.09.05 A3.08.01 A3.08.07 A3.08.02 A3.08.05 A3.08.08 +A3.08.05 A3.08.01 A3.08.04 A3.08.07 A3.08.02 A3.08.08 A3.08.03 A3.08.06 A3.08.09 +A3.08.06 A3.08.02 A3.08.05 A3.08.08 A3.08.03 A3.08.09 A3.07.03 A3.07.06 A3.07.09 +A3.08.07 A3.09.03 A3.09.05 A3.09.07 A3.08.04 A3.09.08 A3.08.05 A3.08.08 A3.08.10 +A3.08.08 A3.08.04 A3.08.07 A3.09.08 A3.08.05 A3.08.10 A3.08.06 A3.08.09 A3.08.11 +A3.08.09 A3.08.05 A3.08.08 A3.08.10 A3.08.06 A3.08.11 A3.07.06 A3.07.09 A3.07.11 +A3.08.10 A3.08.07 A3.09.08 A3.09.10 A3.08.08 A3.08.12 A3.08.09 A3.08.11 A3.08.13 +A3.08.11 A3.08.08 A3.08.10 A3.08.12 A3.08.09 A3.08.13 A3.07.09 A3.07.11 A3.07.13 +A3.08.12 A3.09.08 A3.09.10 A3.09.11 A3.08.10 A3.09.12 A3.08.11 A3.08.13 A3.08.14 +A3.08.13 A3.08.10 A3.08.12 A3.09.12 A3.08.11 A3.08.14 A3.07.11 A3.07.13 A3.07.14 +A3.08.14 A3.08.12 A3.09.12 A3.09.14 A3.08.13 A3.08.15 A3.07.13 A3.07.14 A3.07.15 +A3.08.15 A3.09.14 A3.08.14 A3.07.14 A3.07.15 +A3.09.00 A3.10.00 A3.09.02 A3.09.04 A3.09.01 +A3.09.01 A3.09.00 A3.09.04 A3.09.03 A3.09.05 A3.08.01 +A3.09.02 A3.10.00 A3.10.03 A3.09.00 A3.10.05 A3.09.04 A3.09.06 +A3.09.03 A3.09.04 A3.09.01 A3.09.05 A3.08.01 A3.08.04 A3.08.07 +A3.09.04 A3.09.00 A3.09.02 A3.10.05 A3.09.06 A3.09.01 A3.09.03 A3.09.05 A3.09.07 +A3.09.05 A3.09.04 A3.09.06 A3.09.01 A3.09.03 A3.09.07 A3.08.04 A3.08.07 A3.09.08 +A3.09.06 A3.09.02 A3.10.05 A3.10.07 A3.09.04 A3.10.09 A3.09.05 A3.09.07 A3.09.09 +A3.09.07 A3.09.04 A3.09.06 A3.10.09 A3.09.05 A3.09.09 A3.08.07 A3.09.08 A3.09.10 +A3.09.08 A3.09.05 A3.09.07 A3.09.09 A3.08.07 A3.09.10 A3.08.08 A3.08.10 A3.08.12 +A3.09.09 A3.09.06 A3.10.09 A3.10.10 A3.09.07 A3.10.11 A3.09.08 A3.09.10 A3.09.11 +A3.09.10 A3.09.07 A3.09.09 A3.10.11 A3.09.08 A3.09.11 A3.08.10 A3.08.12 A3.09.12 +A3.09.11 A3.09.09 A3.10.11 A3.10.12 A3.09.10 A3.10.13 A3.08.12 A3.09.12 A3.09.13 +A3.09.12 A3.09.10 A3.09.11 A3.10.13 A3.08.12 A3.09.13 A3.09.14 A3.08.13 A3.08.14 +A3.09.13 A3.09.11 A3.10.13 A3.09.12 A3.10.14 A3.09.15 A3.09.14 +A3.09.14 A3.09.12 A3.09.13 A3.09.15 A3.08.14 A3.08.15 +A3.09.15 A3.09.13 A3.10.14 A3.09.14 +A3.10.00 A3.10.01 A3.10.03 A3.09.00 A3.09.02 A3.10.05 +A3.10.01 A3.10.02 A3.10.00 A3.10.03 A3.10.04 +A3.10.02 A3.11.02 A3.10.01 A3.11.05 A3.10.03 A3.10.04 A3.10.06 +A3.10.03 A3.10.02 A3.10.01 A3.10.00 A3.10.04 A3.09.02 A3.10.05 A3.10.07 +A3.10.04 A3.10.02 A3.10.01 A3.11.05 A3.10.03 A3.10.06 A3.10.05 A3.10.07 A3.10.08 +A3.10.05 A3.10.00 A3.10.03 A3.10.04 A3.09.02 A3.10.07 A3.09.04 A3.09.06 A3.10.09 +A3.10.06 A3.10.02 A3.11.05 A3.11.06 A3.10.04 A3.11.08 A3.10.07 A3.10.08 A3.11.10 +A3.10.07 A3.10.03 A3.10.04 A3.10.06 A3.10.05 A3.10.08 A3.09.06 A3.10.09 A3.10.10 +A3.10.08 A3.10.04 A3.10.06 A3.11.08 A3.10.07 A3.11.10 A3.10.09 A3.10.10 A3.11.12 +A3.10.09 A3.10.05 A3.10.07 A3.10.08 A3.09.06 A3.10.10 A3.09.07 A3.09.09 A3.10.11 +A3.10.10 A3.10.07 A3.10.08 A3.11.10 A3.10.09 A3.11.12 A3.09.09 A3.10.11 A3.10.12 +A3.10.11 A3.10.09 A3.10.10 A3.11.12 A3.09.09 A3.10.12 A3.09.10 A3.09.11 A3.10.13 +A3.10.12 A3.10.10 A3.11.12 A3.11.13 A3.10.11 A3.11.14 A3.09.11 A3.10.13 A3.11.15 +A3.10.13 A3.10.11 A3.10.12 A3.11.14 A3.09.11 A3.11.15 A3.09.12 A3.09.13 A3.10.14 +A3.10.14 A3.10.13 A3.11.15 A3.09.13 A3.09.15 +A3.11.00 A3.11.01 A3.11.03 A3.11.04 +A3.11.01 A3.11.00 A3.12.01 A3.11.04 A3.12.04 +A3.11.02 A3.11.03 A3.10.02 A3.11.05 A3.11.06 +A3.11.03 A3.11.00 A3.11.02 A3.11.04 A3.11.05 A3.11.06 A3.11.07 +A3.11.04 A3.11.00 A3.11.01 A3.12.01 A3.11.03 A3.12.04 A3.11.06 A3.11.07 A3.12.07 +A3.11.05 A3.11.03 A3.11.02 A3.10.02 A3.11.06 A3.10.04 A3.10.06 A3.11.08 +A3.11.06 A3.11.03 A3.11.02 A3.11.04 A3.11.05 A3.11.07 A3.10.06 A3.11.08 A3.11.09 +A3.11.07 A3.11.03 A3.11.04 A3.12.04 A3.11.06 A3.12.07 A3.11.08 A3.11.09 A3.12.09 +A3.11.08 A3.11.05 A3.11.06 A3.11.07 A3.10.06 A3.11.09 A3.10.08 A3.11.10 A3.11.11 +A3.11.09 A3.11.06 A3.11.07 A3.12.07 A3.11.08 A3.12.09 A3.11.10 A3.11.11 A3.12.11 +A3.11.10 A3.10.06 A3.11.08 A3.11.09 A3.10.08 A3.11.11 A3.10.10 A3.11.12 A3.11.13 +A3.11.11 A3.11.08 A3.11.09 A3.12.09 A3.11.10 A3.12.11 A3.11.12 A3.11.13 A3.12.13 +A3.11.12 A3.10.08 A3.11.10 A3.11.11 A3.10.10 A3.11.13 A3.10.11 A3.10.12 A3.11.14 +A3.11.13 A3.11.10 A3.11.11 A3.12.11 A3.11.12 A3.12.13 A3.10.12 A3.11.14 A3.12.14 +A3.11.14 A3.11.12 A3.11.13 A3.12.13 A3.10.12 A3.12.14 A3.10.13 A3.11.15 A3.12.15 +A3.11.15 A3.10.12 A3.11.14 A3.12.14 A3.10.13 A3.12.15 A3.10.14 +A3.12.00 A3.12.01 A3.12.03 A3.12.04 +A3.12.01 A3.11.01 A3.12.00 A3.11.04 A3.12.04 +A3.12.02 A3.12.03 A3.13.01 A3.12.06 A3.12.05 +A3.12.03 A3.12.00 A3.12.04 A3.12.02 A3.12.07 A3.12.06 A3.12.05 +A3.12.04 A3.11.01 A3.12.01 A3.12.00 A3.12.03 A3.11.04 A3.11.07 A3.12.07 A3.12.06 +A3.12.05 A3.12.03 A3.12.02 A3.13.01 A3.12.06 A3.13.02 A3.12.08 A3.13.06 A3.13.04 +A3.12.06 A3.12.03 A3.12.04 A3.12.02 A3.12.07 A3.12.05 A3.12.09 A3.12.08 A3.13.06 +A3.12.07 A3.12.03 A3.11.04 A3.12.04 A3.11.07 A3.12.06 A3.11.09 A3.12.09 A3.12.08 +A3.12.08 A3.12.07 A3.12.06 A3.12.05 A3.12.09 A3.13.06 A3.12.11 A3.12.10 A3.13.08 +A3.12.09 A3.11.07 A3.12.07 A3.12.06 A3.11.09 A3.12.08 A3.11.11 A3.12.11 A3.12.10 +A3.12.10 A3.12.09 A3.12.08 A3.13.06 A3.12.11 A3.13.08 A3.12.13 A3.12.12 A3.13.10 +A3.12.11 A3.11.09 A3.12.09 A3.12.08 A3.11.11 A3.12.10 A3.11.13 A3.12.13 A3.12.12 +A3.12.12 A3.12.11 A3.12.10 A3.13.08 A3.12.13 A3.13.10 A3.12.14 A3.13.12 A3.13.11 +A3.12.13 A3.11.11 A3.12.11 A3.12.10 A3.11.13 A3.12.12 A3.11.14 A3.12.14 A3.13.12 +A3.12.14 A3.11.13 A3.12.13 A3.12.12 A3.11.14 A3.13.12 A3.11.15 A3.12.15 A3.13.13 +A3.12.15 A3.11.14 A3.12.14 A3.13.12 A3.11.15 A3.13.13 A3.13.15 +A3.13.00 A3.13.02 A3.13.03 A3.14.01 A3.13.05 A3.14.03 +A3.13.01 A3.12.02 A3.12.05 A3.13.02 +A3.13.02 A3.13.01 A3.12.05 A3.13.00 A3.13.06 A3.13.04 A3.13.03 +A3.13.03 A3.13.02 A3.13.00 A3.13.04 A3.13.07 A3.13.05 A3.14.03 +A3.13.04 A3.12.05 A3.13.02 A3.13.06 A3.13.03 A3.13.08 A3.13.07 A3.13.05 +A3.13.05 A3.13.00 A3.13.04 A3.13.03 A3.13.07 A3.14.03 A3.13.09 A3.14.07 A3.14.05 +A3.13.06 A3.12.06 A3.12.05 A3.13.02 A3.12.08 A3.13.04 A3.12.10 A3.13.08 A3.13.07 +A3.13.07 A3.13.06 A3.13.04 A3.13.03 A3.13.08 A3.13.05 A3.13.10 A3.13.09 A3.14.07 +A3.13.08 A3.12.08 A3.13.06 A3.13.04 A3.12.10 A3.13.07 A3.12.12 A3.13.10 A3.13.09 +A3.13.09 A3.13.08 A3.13.07 A3.13.05 A3.13.10 A3.14.07 A3.13.11 A3.14.10 A3.14.08 +A3.13.10 A3.12.10 A3.13.08 A3.13.07 A3.12.12 A3.13.09 A3.13.12 A3.13.11 A3.14.10 +A3.13.11 A3.12.12 A3.13.10 A3.13.09 A3.13.12 A3.14.10 A3.13.13 A3.14.12 A3.14.11 +A3.13.12 A3.12.13 A3.12.12 A3.13.10 A3.12.14 A3.13.11 A3.12.15 A3.13.13 A3.14.12 +A3.13.13 A3.12.14 A3.13.12 A3.13.11 A3.12.15 A3.14.12 A3.13.15 A3.13.14 A3.14.14 A3.14.13 +A3.13.14 A3.13.13 A3.13.15 A3.14.14 A3.14.15 +A3.13.15 A3.12.15 A3.13.13 A3.13.14 +A3.14.00 A3.14.02 A3.14.04 A3.15.01 +A3.14.01 A3.13.00 A3.14.03 A3.14.02 A3.14.05 +A3.14.02 A3.14.01 A3.14.05 A3.14.06 A3.14.04 A3.14.00 +A3.14.03 A3.13.00 A3.13.03 A3.14.01 A3.13.05 A3.14.07 A3.14.05 +A3.14.04 A3.14.02 A3.14.05 A3.14.06 A3.14.00 A3.15.01 A3.15.07 A3.15.04 +A3.14.05 A3.14.01 A3.13.05 A3.14.03 A3.14.02 A3.14.07 A3.14.08 A3.14.06 A3.14.04 +A3.14.06 A3.14.02 A3.14.07 A3.14.05 A3.14.08 A3.14.04 A3.14.09 A3.15.07 A3.15.04 +A3.14.07 A3.13.07 A3.13.05 A3.14.03 A3.13.09 A3.14.05 A3.14.10 A3.14.08 A3.14.06 +A3.14.08 A3.13.09 A3.14.07 A3.14.05 A3.14.10 A3.14.06 A3.14.11 A3.14.09 A3.15.07 +A3.14.09 A3.14.10 A3.14.08 A3.14.06 A3.14.11 A3.15.07 A3.15.12 A3.15.10 A3.15.08 +A3.14.10 A3.13.10 A3.13.09 A3.14.07 A3.13.11 A3.14.08 A3.14.12 A3.14.11 A3.14.09 +A3.14.11 A3.13.11 A3.14.10 A3.14.08 A3.14.12 A3.14.09 A3.14.13 A3.15.12 A3.15.10 +A3.14.12 A3.13.12 A3.13.11 A3.14.10 A3.13.13 A3.14.11 A3.14.14 A3.14.13 A3.15.12 +A3.14.13 A3.13.13 A3.14.12 A3.14.11 A3.14.14 A3.15.12 A3.14.15 A3.15.14 A3.15.13 +A3.14.14 A3.13.13 A3.14.12 A3.13.14 A3.14.13 A3.14.15 +A3.14.15 A3.13.14 A3.14.14 A3.14.13 A3.15.14 A3.15.15 +A3.15.00 A3.15.02 A3.15.03 A3.00.03 A3.00.00 +A3.15.01 A3.14.04 A3.14.00 A3.15.04 A3.15.05 A3.15.02 +A3.15.02 A3.15.01 A3.15.04 A3.15.05 A3.15.06 A3.15.03 A3.15.00 +A3.15.03 A3.15.05 A3.15.02 A3.15.06 A3.15.00 A3.00.06 A3.00.03 A3.00.00 +A3.15.04 A3.14.06 A3.14.04 A3.15.01 A3.15.07 A3.15.08 A3.15.05 A3.15.02 +A3.15.05 A3.15.01 A3.15.07 A3.15.04 A3.15.08 A3.15.02 A3.15.09 A3.15.06 A3.15.03 +A3.15.06 A3.15.08 A3.15.05 A3.15.02 A3.15.09 A3.15.03 A3.00.09 A3.00.06 A3.00.03 +A3.15.07 A3.14.08 A3.14.06 A3.14.04 A3.14.09 A3.15.04 A3.15.10 A3.15.08 A3.15.05 +A3.15.08 A3.14.09 A3.15.07 A3.15.04 A3.15.10 A3.15.05 A3.15.11 A3.15.09 A3.15.06 +A3.15.09 A3.15.10 A3.15.08 A3.15.05 A3.15.11 A3.15.06 A3.00.11 A3.00.09 A3.00.06 +A3.15.10 A3.14.11 A3.14.09 A3.15.07 A3.15.12 A3.15.08 A3.15.13 A3.15.11 A3.15.09 +A3.15.11 A3.15.12 A3.15.10 A3.15.08 A3.15.13 A3.15.09 A3.00.13 A3.00.11 A3.00.09 +A3.15.12 A3.14.12 A3.14.11 A3.14.09 A3.14.13 A3.15.10 A3.15.14 A3.15.13 A3.15.11 +A3.15.13 A3.14.13 A3.15.12 A3.15.10 A3.15.14 A3.15.11 A3.00.14 A3.00.13 A3.00.11 +A3.15.14 A3.14.13 A3.15.12 A3.14.15 A3.15.13 A3.15.15 A3.00.15 A3.00.14 A3.00.13 +A3.15.15 A3.14.15 A3.15.14 A3.00.15 A3.00.14 +C1.00.00 C1.00.07 C1.00.08 C1.01.05 +C1.00.01 C1.00.02 C1.00.11 C1.00.10 C1.00.06 C1.00.04 +C1.00.02 C1.15.01 C1.15.11 C1.00.12 C1.00.11 C1.00.01 +C1.00.03 C1.00.14 C1.00.13 C1.00.07 +C1.00.04 C1.00.01 C1.00.06 C1.00.09 C1.00.05 +C1.00.05 C1.00.04 C1.00.15 C1.00.09 C1.00.14 +C1.00.06 C1.00.01 C1.00.16 C1.00.10 C1.00.04 C1.00.15 C1.00.09 +C1.00.07 C1.00.19 C1.00.13 C1.00.03 C1.00.18 C1.01.13 C1.00.08 C1.00.00 +C1.00.08 C1.00.18 C1.00.07 C1.01.13 C1.00.00 C1.01.05 +C1.00.09 C1.00.16 C1.00.06 C1.00.04 C1.00.15 C1.00.05 +C1.00.10 C1.00.17 C1.00.11 C1.00.01 C1.00.16 C1.00.06 +C1.00.11 C1.00.17 C1.00.12 C1.00.02 C1.00.01 C1.00.16 C1.00.10 +C1.00.12 C1.15.16 C1.15.01 C1.15.11 C1.00.17 C1.00.02 C1.00.11 +C1.00.13 C1.00.20 C1.00.14 C1.00.19 C1.00.03 C1.00.18 C1.00.07 +C1.00.14 C1.00.21 C1.00.15 C1.00.05 C1.00.20 C1.00.19 C1.00.13 C1.00.03 +C1.00.15 C1.00.22 C1.00.16 C1.00.06 C1.00.21 C1.00.09 C1.00.05 C1.00.20 C1.00.14 +C1.00.16 C1.00.23 C1.00.17 C1.00.11 C1.00.22 C1.00.10 C1.00.06 C1.00.21 C1.00.15 C1.00.09 +C1.00.17 C1.15.22 C1.15.16 C1.15.11 C1.00.23 C1.00.12 C1.00.11 C1.00.22 C1.00.16 C1.00.10 +C1.00.18 C1.00.24 C1.00.19 C1.00.13 C1.01.21 C1.00.07 C1.01.19 C1.01.13 C1.00.08 +C1.00.19 C1.00.25 C1.00.20 C1.00.14 C1.00.24 C1.00.13 C1.01.21 C1.00.18 C1.00.07 +C1.00.20 C1.00.26 C1.00.21 C1.00.15 C1.00.25 C1.00.14 C1.00.24 C1.00.19 C1.00.13 +C1.00.21 C1.00.27 C1.00.22 C1.00.16 C1.00.26 C1.00.15 C1.00.25 C1.00.20 C1.00.14 +C1.00.22 C1.00.28 C1.00.23 C1.00.17 C1.00.27 C1.00.16 C1.00.26 C1.00.21 C1.00.15 +C1.00.23 C1.15.27 C1.15.22 C1.15.16 C1.00.28 C1.00.17 C1.00.27 C1.00.22 C1.00.16 +C1.00.24 C1.00.30 C1.00.25 C1.00.20 C1.00.29 C1.00.19 C1.01.26 C1.01.21 C1.00.18 +C1.00.25 C1.00.31 C1.00.26 C1.00.21 C1.00.30 C1.00.20 C1.00.29 C1.00.24 C1.00.19 +C1.00.26 C1.00.32 C1.00.27 C1.00.22 C1.00.31 C1.00.21 C1.00.30 C1.00.25 C1.00.20 +C1.00.27 C1.00.33 C1.00.28 C1.00.23 C1.00.32 C1.00.22 C1.00.31 C1.00.26 C1.00.21 +C1.00.28 C1.15.32 C1.15.27 C1.15.22 C1.00.33 C1.00.23 C1.00.32 C1.00.27 C1.00.22 +C1.00.29 C1.00.34 C1.00.30 C1.00.25 C1.01.33 C1.00.24 C1.01.31 C1.01.26 C1.01.21 +C1.00.30 C1.00.35 C1.00.31 C1.00.26 C1.00.34 C1.00.25 C1.01.33 C1.00.29 C1.00.24 +C1.00.31 C1.00.36 C1.00.32 C1.00.27 C1.00.35 C1.00.26 C1.00.34 C1.00.30 C1.00.25 +C1.00.32 C1.00.37 C1.00.33 C1.00.28 C1.00.36 C1.00.27 C1.00.35 C1.00.31 C1.00.26 +C1.00.33 C1.15.36 C1.15.32 C1.15.27 C1.00.37 C1.00.28 C1.00.36 C1.00.32 C1.00.27 +C1.00.34 C1.00.39 C1.00.35 C1.00.31 C1.00.38 C1.00.30 C1.01.38 C1.01.33 C1.00.29 +C1.00.35 C1.00.40 C1.00.36 C1.00.32 C1.00.39 C1.00.31 C1.00.38 C1.00.34 C1.00.30 +C1.00.36 C1.00.41 C1.00.37 C1.00.33 C1.00.40 C1.00.32 C1.00.39 C1.00.35 C1.00.31 +C1.00.37 C1.15.40 C1.15.36 C1.15.32 C1.00.41 C1.00.33 C1.00.40 C1.00.36 C1.00.32 +C1.00.38 C1.00.43 C1.00.39 C1.00.35 C1.00.42 C1.00.34 C1.01.41 C1.01.38 C1.01.33 +C1.00.39 C1.00.44 C1.00.40 C1.00.36 C1.00.43 C1.00.35 C1.00.42 C1.00.38 C1.00.34 +C1.00.40 C1.00.45 C1.00.41 C1.00.37 C1.00.44 C1.00.36 C1.00.43 C1.00.39 C1.00.35 +C1.00.41 C1.15.44 C1.15.40 C1.15.36 C1.00.45 C1.00.37 C1.00.44 C1.00.40 C1.00.36 +C1.00.42 C1.00.46 C1.00.43 C1.00.39 C1.01.45 C1.00.38 C1.01.43 C1.01.41 C1.01.38 +C1.00.43 C1.00.47 C1.00.44 C1.00.40 C1.00.46 C1.00.39 C1.01.45 C1.00.42 C1.00.38 +C1.00.44 C1.00.48 C1.00.45 C1.00.41 C1.00.47 C1.00.40 C1.00.46 C1.00.43 C1.00.39 +C1.00.45 C1.15.47 C1.15.44 C1.15.40 C1.00.48 C1.00.41 C1.00.47 C1.00.44 C1.00.40 +C1.00.46 C1.00.50 C1.00.47 C1.00.44 C1.00.49 C1.00.43 C1.01.47 C1.01.45 C1.00.42 +C1.00.47 C1.00.51 C1.00.48 C1.00.45 C1.00.50 C1.00.44 C1.00.49 C1.00.46 C1.00.43 +C1.00.48 C1.15.50 C1.15.47 C1.15.44 C1.00.51 C1.00.45 C1.00.50 C1.00.47 C1.00.44 +C1.00.49 C1.00.52 C1.00.50 C1.00.47 C1.01.50 C1.00.46 C1.01.49 C1.01.47 C1.01.45 +C1.00.50 C1.00.53 C1.00.51 C1.00.48 C1.00.52 C1.00.47 C1.01.50 C1.00.49 C1.00.46 +C1.00.51 C1.15.52 C1.15.50 C1.15.47 C1.00.53 C1.00.48 C1.00.52 C1.00.50 C1.00.47 +C1.00.52 C1.00.53 C1.00.51 C1.00.55 C1.00.54 C1.00.50 C1.01.54 C1.01.53 C1.01.50 C1.00.49 +C1.00.53 C1.15.52 C1.15.50 C1.15.56 C1.00.56 C1.00.51 C1.00.55 C1.00.54 C1.00.52 C1.00.50 +C1.00.54 C1.00.53 C1.00.58 C1.00.55 C1.00.57 C1.00.52 C1.01.58 C1.01.54 +C1.00.55 C1.00.59 C1.00.56 C1.00.53 C1.00.58 C1.00.57 C1.00.54 C1.00.52 +C1.00.56 C1.15.52 C1.15.59 C1.15.56 C1.00.59 C1.00.53 C1.00.58 C1.00.55 +C1.00.57 C1.00.61 C1.00.58 C1.00.55 C1.00.60 C1.00.54 C1.01.60 C1.01.58 C1.01.54 +C1.00.58 C1.00.62 C1.00.59 C1.00.56 C1.00.61 C1.00.55 C1.00.60 C1.00.57 C1.00.54 +C1.00.59 C1.15.62 C1.15.59 C1.15.56 C1.00.62 C1.00.56 C1.00.61 C1.00.58 C1.00.55 +C1.00.60 C1.00.61 C1.00.58 C1.00.57 C1.01.62 C1.01.60 C1.01.58 +C1.00.61 C1.00.62 C1.00.59 C1.00.58 C1.00.60 C1.00.57 +C1.00.62 C1.15.62 C1.15.59 C1.00.59 C1.00.61 C1.00.58 +C1.01.00 C1.01.11 C1.01.02 C1.01.03 +C1.01.01 C1.01.12 C1.01.08 C1.01.04 C1.01.06 +C1.01.02 C1.01.13 C1.01.05 C1.01.11 C1.01.00 +C1.01.03 C1.01.11 C1.01.00 C1.01.09 C1.01.07 +C1.01.04 C1.01.10 C1.01.08 C1.01.01 +C1.01.05 C1.01.13 C1.00.08 C1.00.00 C1.01.11 C1.01.02 +C1.01.06 C1.01.17 C1.01.12 C1.01.01 C1.02.11 C1.02.06 +C1.01.07 C1.01.14 C1.01.09 C1.01.03 C1.01.10 +C1.01.08 C1.01.15 C1.01.10 C1.01.12 C1.01.04 C1.01.01 +C1.01.09 C1.01.16 C1.01.11 C1.01.14 C1.01.03 C1.01.07 +C1.01.10 C1.01.18 C1.01.14 C1.01.07 C1.01.15 C1.01.12 C1.01.08 C1.01.04 +C1.01.11 C1.01.19 C1.01.13 C1.01.05 C1.01.16 C1.01.02 C1.01.00 C1.01.14 C1.01.09 C1.01.03 +C1.01.12 C1.01.20 C1.01.15 C1.01.10 C1.01.17 C1.01.08 C1.01.01 C1.02.11 C1.01.06 +C1.01.13 C1.01.21 C1.00.18 C1.00.07 C1.01.19 C1.00.08 C1.01.05 C1.01.16 C1.01.11 C1.01.02 +C1.01.14 C1.01.22 C1.01.16 C1.01.11 C1.01.18 C1.01.09 C1.01.07 C1.01.15 C1.01.10 +C1.01.15 C1.01.23 C1.01.18 C1.01.14 C1.01.20 C1.01.10 C1.01.17 C1.01.12 C1.01.08 +C1.01.16 C1.01.24 C1.01.19 C1.01.13 C1.01.22 C1.01.11 C1.01.18 C1.01.14 C1.01.09 +C1.01.17 C1.01.25 C1.01.20 C1.01.15 C1.02.20 C1.01.12 C1.02.16 C1.02.11 C1.01.06 +C1.01.18 C1.01.27 C1.01.22 C1.01.16 C1.01.23 C1.01.14 C1.01.20 C1.01.15 C1.01.10 +C1.01.19 C1.01.26 C1.01.21 C1.00.18 C1.01.24 C1.01.13 C1.01.22 C1.01.16 C1.01.11 +C1.01.20 C1.01.28 C1.01.23 C1.01.18 C1.01.25 C1.01.15 C1.02.20 C1.01.17 C1.01.12 +C1.01.21 C1.00.29 C1.00.24 C1.00.19 C1.01.26 C1.00.18 C1.01.24 C1.01.19 C1.01.13 +C1.01.22 C1.01.29 C1.01.24 C1.01.19 C1.01.27 C1.01.16 C1.01.23 C1.01.18 C1.01.14 +C1.01.23 C1.01.30 C1.01.27 C1.01.22 C1.01.28 C1.01.18 C1.01.25 C1.01.20 C1.01.15 +C1.01.24 C1.01.31 C1.01.26 C1.01.21 C1.01.29 C1.01.19 C1.01.27 C1.01.22 C1.01.16 +C1.01.25 C1.01.32 C1.01.28 C1.01.23 C1.02.27 C1.01.20 C1.02.23 C1.02.20 C1.01.17 +C1.01.26 C1.01.33 C1.00.29 C1.00.24 C1.01.31 C1.01.21 C1.01.29 C1.01.24 C1.01.19 +C1.01.27 C1.01.34 C1.01.29 C1.01.24 C1.01.30 C1.01.22 C1.01.28 C1.01.23 C1.01.18 +C1.01.28 C1.01.35 C1.01.30 C1.01.27 C1.01.32 C1.01.23 C1.02.27 C1.01.25 C1.01.20 +C1.01.29 C1.01.36 C1.01.31 C1.01.26 C1.01.34 C1.01.24 C1.01.30 C1.01.27 C1.01.22 +C1.01.30 C1.01.37 C1.01.34 C1.01.29 C1.01.35 C1.01.27 C1.01.32 C1.01.28 C1.01.23 +C1.01.31 C1.01.38 C1.01.33 C1.00.29 C1.01.36 C1.01.26 C1.01.34 C1.01.29 C1.01.24 +C1.01.32 C1.02.35 C1.01.35 C1.01.30 C1.02.33 C1.01.28 C1.02.30 C1.02.27 C1.01.25 +C1.01.33 C1.00.38 C1.00.34 C1.00.30 C1.01.38 C1.00.29 C1.01.36 C1.01.31 C1.01.26 +C1.01.34 C1.01.39 C1.01.36 C1.01.31 C1.01.37 C1.01.29 C1.01.35 C1.01.30 C1.01.27 +C1.01.35 C1.01.40 C1.01.37 C1.01.34 C1.02.35 C1.01.30 C1.02.33 C1.01.32 C1.01.28 +C1.01.36 C1.01.41 C1.01.38 C1.01.33 C1.01.39 C1.01.31 C1.01.37 C1.01.34 C1.01.29 +C1.01.37 C1.01.42 C1.01.39 C1.01.36 C1.01.40 C1.01.34 C1.02.35 C1.01.35 C1.01.30 +C1.01.38 C1.00.42 C1.00.38 C1.00.34 C1.01.41 C1.01.33 C1.01.39 C1.01.36 C1.01.31 +C1.01.39 C1.01.43 C1.01.41 C1.01.38 C1.01.42 C1.01.36 C1.01.40 C1.01.37 C1.01.34 +C1.01.40 C1.01.44 C1.01.42 C1.01.39 C1.02.42 C1.01.37 C1.02.39 C1.02.35 C1.01.35 +C1.01.41 C1.01.45 C1.00.42 C1.00.38 C1.01.43 C1.01.38 C1.01.42 C1.01.39 C1.01.36 +C1.01.42 C1.01.46 C1.01.43 C1.01.41 C1.01.44 C1.01.39 C1.02.42 C1.01.40 C1.01.37 +C1.01.43 C1.01.47 C1.01.45 C1.00.42 C1.01.46 C1.01.41 C1.01.44 C1.01.42 C1.01.39 +C1.01.44 C1.01.48 C1.01.46 C1.01.43 C1.02.46 C1.01.42 C1.02.44 C1.02.42 C1.01.40 +C1.01.45 C1.00.49 C1.00.46 C1.00.43 C1.01.47 C1.00.42 C1.01.46 C1.01.43 C1.01.41 +C1.01.46 C1.01.49 C1.01.47 C1.01.45 C1.01.48 C1.01.43 C1.02.46 C1.01.44 C1.01.42 +C1.01.47 C1.01.50 C1.00.49 C1.00.46 C1.01.49 C1.01.45 C1.01.48 C1.01.46 C1.01.43 +C1.01.48 C1.01.51 C1.01.49 C1.01.47 C1.02.50 C1.01.46 C1.02.48 C1.02.46 C1.01.44 +C1.01.49 C1.01.50 C1.00.49 C1.01.52 C1.01.51 C1.01.47 C1.02.50 C1.01.48 C1.01.46 +C1.01.50 C1.00.52 C1.00.50 C1.01.54 C1.01.53 C1.00.49 C1.01.52 C1.01.51 C1.01.49 C1.01.47 +C1.01.51 C1.01.50 C1.01.57 C1.01.55 C1.01.52 C1.02.54 C1.01.49 C1.02.52 C1.02.51 C1.02.50 C1.01.48 +C1.01.52 C1.01.56 C1.01.53 C1.01.50 C1.01.55 C1.01.51 C1.01.49 +C1.01.53 C1.00.52 C1.01.58 C1.01.54 C1.01.56 C1.01.50 C1.01.55 C1.01.52 +C1.01.54 C1.00.57 C1.00.54 C1.00.52 C1.01.58 C1.01.56 C1.01.53 C1.01.50 +C1.01.55 C1.01.59 C1.01.56 C1.01.53 C1.01.57 C1.01.52 C1.02.54 C1.01.51 +C1.01.56 C1.01.60 C1.01.58 C1.01.54 C1.01.59 C1.01.53 C1.01.57 C1.01.55 C1.01.52 +C1.01.57 C1.01.61 C1.01.59 C1.01.56 C1.02.58 C1.01.55 C1.02.56 C1.02.54 C1.01.51 +C1.01.58 C1.00.60 C1.00.57 C1.00.54 C1.01.60 C1.01.54 C1.01.59 C1.01.56 C1.01.53 +C1.01.59 C1.01.62 C1.01.60 C1.01.58 C1.01.61 C1.01.56 C1.02.58 C1.01.57 C1.01.55 +C1.01.60 C1.00.60 C1.00.57 C1.01.62 C1.01.58 C1.01.61 C1.01.59 C1.01.56 +C1.01.61 C1.01.62 C1.01.60 C1.02.61 C1.01.59 C1.02.60 C1.02.58 C1.01.57 +C1.01.62 C1.00.60 C1.01.60 C1.02.61 C1.01.61 C1.01.59 +C1.02.00 C1.02.09 C1.02.05 C1.02.02 +C1.02.01 C1.02.12 C1.02.06 C1.02.03 +C1.02.02 C1.02.13 C1.02.09 C1.02.00 C1.03.04 +C1.02.03 C1.02.12 C1.02.06 C1.02.08 C1.02.01 C1.02.07 +C1.02.04 C1.02.10 C1.02.07 C1.02.05 +C1.02.05 C1.02.14 C1.02.10 C1.02.09 C1.02.04 C1.02.00 +C1.02.06 C1.02.16 C1.02.11 C1.01.06 C1.02.12 C1.02.03 C1.02.01 +C1.02.07 C1.02.10 C1.02.08 C1.02.03 C1.02.04 +C1.02.08 C1.02.15 C1.02.12 C1.02.10 C1.02.03 C1.02.07 +C1.02.09 C1.02.17 C1.02.14 C1.02.10 C1.02.13 C1.02.05 C1.02.00 C1.03.04 C1.02.02 +C1.02.10 C1.02.18 C1.02.15 C1.02.12 C1.02.14 C1.02.08 C1.02.07 C1.02.09 C1.02.05 C1.02.04 +C1.02.11 C1.02.20 C1.01.17 C1.01.12 C1.02.16 C1.01.06 C1.02.12 C1.02.06 +C1.02.12 C1.02.19 C1.02.16 C1.02.11 C1.02.15 C1.02.06 C1.02.10 C1.02.08 C1.02.03 C1.02.01 +C1.02.13 C1.03.20 C1.02.17 C1.02.14 C1.03.15 C1.02.09 C1.03.10 C1.03.04 C1.02.02 +C1.02.14 C1.02.21 C1.02.18 C1.02.15 C1.02.17 C1.02.10 C1.02.13 C1.02.09 C1.02.05 +C1.02.15 C1.02.22 C1.02.19 C1.02.16 C1.02.18 C1.02.12 C1.02.14 C1.02.10 C1.02.08 +C1.02.16 C1.02.23 C1.02.20 C1.01.17 C1.02.19 C1.02.11 C1.02.15 C1.02.12 C1.02.06 +C1.02.17 C1.02.24 C1.02.21 C1.02.18 C1.03.20 C1.02.14 C1.03.15 C1.02.13 C1.02.09 +C1.02.18 C1.02.25 C1.02.22 C1.02.19 C1.02.21 C1.02.15 C1.02.17 C1.02.14 C1.02.10 +C1.02.19 C1.02.26 C1.02.23 C1.02.20 C1.02.22 C1.02.16 C1.02.18 C1.02.15 C1.02.12 +C1.02.20 C1.02.27 C1.01.25 C1.01.20 C1.02.23 C1.01.17 C1.02.19 C1.02.16 C1.02.11 +C1.02.21 C1.02.28 C1.02.25 C1.02.22 C1.02.24 C1.02.18 C1.03.20 C1.02.17 C1.02.14 +C1.02.22 C1.02.29 C1.02.26 C1.02.23 C1.02.25 C1.02.19 C1.02.21 C1.02.18 C1.02.15 +C1.02.23 C1.02.30 C1.02.27 C1.01.25 C1.02.26 C1.02.20 C1.02.22 C1.02.19 C1.02.16 +C1.02.24 C1.03.29 C1.02.28 C1.02.25 C1.03.25 C1.02.21 C1.03.21 C1.03.20 C1.02.17 +C1.02.25 C1.02.31 C1.02.29 C1.02.26 C1.02.28 C1.02.22 C1.02.24 C1.02.21 C1.02.18 +C1.02.26 C1.02.32 C1.02.30 C1.02.27 C1.02.29 C1.02.23 C1.02.25 C1.02.22 C1.02.19 +C1.02.27 C1.02.33 C1.01.32 C1.01.28 C1.02.30 C1.01.25 C1.02.26 C1.02.23 C1.02.20 +C1.02.28 C1.03.33 C1.02.31 C1.02.29 C1.03.29 C1.02.25 C1.03.25 C1.02.24 C1.02.21 +C1.02.29 C1.02.34 C1.02.32 C1.02.30 C1.02.31 C1.02.26 C1.02.28 C1.02.25 C1.02.22 +C1.02.30 C1.02.36 C1.02.33 C1.01.32 C1.02.32 C1.02.27 C1.02.29 C1.02.26 C1.02.23 +C1.02.31 C1.02.37 C1.02.34 C1.02.32 C1.03.33 C1.02.29 C1.03.29 C1.02.28 C1.02.25 +C1.02.32 C1.02.38 C1.02.36 C1.02.33 C1.02.34 C1.02.30 C1.02.31 C1.02.29 C1.02.26 +C1.02.33 C1.02.39 C1.02.35 C1.01.35 C1.02.36 C1.01.32 C1.02.32 C1.02.30 C1.02.27 +C1.02.34 C1.02.40 C1.02.38 C1.02.36 C1.02.37 C1.02.32 C1.03.33 C1.02.31 C1.02.29 +C1.02.35 C1.02.42 C1.01.40 C1.01.37 C1.02.39 C1.01.35 C1.02.36 C1.02.33 C1.01.32 +C1.02.36 C1.02.41 C1.02.39 C1.02.35 C1.02.38 C1.02.33 C1.02.34 C1.02.32 C1.02.30 +C1.02.37 C1.03.40 C1.02.40 C1.02.38 C1.03.37 C1.02.34 C1.03.34 C1.03.33 C1.02.31 +C1.02.38 C1.02.43 C1.02.41 C1.02.39 C1.02.40 C1.02.36 C1.02.37 C1.02.34 C1.02.32 +C1.02.39 C1.02.44 C1.02.42 C1.01.40 C1.02.41 C1.02.35 C1.02.38 C1.02.36 C1.02.33 +C1.02.40 C1.03.43 C1.02.43 C1.02.41 C1.03.40 C1.02.38 C1.03.37 C1.02.37 C1.02.34 +C1.02.41 C1.02.45 C1.02.44 C1.02.42 C1.02.43 C1.02.39 C1.02.40 C1.02.38 C1.02.36 +C1.02.42 C1.02.46 C1.01.44 C1.01.42 C1.02.44 C1.01.40 C1.02.41 C1.02.39 C1.02.35 +C1.02.43 C1.02.47 C1.02.45 C1.02.44 C1.03.43 C1.02.41 C1.03.40 C1.02.40 C1.02.38 +C1.02.44 C1.02.48 C1.02.46 C1.01.44 C1.02.45 C1.02.42 C1.02.43 C1.02.41 C1.02.39 +C1.02.45 C1.02.49 C1.02.48 C1.02.46 C1.02.47 C1.02.44 C1.03.43 C1.02.43 C1.02.41 +C1.02.46 C1.02.50 C1.01.48 C1.01.46 C1.02.48 C1.01.44 C1.02.45 C1.02.44 C1.02.42 +C1.02.47 C1.03.48 C1.02.49 C1.02.48 C1.03.46 C1.02.45 C1.03.44 C1.03.43 C1.02.43 +C1.02.48 C1.02.51 C1.02.50 C1.01.48 C1.02.49 C1.02.46 C1.02.47 C1.02.45 C1.02.44 +C1.02.49 C1.02.51 C1.02.50 C1.03.50 C1.03.48 C1.02.48 C1.03.46 C1.02.47 C1.02.45 +C1.02.50 C1.01.51 C1.01.49 C1.02.52 C1.02.51 C1.01.48 C1.02.49 C1.02.48 C1.02.46 +C1.02.51 C1.01.51 C1.02.55 C1.02.53 C1.02.52 C1.03.54 C1.02.50 C1.03.50 C1.03.48 C1.02.49 C1.02.48 +C1.02.52 C1.02.56 C1.02.54 C1.01.51 C1.02.53 C1.02.51 C1.02.50 +C1.02.53 C1.02.57 C1.02.56 C1.02.54 C1.02.55 C1.02.52 C1.03.54 C1.02.51 +C1.02.54 C1.02.58 C1.01.57 C1.01.55 C1.02.56 C1.01.51 C1.02.53 C1.02.52 +C1.02.55 C1.02.59 C1.02.57 C1.02.56 C1.03.58 C1.02.53 C1.03.55 C1.03.54 C1.02.51 +C1.02.56 C1.02.60 C1.02.58 C1.01.57 C1.02.57 C1.02.54 C1.02.55 C1.02.53 C1.02.52 +C1.02.57 C1.02.60 C1.02.58 C1.02.59 C1.02.56 C1.03.58 C1.02.55 C1.02.53 +C1.02.58 C1.02.61 C1.01.61 C1.01.59 C1.02.60 C1.01.57 C1.02.57 C1.02.56 C1.02.54 +C1.02.59 C1.02.62 C1.02.60 C1.03.61 C1.02.57 C1.03.59 C1.03.58 C1.02.55 +C1.02.60 C1.02.61 C1.01.61 C1.02.62 C1.02.58 C1.02.59 C1.02.57 C1.02.56 +C1.02.61 C1.01.62 C1.01.61 C1.02.62 C1.02.60 C1.02.58 +C1.02.62 C1.02.61 C1.02.60 C1.03.62 C1.03.61 C1.02.59 +C1.03.00 C1.04.07 C1.03.08 C1.03.06 C1.04.00 +C1.03.01 C1.03.10 C1.03.04 C1.03.02 +C1.03.02 C1.03.11 C1.03.10 C1.03.03 C1.03.01 +C1.03.03 C1.03.11 C1.03.10 C1.03.05 C1.03.02 +C1.03.04 C1.03.15 C1.02.13 C1.02.09 C1.03.10 C1.02.02 C1.03.01 +C1.03.05 C1.03.12 C1.03.11 C1.03.07 C1.03.03 +C1.03.06 C1.03.14 C1.03.13 C1.03.12 C1.03.08 C1.03.09 C1.03.00 +C1.03.07 C1.03.12 C1.03.11 C1.03.09 C1.03.05 +C1.03.08 C1.04.14 C1.03.14 C1.03.13 C1.04.07 C1.03.06 C1.04.00 C1.03.00 +C1.03.09 C1.03.13 C1.03.12 C1.03.06 C1.03.07 +C1.03.10 C1.03.16 C1.03.15 C1.02.13 C1.03.11 C1.03.04 C1.03.03 C1.03.02 C1.03.01 +C1.03.11 C1.03.17 C1.03.16 C1.03.15 C1.03.12 C1.03.10 C1.03.07 C1.03.05 C1.03.03 C1.03.02 +C1.03.12 C1.03.18 C1.03.17 C1.03.16 C1.03.13 C1.03.11 C1.03.06 C1.03.09 C1.03.07 C1.03.05 +C1.03.13 C1.03.19 C1.03.18 C1.03.17 C1.03.14 C1.03.12 C1.03.08 C1.03.06 C1.03.09 +C1.03.14 C1.04.19 C1.03.19 C1.03.18 C1.04.14 C1.03.13 C1.04.07 C1.03.08 C1.03.06 +C1.03.15 C1.03.21 C1.03.20 C1.02.17 C1.03.16 C1.02.13 C1.03.11 C1.03.10 C1.03.04 +C1.03.16 C1.03.22 C1.03.21 C1.03.20 C1.03.17 C1.03.15 C1.03.12 C1.03.11 C1.03.10 +C1.03.17 C1.03.23 C1.03.22 C1.03.21 C1.03.18 C1.03.16 C1.03.13 C1.03.12 C1.03.11 +C1.03.18 C1.03.24 C1.03.23 C1.03.22 C1.03.19 C1.03.17 C1.03.14 C1.03.13 C1.03.12 +C1.03.19 C1.04.24 C1.03.24 C1.03.23 C1.04.19 C1.03.18 C1.04.14 C1.03.14 C1.03.13 +C1.03.20 C1.03.25 C1.02.24 C1.02.21 C1.03.21 C1.02.17 C1.03.16 C1.03.15 C1.02.13 +C1.03.21 C1.03.26 C1.03.25 C1.02.24 C1.03.22 C1.03.20 C1.03.17 C1.03.16 C1.03.15 +C1.03.22 C1.03.27 C1.03.26 C1.03.25 C1.03.23 C1.03.21 C1.03.18 C1.03.17 C1.03.16 +C1.03.23 C1.03.28 C1.03.27 C1.03.26 C1.03.24 C1.03.22 C1.03.19 C1.03.18 C1.03.17 +C1.03.24 C1.04.28 C1.03.28 C1.03.27 C1.04.24 C1.03.23 C1.04.19 C1.03.19 C1.03.18 +C1.03.25 C1.03.30 C1.03.29 C1.02.28 C1.03.26 C1.02.24 C1.03.22 C1.03.21 C1.03.20 +C1.03.26 C1.03.31 C1.03.30 C1.03.29 C1.03.27 C1.03.25 C1.03.23 C1.03.22 C1.03.21 +C1.03.27 C1.03.32 C1.03.31 C1.03.30 C1.03.28 C1.03.26 C1.03.24 C1.03.23 C1.03.22 +C1.03.28 C1.04.32 C1.03.32 C1.03.31 C1.04.28 C1.03.27 C1.04.24 C1.03.24 C1.03.23 +C1.03.29 C1.03.34 C1.03.33 C1.02.31 C1.03.30 C1.02.28 C1.03.26 C1.03.25 C1.02.24 +C1.03.30 C1.03.35 C1.03.34 C1.03.33 C1.03.31 C1.03.29 C1.03.27 C1.03.26 C1.03.25 +C1.03.31 C1.03.36 C1.03.35 C1.03.34 C1.03.32 C1.03.30 C1.03.28 C1.03.27 C1.03.26 +C1.03.32 C1.04.36 C1.03.36 C1.03.35 C1.04.32 C1.03.31 C1.04.28 C1.03.28 C1.03.27 +C1.03.33 C1.03.37 C1.02.37 C1.02.34 C1.03.34 C1.02.31 C1.03.30 C1.03.29 C1.02.28 +C1.03.34 C1.03.38 C1.03.37 C1.02.37 C1.03.35 C1.03.33 C1.03.31 C1.03.30 C1.03.29 +C1.03.35 C1.03.39 C1.03.38 C1.03.37 C1.03.36 C1.03.34 C1.03.32 C1.03.31 C1.03.30 +C1.03.36 C1.04.39 C1.03.39 C1.03.38 C1.04.36 C1.03.35 C1.04.32 C1.03.32 C1.03.31 +C1.03.37 C1.03.41 C1.03.40 C1.02.40 C1.03.38 C1.02.37 C1.03.35 C1.03.34 C1.03.33 +C1.03.38 C1.03.42 C1.03.41 C1.03.40 C1.03.39 C1.03.37 C1.03.36 C1.03.35 C1.03.34 +C1.03.39 C1.04.42 C1.03.42 C1.03.41 C1.04.39 C1.03.38 C1.04.36 C1.03.36 C1.03.35 +C1.03.40 C1.03.44 C1.03.43 C1.02.43 C1.03.41 C1.02.40 C1.03.38 C1.03.37 C1.02.37 +C1.03.41 C1.03.45 C1.03.44 C1.03.43 C1.03.42 C1.03.40 C1.03.39 C1.03.38 C1.03.37 +C1.03.42 C1.04.45 C1.03.45 C1.03.44 C1.04.42 C1.03.41 C1.04.39 C1.03.39 C1.03.38 +C1.03.43 C1.03.46 C1.02.47 C1.02.45 C1.03.44 C1.02.43 C1.03.41 C1.03.40 C1.02.40 +C1.03.44 C1.03.47 C1.03.46 C1.02.47 C1.03.45 C1.03.43 C1.03.42 C1.03.41 C1.03.40 +C1.03.45 C1.04.47 C1.03.47 C1.03.46 C1.04.45 C1.03.44 C1.04.42 C1.03.42 C1.03.41 +C1.03.46 C1.03.49 C1.03.48 C1.02.49 C1.03.47 C1.02.47 C1.03.45 C1.03.44 C1.03.43 +C1.03.47 C1.04.49 C1.03.49 C1.03.48 C1.04.47 C1.03.46 C1.04.45 C1.03.45 C1.03.44 +C1.03.48 C1.02.51 C1.03.52 C1.03.51 C1.03.50 C1.03.49 C1.02.49 C1.03.47 C1.03.46 C1.02.47 +C1.03.49 C1.04.53 C1.03.53 C1.03.52 C1.03.51 C1.04.49 C1.03.48 C1.04.47 C1.03.47 C1.03.46 +C1.03.50 C1.03.55 C1.03.54 C1.02.51 C1.03.51 C1.03.48 C1.02.49 +C1.03.51 C1.03.56 C1.03.55 C1.03.54 C1.03.52 C1.03.50 C1.03.49 C1.03.48 +C1.03.52 C1.03.57 C1.03.56 C1.03.55 C1.03.53 C1.03.51 C1.03.49 C1.03.48 +C1.03.53 C1.04.57 C1.03.57 C1.03.56 C1.04.53 C1.03.52 C1.04.49 C1.03.49 +C1.03.54 C1.03.58 C1.02.55 C1.02.53 C1.03.55 C1.02.51 C1.03.51 C1.03.50 +C1.03.55 C1.03.59 C1.03.58 C1.02.55 C1.03.56 C1.03.54 C1.03.52 C1.03.51 C1.03.50 +C1.03.56 C1.03.60 C1.03.59 C1.03.58 C1.03.57 C1.03.55 C1.03.53 C1.03.52 C1.03.51 +C1.03.57 C1.04.60 C1.03.60 C1.03.59 C1.04.57 C1.03.56 C1.04.53 C1.03.53 C1.03.52 +C1.03.58 C1.03.61 C1.02.59 C1.02.57 C1.03.59 C1.02.55 C1.03.56 C1.03.55 C1.03.54 +C1.03.59 C1.03.62 C1.03.61 C1.02.59 C1.03.60 C1.03.58 C1.03.57 C1.03.56 C1.03.55 +C1.03.60 C1.04.62 C1.03.62 C1.03.61 C1.04.60 C1.03.59 C1.04.57 C1.03.57 C1.03.56 +C1.03.61 C1.02.62 C1.03.62 C1.02.59 C1.03.60 C1.03.59 C1.03.58 +C1.03.62 C1.02.62 C1.04.62 C1.03.61 C1.04.60 C1.03.60 C1.03.59 +C1.04.00 C1.04.05 C1.04.07 C1.03.08 C1.03.00 +C1.04.01 C1.04.10 C1.04.02 C1.04.03 +C1.04.02 C1.05.04 C1.05.05 C1.04.08 C1.04.10 C1.04.01 +C1.04.03 C1.04.10 C1.04.11 C1.04.01 C1.04.04 +C1.04.04 C1.04.11 C1.04.12 C1.04.03 C1.04.06 +C1.04.05 C1.04.12 C1.04.13 C1.04.14 C1.04.09 C1.04.07 C1.04.00 +C1.04.06 C1.04.11 C1.04.12 C1.04.04 C1.04.09 +C1.04.07 C1.04.13 C1.04.14 C1.03.14 C1.04.05 C1.03.08 C1.04.00 C1.03.00 +C1.04.08 C1.05.14 C1.04.15 C1.05.05 C1.04.10 C1.04.02 +C1.04.09 C1.04.12 C1.04.13 C1.04.06 C1.04.05 +C1.04.10 C1.05.14 C1.04.15 C1.04.16 C1.04.08 C1.04.11 C1.04.02 C1.04.01 C1.04.03 +C1.04.11 C1.04.15 C1.04.16 C1.04.17 C1.04.10 C1.04.12 C1.04.03 C1.04.04 C1.04.06 +C1.04.12 C1.04.16 C1.04.17 C1.04.18 C1.04.11 C1.04.13 C1.04.04 C1.04.06 C1.04.09 C1.04.05 +C1.04.13 C1.04.17 C1.04.18 C1.04.19 C1.04.12 C1.04.14 C1.04.09 C1.04.05 C1.04.07 +C1.04.14 C1.04.18 C1.04.19 C1.03.19 C1.04.13 C1.03.14 C1.04.05 C1.04.07 C1.03.08 +C1.04.15 C1.05.18 C1.04.20 C1.04.21 C1.05.14 C1.04.16 C1.04.08 C1.04.10 C1.04.11 +C1.04.16 C1.04.20 C1.04.21 C1.04.22 C1.04.15 C1.04.17 C1.04.10 C1.04.11 C1.04.12 +C1.04.17 C1.04.21 C1.04.22 C1.04.23 C1.04.16 C1.04.18 C1.04.11 C1.04.12 C1.04.13 +C1.04.18 C1.04.22 C1.04.23 C1.04.24 C1.04.17 C1.04.19 C1.04.12 C1.04.13 C1.04.14 +C1.04.19 C1.04.23 C1.04.24 C1.03.24 C1.04.18 C1.03.19 C1.04.13 C1.04.14 C1.03.14 +C1.04.20 C1.05.22 C1.05.25 C1.04.25 C1.05.18 C1.04.21 C1.05.14 C1.04.15 C1.04.16 +C1.04.21 C1.05.25 C1.04.25 C1.04.26 C1.04.20 C1.04.22 C1.04.15 C1.04.16 C1.04.17 +C1.04.22 C1.04.25 C1.04.26 C1.04.27 C1.04.21 C1.04.23 C1.04.16 C1.04.17 C1.04.18 +C1.04.23 C1.04.26 C1.04.27 C1.04.28 C1.04.22 C1.04.24 C1.04.17 C1.04.18 C1.04.19 +C1.04.24 C1.04.27 C1.04.28 C1.03.28 C1.04.23 C1.03.24 C1.04.18 C1.04.19 C1.03.19 +C1.04.25 C1.05.29 C1.04.29 C1.04.30 C1.05.25 C1.04.26 C1.04.20 C1.04.21 C1.04.22 +C1.04.26 C1.04.29 C1.04.30 C1.04.31 C1.04.25 C1.04.27 C1.04.21 C1.04.22 C1.04.23 +C1.04.27 C1.04.30 C1.04.31 C1.04.32 C1.04.26 C1.04.28 C1.04.22 C1.04.23 C1.04.24 +C1.04.28 C1.04.31 C1.04.32 C1.03.32 C1.04.27 C1.03.28 C1.04.23 C1.04.24 C1.03.24 +C1.04.29 C1.05.32 C1.04.33 C1.04.34 C1.05.29 C1.04.30 C1.05.25 C1.04.25 C1.04.26 +C1.04.30 C1.04.33 C1.04.34 C1.04.35 C1.04.29 C1.04.31 C1.04.25 C1.04.26 C1.04.27 +C1.04.31 C1.04.34 C1.04.35 C1.04.36 C1.04.30 C1.04.32 C1.04.26 C1.04.27 C1.04.28 +C1.04.32 C1.04.35 C1.04.36 C1.03.36 C1.04.31 C1.03.32 C1.04.27 C1.04.28 C1.03.28 +C1.04.33 C1.05.35 C1.05.38 C1.04.37 C1.05.32 C1.04.34 C1.05.29 C1.04.29 C1.04.30 +C1.04.34 C1.05.38 C1.04.37 C1.04.38 C1.04.33 C1.04.35 C1.04.29 C1.04.30 C1.04.31 +C1.04.35 C1.04.37 C1.04.38 C1.04.39 C1.04.34 C1.04.36 C1.04.30 C1.04.31 C1.04.32 +C1.04.36 C1.04.38 C1.04.39 C1.03.39 C1.04.35 C1.03.36 C1.04.31 C1.04.32 C1.03.32 +C1.04.37 C1.05.41 C1.04.40 C1.04.41 C1.05.38 C1.04.38 C1.04.33 C1.04.34 C1.04.35 +C1.04.38 C1.04.40 C1.04.41 C1.04.42 C1.04.37 C1.04.39 C1.04.34 C1.04.35 C1.04.36 +C1.04.39 C1.04.41 C1.04.42 C1.03.42 C1.04.38 C1.03.39 C1.04.35 C1.04.36 C1.03.36 +C1.04.40 C1.05.44 C1.04.43 C1.04.44 C1.05.41 C1.04.41 C1.05.38 C1.04.37 C1.04.38 +C1.04.41 C1.04.43 C1.04.44 C1.04.45 C1.04.40 C1.04.42 C1.04.37 C1.04.38 C1.04.39 +C1.04.42 C1.04.44 C1.04.45 C1.03.45 C1.04.41 C1.03.42 C1.04.38 C1.04.39 C1.03.39 +C1.04.43 C1.05.46 C1.05.48 C1.04.46 C1.05.44 C1.04.44 C1.05.41 C1.04.40 C1.04.41 +C1.04.44 C1.05.48 C1.04.46 C1.04.47 C1.04.43 C1.04.45 C1.04.40 C1.04.41 C1.04.42 +C1.04.45 C1.04.46 C1.04.47 C1.03.47 C1.04.44 C1.03.45 C1.04.41 C1.04.42 C1.03.42 +C1.04.46 C1.05.50 C1.04.48 C1.04.49 C1.05.48 C1.04.47 C1.04.43 C1.04.44 C1.04.45 +C1.04.47 C1.04.48 C1.04.49 C1.03.49 C1.04.46 C1.03.47 C1.04.44 C1.04.45 C1.03.45 +C1.04.48 C1.05.52 C1.04.50 C1.04.51 C1.04.52 C1.05.50 C1.04.49 C1.05.48 C1.04.46 C1.04.47 +C1.04.49 C1.04.51 C1.04.52 C1.04.53 C1.03.53 C1.04.48 C1.03.49 C1.04.46 C1.04.47 C1.03.47 +C1.04.50 C1.05.52 C1.04.54 C1.04.55 C1.04.51 C1.05.50 C1.04.48 +C1.04.51 C1.04.54 C1.04.55 C1.04.56 C1.04.50 C1.04.52 C1.04.48 C1.04.49 +C1.04.52 C1.04.55 C1.04.56 C1.04.57 C1.04.51 C1.04.53 C1.04.48 C1.04.49 +C1.04.53 C1.04.56 C1.04.57 C1.03.57 C1.04.52 C1.03.53 C1.04.49 C1.03.49 +C1.04.54 C1.05.54 C1.05.56 C1.04.58 C1.05.52 C1.04.55 C1.04.50 C1.04.51 +C1.04.55 C1.05.56 C1.04.58 C1.04.59 C1.04.54 C1.04.56 C1.04.50 C1.04.51 C1.04.52 +C1.04.56 C1.04.58 C1.04.59 C1.04.60 C1.04.55 C1.04.57 C1.04.51 C1.04.52 C1.04.53 +C1.04.57 C1.04.59 C1.04.60 C1.03.60 C1.04.56 C1.03.57 C1.04.52 C1.04.53 C1.03.53 +C1.04.58 C1.05.58 C1.05.60 C1.04.61 C1.05.56 C1.04.59 C1.04.54 C1.04.55 C1.04.56 +C1.04.59 C1.05.60 C1.04.61 C1.04.62 C1.04.58 C1.04.60 C1.04.55 C1.04.56 C1.04.57 +C1.04.60 C1.04.61 C1.04.62 C1.03.62 C1.04.59 C1.03.60 C1.04.56 C1.04.57 C1.03.57 +C1.04.61 C1.05.62 C1.05.60 C1.04.62 C1.04.58 C1.04.59 C1.04.60 +C1.04.62 C1.04.61 C1.03.62 C1.04.59 C1.04.60 C1.03.60 +C1.05.00 C1.05.08 C1.05.03 +C1.05.01 C1.05.10 C1.05.14 C1.05.02 C1.05.04 +C1.05.02 C1.05.07 C1.05.10 C1.05.01 +C1.05.03 C1.05.08 C1.05.12 C1.05.00 C1.05.09 +C1.05.04 C1.05.10 C1.05.14 C1.05.01 C1.05.05 C1.04.02 +C1.05.05 C1.05.14 C1.05.04 C1.04.08 C1.04.02 +C1.05.06 C1.05.09 C1.05.11 +C1.05.07 C1.05.11 C1.05.15 C1.05.10 C1.05.02 +C1.05.08 C1.06.06 C1.05.13 C1.05.17 C1.05.12 C1.05.00 C1.05.03 +C1.05.09 C1.05.12 C1.05.16 C1.05.03 C1.05.11 C1.05.06 +C1.05.10 C1.05.11 C1.05.15 C1.05.18 C1.05.07 C1.05.14 C1.05.02 C1.05.01 C1.05.04 +C1.05.11 C1.05.12 C1.05.16 C1.05.19 C1.05.09 C1.05.15 C1.05.06 C1.05.07 C1.05.10 +C1.05.12 C1.05.13 C1.05.17 C1.05.20 C1.05.08 C1.05.16 C1.05.03 C1.05.09 C1.05.11 +C1.05.13 C1.06.12 C1.06.17 C1.05.21 C1.06.06 C1.05.17 C1.05.08 C1.05.12 +C1.05.14 C1.05.15 C1.05.18 C1.04.20 C1.05.10 C1.04.15 C1.05.01 C1.05.04 C1.05.05 C1.04.08 C1.04.10 +C1.05.15 C1.05.16 C1.05.19 C1.05.22 C1.05.11 C1.05.18 C1.05.07 C1.05.10 C1.05.14 +C1.05.16 C1.05.17 C1.05.20 C1.05.23 C1.05.12 C1.05.19 C1.05.09 C1.05.11 C1.05.15 +C1.05.17 C1.06.17 C1.05.21 C1.05.24 C1.05.13 C1.05.20 C1.05.08 C1.05.12 C1.05.16 +C1.05.18 C1.05.19 C1.05.22 C1.05.25 C1.05.15 C1.04.20 C1.05.10 C1.05.14 C1.04.15 +C1.05.19 C1.05.20 C1.05.23 C1.05.26 C1.05.16 C1.05.22 C1.05.11 C1.05.15 C1.05.18 +C1.05.20 C1.05.21 C1.05.24 C1.05.27 C1.05.17 C1.05.23 C1.05.12 C1.05.16 C1.05.19 +C1.05.21 C1.06.20 C1.06.25 C1.05.28 C1.06.17 C1.05.24 C1.05.13 C1.05.17 C1.05.20 +C1.05.22 C1.05.23 C1.05.26 C1.05.29 C1.05.19 C1.05.25 C1.05.15 C1.05.18 C1.04.20 +C1.05.23 C1.05.24 C1.05.27 C1.05.30 C1.05.20 C1.05.26 C1.05.16 C1.05.19 C1.05.22 +C1.05.24 C1.06.25 C1.05.28 C1.05.31 C1.05.21 C1.05.27 C1.05.17 C1.05.20 C1.05.23 +C1.05.25 C1.05.26 C1.05.29 C1.04.29 C1.05.22 C1.04.25 C1.05.18 C1.04.20 C1.04.21 +C1.05.26 C1.05.27 C1.05.30 C1.05.32 C1.05.23 C1.05.29 C1.05.19 C1.05.22 C1.05.25 +C1.05.27 C1.05.28 C1.05.31 C1.05.33 C1.05.24 C1.05.30 C1.05.20 C1.05.23 C1.05.26 +C1.05.28 C1.06.28 C1.06.32 C1.05.34 C1.06.25 C1.05.31 C1.05.21 C1.05.24 C1.05.27 +C1.05.29 C1.05.30 C1.05.32 C1.04.33 C1.05.26 C1.04.29 C1.05.22 C1.05.25 C1.04.25 +C1.05.30 C1.05.31 C1.05.33 C1.05.35 C1.05.27 C1.05.32 C1.05.23 C1.05.26 C1.05.29 +C1.05.31 C1.06.32 C1.05.34 C1.05.36 C1.05.28 C1.05.33 C1.05.24 C1.05.27 C1.05.30 +C1.05.32 C1.05.33 C1.05.35 C1.05.38 C1.05.30 C1.04.33 C1.05.26 C1.05.29 C1.04.29 +C1.05.33 C1.05.34 C1.05.36 C1.05.39 C1.05.31 C1.05.35 C1.05.27 C1.05.30 C1.05.32 +C1.05.34 C1.06.35 C1.05.37 C1.05.40 C1.06.32 C1.05.36 C1.05.28 C1.05.31 C1.05.33 +C1.05.35 C1.05.36 C1.05.39 C1.05.41 C1.05.33 C1.05.38 C1.05.30 C1.05.32 C1.04.33 +C1.05.36 C1.05.37 C1.05.40 C1.05.42 C1.05.34 C1.05.39 C1.05.31 C1.05.33 C1.05.35 +C1.05.37 C1.06.37 C1.06.40 C1.05.43 C1.06.35 C1.05.40 C1.06.32 C1.05.34 C1.05.36 +C1.05.38 C1.05.39 C1.05.41 C1.04.40 C1.05.35 C1.04.37 C1.05.32 C1.04.33 C1.04.34 +C1.05.39 C1.05.40 C1.05.42 C1.05.44 C1.05.36 C1.05.41 C1.05.33 C1.05.35 C1.05.38 +C1.05.40 C1.06.40 C1.05.43 C1.05.45 C1.05.37 C1.05.42 C1.05.34 C1.05.36 C1.05.39 +C1.05.41 C1.05.42 C1.05.44 C1.04.43 C1.05.39 C1.04.40 C1.05.35 C1.05.38 C1.04.37 +C1.05.42 C1.05.43 C1.05.45 C1.05.46 C1.05.40 C1.05.44 C1.05.36 C1.05.39 C1.05.41 +C1.05.43 C1.06.42 C1.06.44 C1.05.47 C1.06.40 C1.05.45 C1.05.37 C1.05.40 C1.05.42 +C1.05.44 C1.05.45 C1.05.46 C1.05.48 C1.05.42 C1.04.43 C1.05.39 C1.05.41 C1.04.40 +C1.05.45 C1.06.44 C1.05.47 C1.05.49 C1.05.43 C1.05.46 C1.05.40 C1.05.42 C1.05.44 +C1.05.46 C1.05.47 C1.05.49 C1.05.50 C1.05.45 C1.05.48 C1.05.42 C1.05.44 C1.04.43 +C1.05.47 C1.06.46 C1.06.48 C1.05.51 C1.06.44 C1.05.49 C1.05.43 C1.05.45 C1.05.46 +C1.05.48 C1.05.49 C1.05.50 C1.04.48 C1.05.46 C1.04.46 C1.05.44 C1.04.43 C1.04.44 +C1.05.49 C1.06.48 C1.05.51 C1.05.52 C1.05.47 C1.05.50 C1.05.45 C1.05.46 C1.05.48 +C1.05.50 C1.05.51 C1.05.52 C1.04.50 C1.05.49 C1.04.48 C1.05.46 C1.05.48 C1.04.46 +C1.05.51 C1.06.49 C1.06.51 C1.05.53 C1.06.48 C1.05.52 C1.05.47 C1.05.49 C1.05.50 +C1.05.52 C1.06.51 C1.05.53 C1.05.54 C1.05.56 C1.05.51 C1.04.54 C1.04.50 C1.05.49 C1.05.50 C1.04.48 +C1.05.53 C1.06.51 C1.05.55 C1.05.57 C1.05.54 C1.05.51 C1.05.52 +C1.05.54 C1.05.55 C1.05.57 C1.05.58 C1.05.53 C1.05.56 C1.05.52 C1.04.54 +C1.05.55 C1.06.54 C1.06.56 C1.05.59 C1.06.51 C1.05.57 C1.05.53 C1.05.54 +C1.05.56 C1.05.57 C1.05.58 C1.05.60 C1.05.54 C1.04.58 C1.05.52 C1.04.54 C1.04.55 +C1.05.57 C1.06.56 C1.05.59 C1.05.61 C1.05.55 C1.05.58 C1.05.53 C1.05.54 C1.05.56 +C1.05.58 C1.05.59 C1.05.61 C1.05.62 C1.05.57 C1.05.60 C1.05.54 C1.05.56 C1.04.58 +C1.05.59 C1.06.61 C1.06.58 C1.06.60 C1.06.56 C1.05.61 C1.05.55 C1.05.57 C1.05.58 +C1.05.60 C1.05.61 C1.05.62 C1.05.58 C1.04.61 C1.05.56 C1.04.58 C1.04.59 +C1.05.61 C1.06.61 C1.06.60 C1.05.59 C1.05.62 C1.05.57 C1.05.58 C1.05.60 +C1.05.62 C1.05.61 C1.05.58 C1.05.60 C1.04.61 +C1.06.00 C1.06.04 C1.06.08 C1.06.12 C1.06.06 +C1.06.01 C1.06.05 C1.06.11 C1.06.03 +C1.06.02 C1.07.08 C1.06.13 C1.06.05 +C1.06.03 C1.06.11 C1.06.01 C1.06.09 C1.06.07 +C1.06.04 C1.06.10 C1.06.08 C1.06.00 +C1.06.05 C1.06.13 C1.06.02 C1.06.11 C1.06.01 +C1.06.06 C1.06.12 C1.06.17 C1.06.00 C1.05.13 C1.05.08 +C1.06.07 C1.06.03 C1.06.09 C1.06.14 C1.06.10 +C1.06.08 C1.06.10 C1.06.15 C1.06.04 C1.06.12 C1.06.00 +C1.06.09 C1.06.11 C1.06.16 C1.06.03 C1.06.14 C1.06.07 +C1.06.10 C1.06.14 C1.06.18 C1.06.07 C1.06.15 C1.06.04 C1.06.08 C1.06.12 +C1.06.11 C1.06.13 C1.06.19 C1.06.05 C1.06.16 C1.06.01 C1.06.03 C1.06.09 C1.06.14 +C1.06.12 C1.06.10 C1.06.15 C1.06.20 C1.06.08 C1.06.17 C1.06.00 C1.06.06 C1.05.13 +C1.06.13 C1.07.07 C1.07.17 C1.06.21 C1.07.08 C1.06.19 C1.06.02 C1.06.05 C1.06.11 C1.06.16 +C1.06.14 C1.06.11 C1.06.16 C1.06.22 C1.06.09 C1.06.18 C1.06.07 C1.06.10 C1.06.15 +C1.06.15 C1.06.14 C1.06.18 C1.06.23 C1.06.10 C1.06.20 C1.06.08 C1.06.12 C1.06.17 +C1.06.16 C1.06.13 C1.06.19 C1.06.24 C1.06.11 C1.06.22 C1.06.09 C1.06.14 C1.06.18 +C1.06.17 C1.06.15 C1.06.20 C1.06.25 C1.06.12 C1.05.21 C1.06.06 C1.05.13 C1.05.17 +C1.06.18 C1.06.16 C1.06.22 C1.06.27 C1.06.14 C1.06.23 C1.06.10 C1.06.15 C1.06.20 +C1.06.19 C1.07.17 C1.06.21 C1.06.26 C1.06.13 C1.06.24 C1.06.11 C1.06.16 C1.06.22 +C1.06.20 C1.06.18 C1.06.23 C1.06.28 C1.06.15 C1.06.25 C1.06.12 C1.06.17 C1.05.21 +C1.06.21 C1.07.18 C1.07.23 C1.07.28 C1.07.17 C1.06.26 C1.06.13 C1.06.19 C1.06.24 +C1.06.22 C1.06.19 C1.06.24 C1.06.29 C1.06.16 C1.06.27 C1.06.14 C1.06.18 C1.06.23 +C1.06.23 C1.06.22 C1.06.27 C1.06.30 C1.06.18 C1.06.28 C1.06.15 C1.06.20 C1.06.25 +C1.06.24 C1.06.21 C1.06.26 C1.06.31 C1.06.19 C1.06.29 C1.06.16 C1.06.22 C1.06.27 +C1.06.25 C1.06.23 C1.06.28 C1.06.32 C1.06.20 C1.05.28 C1.06.17 C1.05.21 C1.05.24 +C1.06.26 C1.07.23 C1.07.28 C1.06.33 C1.06.21 C1.06.31 C1.06.19 C1.06.24 C1.06.29 +C1.06.27 C1.06.24 C1.06.29 C1.06.34 C1.06.22 C1.06.30 C1.06.18 C1.06.23 C1.06.28 +C1.06.28 C1.06.27 C1.06.30 C1.06.35 C1.06.23 C1.06.32 C1.06.20 C1.06.25 C1.05.28 +C1.06.29 C1.06.26 C1.06.31 C1.06.36 C1.06.24 C1.06.34 C1.06.22 C1.06.27 C1.06.30 +C1.06.30 C1.06.29 C1.06.34 C1.06.37 C1.06.27 C1.06.35 C1.06.23 C1.06.28 C1.06.32 +C1.06.31 C1.07.28 C1.06.33 C1.06.38 C1.06.26 C1.06.36 C1.06.24 C1.06.29 C1.06.34 +C1.06.32 C1.06.30 C1.06.35 C1.05.37 C1.06.28 C1.05.34 C1.06.25 C1.05.28 C1.05.31 +C1.06.33 C1.07.29 C1.07.33 C1.07.37 C1.07.28 C1.06.38 C1.06.26 C1.06.31 C1.06.36 +C1.06.34 C1.06.31 C1.06.36 C1.06.39 C1.06.29 C1.06.37 C1.06.27 C1.06.30 C1.06.35 +C1.06.35 C1.06.34 C1.06.37 C1.06.40 C1.06.30 C1.05.37 C1.06.28 C1.06.32 C1.05.34 +C1.06.36 C1.06.33 C1.06.38 C1.06.41 C1.06.31 C1.06.39 C1.06.29 C1.06.34 C1.06.37 +C1.06.37 C1.06.36 C1.06.39 C1.06.42 C1.06.34 C1.06.40 C1.06.30 C1.06.35 C1.05.37 +C1.06.38 C1.07.33 C1.07.37 C1.07.41 C1.06.33 C1.06.41 C1.06.31 C1.06.36 C1.06.39 +C1.06.39 C1.06.38 C1.06.41 C1.06.43 C1.06.36 C1.06.42 C1.06.34 C1.06.37 C1.06.40 +C1.06.40 C1.06.39 C1.06.42 C1.06.44 C1.06.37 C1.05.43 C1.06.35 C1.05.37 C1.05.40 +C1.06.41 C1.07.37 C1.07.41 C1.06.45 C1.06.38 C1.06.43 C1.06.36 C1.06.39 C1.06.42 +C1.06.42 C1.06.41 C1.06.43 C1.06.46 C1.06.39 C1.06.44 C1.06.37 C1.06.40 C1.05.43 +C1.06.43 C1.07.41 C1.06.45 C1.06.47 C1.06.41 C1.06.46 C1.06.39 C1.06.42 C1.06.44 +C1.06.44 C1.06.43 C1.06.46 C1.06.48 C1.06.42 C1.05.47 C1.06.40 C1.05.43 C1.05.45 +C1.06.45 C1.07.42 C1.07.45 C1.07.48 C1.07.41 C1.06.47 C1.06.41 C1.06.43 C1.06.46 +C1.06.46 C1.06.45 C1.06.47 C1.06.49 C1.06.43 C1.06.48 C1.06.42 C1.06.44 C1.05.47 +C1.06.47 C1.07.45 C1.07.48 C1.06.50 C1.06.45 C1.06.49 C1.06.43 C1.06.46 C1.06.48 +C1.06.48 C1.06.47 C1.06.49 C1.06.51 C1.06.46 C1.05.51 C1.06.44 C1.05.47 C1.05.49 +C1.06.49 C1.07.48 C1.06.50 C1.06.52 C1.06.47 C1.06.51 C1.06.46 C1.06.48 C1.05.51 +C1.06.50 C1.07.49 C1.07.51 C1.07.53 C1.07.48 C1.06.53 C1.06.52 C1.06.47 C1.06.49 C1.06.51 +C1.06.51 C1.06.50 C1.06.52 C1.06.54 C1.06.56 C1.06.49 C1.05.55 C1.05.53 C1.06.48 C1.05.51 C1.05.52 +C1.06.52 C1.06.50 C1.06.53 C1.06.55 C1.06.54 C1.06.49 C1.06.51 +C1.06.53 C1.07.51 C1.07.53 C1.06.57 C1.06.50 C1.06.55 C1.06.52 C1.06.54 +C1.06.54 C1.06.53 C1.06.55 C1.06.58 C1.06.52 C1.06.56 C1.06.51 C1.05.55 +C1.06.55 C1.07.53 C1.06.57 C1.06.59 C1.06.53 C1.06.58 C1.06.52 C1.06.54 C1.06.56 +C1.06.56 C1.06.55 C1.06.58 C1.06.60 C1.06.54 C1.05.59 C1.06.51 C1.05.55 C1.05.57 +C1.06.57 C1.07.54 C1.07.57 C1.07.60 C1.07.53 C1.06.59 C1.06.53 C1.06.55 C1.06.58 +C1.06.58 C1.06.57 C1.06.59 C1.06.61 C1.06.55 C1.06.60 C1.06.54 C1.06.56 C1.05.59 +C1.06.59 C1.07.57 C1.07.60 C1.06.62 C1.06.57 C1.06.61 C1.06.55 C1.06.58 C1.06.60 +C1.06.60 C1.06.59 C1.06.61 C1.06.58 C1.06.56 C1.05.59 C1.05.61 +C1.06.61 C1.06.62 C1.06.59 C1.06.58 C1.06.60 C1.05.59 C1.05.61 +C1.06.62 C1.07.61 C1.07.60 C1.06.59 C1.06.61 +C1.07.00 C1.07.12 C1.07.07 +C1.07.01 C1.08.02 C1.08.12 C1.07.11 C1.07.10 C1.07.02 +C1.07.02 C1.07.01 C1.07.10 C1.07.09 C1.07.06 C1.07.03 +C1.07.03 C1.07.02 C1.07.15 C1.07.06 C1.07.14 C1.07.05 +C1.07.04 C1.07.14 C1.07.05 C1.07.13 C1.07.12 +C1.07.05 C1.07.03 C1.07.14 C1.07.04 C1.07.13 +C1.07.06 C1.07.02 C1.07.09 C1.07.15 C1.07.03 C1.07.14 +C1.07.07 C1.07.12 C1.07.18 C1.07.00 C1.07.17 C1.07.08 C1.06.13 +C1.07.08 C1.07.07 C1.07.17 C1.06.13 C1.06.02 +C1.07.09 C1.07.16 C1.07.10 C1.07.02 C1.07.15 C1.07.06 +C1.07.10 C1.07.01 C1.07.11 C1.07.16 C1.07.02 C1.07.09 C1.07.15 +C1.07.11 C1.08.17 C1.08.02 C1.08.12 C1.07.01 C1.07.16 C1.07.10 +C1.07.12 C1.07.04 C1.07.13 C1.07.19 C1.07.18 C1.07.00 C1.07.07 C1.07.17 +C1.07.13 C1.07.14 C1.07.20 C1.07.05 C1.07.04 C1.07.19 C1.07.12 C1.07.18 +C1.07.14 C1.07.15 C1.07.21 C1.07.06 C1.07.03 C1.07.20 C1.07.05 C1.07.04 C1.07.13 C1.07.19 +C1.07.15 C1.07.16 C1.07.22 C1.07.10 C1.07.09 C1.07.21 C1.07.06 C1.07.03 C1.07.14 C1.07.20 +C1.07.16 C1.08.17 C1.08.23 C1.08.12 C1.07.11 C1.07.22 C1.07.10 C1.07.09 C1.07.15 C1.07.21 +C1.07.17 C1.07.12 C1.07.18 C1.07.23 C1.07.07 C1.06.21 C1.07.08 C1.06.13 C1.06.19 +C1.07.18 C1.07.13 C1.07.19 C1.07.24 C1.07.12 C1.07.23 C1.07.07 C1.07.17 C1.06.21 +C1.07.19 C1.07.14 C1.07.20 C1.07.25 C1.07.13 C1.07.24 C1.07.12 C1.07.18 C1.07.23 +C1.07.20 C1.07.15 C1.07.21 C1.07.26 C1.07.14 C1.07.25 C1.07.13 C1.07.19 C1.07.24 +C1.07.21 C1.07.16 C1.07.22 C1.07.27 C1.07.15 C1.07.26 C1.07.14 C1.07.20 C1.07.25 +C1.07.22 C1.08.17 C1.08.23 C1.08.28 C1.07.16 C1.07.27 C1.07.15 C1.07.21 C1.07.26 +C1.07.23 C1.07.19 C1.07.24 C1.07.29 C1.07.18 C1.07.28 C1.07.17 C1.06.21 C1.06.26 +C1.07.24 C1.07.20 C1.07.25 C1.07.30 C1.07.19 C1.07.29 C1.07.18 C1.07.23 C1.07.28 +C1.07.25 C1.07.21 C1.07.26 C1.07.31 C1.07.20 C1.07.30 C1.07.19 C1.07.24 C1.07.29 +C1.07.26 C1.07.22 C1.07.27 C1.07.32 C1.07.21 C1.07.31 C1.07.20 C1.07.25 C1.07.30 +C1.07.27 C1.08.23 C1.08.28 C1.08.33 C1.07.22 C1.07.32 C1.07.21 C1.07.26 C1.07.31 +C1.07.28 C1.07.24 C1.07.29 C1.07.33 C1.07.23 C1.06.33 C1.06.21 C1.06.26 C1.06.31 +C1.07.29 C1.07.25 C1.07.30 C1.07.34 C1.07.24 C1.07.33 C1.07.23 C1.07.28 C1.06.33 +C1.07.30 C1.07.26 C1.07.31 C1.07.35 C1.07.25 C1.07.34 C1.07.24 C1.07.29 C1.07.33 +C1.07.31 C1.07.27 C1.07.32 C1.07.36 C1.07.26 C1.07.35 C1.07.25 C1.07.30 C1.07.34 +C1.07.32 C1.08.28 C1.08.33 C1.08.37 C1.07.27 C1.07.36 C1.07.26 C1.07.31 C1.07.35 +C1.07.33 C1.07.30 C1.07.34 C1.07.38 C1.07.29 C1.07.37 C1.07.28 C1.06.33 C1.06.38 +C1.07.34 C1.07.31 C1.07.35 C1.07.39 C1.07.30 C1.07.38 C1.07.29 C1.07.33 C1.07.37 +C1.07.35 C1.07.32 C1.07.36 C1.07.40 C1.07.31 C1.07.39 C1.07.30 C1.07.34 C1.07.38 +C1.07.36 C1.08.33 C1.08.37 C1.08.41 C1.07.32 C1.07.40 C1.07.31 C1.07.35 C1.07.39 +C1.07.37 C1.07.34 C1.07.38 C1.07.42 C1.07.33 C1.07.41 C1.06.33 C1.06.38 C1.06.41 +C1.07.38 C1.07.35 C1.07.39 C1.07.43 C1.07.34 C1.07.42 C1.07.33 C1.07.37 C1.07.41 +C1.07.39 C1.07.36 C1.07.40 C1.07.44 C1.07.35 C1.07.43 C1.07.34 C1.07.38 C1.07.42 +C1.07.40 C1.08.37 C1.08.41 C1.08.45 C1.07.36 C1.07.44 C1.07.35 C1.07.39 C1.07.43 +C1.07.41 C1.07.38 C1.07.42 C1.07.45 C1.07.37 C1.06.45 C1.06.38 C1.06.41 C1.06.43 +C1.07.42 C1.07.39 C1.07.43 C1.07.46 C1.07.38 C1.07.45 C1.07.37 C1.07.41 C1.06.45 +C1.07.43 C1.07.40 C1.07.44 C1.07.47 C1.07.39 C1.07.46 C1.07.38 C1.07.42 C1.07.45 +C1.07.44 C1.08.41 C1.08.45 C1.08.48 C1.07.40 C1.07.47 C1.07.39 C1.07.43 C1.07.46 +C1.07.45 C1.07.43 C1.07.46 C1.07.49 C1.07.42 C1.07.48 C1.07.41 C1.06.45 C1.06.47 +C1.07.46 C1.07.44 C1.07.47 C1.07.50 C1.07.43 C1.07.49 C1.07.42 C1.07.45 C1.07.48 +C1.07.47 C1.08.45 C1.08.48 C1.08.51 C1.07.44 C1.07.50 C1.07.43 C1.07.46 C1.07.49 +C1.07.48 C1.07.46 C1.07.49 C1.07.51 C1.07.45 C1.06.50 C1.06.45 C1.06.47 C1.06.49 +C1.07.49 C1.07.47 C1.07.50 C1.07.52 C1.07.46 C1.07.51 C1.07.45 C1.07.48 C1.06.50 +C1.07.50 C1.08.48 C1.08.51 C1.08.53 C1.07.47 C1.07.52 C1.07.46 C1.07.49 C1.07.51 +C1.07.51 C1.07.50 C1.07.52 C1.07.55 C1.07.49 C1.07.54 C1.07.53 C1.07.48 C1.06.50 C1.06.53 +C1.07.52 C1.08.51 C1.08.53 C1.08.56 C1.07.50 C1.07.56 C1.07.55 C1.07.49 C1.07.51 C1.07.54 +C1.07.53 C1.07.51 C1.07.54 C1.07.57 C1.06.57 C1.06.50 C1.06.53 C1.06.55 +C1.07.54 C1.07.52 C1.07.55 C1.07.58 C1.07.51 C1.07.57 C1.07.53 C1.06.57 +C1.07.55 C1.07.52 C1.07.56 C1.07.59 C1.07.58 C1.07.51 C1.07.54 C1.07.57 +C1.07.56 C1.08.53 C1.08.56 C1.08.59 C1.07.52 C1.07.59 C1.07.55 C1.07.58 +C1.07.57 C1.07.55 C1.07.58 C1.07.61 C1.07.54 C1.07.60 C1.07.53 C1.06.57 C1.06.59 +C1.07.58 C1.07.56 C1.07.59 C1.07.62 C1.07.55 C1.07.61 C1.07.54 C1.07.57 C1.07.60 +C1.07.59 C1.08.56 C1.08.59 C1.08.62 C1.07.56 C1.07.62 C1.07.55 C1.07.58 C1.07.61 +C1.07.60 C1.07.58 C1.07.61 C1.07.57 C1.06.62 C1.06.57 C1.06.59 +C1.07.61 C1.07.59 C1.07.62 C1.07.58 C1.07.57 C1.07.60 C1.06.62 +C1.07.62 C1.08.59 C1.08.62 C1.07.59 C1.07.58 C1.07.61 +C1.08.00 C1.09.05 C1.08.08 C1.08.07 +C1.08.01 C1.08.04 C1.08.06 C1.08.10 C1.08.11 C1.08.02 +C1.08.02 C1.08.01 C1.08.11 C1.08.12 C1.07.01 C1.07.11 +C1.08.03 C1.08.07 C1.08.13 C1.08.14 +C1.08.04 C1.08.05 C1.08.09 C1.08.06 C1.08.01 +C1.08.05 C1.08.14 C1.08.15 C1.08.04 C1.08.09 +C1.08.06 C1.08.15 C1.08.04 C1.08.09 C1.08.16 C1.08.01 C1.08.10 +C1.08.07 C1.09.13 C1.08.00 C1.08.08 C1.08.18 C1.08.03 C1.08.13 C1.08.19 +C1.08.08 C1.09.05 C1.09.13 C1.08.00 C1.08.07 C1.08.18 +C1.08.09 C1.08.05 C1.08.15 C1.08.04 C1.08.06 C1.08.16 +C1.08.10 C1.08.06 C1.08.16 C1.08.01 C1.08.11 C1.08.17 +C1.08.11 C1.08.16 C1.08.01 C1.08.10 C1.08.17 C1.08.02 C1.08.12 +C1.08.12 C1.08.11 C1.08.17 C1.08.02 C1.07.01 C1.07.11 C1.07.16 +C1.08.13 C1.08.07 C1.08.18 C1.08.03 C1.08.19 C1.08.14 C1.08.20 +C1.08.14 C1.08.03 C1.08.13 C1.08.19 C1.08.20 C1.08.05 C1.08.15 C1.08.21 +C1.08.15 C1.08.14 C1.08.20 C1.08.05 C1.08.21 C1.08.09 C1.08.06 C1.08.16 C1.08.22 +C1.08.16 C1.08.15 C1.08.21 C1.08.09 C1.08.06 C1.08.22 C1.08.10 C1.08.11 C1.08.17 C1.08.23 +C1.08.17 C1.08.16 C1.08.22 C1.08.10 C1.08.11 C1.08.23 C1.08.12 C1.07.11 C1.07.16 C1.07.22 +C1.08.18 C1.09.13 C1.09.19 C1.08.08 C1.08.07 C1.09.21 C1.08.13 C1.08.19 C1.08.24 +C1.08.19 C1.08.07 C1.08.18 C1.09.21 C1.08.13 C1.08.24 C1.08.14 C1.08.20 C1.08.25 +C1.08.20 C1.08.13 C1.08.19 C1.08.24 C1.08.14 C1.08.25 C1.08.15 C1.08.21 C1.08.26 +C1.08.21 C1.08.14 C1.08.20 C1.08.25 C1.08.15 C1.08.26 C1.08.16 C1.08.22 C1.08.27 +C1.08.22 C1.08.15 C1.08.21 C1.08.26 C1.08.16 C1.08.27 C1.08.17 C1.08.23 C1.08.28 +C1.08.23 C1.08.16 C1.08.22 C1.08.27 C1.08.17 C1.08.28 C1.07.16 C1.07.22 C1.07.27 +C1.08.24 C1.08.18 C1.09.21 C1.09.26 C1.08.19 C1.08.29 C1.08.20 C1.08.25 C1.08.30 +C1.08.25 C1.08.19 C1.08.24 C1.08.29 C1.08.20 C1.08.30 C1.08.21 C1.08.26 C1.08.31 +C1.08.26 C1.08.20 C1.08.25 C1.08.30 C1.08.21 C1.08.31 C1.08.22 C1.08.27 C1.08.32 +C1.08.27 C1.08.21 C1.08.26 C1.08.31 C1.08.22 C1.08.32 C1.08.23 C1.08.28 C1.08.33 +C1.08.28 C1.08.22 C1.08.27 C1.08.32 C1.08.23 C1.08.33 C1.07.22 C1.07.27 C1.07.32 +C1.08.29 C1.09.21 C1.09.26 C1.09.31 C1.08.24 C1.09.33 C1.08.25 C1.08.30 C1.08.34 +C1.08.30 C1.08.24 C1.08.29 C1.09.33 C1.08.25 C1.08.34 C1.08.26 C1.08.31 C1.08.35 +C1.08.31 C1.08.25 C1.08.30 C1.08.34 C1.08.26 C1.08.35 C1.08.27 C1.08.32 C1.08.36 +C1.08.32 C1.08.26 C1.08.31 C1.08.35 C1.08.27 C1.08.36 C1.08.28 C1.08.33 C1.08.37 +C1.08.33 C1.08.27 C1.08.32 C1.08.36 C1.08.28 C1.08.37 C1.07.27 C1.07.32 C1.07.36 +C1.08.34 C1.08.29 C1.09.33 C1.09.38 C1.08.30 C1.08.38 C1.08.31 C1.08.35 C1.08.39 +C1.08.35 C1.08.30 C1.08.34 C1.08.38 C1.08.31 C1.08.39 C1.08.32 C1.08.36 C1.08.40 +C1.08.36 C1.08.31 C1.08.35 C1.08.39 C1.08.32 C1.08.40 C1.08.33 C1.08.37 C1.08.41 +C1.08.37 C1.08.32 C1.08.36 C1.08.40 C1.08.33 C1.08.41 C1.07.32 C1.07.36 C1.07.40 +C1.08.38 C1.09.33 C1.09.38 C1.09.41 C1.08.34 C1.08.42 C1.08.35 C1.08.39 C1.08.43 +C1.08.39 C1.08.34 C1.08.38 C1.08.42 C1.08.35 C1.08.43 C1.08.36 C1.08.40 C1.08.44 +C1.08.40 C1.08.35 C1.08.39 C1.08.43 C1.08.36 C1.08.44 C1.08.37 C1.08.41 C1.08.45 +C1.08.41 C1.08.36 C1.08.40 C1.08.44 C1.08.37 C1.08.45 C1.07.36 C1.07.40 C1.07.44 +C1.08.42 C1.09.38 C1.09.41 C1.09.43 C1.08.38 C1.09.45 C1.08.39 C1.08.43 C1.08.46 +C1.08.43 C1.08.38 C1.08.42 C1.09.45 C1.08.39 C1.08.46 C1.08.40 C1.08.44 C1.08.47 +C1.08.44 C1.08.39 C1.08.43 C1.08.46 C1.08.40 C1.08.47 C1.08.41 C1.08.45 C1.08.48 +C1.08.45 C1.08.40 C1.08.44 C1.08.47 C1.08.41 C1.08.48 C1.07.40 C1.07.44 C1.07.47 +C1.08.46 C1.08.42 C1.09.45 C1.09.47 C1.08.43 C1.08.49 C1.08.44 C1.08.47 C1.08.50 +C1.08.47 C1.08.43 C1.08.46 C1.08.49 C1.08.44 C1.08.50 C1.08.45 C1.08.48 C1.08.51 +C1.08.48 C1.08.44 C1.08.47 C1.08.50 C1.08.45 C1.08.51 C1.07.44 C1.07.47 C1.07.50 +C1.08.49 C1.09.45 C1.09.47 C1.09.49 C1.08.46 C1.09.50 C1.08.47 C1.08.50 C1.08.52 +C1.08.50 C1.08.46 C1.08.49 C1.09.50 C1.08.47 C1.08.52 C1.08.48 C1.08.51 C1.08.53 +C1.08.51 C1.08.47 C1.08.50 C1.08.52 C1.08.48 C1.08.53 C1.07.47 C1.07.50 C1.07.52 +C1.08.52 C1.08.49 C1.09.50 C1.09.53 C1.08.50 C1.09.54 C1.08.54 C1.08.51 C1.08.53 C1.08.55 +C1.08.53 C1.08.50 C1.08.52 C1.08.54 C1.08.51 C1.08.55 C1.08.56 C1.07.50 C1.07.52 C1.07.56 +C1.08.54 C1.08.52 C1.09.54 C1.09.58 C1.08.57 C1.08.53 C1.08.55 C1.08.58 +C1.08.55 C1.08.52 C1.08.54 C1.08.57 C1.08.53 C1.08.58 C1.08.56 C1.08.59 +C1.08.56 C1.08.53 C1.08.55 C1.08.58 C1.08.59 C1.07.52 C1.07.56 C1.07.59 +C1.08.57 C1.09.54 C1.09.58 C1.09.60 C1.08.54 C1.08.60 C1.08.55 C1.08.58 C1.08.61 +C1.08.58 C1.08.54 C1.08.57 C1.08.60 C1.08.55 C1.08.61 C1.08.56 C1.08.59 C1.08.62 +C1.08.59 C1.08.55 C1.08.58 C1.08.61 C1.08.56 C1.08.62 C1.07.56 C1.07.59 C1.07.62 +C1.08.60 C1.09.58 C1.09.60 C1.09.62 C1.08.57 C1.08.58 C1.08.61 +C1.08.61 C1.08.57 C1.08.60 C1.08.58 C1.08.59 C1.08.62 +C1.08.62 C1.08.58 C1.08.61 C1.08.59 C1.07.59 C1.07.62 +C1.09.00 C1.09.03 C1.09.11 C1.09.02 +C1.09.01 C1.09.06 C1.09.12 C1.09.08 C1.09.04 +C1.09.02 C1.09.00 C1.09.11 C1.09.05 C1.09.13 +C1.09.03 C1.09.07 C1.09.09 C1.09.00 C1.09.11 +C1.09.04 C1.09.01 C1.09.08 C1.09.10 +C1.09.05 C1.09.11 C1.09.02 C1.09.13 C1.08.00 C1.08.08 +C1.09.06 C1.10.06 C1.10.12 C1.09.01 C1.09.12 C1.09.17 +C1.09.07 C1.09.10 C1.09.14 C1.09.03 C1.09.09 +C1.09.08 C1.09.01 C1.09.12 C1.09.04 C1.09.10 C1.09.15 +C1.09.09 C1.09.07 C1.09.14 C1.09.03 C1.09.11 C1.09.16 +C1.09.10 C1.09.12 C1.09.08 C1.09.04 C1.09.15 C1.09.07 C1.09.14 C1.09.18 +C1.09.11 C1.09.14 C1.09.03 C1.09.09 C1.09.00 C1.09.16 C1.09.02 C1.09.05 C1.09.13 C1.09.19 +C1.09.12 C1.09.06 C1.10.12 C1.09.01 C1.09.17 C1.09.08 C1.09.10 C1.09.15 C1.09.20 +C1.09.13 C1.09.11 C1.09.16 C1.09.02 C1.09.05 C1.09.19 C1.08.08 C1.08.07 C1.08.18 C1.09.21 +C1.09.14 C1.09.10 C1.09.15 C1.09.07 C1.09.18 C1.09.09 C1.09.11 C1.09.16 C1.09.22 +C1.09.15 C1.09.12 C1.09.17 C1.09.08 C1.09.10 C1.09.20 C1.09.14 C1.09.18 C1.09.23 +C1.09.16 C1.09.14 C1.09.18 C1.09.09 C1.09.11 C1.09.22 C1.09.13 C1.09.19 C1.09.24 +C1.09.17 C1.09.06 C1.10.12 C1.10.16 C1.09.12 C1.10.20 C1.09.15 C1.09.20 C1.09.25 +C1.09.18 C1.09.10 C1.09.15 C1.09.20 C1.09.14 C1.09.23 C1.09.16 C1.09.22 C1.09.27 +C1.09.19 C1.09.11 C1.09.16 C1.09.22 C1.09.13 C1.09.24 C1.08.18 C1.09.21 C1.09.26 +C1.09.20 C1.09.12 C1.09.17 C1.10.20 C1.09.15 C1.09.25 C1.09.18 C1.09.23 C1.09.28 +C1.09.21 C1.09.13 C1.09.19 C1.09.24 C1.08.18 C1.09.26 C1.08.19 C1.08.24 C1.08.29 +C1.09.22 C1.09.14 C1.09.18 C1.09.23 C1.09.16 C1.09.27 C1.09.19 C1.09.24 C1.09.29 +C1.09.23 C1.09.15 C1.09.20 C1.09.25 C1.09.18 C1.09.28 C1.09.22 C1.09.27 C1.09.30 +C1.09.24 C1.09.16 C1.09.22 C1.09.27 C1.09.19 C1.09.29 C1.09.21 C1.09.26 C1.09.31 +C1.09.25 C1.09.17 C1.10.20 C1.10.23 C1.09.20 C1.10.27 C1.09.23 C1.09.28 C1.09.32 +C1.09.26 C1.09.19 C1.09.24 C1.09.29 C1.09.21 C1.09.31 C1.08.24 C1.08.29 C1.09.33 +C1.09.27 C1.09.18 C1.09.23 C1.09.28 C1.09.22 C1.09.30 C1.09.24 C1.09.29 C1.09.34 +C1.09.28 C1.09.20 C1.09.25 C1.10.27 C1.09.23 C1.09.32 C1.09.27 C1.09.30 C1.09.35 +C1.09.29 C1.09.22 C1.09.27 C1.09.30 C1.09.24 C1.09.34 C1.09.26 C1.09.31 C1.09.36 +C1.09.30 C1.09.23 C1.09.28 C1.09.32 C1.09.27 C1.09.35 C1.09.29 C1.09.34 C1.09.37 +C1.09.31 C1.09.24 C1.09.29 C1.09.34 C1.09.26 C1.09.36 C1.08.29 C1.09.33 C1.09.38 +C1.09.32 C1.09.25 C1.10.27 C1.10.30 C1.09.28 C1.10.33 C1.09.30 C1.09.35 C1.10.35 +C1.09.33 C1.09.26 C1.09.31 C1.09.36 C1.08.29 C1.09.38 C1.08.30 C1.08.34 C1.08.38 +C1.09.34 C1.09.27 C1.09.30 C1.09.35 C1.09.29 C1.09.37 C1.09.31 C1.09.36 C1.09.39 +C1.09.35 C1.09.28 C1.09.32 C1.10.33 C1.09.30 C1.10.35 C1.09.34 C1.09.37 C1.09.40 +C1.09.36 C1.09.29 C1.09.34 C1.09.37 C1.09.31 C1.09.39 C1.09.33 C1.09.38 C1.09.41 +C1.09.37 C1.09.30 C1.09.35 C1.10.35 C1.09.34 C1.09.40 C1.09.36 C1.09.39 C1.09.42 +C1.09.38 C1.09.31 C1.09.36 C1.09.39 C1.09.33 C1.09.41 C1.08.34 C1.08.38 C1.08.42 +C1.09.39 C1.09.34 C1.09.37 C1.09.40 C1.09.36 C1.09.42 C1.09.38 C1.09.41 C1.09.43 +C1.09.40 C1.09.35 C1.10.35 C1.10.39 C1.09.37 C1.10.42 C1.09.39 C1.09.42 C1.09.44 +C1.09.41 C1.09.36 C1.09.39 C1.09.42 C1.09.38 C1.09.43 C1.08.38 C1.08.42 C1.09.45 +C1.09.42 C1.09.37 C1.09.40 C1.10.42 C1.09.39 C1.09.44 C1.09.41 C1.09.43 C1.09.46 +C1.09.43 C1.09.39 C1.09.42 C1.09.44 C1.09.41 C1.09.46 C1.08.42 C1.09.45 C1.09.47 +C1.09.44 C1.09.40 C1.10.42 C1.10.44 C1.09.42 C1.10.46 C1.09.43 C1.09.46 C1.09.48 +C1.09.45 C1.09.41 C1.09.43 C1.09.46 C1.08.42 C1.09.47 C1.08.43 C1.08.46 C1.08.49 +C1.09.46 C1.09.42 C1.09.44 C1.10.46 C1.09.43 C1.09.48 C1.09.45 C1.09.47 C1.09.49 +C1.09.47 C1.09.43 C1.09.46 C1.09.48 C1.09.45 C1.09.49 C1.08.46 C1.08.49 C1.09.50 +C1.09.48 C1.09.44 C1.10.46 C1.10.48 C1.09.46 C1.10.50 C1.09.47 C1.09.49 C1.09.51 +C1.09.49 C1.09.46 C1.09.48 C1.10.50 C1.09.47 C1.09.51 C1.08.49 C1.09.50 C1.09.52 +C1.09.50 C1.09.47 C1.09.49 C1.09.51 C1.08.49 C1.09.52 C1.09.53 C1.08.50 C1.08.52 C1.09.54 +C1.09.51 C1.09.48 C1.10.50 C1.10.51 C1.09.49 C1.10.52 C1.10.54 C1.09.50 C1.09.52 C1.09.55 C1.09.57 +C1.09.52 C1.09.49 C1.09.51 C1.09.50 C1.09.55 C1.09.53 C1.09.56 +C1.09.53 C1.09.50 C1.09.52 C1.09.55 C1.09.56 C1.08.52 C1.09.54 C1.09.58 +C1.09.54 C1.09.50 C1.09.53 C1.09.56 C1.08.52 C1.09.58 C1.08.54 C1.08.57 +C1.09.55 C1.09.51 C1.10.54 C1.09.52 C1.09.57 C1.09.53 C1.09.56 C1.09.59 +C1.09.56 C1.09.52 C1.09.55 C1.09.57 C1.09.53 C1.09.59 C1.09.54 C1.09.58 C1.09.60 +C1.09.57 C1.09.51 C1.10.54 C1.10.56 C1.09.55 C1.10.58 C1.09.56 C1.09.59 C1.09.61 +C1.09.58 C1.09.53 C1.09.56 C1.09.59 C1.09.54 C1.09.60 C1.08.54 C1.08.57 C1.08.60 +C1.09.59 C1.09.55 C1.09.57 C1.10.58 C1.09.56 C1.09.61 C1.09.58 C1.09.60 C1.09.62 +C1.09.60 C1.09.56 C1.09.59 C1.09.61 C1.09.58 C1.09.62 C1.08.57 C1.08.60 +C1.09.61 C1.09.57 C1.10.58 C1.10.60 C1.10.61 C1.09.59 C1.09.60 C1.09.62 +C1.09.62 C1.10.61 C1.09.59 C1.09.61 C1.09.60 C1.08.60 +C1.10.00 C1.10.02 C1.10.09 C1.10.05 +C1.10.01 C1.10.03 C1.10.06 C1.10.11 +C1.10.02 C1.11.04 C1.10.00 C1.10.09 C1.10.13 +C1.10.03 C1.10.07 C1.10.08 C1.10.01 C1.10.06 C1.10.11 +C1.10.04 C1.10.05 C1.10.07 C1.10.10 +C1.10.05 C1.10.00 C1.10.09 C1.10.04 C1.10.10 C1.10.14 +C1.10.06 C1.10.03 C1.10.01 C1.10.11 C1.09.06 C1.10.12 C1.10.16 +C1.10.07 C1.10.04 C1.10.10 C1.10.03 C1.10.08 +C1.10.08 C1.10.07 C1.10.10 C1.10.03 C1.10.11 C1.10.15 +C1.10.09 C1.11.04 C1.10.02 C1.10.00 C1.10.13 C1.10.05 C1.10.10 C1.10.14 C1.10.17 +C1.10.10 C1.10.09 C1.10.05 C1.10.04 C1.10.07 C1.10.14 C1.10.08 C1.10.11 C1.10.15 C1.10.18 +C1.10.11 C1.10.10 C1.10.03 C1.10.08 C1.10.01 C1.10.06 C1.10.15 C1.10.12 C1.10.16 C1.10.19 +C1.10.12 C1.10.06 C1.10.11 C1.09.06 C1.10.16 C1.09.12 C1.09.17 C1.10.20 +C1.10.13 C1.11.04 C1.11.10 C1.10.02 C1.10.09 C1.11.15 C1.10.14 C1.10.17 C1.11.20 +C1.10.14 C1.10.09 C1.10.13 C1.10.05 C1.10.10 C1.10.17 C1.10.15 C1.10.18 C1.10.21 +C1.10.15 C1.10.10 C1.10.14 C1.10.08 C1.10.11 C1.10.18 C1.10.16 C1.10.19 C1.10.22 +C1.10.16 C1.10.06 C1.10.11 C1.10.15 C1.10.12 C1.10.19 C1.09.17 C1.10.20 C1.10.23 +C1.10.17 C1.10.09 C1.10.13 C1.11.15 C1.10.14 C1.11.20 C1.10.18 C1.10.21 C1.10.24 +C1.10.18 C1.10.10 C1.10.14 C1.10.17 C1.10.15 C1.10.21 C1.10.19 C1.10.22 C1.10.25 +C1.10.19 C1.10.11 C1.10.15 C1.10.18 C1.10.16 C1.10.22 C1.10.20 C1.10.23 C1.10.26 +C1.10.20 C1.10.12 C1.10.16 C1.10.19 C1.09.17 C1.10.23 C1.09.20 C1.09.25 C1.10.27 +C1.10.21 C1.10.14 C1.10.17 C1.11.20 C1.10.18 C1.10.24 C1.10.22 C1.10.25 C1.10.28 +C1.10.22 C1.10.15 C1.10.18 C1.10.21 C1.10.19 C1.10.25 C1.10.23 C1.10.26 C1.10.29 +C1.10.23 C1.10.16 C1.10.19 C1.10.22 C1.10.20 C1.10.26 C1.09.25 C1.10.27 C1.10.30 +C1.10.24 C1.10.17 C1.11.20 C1.11.21 C1.10.21 C1.11.25 C1.10.25 C1.10.28 C1.11.29 +C1.10.25 C1.10.18 C1.10.21 C1.10.24 C1.10.22 C1.10.28 C1.10.26 C1.10.29 C1.10.31 +C1.10.26 C1.10.19 C1.10.22 C1.10.25 C1.10.23 C1.10.29 C1.10.27 C1.10.30 C1.10.32 +C1.10.27 C1.10.20 C1.10.23 C1.10.26 C1.09.25 C1.10.30 C1.09.28 C1.09.32 C1.10.33 +C1.10.28 C1.10.21 C1.10.24 C1.11.25 C1.10.25 C1.11.29 C1.10.29 C1.10.31 C1.11.33 +C1.10.29 C1.10.22 C1.10.25 C1.10.28 C1.10.26 C1.10.31 C1.10.30 C1.10.32 C1.10.34 +C1.10.30 C1.10.23 C1.10.26 C1.10.29 C1.10.27 C1.10.32 C1.09.32 C1.10.33 C1.10.36 +C1.10.31 C1.10.25 C1.10.28 C1.11.29 C1.10.29 C1.11.33 C1.10.32 C1.10.34 C1.10.37 +C1.10.32 C1.10.26 C1.10.29 C1.10.31 C1.10.30 C1.10.34 C1.10.33 C1.10.36 C1.10.38 +C1.10.33 C1.10.27 C1.10.30 C1.10.32 C1.09.32 C1.10.36 C1.09.35 C1.10.35 C1.10.39 +C1.10.34 C1.10.29 C1.10.31 C1.11.33 C1.10.32 C1.10.37 C1.10.36 C1.10.38 C1.10.40 +C1.10.35 C1.09.32 C1.10.33 C1.10.36 C1.09.35 C1.10.39 C1.09.37 C1.09.40 C1.10.42 +C1.10.36 C1.10.30 C1.10.32 C1.10.34 C1.10.33 C1.10.38 C1.10.35 C1.10.39 C1.10.41 +C1.10.37 C1.10.31 C1.11.33 C1.11.34 C1.10.34 C1.11.37 C1.10.38 C1.10.40 C1.11.40 +C1.10.38 C1.10.32 C1.10.34 C1.10.37 C1.10.36 C1.10.40 C1.10.39 C1.10.41 C1.10.43 +C1.10.39 C1.10.33 C1.10.36 C1.10.38 C1.10.35 C1.10.41 C1.09.40 C1.10.42 C1.10.44 +C1.10.40 C1.10.34 C1.10.37 C1.11.37 C1.10.38 C1.11.40 C1.10.41 C1.10.43 C1.11.43 +C1.10.41 C1.10.36 C1.10.38 C1.10.40 C1.10.39 C1.10.43 C1.10.42 C1.10.44 C1.10.45 +C1.10.42 C1.10.35 C1.10.39 C1.10.41 C1.09.40 C1.10.44 C1.09.42 C1.09.44 C1.10.46 +C1.10.43 C1.10.38 C1.10.40 C1.11.40 C1.10.41 C1.11.43 C1.10.44 C1.10.45 C1.10.47 +C1.10.44 C1.10.39 C1.10.41 C1.10.43 C1.10.42 C1.10.45 C1.09.44 C1.10.46 C1.10.48 +C1.10.45 C1.10.41 C1.10.43 C1.11.43 C1.10.44 C1.10.47 C1.10.46 C1.10.48 C1.10.49 +C1.10.46 C1.10.42 C1.10.44 C1.10.45 C1.09.44 C1.10.48 C1.09.46 C1.09.48 C1.10.50 +C1.10.47 C1.10.43 C1.11.43 C1.11.44 C1.10.45 C1.11.46 C1.10.48 C1.10.49 C1.11.48 +C1.10.48 C1.10.44 C1.10.45 C1.10.47 C1.10.46 C1.10.49 C1.09.48 C1.10.50 C1.10.51 +C1.10.49 C1.10.45 C1.10.47 C1.11.46 C1.10.48 C1.11.48 C1.10.50 C1.10.51 C1.11.50 +C1.10.50 C1.10.46 C1.10.48 C1.10.49 C1.09.48 C1.10.51 C1.09.49 C1.09.51 C1.10.52 +C1.10.51 C1.10.48 C1.10.49 C1.11.48 C1.10.50 C1.11.50 C1.11.54 C1.09.51 C1.10.52 C1.10.53 C1.10.55 +C1.10.52 C1.10.50 C1.10.51 C1.09.51 C1.10.53 C1.10.54 C1.10.56 +C1.10.53 C1.10.51 C1.11.54 C1.10.52 C1.10.55 C1.10.54 C1.10.56 C1.10.57 +C1.10.54 C1.09.51 C1.10.52 C1.10.53 C1.10.56 C1.09.55 C1.09.57 C1.10.58 +C1.10.55 C1.10.51 C1.11.54 C1.11.55 C1.10.53 C1.11.58 C1.10.56 C1.10.57 C1.10.59 +C1.10.56 C1.10.52 C1.10.53 C1.10.55 C1.10.54 C1.10.57 C1.09.57 C1.10.58 C1.10.60 +C1.10.57 C1.10.53 C1.10.55 C1.11.58 C1.10.56 C1.10.59 C1.10.58 C1.10.60 +C1.10.58 C1.10.54 C1.10.56 C1.10.57 C1.09.57 C1.10.60 C1.10.61 C1.09.59 C1.09.61 +C1.10.59 C1.10.55 C1.11.58 C1.11.59 C1.10.57 C1.11.61 C1.10.60 C1.10.62 +C1.10.60 C1.10.56 C1.10.57 C1.10.59 C1.10.58 C1.10.62 C1.10.61 C1.09.61 +C1.10.61 C1.10.58 C1.10.60 C1.10.62 C1.09.61 C1.09.62 +C1.10.62 C1.10.59 C1.11.61 C1.11.62 C1.10.60 C1.10.61 +C1.11.00 C1.12.00 C1.11.06 C1.11.08 C1.12.07 +C1.11.01 C1.11.02 C1.11.04 C1.11.10 +C1.11.02 C1.11.03 C1.11.01 C1.11.10 C1.11.11 +C1.11.03 C1.11.02 C1.11.05 C1.11.10 C1.11.11 +C1.11.04 C1.11.01 C1.11.10 C1.10.02 C1.10.09 C1.10.13 C1.11.15 +C1.11.05 C1.11.03 C1.11.07 C1.11.11 C1.11.12 +C1.11.06 C1.11.00 C1.11.08 C1.11.09 C1.11.12 C1.11.13 C1.11.14 +C1.11.07 C1.11.09 C1.11.05 C1.11.11 C1.11.12 +C1.11.08 C1.11.00 C1.12.00 C1.11.06 C1.12.07 C1.11.13 C1.11.14 C1.12.14 +C1.11.09 C1.11.06 C1.11.07 C1.11.12 C1.11.13 +C1.11.10 C1.11.02 C1.11.03 C1.11.01 C1.11.04 C1.11.11 C1.10.13 C1.11.15 C1.11.16 +C1.11.11 C1.11.02 C1.11.03 C1.11.05 C1.11.07 C1.11.10 C1.11.12 C1.11.15 C1.11.16 C1.11.17 +C1.11.12 C1.11.06 C1.11.09 C1.11.05 C1.11.07 C1.11.11 C1.11.13 C1.11.16 C1.11.17 C1.11.18 +C1.11.13 C1.11.06 C1.11.08 C1.11.09 C1.11.12 C1.11.14 C1.11.17 C1.11.18 C1.11.19 +C1.11.14 C1.11.06 C1.11.08 C1.12.07 C1.11.13 C1.12.14 C1.11.18 C1.11.19 C1.12.19 +C1.11.15 C1.11.04 C1.11.10 C1.11.11 C1.10.13 C1.11.16 C1.10.17 C1.11.20 C1.11.21 +C1.11.16 C1.11.10 C1.11.11 C1.11.12 C1.11.15 C1.11.17 C1.11.20 C1.11.21 C1.11.22 +C1.11.17 C1.11.11 C1.11.12 C1.11.13 C1.11.16 C1.11.18 C1.11.21 C1.11.22 C1.11.23 +C1.11.18 C1.11.12 C1.11.13 C1.11.14 C1.11.17 C1.11.19 C1.11.22 C1.11.23 C1.11.24 +C1.11.19 C1.11.13 C1.11.14 C1.12.14 C1.11.18 C1.12.19 C1.11.23 C1.11.24 C1.12.24 +C1.11.20 C1.10.13 C1.11.15 C1.11.16 C1.10.17 C1.11.21 C1.10.21 C1.10.24 C1.11.25 +C1.11.21 C1.11.15 C1.11.16 C1.11.17 C1.11.20 C1.11.22 C1.10.24 C1.11.25 C1.11.26 +C1.11.22 C1.11.16 C1.11.17 C1.11.18 C1.11.21 C1.11.23 C1.11.25 C1.11.26 C1.11.27 +C1.11.23 C1.11.17 C1.11.18 C1.11.19 C1.11.22 C1.11.24 C1.11.26 C1.11.27 C1.11.28 +C1.11.24 C1.11.18 C1.11.19 C1.12.19 C1.11.23 C1.12.24 C1.11.27 C1.11.28 C1.12.28 +C1.11.25 C1.11.20 C1.11.21 C1.11.22 C1.10.24 C1.11.26 C1.10.28 C1.11.29 C1.11.30 +C1.11.26 C1.11.21 C1.11.22 C1.11.23 C1.11.25 C1.11.27 C1.11.29 C1.11.30 C1.11.31 +C1.11.27 C1.11.22 C1.11.23 C1.11.24 C1.11.26 C1.11.28 C1.11.30 C1.11.31 C1.11.32 +C1.11.28 C1.11.23 C1.11.24 C1.12.24 C1.11.27 C1.12.28 C1.11.31 C1.11.32 C1.12.32 +C1.11.29 C1.10.24 C1.11.25 C1.11.26 C1.10.28 C1.11.30 C1.10.31 C1.11.33 C1.11.34 +C1.11.30 C1.11.25 C1.11.26 C1.11.27 C1.11.29 C1.11.31 C1.11.33 C1.11.34 C1.11.35 +C1.11.31 C1.11.26 C1.11.27 C1.11.28 C1.11.30 C1.11.32 C1.11.34 C1.11.35 C1.11.36 +C1.11.32 C1.11.27 C1.11.28 C1.12.28 C1.11.31 C1.12.32 C1.11.35 C1.11.36 C1.12.36 +C1.11.33 C1.10.28 C1.11.29 C1.11.30 C1.10.31 C1.11.34 C1.10.34 C1.10.37 C1.11.37 +C1.11.34 C1.11.29 C1.11.30 C1.11.31 C1.11.33 C1.11.35 C1.10.37 C1.11.37 C1.11.38 +C1.11.35 C1.11.30 C1.11.31 C1.11.32 C1.11.34 C1.11.36 C1.11.37 C1.11.38 C1.11.39 +C1.11.36 C1.11.31 C1.11.32 C1.12.32 C1.11.35 C1.12.36 C1.11.38 C1.11.39 C1.12.39 +C1.11.37 C1.11.33 C1.11.34 C1.11.35 C1.10.37 C1.11.38 C1.10.40 C1.11.40 C1.11.41 +C1.11.38 C1.11.34 C1.11.35 C1.11.36 C1.11.37 C1.11.39 C1.11.40 C1.11.41 C1.11.42 +C1.11.39 C1.11.35 C1.11.36 C1.12.36 C1.11.38 C1.12.39 C1.11.41 C1.11.42 C1.12.42 +C1.11.40 C1.10.37 C1.11.37 C1.11.38 C1.10.40 C1.11.41 C1.10.43 C1.11.43 C1.11.44 +C1.11.41 C1.11.37 C1.11.38 C1.11.39 C1.11.40 C1.11.42 C1.11.43 C1.11.44 C1.11.45 +C1.11.42 C1.11.38 C1.11.39 C1.12.39 C1.11.41 C1.12.42 C1.11.44 C1.11.45 C1.12.45 +C1.11.43 C1.10.40 C1.11.40 C1.11.41 C1.10.43 C1.11.44 C1.10.45 C1.10.47 C1.11.46 +C1.11.44 C1.11.40 C1.11.41 C1.11.42 C1.11.43 C1.11.45 C1.10.47 C1.11.46 C1.11.47 +C1.11.45 C1.11.41 C1.11.42 C1.12.42 C1.11.44 C1.12.45 C1.11.46 C1.11.47 C1.12.47 +C1.11.46 C1.11.43 C1.11.44 C1.11.45 C1.10.47 C1.11.47 C1.10.49 C1.11.48 C1.11.49 +C1.11.47 C1.11.44 C1.11.45 C1.12.45 C1.11.46 C1.12.47 C1.11.48 C1.11.49 C1.12.49 +C1.11.48 C1.10.47 C1.11.46 C1.11.47 C1.10.49 C1.11.49 C1.10.51 C1.11.50 C1.11.51 C1.11.52 +C1.11.49 C1.11.46 C1.11.47 C1.12.47 C1.11.48 C1.12.49 C1.11.51 C1.11.52 C1.11.53 C1.12.53 +C1.11.50 C1.10.49 C1.11.48 C1.10.51 C1.11.51 C1.11.54 C1.11.55 +C1.11.51 C1.11.48 C1.11.49 C1.11.50 C1.11.52 C1.11.54 C1.11.55 C1.11.56 +C1.11.52 C1.11.48 C1.11.49 C1.11.51 C1.11.53 C1.11.55 C1.11.56 C1.11.57 +C1.11.53 C1.11.49 C1.12.49 C1.11.52 C1.12.53 C1.11.56 C1.11.57 C1.12.57 +C1.11.54 C1.10.51 C1.11.50 C1.11.51 C1.11.55 C1.10.53 C1.10.55 C1.11.58 +C1.11.55 C1.11.50 C1.11.51 C1.11.52 C1.11.54 C1.11.56 C1.10.55 C1.11.58 C1.11.59 +C1.11.56 C1.11.51 C1.11.52 C1.11.53 C1.11.55 C1.11.57 C1.11.58 C1.11.59 C1.11.60 +C1.11.57 C1.11.52 C1.11.53 C1.12.53 C1.11.56 C1.12.57 C1.11.59 C1.11.60 C1.12.60 +C1.11.58 C1.11.54 C1.11.55 C1.11.56 C1.10.55 C1.11.59 C1.10.57 C1.10.59 C1.11.61 +C1.11.59 C1.11.55 C1.11.56 C1.11.57 C1.11.58 C1.11.60 C1.10.59 C1.11.61 C1.11.62 +C1.11.60 C1.11.56 C1.11.57 C1.12.57 C1.11.59 C1.12.60 C1.11.61 C1.11.62 C1.12.62 +C1.11.61 C1.11.58 C1.11.59 C1.11.60 C1.10.59 C1.11.62 C1.10.62 +C1.11.62 C1.11.59 C1.11.60 C1.12.60 C1.11.61 C1.12.62 C1.10.62 +C1.12.00 C1.11.00 C1.11.08 C1.12.07 C1.12.05 +C1.12.01 C1.12.03 C1.12.10 C1.12.02 +C1.12.02 C1.12.01 C1.12.10 C1.12.08 C1.13.05 C1.13.04 +C1.12.03 C1.12.04 C1.12.01 C1.12.11 C1.12.10 +C1.12.04 C1.12.06 C1.12.03 C1.12.12 C1.12.11 +C1.12.05 C1.12.00 C1.12.07 C1.12.09 C1.12.14 C1.12.13 C1.12.12 +C1.12.06 C1.12.09 C1.12.04 C1.12.12 C1.12.11 +C1.12.07 C1.11.00 C1.12.00 C1.11.08 C1.12.05 C1.11.14 C1.12.14 C1.12.13 +C1.12.08 C1.12.10 C1.12.02 C1.13.05 C1.12.15 C1.13.14 +C1.12.09 C1.12.05 C1.12.06 C1.12.13 C1.12.12 +C1.12.10 C1.12.03 C1.12.01 C1.12.11 C1.12.02 C1.12.08 C1.12.16 C1.12.15 C1.13.14 +C1.12.11 C1.12.06 C1.12.04 C1.12.03 C1.12.12 C1.12.10 C1.12.17 C1.12.16 C1.12.15 +C1.12.12 C1.12.05 C1.12.09 C1.12.06 C1.12.04 C1.12.13 C1.12.11 C1.12.18 C1.12.17 C1.12.16 +C1.12.13 C1.12.07 C1.12.05 C1.12.09 C1.12.14 C1.12.12 C1.12.19 C1.12.18 C1.12.17 +C1.12.14 C1.11.08 C1.12.07 C1.12.05 C1.11.14 C1.12.13 C1.11.19 C1.12.19 C1.12.18 +C1.12.15 C1.12.11 C1.12.10 C1.12.08 C1.12.16 C1.13.14 C1.12.21 C1.12.20 C1.13.18 +C1.12.16 C1.12.12 C1.12.11 C1.12.10 C1.12.17 C1.12.15 C1.12.22 C1.12.21 C1.12.20 +C1.12.17 C1.12.13 C1.12.12 C1.12.11 C1.12.18 C1.12.16 C1.12.23 C1.12.22 C1.12.21 +C1.12.18 C1.12.14 C1.12.13 C1.12.12 C1.12.19 C1.12.17 C1.12.24 C1.12.23 C1.12.22 +C1.12.19 C1.11.14 C1.12.14 C1.12.13 C1.11.19 C1.12.18 C1.11.24 C1.12.24 C1.12.23 +C1.12.20 C1.12.16 C1.12.15 C1.13.14 C1.12.21 C1.13.18 C1.12.25 C1.13.25 C1.13.22 +C1.12.21 C1.12.17 C1.12.16 C1.12.15 C1.12.22 C1.12.20 C1.12.26 C1.12.25 C1.13.25 +C1.12.22 C1.12.18 C1.12.17 C1.12.16 C1.12.23 C1.12.21 C1.12.27 C1.12.26 C1.12.25 +C1.12.23 C1.12.19 C1.12.18 C1.12.17 C1.12.24 C1.12.22 C1.12.28 C1.12.27 C1.12.26 +C1.12.24 C1.11.19 C1.12.19 C1.12.18 C1.11.24 C1.12.23 C1.11.28 C1.12.28 C1.12.27 +C1.12.25 C1.12.22 C1.12.21 C1.12.20 C1.12.26 C1.13.25 C1.12.30 C1.12.29 C1.13.29 +C1.12.26 C1.12.23 C1.12.22 C1.12.21 C1.12.27 C1.12.25 C1.12.31 C1.12.30 C1.12.29 +C1.12.27 C1.12.24 C1.12.23 C1.12.22 C1.12.28 C1.12.26 C1.12.32 C1.12.31 C1.12.30 +C1.12.28 C1.11.24 C1.12.24 C1.12.23 C1.11.28 C1.12.27 C1.11.32 C1.12.32 C1.12.31 +C1.12.29 C1.12.26 C1.12.25 C1.13.25 C1.12.30 C1.13.29 C1.12.34 C1.12.33 C1.13.32 +C1.12.30 C1.12.27 C1.12.26 C1.12.25 C1.12.31 C1.12.29 C1.12.35 C1.12.34 C1.12.33 +C1.12.31 C1.12.28 C1.12.27 C1.12.26 C1.12.32 C1.12.30 C1.12.36 C1.12.35 C1.12.34 +C1.12.32 C1.11.28 C1.12.28 C1.12.27 C1.11.32 C1.12.31 C1.11.36 C1.12.36 C1.12.35 +C1.12.33 C1.12.30 C1.12.29 C1.13.29 C1.12.34 C1.13.32 C1.12.37 C1.13.38 C1.13.35 +C1.12.34 C1.12.31 C1.12.30 C1.12.29 C1.12.35 C1.12.33 C1.12.38 C1.12.37 C1.13.38 +C1.12.35 C1.12.32 C1.12.31 C1.12.30 C1.12.36 C1.12.34 C1.12.39 C1.12.38 C1.12.37 +C1.12.36 C1.11.32 C1.12.32 C1.12.31 C1.11.36 C1.12.35 C1.11.39 C1.12.39 C1.12.38 +C1.12.37 C1.12.35 C1.12.34 C1.12.33 C1.12.38 C1.13.38 C1.12.41 C1.12.40 C1.13.41 +C1.12.38 C1.12.36 C1.12.35 C1.12.34 C1.12.39 C1.12.37 C1.12.42 C1.12.41 C1.12.40 +C1.12.39 C1.11.36 C1.12.36 C1.12.35 C1.11.39 C1.12.38 C1.11.42 C1.12.42 C1.12.41 +C1.12.40 C1.12.38 C1.12.37 C1.13.38 C1.12.41 C1.13.41 C1.12.44 C1.12.43 C1.13.44 +C1.12.41 C1.12.39 C1.12.38 C1.12.37 C1.12.42 C1.12.40 C1.12.45 C1.12.44 C1.12.43 +C1.12.42 C1.11.39 C1.12.39 C1.12.38 C1.11.42 C1.12.41 C1.11.45 C1.12.45 C1.12.44 +C1.12.43 C1.12.41 C1.12.40 C1.13.41 C1.12.44 C1.13.44 C1.12.46 C1.13.48 C1.13.46 +C1.12.44 C1.12.42 C1.12.41 C1.12.40 C1.12.45 C1.12.43 C1.12.47 C1.12.46 C1.13.48 +C1.12.45 C1.11.42 C1.12.42 C1.12.41 C1.11.45 C1.12.44 C1.11.47 C1.12.47 C1.12.46 +C1.12.46 C1.12.45 C1.12.44 C1.12.43 C1.12.47 C1.13.48 C1.12.49 C1.12.48 C1.13.50 +C1.12.47 C1.11.45 C1.12.45 C1.12.44 C1.11.47 C1.12.46 C1.11.49 C1.12.49 C1.12.48 +C1.12.48 C1.12.47 C1.12.46 C1.13.48 C1.12.49 C1.13.50 C1.12.52 C1.12.51 C1.12.50 C1.13.52 +C1.12.49 C1.11.47 C1.12.47 C1.12.46 C1.11.49 C1.12.48 C1.11.53 C1.12.53 C1.12.52 C1.12.51 +C1.12.50 C1.12.48 C1.13.50 C1.12.51 C1.13.52 C1.12.55 C1.12.54 +C1.12.51 C1.12.49 C1.12.48 C1.12.52 C1.12.50 C1.12.56 C1.12.55 C1.12.54 +C1.12.52 C1.12.49 C1.12.48 C1.12.53 C1.12.51 C1.12.57 C1.12.56 C1.12.55 +C1.12.53 C1.11.49 C1.12.49 C1.11.53 C1.12.52 C1.11.57 C1.12.57 C1.12.56 +C1.12.54 C1.12.51 C1.12.50 C1.13.52 C1.12.55 C1.12.58 C1.13.56 C1.13.54 +C1.12.55 C1.12.52 C1.12.51 C1.12.50 C1.12.56 C1.12.54 C1.12.59 C1.12.58 C1.13.56 +C1.12.56 C1.12.53 C1.12.52 C1.12.51 C1.12.57 C1.12.55 C1.12.60 C1.12.59 C1.12.58 +C1.12.57 C1.11.53 C1.12.53 C1.12.52 C1.11.57 C1.12.56 C1.11.60 C1.12.60 C1.12.59 +C1.12.58 C1.12.56 C1.12.55 C1.12.54 C1.12.59 C1.13.56 C1.12.61 C1.13.60 C1.13.58 +C1.12.59 C1.12.57 C1.12.56 C1.12.55 C1.12.60 C1.12.58 C1.12.62 C1.12.61 C1.13.60 +C1.12.60 C1.11.57 C1.12.57 C1.12.56 C1.11.60 C1.12.59 C1.11.62 C1.12.62 C1.12.61 +C1.12.61 C1.12.60 C1.12.59 C1.12.58 C1.12.62 C1.13.60 C1.13.62 +C1.12.62 C1.11.60 C1.12.60 C1.12.59 C1.11.62 C1.12.61 +C1.13.00 C1.13.03 C1.13.06 +C1.13.01 C1.13.04 C1.13.02 C1.13.14 C1.13.10 +C1.13.02 C1.13.01 C1.13.10 C1.13.07 +C1.13.03 C1.13.09 C1.13.00 C1.13.13 C1.13.06 +C1.13.04 C1.12.02 C1.13.05 C1.13.01 C1.13.14 C1.13.10 +C1.13.05 C1.12.02 C1.12.08 C1.13.04 C1.13.14 +C1.13.06 C1.13.03 C1.13.00 C1.13.13 C1.14.06 C1.13.17 C1.13.12 +C1.13.07 C1.13.02 C1.13.10 C1.13.15 C1.13.11 +C1.13.08 C1.13.11 C1.13.09 +C1.13.09 C1.13.11 C1.13.08 C1.13.03 C1.13.16 C1.13.13 +C1.13.10 C1.13.04 C1.13.01 C1.13.02 C1.13.14 C1.13.07 C1.13.18 C1.13.15 C1.13.11 +C1.13.11 C1.13.10 C1.13.07 C1.13.15 C1.13.08 C1.13.09 C1.13.19 C1.13.16 C1.13.13 +C1.13.12 C1.13.13 C1.13.06 C1.14.06 C1.13.17 C1.13.21 C1.14.17 C1.14.12 +C1.13.13 C1.13.11 C1.13.09 C1.13.03 C1.13.16 C1.13.06 C1.13.20 C1.13.17 C1.13.12 +C1.13.14 C1.12.10 C1.12.08 C1.13.05 C1.13.04 C1.13.01 C1.12.15 C1.13.10 C1.12.20 C1.13.18 C1.13.15 +C1.13.15 C1.13.14 C1.13.10 C1.13.07 C1.13.18 C1.13.11 C1.13.22 C1.13.19 C1.13.16 +C1.13.16 C1.13.15 C1.13.11 C1.13.09 C1.13.19 C1.13.13 C1.13.23 C1.13.20 C1.13.17 +C1.13.17 C1.13.16 C1.13.13 C1.13.06 C1.13.20 C1.13.12 C1.13.24 C1.13.21 C1.14.17 +C1.13.18 C1.12.15 C1.13.14 C1.13.10 C1.12.20 C1.13.15 C1.13.25 C1.13.22 C1.13.19 +C1.13.19 C1.13.18 C1.13.15 C1.13.11 C1.13.22 C1.13.16 C1.13.26 C1.13.23 C1.13.20 +C1.13.20 C1.13.19 C1.13.16 C1.13.13 C1.13.23 C1.13.17 C1.13.27 C1.13.24 C1.13.21 +C1.13.21 C1.13.20 C1.13.17 C1.13.12 C1.13.24 C1.14.17 C1.13.28 C1.14.25 C1.14.20 +C1.13.22 C1.12.20 C1.13.18 C1.13.15 C1.13.25 C1.13.19 C1.13.29 C1.13.26 C1.13.23 +C1.13.23 C1.13.22 C1.13.19 C1.13.16 C1.13.26 C1.13.20 C1.13.30 C1.13.27 C1.13.24 +C1.13.24 C1.13.23 C1.13.20 C1.13.17 C1.13.27 C1.13.21 C1.13.31 C1.13.28 C1.14.25 +C1.13.25 C1.12.21 C1.12.20 C1.13.18 C1.12.25 C1.13.22 C1.12.29 C1.13.29 C1.13.26 +C1.13.26 C1.13.25 C1.13.22 C1.13.19 C1.13.29 C1.13.23 C1.13.32 C1.13.30 C1.13.27 +C1.13.27 C1.13.26 C1.13.23 C1.13.20 C1.13.30 C1.13.24 C1.13.33 C1.13.31 C1.13.28 +C1.13.28 C1.13.27 C1.13.24 C1.13.21 C1.13.31 C1.14.25 C1.13.34 C1.14.32 C1.14.28 +C1.13.29 C1.12.25 C1.13.25 C1.13.22 C1.12.29 C1.13.26 C1.12.33 C1.13.32 C1.13.30 +C1.13.30 C1.13.29 C1.13.26 C1.13.23 C1.13.32 C1.13.27 C1.13.35 C1.13.33 C1.13.31 +C1.13.31 C1.13.30 C1.13.27 C1.13.24 C1.13.33 C1.13.28 C1.13.37 C1.13.34 C1.14.32 +C1.13.32 C1.12.29 C1.13.29 C1.13.26 C1.12.33 C1.13.30 C1.13.38 C1.13.35 C1.13.33 +C1.13.33 C1.13.32 C1.13.30 C1.13.27 C1.13.35 C1.13.31 C1.13.39 C1.13.37 C1.13.34 +C1.13.34 C1.13.33 C1.13.31 C1.13.28 C1.13.37 C1.14.32 C1.13.40 C1.13.36 C1.14.35 +C1.13.35 C1.12.33 C1.13.32 C1.13.30 C1.13.38 C1.13.33 C1.13.41 C1.13.39 C1.13.37 +C1.13.36 C1.13.37 C1.13.34 C1.14.32 C1.13.40 C1.14.35 C1.13.43 C1.14.40 C1.14.37 +C1.13.37 C1.13.35 C1.13.33 C1.13.31 C1.13.39 C1.13.34 C1.13.42 C1.13.40 C1.13.36 +C1.13.38 C1.12.34 C1.12.33 C1.13.32 C1.12.37 C1.13.35 C1.12.40 C1.13.41 C1.13.39 +C1.13.39 C1.13.38 C1.13.35 C1.13.33 C1.13.41 C1.13.37 C1.13.44 C1.13.42 C1.13.40 +C1.13.40 C1.13.39 C1.13.37 C1.13.34 C1.13.42 C1.13.36 C1.13.45 C1.13.43 C1.14.40 +C1.13.41 C1.12.37 C1.13.38 C1.13.35 C1.12.40 C1.13.39 C1.12.43 C1.13.44 C1.13.42 +C1.13.42 C1.13.41 C1.13.39 C1.13.37 C1.13.44 C1.13.40 C1.13.46 C1.13.45 C1.13.43 +C1.13.43 C1.13.42 C1.13.40 C1.13.36 C1.13.45 C1.14.40 C1.13.47 C1.14.44 C1.14.42 +C1.13.44 C1.12.40 C1.13.41 C1.13.39 C1.12.43 C1.13.42 C1.13.48 C1.13.46 C1.13.45 +C1.13.45 C1.13.44 C1.13.42 C1.13.40 C1.13.46 C1.13.43 C1.13.49 C1.13.47 C1.14.44 +C1.13.46 C1.12.43 C1.13.44 C1.13.42 C1.13.48 C1.13.45 C1.13.50 C1.13.49 C1.13.47 +C1.13.47 C1.13.46 C1.13.45 C1.13.43 C1.13.49 C1.14.44 C1.13.51 C1.14.48 C1.14.46 +C1.13.48 C1.12.44 C1.12.43 C1.13.44 C1.12.46 C1.13.46 C1.12.48 C1.13.50 C1.13.49 +C1.13.49 C1.13.48 C1.13.46 C1.13.45 C1.13.50 C1.13.47 C1.13.52 C1.13.51 C1.14.48 +C1.13.50 C1.12.46 C1.13.48 C1.13.46 C1.12.48 C1.13.49 C1.12.50 C1.13.52 C1.13.51 +C1.13.51 C1.13.50 C1.13.49 C1.13.47 C1.13.52 C1.14.48 C1.13.53 C1.14.51 C1.14.49 +C1.13.52 C1.12.48 C1.13.50 C1.13.49 C1.12.50 C1.13.51 C1.12.54 C1.13.56 C1.13.54 C1.13.53 C1.14.51 +C1.13.53 C1.13.52 C1.13.51 C1.13.54 C1.14.51 C1.13.57 C1.13.55 +C1.13.54 C1.13.52 C1.12.54 C1.13.56 C1.13.53 C1.13.58 C1.13.57 C1.13.55 +C1.13.55 C1.13.54 C1.13.53 C1.14.51 C1.13.57 C1.13.59 C1.14.56 C1.14.54 +C1.13.56 C1.13.52 C1.12.55 C1.12.54 C1.12.58 C1.13.54 C1.13.60 C1.13.58 C1.13.57 +C1.13.57 C1.13.56 C1.13.54 C1.13.53 C1.13.58 C1.13.55 C1.13.61 C1.13.59 C1.14.56 +C1.13.58 C1.12.58 C1.13.56 C1.13.54 C1.13.60 C1.13.57 C1.13.62 C1.13.61 C1.13.59 +C1.13.59 C1.13.58 C1.13.57 C1.13.55 C1.13.61 C1.14.56 C1.14.61 C1.14.60 C1.14.58 +C1.13.60 C1.12.59 C1.12.58 C1.13.56 C1.12.61 C1.13.58 C1.13.62 C1.13.61 +C1.13.61 C1.13.60 C1.13.58 C1.13.57 C1.13.62 C1.13.59 C1.14.61 C1.14.60 +C1.13.62 C1.12.61 C1.13.60 C1.13.58 C1.13.61 +C1.14.00 C1.14.06 C1.14.12 C1.14.08 C1.14.04 +C1.14.01 C1.14.03 C1.14.11 C1.14.05 +C1.14.02 C1.14.05 C1.14.13 C1.15.08 +C1.14.03 C1.14.07 C1.14.09 C1.14.11 C1.14.01 +C1.14.04 C1.14.00 C1.14.08 C1.14.10 +C1.14.05 C1.14.11 C1.14.01 C1.14.13 C1.14.02 +C1.14.06 C1.13.06 C1.13.12 C1.14.00 C1.14.17 C1.14.12 +C1.14.07 C1.14.10 C1.14.14 C1.14.09 C1.14.03 +C1.14.08 C1.14.00 C1.14.12 C1.14.04 C1.14.15 C1.14.10 +C1.14.09 C1.14.14 C1.14.07 C1.14.03 C1.14.16 C1.14.11 +C1.14.10 C1.14.12 C1.14.08 C1.14.04 C1.14.15 C1.14.18 C1.14.14 C1.14.07 +C1.14.11 C1.14.14 C1.14.09 C1.14.03 C1.14.16 C1.14.01 C1.14.05 C1.14.19 C1.14.13 +C1.14.12 C1.14.06 C1.13.12 C1.14.00 C1.14.17 C1.14.08 C1.14.20 C1.14.15 C1.14.10 +C1.14.13 C1.14.16 C1.14.11 C1.14.05 C1.14.19 C1.14.02 C1.15.08 C1.14.21 C1.15.17 C1.15.07 +C1.14.14 C1.14.15 C1.14.10 C1.14.18 C1.14.07 C1.14.09 C1.14.22 C1.14.16 C1.14.11 +C1.14.15 C1.14.17 C1.14.12 C1.14.08 C1.14.20 C1.14.10 C1.14.23 C1.14.18 C1.14.14 +C1.14.16 C1.14.18 C1.14.14 C1.14.09 C1.14.22 C1.14.11 C1.14.24 C1.14.19 C1.14.13 +C1.14.17 C1.14.06 C1.13.17 C1.13.12 C1.13.21 C1.14.12 C1.14.25 C1.14.20 C1.14.15 +C1.14.18 C1.14.20 C1.14.15 C1.14.10 C1.14.23 C1.14.14 C1.14.27 C1.14.22 C1.14.16 +C1.14.19 C1.14.22 C1.14.16 C1.14.11 C1.14.24 C1.14.13 C1.14.26 C1.14.21 C1.15.17 +C1.14.20 C1.13.21 C1.14.17 C1.14.12 C1.14.25 C1.14.15 C1.14.28 C1.14.23 C1.14.18 +C1.14.21 C1.14.24 C1.14.19 C1.14.13 C1.14.26 C1.15.17 C1.15.28 C1.15.23 C1.15.18 +C1.14.22 C1.14.23 C1.14.18 C1.14.14 C1.14.27 C1.14.16 C1.14.29 C1.14.24 C1.14.19 +C1.14.23 C1.14.25 C1.14.20 C1.14.15 C1.14.28 C1.14.18 C1.14.30 C1.14.27 C1.14.22 +C1.14.24 C1.14.27 C1.14.22 C1.14.16 C1.14.29 C1.14.19 C1.14.31 C1.14.26 C1.14.21 +C1.14.25 C1.13.24 C1.13.21 C1.14.17 C1.13.28 C1.14.20 C1.14.32 C1.14.28 C1.14.23 +C1.14.26 C1.14.29 C1.14.24 C1.14.19 C1.14.31 C1.14.21 C1.14.33 C1.15.28 C1.15.23 +C1.14.27 C1.14.28 C1.14.23 C1.14.18 C1.14.30 C1.14.22 C1.14.34 C1.14.29 C1.14.24 +C1.14.28 C1.13.28 C1.14.25 C1.14.20 C1.14.32 C1.14.23 C1.14.35 C1.14.30 C1.14.27 +C1.14.29 C1.14.30 C1.14.27 C1.14.22 C1.14.34 C1.14.24 C1.14.36 C1.14.31 C1.14.26 +C1.14.30 C1.14.32 C1.14.28 C1.14.23 C1.14.35 C1.14.27 C1.14.37 C1.14.34 C1.14.29 +C1.14.31 C1.14.34 C1.14.29 C1.14.24 C1.14.36 C1.14.26 C1.14.38 C1.14.33 C1.15.28 +C1.14.32 C1.13.31 C1.13.28 C1.14.25 C1.13.34 C1.14.28 C1.13.36 C1.14.35 C1.14.30 +C1.14.33 C1.14.36 C1.14.31 C1.14.26 C1.14.38 C1.15.28 C1.15.37 C1.15.33 C1.15.29 +C1.14.34 C1.14.35 C1.14.30 C1.14.27 C1.14.37 C1.14.29 C1.14.39 C1.14.36 C1.14.31 +C1.14.35 C1.13.34 C1.14.32 C1.14.28 C1.13.36 C1.14.30 C1.14.40 C1.14.37 C1.14.34 +C1.14.36 C1.14.37 C1.14.34 C1.14.29 C1.14.39 C1.14.31 C1.14.41 C1.14.38 C1.14.33 +C1.14.37 C1.13.36 C1.14.35 C1.14.30 C1.14.40 C1.14.34 C1.14.42 C1.14.39 C1.14.36 +C1.14.38 C1.14.39 C1.14.36 C1.14.31 C1.14.41 C1.14.33 C1.15.41 C1.15.37 C1.15.33 +C1.14.39 C1.14.40 C1.14.37 C1.14.34 C1.14.42 C1.14.36 C1.14.43 C1.14.41 C1.14.38 +C1.14.40 C1.13.40 C1.13.36 C1.14.35 C1.13.43 C1.14.37 C1.14.44 C1.14.42 C1.14.39 +C1.14.41 C1.14.42 C1.14.39 C1.14.36 C1.14.43 C1.14.38 C1.14.45 C1.15.41 C1.15.37 +C1.14.42 C1.13.43 C1.14.40 C1.14.37 C1.14.44 C1.14.39 C1.14.46 C1.14.43 C1.14.41 +C1.14.43 C1.14.44 C1.14.42 C1.14.39 C1.14.46 C1.14.41 C1.14.47 C1.14.45 C1.15.41 +C1.14.44 C1.13.45 C1.13.43 C1.14.40 C1.13.47 C1.14.42 C1.14.48 C1.14.46 C1.14.43 +C1.14.45 C1.14.46 C1.14.43 C1.14.41 C1.14.47 C1.15.41 C1.15.48 C1.15.45 C1.15.42 +C1.14.46 C1.13.47 C1.14.44 C1.14.42 C1.14.48 C1.14.43 C1.14.49 C1.14.47 C1.14.45 +C1.14.47 C1.14.48 C1.14.46 C1.14.43 C1.14.49 C1.14.45 C1.14.50 C1.15.48 C1.15.45 +C1.14.48 C1.13.49 C1.13.47 C1.14.44 C1.13.51 C1.14.46 C1.14.51 C1.14.49 C1.14.47 +C1.14.49 C1.13.51 C1.14.48 C1.14.46 C1.14.51 C1.14.47 C1.14.52 C1.14.50 C1.15.48 +C1.14.50 C1.14.51 C1.14.49 C1.14.47 C1.14.52 C1.15.48 C1.14.53 C1.15.53 C1.15.51 C1.15.49 +C1.14.51 C1.13.52 C1.13.51 C1.14.48 C1.13.53 C1.14.49 C1.13.55 C1.14.56 C1.14.54 C1.14.52 C1.14.50 +C1.14.52 C1.14.51 C1.14.49 C1.14.54 C1.14.50 C1.14.55 C1.14.53 +C1.14.53 C1.14.54 C1.14.52 C1.14.50 C1.14.55 C1.14.57 C1.15.53 C1.15.51 +C1.14.54 C1.14.51 C1.13.55 C1.14.56 C1.14.52 C1.14.58 C1.14.55 C1.14.53 +C1.14.55 C1.14.56 C1.14.54 C1.14.52 C1.14.58 C1.14.53 C1.14.59 C1.14.57 C1.15.53 +C1.14.56 C1.14.51 C1.13.57 C1.13.55 C1.13.59 C1.14.54 C1.14.60 C1.14.58 C1.14.55 +C1.14.57 C1.14.58 C1.14.55 C1.14.53 C1.14.59 C1.15.53 C1.15.60 C1.15.57 C1.15.54 +C1.14.58 C1.13.59 C1.14.56 C1.14.54 C1.14.61 C1.14.60 C1.14.55 C1.14.59 C1.14.57 +C1.14.59 C1.14.61 C1.14.60 C1.14.58 C1.14.55 C1.14.57 C1.14.62 C1.15.60 C1.15.57 +C1.14.60 C1.13.61 C1.13.59 C1.14.56 C1.14.61 C1.14.58 C1.14.59 +C1.14.61 C1.13.61 C1.13.59 C1.14.60 C1.14.58 C1.14.59 C1.14.62 +C1.14.62 C1.14.61 C1.14.59 C1.15.60 C1.15.61 +C1.15.00 C1.15.07 C1.15.12 +C1.15.01 C1.15.02 C1.15.10 C1.15.11 C1.00.12 C1.00.02 +C1.15.02 C1.15.03 C1.15.06 C1.15.09 C1.15.10 C1.15.01 +C1.15.03 C1.15.14 C1.15.05 C1.15.15 C1.15.06 C1.15.02 +C1.15.04 C1.15.12 C1.15.13 C1.15.14 C1.15.05 +C1.15.05 C1.15.13 C1.15.04 C1.15.14 C1.15.03 +C1.15.06 C1.15.14 C1.15.03 C1.15.15 C1.15.02 C1.15.09 +C1.15.07 C1.14.13 C1.15.08 C1.15.17 C1.15.00 C1.15.18 C1.15.12 +C1.15.08 C1.14.13 C1.14.02 C1.15.17 C1.15.07 +C1.15.09 C1.15.15 C1.15.06 C1.15.02 C1.15.16 C1.15.10 +C1.15.10 C1.15.15 C1.15.02 C1.15.09 C1.15.16 C1.15.01 C1.15.11 +C1.15.11 C1.15.16 C1.15.10 C1.15.01 C1.00.17 C1.00.12 C1.00.02 +C1.15.12 C1.15.17 C1.15.07 C1.15.00 C1.15.18 C1.15.19 C1.15.13 C1.15.04 +C1.15.13 C1.15.18 C1.15.12 C1.15.19 C1.15.04 C1.15.20 C1.15.14 C1.15.05 +C1.15.14 C1.15.19 C1.15.13 C1.15.04 C1.15.20 C1.15.05 C1.15.03 C1.15.21 C1.15.15 C1.15.06 +C1.15.15 C1.15.20 C1.15.14 C1.15.03 C1.15.21 C1.15.06 C1.15.09 C1.15.22 C1.15.16 C1.15.10 +C1.15.16 C1.15.21 C1.15.15 C1.15.09 C1.15.22 C1.15.10 C1.15.11 C1.00.23 C1.00.17 C1.00.12 +C1.15.17 C1.14.19 C1.14.13 C1.15.08 C1.14.21 C1.15.07 C1.15.23 C1.15.18 C1.15.12 +C1.15.18 C1.14.21 C1.15.17 C1.15.07 C1.15.23 C1.15.12 C1.15.24 C1.15.19 C1.15.13 +C1.15.19 C1.15.23 C1.15.18 C1.15.12 C1.15.24 C1.15.13 C1.15.25 C1.15.20 C1.15.14 +C1.15.20 C1.15.24 C1.15.19 C1.15.13 C1.15.25 C1.15.14 C1.15.26 C1.15.21 C1.15.15 +C1.15.21 C1.15.25 C1.15.20 C1.15.14 C1.15.26 C1.15.15 C1.15.27 C1.15.22 C1.15.16 +C1.15.22 C1.15.26 C1.15.21 C1.15.15 C1.15.27 C1.15.16 C1.00.28 C1.00.23 C1.00.17 +C1.15.23 C1.14.26 C1.14.21 C1.15.17 C1.15.28 C1.15.18 C1.15.29 C1.15.24 C1.15.19 +C1.15.24 C1.15.28 C1.15.23 C1.15.18 C1.15.29 C1.15.19 C1.15.30 C1.15.25 C1.15.20 +C1.15.25 C1.15.29 C1.15.24 C1.15.19 C1.15.30 C1.15.20 C1.15.31 C1.15.26 C1.15.21 +C1.15.26 C1.15.30 C1.15.25 C1.15.20 C1.15.31 C1.15.21 C1.15.32 C1.15.27 C1.15.22 +C1.15.27 C1.15.31 C1.15.26 C1.15.21 C1.15.32 C1.15.22 C1.00.33 C1.00.28 C1.00.23 +C1.15.28 C1.14.31 C1.14.26 C1.14.21 C1.14.33 C1.15.23 C1.15.33 C1.15.29 C1.15.24 +C1.15.29 C1.14.33 C1.15.28 C1.15.23 C1.15.33 C1.15.24 C1.15.34 C1.15.30 C1.15.25 +C1.15.30 C1.15.33 C1.15.29 C1.15.24 C1.15.34 C1.15.25 C1.15.35 C1.15.31 C1.15.26 +C1.15.31 C1.15.34 C1.15.30 C1.15.25 C1.15.35 C1.15.26 C1.15.36 C1.15.32 C1.15.27 +C1.15.32 C1.15.35 C1.15.31 C1.15.26 C1.15.36 C1.15.27 C1.00.37 C1.00.33 C1.00.28 +C1.15.33 C1.14.38 C1.14.33 C1.15.28 C1.15.37 C1.15.29 C1.15.38 C1.15.34 C1.15.30 +C1.15.34 C1.15.37 C1.15.33 C1.15.29 C1.15.38 C1.15.30 C1.15.39 C1.15.35 C1.15.31 +C1.15.35 C1.15.38 C1.15.34 C1.15.30 C1.15.39 C1.15.31 C1.15.40 C1.15.36 C1.15.32 +C1.15.36 C1.15.39 C1.15.35 C1.15.31 C1.15.40 C1.15.32 C1.00.41 C1.00.37 C1.00.33 +C1.15.37 C1.14.41 C1.14.38 C1.14.33 C1.15.41 C1.15.33 C1.15.42 C1.15.38 C1.15.34 +C1.15.38 C1.15.41 C1.15.37 C1.15.33 C1.15.42 C1.15.34 C1.15.43 C1.15.39 C1.15.35 +C1.15.39 C1.15.42 C1.15.38 C1.15.34 C1.15.43 C1.15.35 C1.15.44 C1.15.40 C1.15.36 +C1.15.40 C1.15.43 C1.15.39 C1.15.35 C1.15.44 C1.15.36 C1.00.45 C1.00.41 C1.00.37 +C1.15.41 C1.14.43 C1.14.41 C1.14.38 C1.14.45 C1.15.37 C1.15.45 C1.15.42 C1.15.38 +C1.15.42 C1.14.45 C1.15.41 C1.15.37 C1.15.45 C1.15.38 C1.15.46 C1.15.43 C1.15.39 +C1.15.43 C1.15.45 C1.15.42 C1.15.38 C1.15.46 C1.15.39 C1.15.47 C1.15.44 C1.15.40 +C1.15.44 C1.15.46 C1.15.43 C1.15.39 C1.15.47 C1.15.40 C1.00.48 C1.00.45 C1.00.41 +C1.15.45 C1.14.47 C1.14.45 C1.15.41 C1.15.48 C1.15.42 C1.15.49 C1.15.46 C1.15.43 +C1.15.46 C1.15.48 C1.15.45 C1.15.42 C1.15.49 C1.15.43 C1.15.50 C1.15.47 C1.15.44 +C1.15.47 C1.15.49 C1.15.46 C1.15.43 C1.15.50 C1.15.44 C1.00.51 C1.00.48 C1.00.45 +C1.15.48 C1.14.49 C1.14.47 C1.14.45 C1.14.50 C1.15.45 C1.15.51 C1.15.49 C1.15.46 +C1.15.49 C1.14.50 C1.15.48 C1.15.45 C1.15.51 C1.15.46 C1.15.52 C1.15.50 C1.15.47 +C1.15.50 C1.15.51 C1.15.49 C1.15.46 C1.15.52 C1.15.47 C1.00.53 C1.00.51 C1.00.48 +C1.15.51 C1.14.50 C1.15.48 C1.14.53 C1.15.53 C1.15.49 C1.15.54 C1.15.55 C1.15.52 C1.15.50 +C1.15.52 C1.15.51 C1.15.49 C1.15.54 C1.15.55 C1.15.50 C1.15.56 C1.00.56 C1.00.53 C1.00.51 +C1.15.53 C1.14.50 C1.14.55 C1.14.53 C1.14.57 C1.15.51 C1.15.57 C1.15.54 +C1.15.54 C1.14.57 C1.15.53 C1.15.51 C1.15.57 C1.15.58 C1.15.55 C1.15.52 +C1.15.55 C1.15.51 C1.15.57 C1.15.54 C1.15.58 C1.15.52 C1.15.59 C1.15.56 +C1.15.56 C1.15.58 C1.15.55 C1.15.52 C1.15.59 C1.00.59 C1.00.56 C1.00.53 +C1.15.57 C1.14.59 C1.14.57 C1.15.53 C1.15.60 C1.15.54 C1.15.61 C1.15.58 C1.15.55 +C1.15.58 C1.15.60 C1.15.57 C1.15.54 C1.15.61 C1.15.55 C1.15.62 C1.15.59 C1.15.56 +C1.15.59 C1.15.61 C1.15.58 C1.15.55 C1.15.62 C1.15.56 C1.00.62 C1.00.59 C1.00.56 +C1.15.60 C1.14.59 C1.14.57 C1.14.62 C1.15.57 C1.15.61 C1.15.58 +C1.15.61 C1.14.62 C1.15.60 C1.15.57 C1.15.58 C1.15.62 C1.15.59 +C1.15.62 C1.15.61 C1.15.58 C1.15.59 C1.00.62 C1.00.59 +C2.00.00 C2.00.06 C2.00.01 C2.00.05 +C2.00.01 C2.00.06 C2.00.02 C2.00.05 C2.00.00 +C2.00.02 C2.15.06 C2.15.01 C2.00.06 C2.00.01 +C2.00.03 C2.00.08 C2.00.04 C2.00.07 C2.01.04 +C2.00.04 C2.00.09 C2.00.05 C2.00.08 C2.00.07 C2.00.03 +C2.00.05 C2.00.10 C2.00.06 C2.00.01 C2.00.09 C2.00.00 C2.00.08 C2.00.04 +C2.00.06 C2.15.10 C2.15.06 C2.15.01 C2.00.10 C2.00.02 C2.00.01 C2.00.09 C2.00.05 C2.00.00 +C2.00.07 C2.00.11 C2.00.08 C2.00.04 C2.01.10 C2.00.03 C2.01.07 C2.01.04 +C2.00.08 C2.00.12 C2.00.09 C2.00.05 C2.00.11 C2.00.04 C2.01.10 C2.00.07 C2.00.03 +C2.00.09 C2.00.13 C2.00.10 C2.00.06 C2.00.12 C2.00.05 C2.00.11 C2.00.08 C2.00.04 +C2.00.10 C2.15.13 C2.15.10 C2.15.06 C2.00.13 C2.00.06 C2.00.12 C2.00.09 C2.00.05 +C2.00.11 C2.00.15 C2.00.12 C2.00.09 C2.00.14 C2.00.08 C2.01.13 C2.01.10 C2.00.07 +C2.00.12 C2.00.16 C2.00.13 C2.00.10 C2.00.15 C2.00.09 C2.00.14 C2.00.11 C2.00.08 +C2.00.13 C2.15.16 C2.15.13 C2.15.10 C2.00.16 C2.00.10 C2.00.15 C2.00.12 C2.00.09 +C2.00.14 C2.00.18 C2.00.15 C2.00.12 C2.00.17 C2.00.11 C2.01.16 C2.01.13 C2.01.10 +C2.00.15 C2.00.19 C2.00.16 C2.00.13 C2.00.18 C2.00.12 C2.00.17 C2.00.14 C2.00.11 +C2.00.16 C2.15.19 C2.15.16 C2.15.13 C2.00.19 C2.00.13 C2.00.18 C2.00.15 C2.00.12 +C2.00.17 C2.00.20 C2.00.18 C2.00.15 C2.01.20 C2.00.14 C2.01.18 C2.01.16 C2.01.13 +C2.00.18 C2.00.21 C2.00.19 C2.00.16 C2.00.20 C2.00.15 C2.01.20 C2.00.17 C2.00.14 +C2.00.19 C2.15.21 C2.15.19 C2.15.16 C2.00.21 C2.00.16 C2.00.20 C2.00.18 C2.00.15 +C2.00.20 C2.00.23 C2.00.21 C2.00.19 C2.00.22 C2.00.18 C2.01.22 C2.01.20 C2.00.17 +C2.00.21 C2.15.23 C2.15.21 C2.15.19 C2.00.23 C2.00.19 C2.00.22 C2.00.20 C2.00.18 +C2.00.22 C2.00.25 C2.00.23 C2.00.21 C2.00.24 C2.00.20 C2.01.24 C2.01.22 C2.01.20 +C2.00.23 C2.15.25 C2.15.23 C2.15.21 C2.00.25 C2.00.21 C2.00.24 C2.00.22 C2.00.20 +C2.00.24 C2.00.26 C2.00.25 C2.00.23 C2.01.26 C2.00.22 C2.01.25 C2.01.24 C2.01.22 +C2.00.25 C2.15.26 C2.15.25 C2.15.23 C2.00.26 C2.00.23 C2.01.26 C2.00.24 C2.00.22 +C2.00.26 C2.15.27 C2.15.26 C2.15.25 C2.00.27 C2.00.25 C2.01.28 C2.01.26 C2.00.24 +C2.00.27 C2.15.27 C2.15.26 C2.15.29 C2.00.29 C2.00.26 C2.00.28 C2.01.30 C2.01.28 C2.01.26 +C2.00.28 C2.00.29 C2.00.27 C2.01.31 C2.01.30 C2.01.28 +C2.00.29 C2.15.27 C2.15.29 C2.00.27 C2.00.28 +C2.01.00 C2.01.05 C2.02.06 C2.02.00 +C2.01.01 C2.01.05 C2.01.03 +C2.01.02 C2.01.07 C2.01.04 C2.01.06 +C2.01.03 C2.01.09 C2.01.06 C2.01.05 C2.01.01 +C2.01.04 C2.01.10 C2.00.07 C2.00.03 C2.01.07 C2.01.06 C2.01.02 +C2.01.05 C2.01.12 C2.01.09 C2.01.06 C2.01.08 C2.01.03 C2.01.01 C2.02.06 C2.01.00 +C2.01.06 C2.01.11 C2.01.07 C2.01.04 C2.01.09 C2.01.02 C2.01.05 C2.01.03 +C2.01.07 C2.01.13 C2.01.10 C2.00.07 C2.01.11 C2.01.04 C2.01.09 C2.01.06 C2.01.02 +C2.01.08 C2.01.14 C2.01.12 C2.01.09 C2.02.11 C2.01.05 C2.02.09 C2.02.06 +C2.01.09 C2.01.15 C2.01.11 C2.01.07 C2.01.12 C2.01.06 C2.01.08 C2.01.05 C2.01.03 +C2.01.10 C2.00.14 C2.00.11 C2.00.08 C2.01.13 C2.00.07 C2.01.11 C2.01.07 C2.01.04 +C2.01.11 C2.01.16 C2.01.13 C2.01.10 C2.01.15 C2.01.07 C2.01.12 C2.01.09 C2.01.06 +C2.01.12 C2.01.17 C2.01.15 C2.01.11 C2.01.14 C2.01.09 C2.02.11 C2.01.08 C2.01.05 +C2.01.13 C2.00.17 C2.00.14 C2.00.11 C2.01.16 C2.01.10 C2.01.15 C2.01.11 C2.01.07 +C2.01.14 C2.01.19 C2.01.17 C2.01.15 C2.02.16 C2.01.12 C2.02.14 C2.02.11 C2.01.08 +C2.01.15 C2.01.18 C2.01.16 C2.01.13 C2.01.17 C2.01.11 C2.01.14 C2.01.12 C2.01.09 +C2.01.16 C2.01.20 C2.00.17 C2.00.14 C2.01.18 C2.01.13 C2.01.17 C2.01.15 C2.01.11 +C2.01.17 C2.01.21 C2.01.18 C2.01.16 C2.01.19 C2.01.15 C2.02.16 C2.01.14 C2.01.12 +C2.01.18 C2.01.22 C2.01.20 C2.00.17 C2.01.21 C2.01.16 C2.01.19 C2.01.17 C2.01.15 +C2.01.19 C2.01.23 C2.01.21 C2.01.18 C2.02.20 C2.01.17 C2.02.18 C2.02.16 C2.01.14 +C2.01.20 C2.00.22 C2.00.20 C2.00.18 C2.01.22 C2.00.17 C2.01.21 C2.01.18 C2.01.16 +C2.01.21 C2.01.24 C2.01.22 C2.01.20 C2.01.23 C2.01.18 C2.02.20 C2.01.19 C2.01.17 +C2.01.22 C2.00.24 C2.00.22 C2.00.20 C2.01.24 C2.01.20 C2.01.23 C2.01.21 C2.01.18 +C2.01.23 C2.01.25 C2.01.24 C2.01.22 C2.02.24 C2.01.21 C2.02.22 C2.02.20 C2.01.19 +C2.01.24 C2.01.26 C2.00.24 C2.00.22 C2.01.25 C2.01.22 C2.02.24 C2.01.23 C2.01.21 +C2.01.25 C2.01.28 C2.01.26 C2.00.24 C2.01.27 C2.01.24 C2.02.25 C2.02.24 C2.01.23 +C2.01.26 C2.00.27 C2.00.26 C2.00.25 C2.01.28 C2.00.24 C2.01.27 C2.01.25 C2.01.24 +C2.01.27 C2.01.28 C2.01.26 C2.01.29 C2.02.27 C2.01.25 C2.02.26 C2.02.25 C2.02.24 +C2.01.28 C2.00.27 C2.00.26 C2.00.28 C2.01.30 C2.01.26 C2.01.29 C2.02.27 C2.01.27 C2.01.25 +C2.01.29 C2.01.31 C2.01.30 C2.01.28 C2.02.29 C2.02.27 C2.01.27 +C2.01.30 C2.00.27 C2.00.28 C2.01.31 C2.01.28 C2.02.29 C2.01.29 +C2.01.31 C2.00.28 C2.01.30 C2.02.30 C2.02.29 C2.01.29 +C2.02.00 C2.02.06 C2.01.00 C2.02.03 +C2.02.01 C2.02.08 C2.02.07 C2.02.02 +C2.02.02 C2.02.08 C2.02.07 C2.02.01 C2.03.01 C2.02.04 +C2.02.03 C2.02.09 C2.02.06 C2.02.00 C2.02.05 +C2.02.04 C2.03.06 C2.02.08 C2.03.01 C2.02.02 +C2.02.05 C2.02.10 C2.02.09 C2.02.07 C2.02.03 +C2.02.06 C2.02.11 C2.01.08 C2.01.05 C2.02.09 C2.01.00 C2.02.00 C2.02.03 +C2.02.07 C2.02.12 C2.02.10 C2.02.09 C2.02.08 C2.02.05 C2.02.01 C2.02.02 +C2.02.08 C2.02.13 C2.02.12 C2.02.10 C2.03.06 C2.02.07 C2.02.01 C2.03.01 C2.02.04 C2.02.02 +C2.02.09 C2.02.14 C2.02.11 C2.01.08 C2.02.10 C2.02.06 C2.02.07 C2.02.05 C2.02.03 +C2.02.10 C2.02.15 C2.02.14 C2.02.11 C2.02.12 C2.02.09 C2.02.08 C2.02.07 C2.02.05 +C2.02.11 C2.02.16 C2.01.14 C2.01.12 C2.02.14 C2.01.08 C2.02.10 C2.02.09 C2.02.06 +C2.02.12 C2.02.17 C2.02.15 C2.02.14 C2.02.13 C2.02.10 C2.03.06 C2.02.08 C2.02.07 +C2.02.13 C2.03.15 C2.02.17 C2.02.15 C2.03.11 C2.02.12 C2.03.07 C2.03.06 C2.02.08 +C2.02.14 C2.02.18 C2.02.16 C2.01.14 C2.02.15 C2.02.11 C2.02.12 C2.02.10 C2.02.09 +C2.02.15 C2.02.19 C2.02.18 C2.02.16 C2.02.17 C2.02.14 C2.02.13 C2.02.12 C2.02.10 +C2.02.16 C2.02.20 C2.01.19 C2.01.17 C2.02.18 C2.01.14 C2.02.15 C2.02.14 C2.02.11 +C2.02.17 C2.02.21 C2.02.19 C2.02.18 C2.03.15 C2.02.15 C2.03.11 C2.02.13 C2.02.12 +C2.02.18 C2.02.22 C2.02.20 C2.01.19 C2.02.19 C2.02.16 C2.02.17 C2.02.15 C2.02.14 +C2.02.19 C2.02.23 C2.02.22 C2.02.20 C2.02.21 C2.02.18 C2.03.15 C2.02.17 C2.02.15 +C2.02.20 C2.02.24 C2.01.23 C2.01.21 C2.02.22 C2.01.19 C2.02.19 C2.02.18 C2.02.16 +C2.02.21 C2.03.22 C2.02.23 C2.02.22 C2.03.19 C2.02.19 C2.03.16 C2.03.15 C2.02.17 +C2.02.22 C2.02.25 C2.02.24 C2.01.23 C2.02.23 C2.02.20 C2.02.21 C2.02.19 C2.02.18 +C2.02.23 C2.02.26 C2.02.25 C2.02.24 C2.03.22 C2.02.22 C2.03.19 C2.02.21 C2.02.19 +C2.02.24 C2.01.27 C2.01.25 C2.01.24 C2.02.25 C2.01.23 C2.02.23 C2.02.22 C2.02.20 +C2.02.25 C2.02.27 C2.01.27 C2.01.25 C2.02.26 C2.02.24 C2.03.22 C2.02.23 C2.02.22 +C2.02.26 C2.02.28 C2.02.27 C2.01.27 C2.03.25 C2.02.25 C2.03.23 C2.03.22 C2.02.23 +C2.02.27 C2.01.28 C2.02.30 C2.02.29 C2.01.29 C2.02.28 C2.01.27 C2.03.25 C2.02.26 C2.02.25 +C2.02.28 C2.02.30 C2.02.29 C2.02.31 C2.03.29 C2.02.27 C2.03.27 C2.03.26 C2.03.25 C2.02.26 +C2.02.29 C2.01.31 C2.01.30 C2.02.30 C2.01.29 C2.02.28 C2.02.27 +C2.02.30 C2.01.31 C2.02.29 C2.02.31 C2.02.28 C2.02.27 +C2.02.31 C2.02.30 C2.03.30 C2.03.29 C2.02.28 +C2.03.00 C2.04.05 C2.03.05 C2.03.04 C2.03.03 C2.04.00 +C2.03.01 C2.03.07 C2.03.06 C2.02.08 C2.03.02 C2.02.04 C2.02.02 +C2.03.02 C2.03.08 C2.03.07 C2.03.06 C2.03.03 C2.03.01 +C2.03.03 C2.03.09 C2.03.08 C2.03.07 C2.03.04 C2.03.02 C2.03.00 +C2.03.04 C2.03.10 C2.03.09 C2.03.08 C2.03.05 C2.03.03 C2.03.00 +C2.03.05 C2.04.10 C2.03.10 C2.03.09 C2.04.05 C2.03.04 C2.04.00 C2.03.00 +C2.03.06 C2.03.11 C2.02.13 C2.02.12 C2.03.07 C2.02.08 C2.03.02 C2.03.01 C2.02.04 +C2.03.07 C2.03.12 C2.03.11 C2.02.13 C2.03.08 C2.03.06 C2.03.03 C2.03.02 C2.03.01 +C2.03.08 C2.03.13 C2.03.12 C2.03.11 C2.03.09 C2.03.07 C2.03.04 C2.03.03 C2.03.02 +C2.03.09 C2.03.14 C2.03.13 C2.03.12 C2.03.10 C2.03.08 C2.03.05 C2.03.04 C2.03.03 +C2.03.10 C2.04.14 C2.03.14 C2.03.13 C2.04.10 C2.03.09 C2.04.05 C2.03.05 C2.03.04 +C2.03.11 C2.03.16 C2.03.15 C2.02.17 C2.03.12 C2.02.13 C2.03.08 C2.03.07 C2.03.06 +C2.03.12 C2.03.17 C2.03.16 C2.03.15 C2.03.13 C2.03.11 C2.03.09 C2.03.08 C2.03.07 +C2.03.13 C2.03.18 C2.03.17 C2.03.16 C2.03.14 C2.03.12 C2.03.10 C2.03.09 C2.03.08 +C2.03.14 C2.04.18 C2.03.18 C2.03.17 C2.04.14 C2.03.13 C2.04.10 C2.03.10 C2.03.09 +C2.03.15 C2.03.19 C2.02.21 C2.02.19 C2.03.16 C2.02.17 C2.03.12 C2.03.11 C2.02.13 +C2.03.16 C2.03.20 C2.03.19 C2.02.21 C2.03.17 C2.03.15 C2.03.13 C2.03.12 C2.03.11 +C2.03.17 C2.03.21 C2.03.20 C2.03.19 C2.03.18 C2.03.16 C2.03.14 C2.03.13 C2.03.12 +C2.03.18 C2.04.21 C2.03.21 C2.03.20 C2.04.18 C2.03.17 C2.04.14 C2.03.14 C2.03.13 +C2.03.19 C2.03.23 C2.03.22 C2.02.23 C2.03.20 C2.02.21 C2.03.17 C2.03.16 C2.03.15 +C2.03.20 C2.03.24 C2.03.23 C2.03.22 C2.03.21 C2.03.19 C2.03.18 C2.03.17 C2.03.16 +C2.03.21 C2.04.24 C2.03.24 C2.03.23 C2.04.21 C2.03.20 C2.04.18 C2.03.18 C2.03.17 +C2.03.22 C2.03.25 C2.02.26 C2.02.25 C2.03.23 C2.02.23 C2.03.20 C2.03.19 C2.02.21 +C2.03.23 C2.03.26 C2.03.25 C2.02.26 C2.03.24 C2.03.22 C2.03.21 C2.03.20 C2.03.19 +C2.03.24 C2.04.26 C2.03.26 C2.03.25 C2.04.24 C2.03.23 C2.04.21 C2.03.21 C2.03.20 +C2.03.25 C2.02.28 C2.02.27 C2.03.27 C2.03.26 C2.02.26 C2.03.24 C2.03.23 C2.03.22 +C2.03.26 C2.02.28 C2.04.28 C2.03.28 C2.03.27 C2.04.26 C2.03.25 C2.04.24 C2.03.24 C2.03.23 +C2.03.27 C2.03.30 C2.03.29 C2.02.28 C2.03.28 C2.03.26 C2.03.25 +C2.03.28 C2.04.30 C2.03.30 C2.03.29 C2.04.28 C2.03.27 C2.04.26 C2.03.26 +C2.03.29 C2.02.31 C2.03.30 C2.02.28 C2.03.28 C2.03.27 +C2.03.30 C2.02.31 C2.04.30 C2.03.29 C2.04.28 C2.03.28 C2.03.27 +C2.04.00 C2.04.03 C2.04.04 C2.04.05 C2.03.05 C2.03.00 +C2.04.01 C2.05.08 C2.04.06 C2.04.07 C2.05.02 C2.05.04 C2.04.02 +C2.04.02 C2.04.06 C2.04.07 C2.04.08 C2.04.01 C2.04.03 +C2.04.03 C2.04.07 C2.04.08 C2.04.09 C2.04.02 C2.04.04 C2.04.00 +C2.04.04 C2.04.08 C2.04.09 C2.04.10 C2.04.03 C2.04.05 C2.04.00 +C2.04.05 C2.04.09 C2.04.10 C2.03.10 C2.04.04 C2.03.05 C2.04.00 C2.03.00 +C2.04.06 C2.05.12 C2.05.13 C2.04.11 C2.05.08 C2.04.07 C2.05.04 C2.04.01 C2.04.02 +C2.04.07 C2.05.13 C2.04.11 C2.04.12 C2.04.06 C2.04.08 C2.04.01 C2.04.02 C2.04.03 +C2.04.08 C2.04.11 C2.04.12 C2.04.13 C2.04.07 C2.04.09 C2.04.02 C2.04.03 C2.04.04 +C2.04.09 C2.04.12 C2.04.13 C2.04.14 C2.04.08 C2.04.10 C2.04.03 C2.04.04 C2.04.05 +C2.04.10 C2.04.13 C2.04.14 C2.03.14 C2.04.09 C2.03.10 C2.04.04 C2.04.05 C2.03.05 +C2.04.11 C2.05.17 C2.04.15 C2.04.16 C2.05.13 C2.04.12 C2.04.06 C2.04.07 C2.04.08 +C2.04.12 C2.04.15 C2.04.16 C2.04.17 C2.04.11 C2.04.13 C2.04.07 C2.04.08 C2.04.09 +C2.04.13 C2.04.16 C2.04.17 C2.04.18 C2.04.12 C2.04.14 C2.04.08 C2.04.09 C2.04.10 +C2.04.14 C2.04.17 C2.04.18 C2.03.18 C2.04.13 C2.03.14 C2.04.09 C2.04.10 C2.03.10 +C2.04.15 C2.05.19 C2.05.21 C2.04.19 C2.05.17 C2.04.16 C2.05.13 C2.04.11 C2.04.12 +C2.04.16 C2.05.21 C2.04.19 C2.04.20 C2.04.15 C2.04.17 C2.04.11 C2.04.12 C2.04.13 +C2.04.17 C2.04.19 C2.04.20 C2.04.21 C2.04.16 C2.04.18 C2.04.12 C2.04.13 C2.04.14 +C2.04.18 C2.04.20 C2.04.21 C2.03.21 C2.04.17 C2.03.18 C2.04.13 C2.04.14 C2.03.14 +C2.04.19 C2.05.23 C2.04.22 C2.04.23 C2.05.21 C2.04.20 C2.04.15 C2.04.16 C2.04.17 +C2.04.20 C2.04.22 C2.04.23 C2.04.24 C2.04.19 C2.04.21 C2.04.16 C2.04.17 C2.04.18 +C2.04.21 C2.04.23 C2.04.24 C2.03.24 C2.04.20 C2.03.21 C2.04.17 C2.04.18 C2.03.18 +C2.04.22 C2.05.25 C2.05.26 C2.04.25 C2.05.23 C2.04.23 C2.05.21 C2.04.19 C2.04.20 +C2.04.23 C2.05.26 C2.04.25 C2.04.26 C2.04.22 C2.04.24 C2.04.19 C2.04.20 C2.04.21 +C2.04.24 C2.04.25 C2.04.26 C2.03.26 C2.04.23 C2.03.24 C2.04.20 C2.04.21 C2.03.21 +C2.04.25 C2.05.27 C2.05.28 C2.04.27 C2.05.26 C2.04.26 C2.04.22 C2.04.23 C2.04.24 +C2.04.26 C2.05.28 C2.04.27 C2.04.28 C2.03.28 C2.04.25 C2.03.26 C2.04.23 C2.04.24 C2.03.24 +C2.04.27 C2.05.28 C2.04.29 C2.04.30 C2.04.28 C2.04.25 C2.04.26 +C2.04.28 C2.04.29 C2.04.30 C2.03.30 C2.04.27 C2.03.28 C2.04.26 C2.03.26 +C2.04.29 C2.05.31 C2.05.28 C2.04.30 C2.04.27 C2.04.28 +C2.04.30 C2.04.29 C2.03.30 C2.04.27 C2.04.28 C2.03.28 +C2.05.00 C2.05.07 C2.05.08 C2.05.02 +C2.05.01 C2.06.03 C2.06.00 C2.05.06 +C2.05.02 C2.05.07 C2.05.08 C2.05.00 C2.05.04 C2.04.01 +C2.05.03 C2.05.06 C2.05.09 C2.05.05 +C2.05.04 C2.05.08 C2.04.06 C2.05.02 C2.04.01 +C2.05.05 C2.05.09 C2.05.10 C2.05.03 C2.05.07 +C2.05.06 C2.06.08 C2.05.11 C2.06.03 C2.05.09 C2.05.01 C2.05.03 +C2.05.07 C2.05.09 C2.05.10 C2.05.12 C2.05.05 C2.05.08 C2.05.00 C2.05.02 +C2.05.08 C2.05.10 C2.05.12 C2.05.13 C2.05.07 C2.04.06 C2.05.00 C2.05.02 C2.05.04 C2.04.01 +C2.05.09 C2.06.08 C2.05.11 C2.05.14 C2.05.06 C2.05.10 C2.05.03 C2.05.05 C2.05.07 +C2.05.10 C2.05.11 C2.05.14 C2.05.15 C2.05.09 C2.05.12 C2.05.05 C2.05.07 C2.05.08 +C2.05.11 C2.06.12 C2.06.14 C2.05.16 C2.06.08 C2.05.14 C2.05.06 C2.05.09 C2.05.10 +C2.05.12 C2.05.14 C2.05.15 C2.05.17 C2.05.10 C2.05.13 C2.05.07 C2.05.08 C2.04.06 +C2.05.13 C2.05.15 C2.05.17 C2.04.15 C2.05.12 C2.04.11 C2.05.08 C2.04.06 C2.04.07 +C2.05.14 C2.06.14 C2.05.16 C2.05.18 C2.05.11 C2.05.15 C2.05.09 C2.05.10 C2.05.12 +C2.05.15 C2.05.16 C2.05.18 C2.05.19 C2.05.14 C2.05.17 C2.05.10 C2.05.12 C2.05.13 +C2.05.16 C2.06.17 C2.06.19 C2.05.20 C2.06.14 C2.05.18 C2.05.11 C2.05.14 C2.05.15 +C2.05.17 C2.05.18 C2.05.19 C2.05.21 C2.05.15 C2.04.15 C2.05.12 C2.05.13 C2.04.11 +C2.05.18 C2.06.19 C2.05.20 C2.05.22 C2.05.16 C2.05.19 C2.05.14 C2.05.15 C2.05.17 +C2.05.19 C2.05.20 C2.05.22 C2.05.23 C2.05.18 C2.05.21 C2.05.15 C2.05.17 C2.04.15 +C2.05.20 C2.06.21 C2.06.23 C2.05.24 C2.06.19 C2.05.22 C2.05.16 C2.05.18 C2.05.19 +C2.05.21 C2.05.22 C2.05.23 C2.04.22 C2.05.19 C2.04.19 C2.05.17 C2.04.15 C2.04.16 +C2.05.22 C2.06.23 C2.05.24 C2.05.25 C2.05.20 C2.05.23 C2.05.18 C2.05.19 C2.05.21 +C2.05.23 C2.05.24 C2.05.25 C2.05.26 C2.05.22 C2.04.22 C2.05.19 C2.05.21 C2.04.19 +C2.05.24 C2.06.24 C2.06.25 C2.06.27 C2.06.23 C2.05.25 C2.05.20 C2.05.22 C2.05.23 +C2.05.25 C2.06.25 C2.06.27 C2.05.27 C2.05.24 C2.05.26 C2.05.22 C2.05.23 C2.04.22 +C2.05.26 C2.06.27 C2.05.27 C2.05.28 C2.05.25 C2.04.25 C2.05.23 C2.04.22 C2.04.23 +C2.05.27 C2.06.28 C2.05.30 C2.05.29 C2.06.27 C2.05.28 C2.05.25 C2.05.26 C2.04.25 +C2.05.28 C2.05.30 C2.05.31 C2.05.27 C2.04.29 C2.04.27 C2.05.26 C2.04.25 C2.04.26 +C2.05.29 C2.06.31 C2.06.28 C2.06.29 C2.05.30 C2.06.27 C2.05.27 +C2.05.30 C2.06.31 C2.06.29 C2.05.29 C2.05.31 C2.05.27 C2.05.28 +C2.05.31 C2.05.30 C2.05.28 C2.04.29 +C2.06.00 C2.06.05 C2.06.03 C2.05.01 +C2.06.01 C2.06.06 C2.06.05 +C2.06.02 C2.06.04 C2.06.07 C2.06.06 +C2.06.03 C2.06.05 C2.06.08 C2.06.00 C2.05.06 C2.05.01 +C2.06.04 C2.07.03 C2.07.07 C2.06.10 C2.06.07 C2.06.02 C2.06.06 +C2.06.05 C2.06.06 C2.06.09 C2.06.12 C2.06.01 C2.06.08 C2.06.03 C2.06.00 +C2.06.06 C2.06.04 C2.06.07 C2.06.11 C2.06.02 C2.06.09 C2.06.01 C2.06.05 +C2.06.07 C2.07.07 C2.06.10 C2.06.13 C2.06.04 C2.06.11 C2.06.02 C2.06.06 C2.06.09 +C2.06.08 C2.06.09 C2.06.12 C2.06.14 C2.06.05 C2.05.11 C2.06.03 C2.05.06 C2.05.09 +C2.06.09 C2.06.07 C2.06.11 C2.06.15 C2.06.06 C2.06.12 C2.06.05 C2.06.08 +C2.06.10 C2.07.08 C2.07.11 C2.07.14 C2.07.07 C2.06.13 C2.06.04 C2.06.07 C2.06.11 +C2.06.11 C2.06.10 C2.06.13 C2.06.16 C2.06.07 C2.06.15 C2.06.06 C2.06.09 C2.06.12 +C2.06.12 C2.06.11 C2.06.15 C2.06.17 C2.06.09 C2.06.14 C2.06.05 C2.06.08 C2.05.11 +C2.06.13 C2.07.11 C2.07.14 C2.07.17 C2.06.10 C2.06.16 C2.06.07 C2.06.11 C2.06.15 +C2.06.14 C2.06.15 C2.06.17 C2.06.19 C2.06.12 C2.05.16 C2.06.08 C2.05.11 C2.05.14 +C2.06.15 C2.06.13 C2.06.16 C2.06.18 C2.06.11 C2.06.17 C2.06.09 C2.06.12 C2.06.14 +C2.06.16 C2.07.14 C2.07.17 C2.06.20 C2.06.13 C2.06.18 C2.06.11 C2.06.15 C2.06.17 +C2.06.17 C2.06.16 C2.06.18 C2.06.21 C2.06.15 C2.06.19 C2.06.12 C2.06.14 C2.05.16 +C2.06.18 C2.07.17 C2.06.20 C2.06.22 C2.06.16 C2.06.21 C2.06.15 C2.06.17 C2.06.19 +C2.06.19 C2.06.18 C2.06.21 C2.06.23 C2.06.17 C2.05.20 C2.06.14 C2.05.16 C2.05.18 +C2.06.20 C2.07.18 C2.07.20 C2.07.22 C2.07.17 C2.06.22 C2.06.16 C2.06.18 C2.06.21 +C2.06.21 C2.06.20 C2.06.22 C2.06.24 C2.06.18 C2.06.23 C2.06.17 C2.06.19 C2.05.20 +C2.06.22 C2.07.20 C2.07.22 C2.07.24 C2.06.20 C2.06.24 C2.06.18 C2.06.21 C2.06.23 +C2.06.23 C2.06.22 C2.06.24 C2.06.25 C2.06.21 C2.05.24 C2.06.19 C2.05.20 C2.05.22 +C2.06.24 C2.07.22 C2.07.24 C2.06.26 C2.06.22 C2.06.25 C2.06.21 C2.06.23 C2.05.24 +C2.06.25 C2.07.24 C2.06.26 C2.06.28 C2.06.24 C2.06.27 C2.06.23 C2.05.24 C2.05.25 +C2.06.26 C2.07.25 C2.07.26 C2.07.27 C2.07.24 C2.06.28 C2.06.24 C2.06.25 C2.06.27 +C2.06.27 C2.06.26 C2.06.28 C2.05.29 C2.06.25 C2.05.27 C2.05.24 C2.05.25 C2.05.26 +C2.06.28 C2.07.26 C2.07.27 C2.07.28 C2.06.26 C2.06.30 C2.06.29 C2.05.29 C2.06.25 C2.06.27 C2.05.27 +C2.06.29 C2.06.31 C2.06.28 C2.06.30 C2.05.30 C2.05.29 +C2.06.30 C2.07.27 C2.07.28 C2.06.31 C2.06.28 C2.06.29 +C2.06.31 C2.07.28 C2.06.30 C2.06.29 C2.05.30 C2.05.29 +C2.07.00 C2.07.06 C2.07.02 C2.07.05 +C2.07.01 C2.08.06 C2.08.00 C2.07.06 C2.07.02 +C2.07.02 C2.07.01 C2.07.06 C2.07.00 C2.07.05 +C2.07.03 C2.07.04 C2.07.08 C2.07.07 C2.06.04 +C2.07.04 C2.07.05 C2.07.09 C2.07.08 C2.07.03 C2.07.07 +C2.07.05 C2.07.06 C2.07.10 C2.07.02 C2.07.00 C2.07.09 C2.07.04 C2.07.08 +C2.07.06 C2.08.06 C2.08.10 C2.08.00 C2.07.01 C2.07.10 C2.07.02 C2.07.00 C2.07.05 C2.07.09 +C2.07.07 C2.07.04 C2.07.08 C2.07.11 C2.07.03 C2.06.10 C2.06.04 C2.06.07 +C2.07.08 C2.07.05 C2.07.09 C2.07.12 C2.07.04 C2.07.11 C2.07.03 C2.07.07 C2.06.10 +C2.07.09 C2.07.06 C2.07.10 C2.07.13 C2.07.05 C2.07.12 C2.07.04 C2.07.08 C2.07.11 +C2.07.10 C2.08.06 C2.08.10 C2.08.13 C2.07.06 C2.07.13 C2.07.05 C2.07.09 C2.07.12 +C2.07.11 C2.07.09 C2.07.12 C2.07.15 C2.07.08 C2.07.14 C2.07.07 C2.06.10 C2.06.13 +C2.07.12 C2.07.10 C2.07.13 C2.07.16 C2.07.09 C2.07.15 C2.07.08 C2.07.11 C2.07.14 +C2.07.13 C2.08.10 C2.08.13 C2.08.16 C2.07.10 C2.07.16 C2.07.09 C2.07.12 C2.07.15 +C2.07.14 C2.07.12 C2.07.15 C2.07.18 C2.07.11 C2.07.17 C2.06.10 C2.06.13 C2.06.16 +C2.07.15 C2.07.13 C2.07.16 C2.07.19 C2.07.12 C2.07.18 C2.07.11 C2.07.14 C2.07.17 +C2.07.16 C2.08.13 C2.08.16 C2.08.19 C2.07.13 C2.07.19 C2.07.12 C2.07.15 C2.07.18 +C2.07.17 C2.07.15 C2.07.18 C2.07.20 C2.07.14 C2.06.20 C2.06.13 C2.06.16 C2.06.18 +C2.07.18 C2.07.16 C2.07.19 C2.07.21 C2.07.15 C2.07.20 C2.07.14 C2.07.17 C2.06.20 +C2.07.19 C2.08.16 C2.08.19 C2.08.21 C2.07.16 C2.07.21 C2.07.15 C2.07.18 C2.07.20 +C2.07.20 C2.07.19 C2.07.21 C2.07.23 C2.07.18 C2.07.22 C2.07.17 C2.06.20 C2.06.22 +C2.07.21 C2.08.19 C2.08.21 C2.08.23 C2.07.19 C2.07.23 C2.07.18 C2.07.20 C2.07.22 +C2.07.22 C2.07.21 C2.07.23 C2.07.25 C2.07.20 C2.07.24 C2.06.20 C2.06.22 C2.06.24 +C2.07.23 C2.08.21 C2.08.23 C2.08.25 C2.07.21 C2.07.25 C2.07.20 C2.07.22 C2.07.24 +C2.07.24 C2.07.23 C2.07.25 C2.07.26 C2.07.22 C2.06.26 C2.06.22 C2.06.24 C2.06.25 +C2.07.25 C2.08.23 C2.08.25 C2.08.26 C2.07.23 C2.07.26 C2.07.22 C2.07.24 C2.06.26 +C2.07.26 C2.08.25 C2.08.26 C2.08.27 C2.07.25 C2.07.27 C2.07.24 C2.06.26 C2.06.28 +C2.07.27 C2.08.26 C2.08.27 C2.08.29 C2.07.26 C2.07.29 C2.07.28 C2.06.26 C2.06.28 C2.06.30 +C2.07.28 C2.07.27 C2.07.29 C2.06.31 C2.06.28 C2.06.30 +C2.07.29 C2.08.27 C2.08.29 C2.07.27 C2.07.28 +C2.08.00 C2.08.01 C2.08.06 C2.07.01 C2.07.06 +C2.08.01 C2.08.05 C2.08.02 C2.08.06 C2.08.00 +C2.08.02 C2.08.05 C2.08.01 C2.08.06 +C2.08.03 C2.09.04 C2.08.07 C2.08.04 C2.08.08 +C2.08.04 C2.08.03 C2.08.07 C2.08.08 C2.08.05 C2.08.09 +C2.08.05 C2.08.04 C2.08.08 C2.08.09 C2.08.02 C2.08.01 C2.08.06 C2.08.10 +C2.08.06 C2.08.05 C2.08.09 C2.08.02 C2.08.01 C2.08.10 C2.08.00 C2.07.01 C2.07.06 C2.07.10 +C2.08.07 C2.09.04 C2.09.07 C2.08.03 C2.09.10 C2.08.04 C2.08.08 C2.08.11 +C2.08.08 C2.08.03 C2.08.07 C2.09.10 C2.08.04 C2.08.11 C2.08.05 C2.08.09 C2.08.12 +C2.08.09 C2.08.04 C2.08.08 C2.08.11 C2.08.05 C2.08.12 C2.08.06 C2.08.10 C2.08.13 +C2.08.10 C2.08.05 C2.08.09 C2.08.12 C2.08.06 C2.08.13 C2.07.06 C2.07.10 C2.07.13 +C2.08.11 C2.08.07 C2.09.10 C2.09.13 C2.08.08 C2.08.14 C2.08.09 C2.08.12 C2.08.15 +C2.08.12 C2.08.08 C2.08.11 C2.08.14 C2.08.09 C2.08.15 C2.08.10 C2.08.13 C2.08.16 +C2.08.13 C2.08.09 C2.08.12 C2.08.15 C2.08.10 C2.08.16 C2.07.10 C2.07.13 C2.07.16 +C2.08.14 C2.09.10 C2.09.13 C2.09.16 C2.08.11 C2.08.17 C2.08.12 C2.08.15 C2.08.18 +C2.08.15 C2.08.11 C2.08.14 C2.08.17 C2.08.12 C2.08.18 C2.08.13 C2.08.16 C2.08.19 +C2.08.16 C2.08.12 C2.08.15 C2.08.18 C2.08.13 C2.08.19 C2.07.13 C2.07.16 C2.07.19 +C2.08.17 C2.09.13 C2.09.16 C2.09.18 C2.08.14 C2.09.20 C2.08.15 C2.08.18 C2.08.20 +C2.08.18 C2.08.14 C2.08.17 C2.09.20 C2.08.15 C2.08.20 C2.08.16 C2.08.19 C2.08.21 +C2.08.19 C2.08.15 C2.08.18 C2.08.20 C2.08.16 C2.08.21 C2.07.16 C2.07.19 C2.07.21 +C2.08.20 C2.08.17 C2.09.20 C2.09.22 C2.08.18 C2.08.22 C2.08.19 C2.08.21 C2.08.23 +C2.08.21 C2.08.18 C2.08.20 C2.08.22 C2.08.19 C2.08.23 C2.07.19 C2.07.21 C2.07.23 +C2.08.22 C2.09.20 C2.09.22 C2.09.24 C2.08.20 C2.08.24 C2.08.21 C2.08.23 C2.08.25 +C2.08.23 C2.08.20 C2.08.22 C2.08.24 C2.08.21 C2.08.25 C2.07.21 C2.07.23 C2.07.25 +C2.08.24 C2.09.22 C2.09.24 C2.09.25 C2.08.22 C2.09.26 C2.08.23 C2.08.25 C2.08.26 +C2.08.25 C2.08.22 C2.08.24 C2.09.26 C2.08.23 C2.08.26 C2.07.23 C2.07.25 C2.07.26 +C2.08.26 C2.08.24 C2.09.26 C2.09.28 C2.08.25 C2.08.27 C2.07.25 C2.07.26 C2.07.27 +C2.08.27 C2.09.26 C2.09.28 C2.09.30 C2.08.26 C2.08.28 C2.08.29 C2.07.26 C2.07.27 C2.07.29 +C2.08.28 C2.09.28 C2.09.30 C2.09.31 C2.08.27 C2.08.29 +C2.08.29 C2.08.27 C2.08.28 C2.07.27 C2.07.29 +C2.09.00 C2.10.00 C2.10.06 C2.09.05 +C2.09.01 C2.09.05 C2.09.03 +C2.09.02 C2.09.06 C2.09.04 C2.09.07 +C2.09.03 C2.09.05 C2.09.01 C2.09.06 C2.09.09 +C2.09.04 C2.09.06 C2.09.02 C2.09.07 C2.08.03 C2.08.07 C2.09.10 +C2.09.05 C2.10.06 C2.09.00 C2.09.08 C2.09.01 C2.09.03 C2.09.06 C2.09.09 C2.09.12 +C2.09.06 C2.09.05 C2.09.03 C2.09.09 C2.09.02 C2.09.04 C2.09.07 C2.09.11 +C2.09.07 C2.09.06 C2.09.09 C2.09.02 C2.09.04 C2.09.11 C2.08.07 C2.09.10 C2.09.13 +C2.09.08 C2.10.06 C2.10.09 C2.09.05 C2.10.11 C2.09.09 C2.09.12 C2.09.14 +C2.09.09 C2.09.05 C2.09.08 C2.09.03 C2.09.06 C2.09.12 C2.09.07 C2.09.11 C2.09.15 +C2.09.10 C2.09.04 C2.09.07 C2.09.11 C2.08.07 C2.09.13 C2.08.08 C2.08.11 C2.08.14 +C2.09.11 C2.09.06 C2.09.09 C2.09.12 C2.09.07 C2.09.15 C2.09.10 C2.09.13 C2.09.16 +C2.09.12 C2.09.05 C2.09.08 C2.10.11 C2.09.09 C2.09.14 C2.09.11 C2.09.15 C2.09.17 +C2.09.13 C2.09.07 C2.09.11 C2.09.15 C2.09.10 C2.09.16 C2.08.11 C2.08.14 C2.08.17 +C2.09.14 C2.09.08 C2.10.11 C2.10.14 C2.09.12 C2.10.16 C2.09.15 C2.09.17 C2.09.19 +C2.09.15 C2.09.09 C2.09.12 C2.09.14 C2.09.11 C2.09.17 C2.09.13 C2.09.16 C2.09.18 +C2.09.16 C2.09.11 C2.09.15 C2.09.17 C2.09.13 C2.09.18 C2.08.14 C2.08.17 C2.09.20 +C2.09.17 C2.09.12 C2.09.14 C2.10.16 C2.09.15 C2.09.19 C2.09.16 C2.09.18 C2.09.21 +C2.09.18 C2.09.15 C2.09.17 C2.09.19 C2.09.16 C2.09.21 C2.08.17 C2.09.20 C2.09.22 +C2.09.19 C2.09.14 C2.10.16 C2.10.18 C2.09.17 C2.10.20 C2.09.18 C2.09.21 C2.09.23 +C2.09.20 C2.09.16 C2.09.18 C2.09.21 C2.08.17 C2.09.22 C2.08.18 C2.08.20 C2.08.22 +C2.09.21 C2.09.17 C2.09.19 C2.10.20 C2.09.18 C2.09.23 C2.09.20 C2.09.22 C2.09.24 +C2.09.22 C2.09.18 C2.09.21 C2.09.23 C2.09.20 C2.09.24 C2.08.20 C2.08.22 C2.08.24 +C2.09.23 C2.09.19 C2.10.20 C2.10.22 C2.09.21 C2.10.24 C2.09.22 C2.09.24 C2.09.25 +C2.09.24 C2.09.21 C2.09.23 C2.10.24 C2.09.22 C2.09.25 C2.08.22 C2.08.24 C2.09.26 +C2.09.25 C2.09.23 C2.10.24 C2.10.25 C2.09.24 C2.09.27 C2.08.24 C2.09.26 C2.09.28 +C2.09.26 C2.09.24 C2.09.25 C2.09.27 C2.08.24 C2.09.28 C2.08.25 C2.08.26 C2.08.27 +C2.09.27 C2.10.24 C2.10.25 C2.10.26 C2.09.25 C2.10.27 C2.09.26 C2.09.28 C2.09.29 +C2.09.28 C2.09.25 C2.09.27 C2.10.27 C2.09.26 C2.09.29 C2.09.30 C2.08.26 C2.08.27 C2.08.28 +C2.09.29 C2.09.27 C2.10.27 C2.09.28 C2.10.29 C2.09.30 C2.09.31 +C2.09.30 C2.09.28 C2.09.29 C2.10.29 C2.09.31 C2.08.27 C2.08.28 +C2.09.31 C2.09.29 C2.10.29 C2.10.30 C2.09.30 C2.08.28 +C2.10.00 C2.10.03 C2.10.06 C2.09.00 +C2.10.01 C2.10.02 C2.10.07 C2.10.08 +C2.10.02 C2.11.01 C2.10.04 C2.10.01 C2.10.07 C2.10.08 +C2.10.03 C2.10.05 C2.10.00 C2.10.06 C2.10.09 +C2.10.04 C2.11.01 C2.10.02 C2.10.08 C2.11.06 +C2.10.05 C2.10.07 C2.10.03 C2.10.09 C2.10.10 +C2.10.06 C2.10.03 C2.10.00 C2.10.09 C2.09.00 C2.09.05 C2.09.08 C2.10.11 +C2.10.07 C2.10.02 C2.10.01 C2.10.08 C2.10.05 C2.10.09 C2.10.10 C2.10.12 +C2.10.08 C2.11.01 C2.10.02 C2.10.04 C2.10.01 C2.10.07 C2.11.06 C2.10.10 C2.10.12 C2.10.13 +C2.10.09 C2.10.07 C2.10.05 C2.10.03 C2.10.06 C2.10.10 C2.09.08 C2.10.11 C2.10.14 +C2.10.10 C2.10.07 C2.10.08 C2.10.05 C2.10.09 C2.10.12 C2.10.11 C2.10.14 C2.10.15 +C2.10.11 C2.10.06 C2.10.09 C2.10.10 C2.09.08 C2.10.14 C2.09.12 C2.09.14 C2.10.16 +C2.10.12 C2.10.07 C2.10.08 C2.11.06 C2.10.10 C2.10.13 C2.10.14 C2.10.15 C2.10.17 +C2.10.13 C2.10.08 C2.11.06 C2.11.07 C2.10.12 C2.11.11 C2.10.15 C2.10.17 C2.11.15 +C2.10.14 C2.10.09 C2.10.10 C2.10.12 C2.10.11 C2.10.15 C2.09.14 C2.10.16 C2.10.18 +C2.10.15 C2.10.10 C2.10.12 C2.10.13 C2.10.14 C2.10.17 C2.10.16 C2.10.18 C2.10.19 +C2.10.16 C2.10.11 C2.10.14 C2.10.15 C2.09.14 C2.10.18 C2.09.17 C2.09.19 C2.10.20 +C2.10.17 C2.10.12 C2.10.13 C2.11.11 C2.10.15 C2.11.15 C2.10.18 C2.10.19 C2.10.21 +C2.10.18 C2.10.14 C2.10.15 C2.10.17 C2.10.16 C2.10.19 C2.09.19 C2.10.20 C2.10.22 +C2.10.19 C2.10.15 C2.10.17 C2.11.15 C2.10.18 C2.10.21 C2.10.20 C2.10.22 C2.10.23 +C2.10.20 C2.10.16 C2.10.18 C2.10.19 C2.09.19 C2.10.22 C2.09.21 C2.09.23 C2.10.24 +C2.10.21 C2.10.17 C2.11.15 C2.11.16 C2.10.19 C2.11.19 C2.10.22 C2.10.23 C2.11.22 +C2.10.22 C2.10.18 C2.10.19 C2.10.21 C2.10.20 C2.10.23 C2.09.23 C2.10.24 C2.10.25 +C2.10.23 C2.10.19 C2.10.21 C2.11.19 C2.10.22 C2.11.22 C2.10.24 C2.10.25 C2.10.26 +C2.10.24 C2.10.20 C2.10.22 C2.10.23 C2.09.23 C2.10.25 C2.09.24 C2.09.25 C2.09.27 +C2.10.25 C2.10.22 C2.10.23 C2.11.22 C2.10.24 C2.10.26 C2.09.25 C2.09.27 C2.10.27 +C2.10.26 C2.10.23 C2.11.22 C2.11.23 C2.10.25 C2.11.25 C2.09.27 C2.10.27 C2.10.28 +C2.10.27 C2.10.25 C2.10.26 C2.11.25 C2.09.27 C2.10.28 C2.09.28 C2.09.29 C2.10.29 C2.10.30 +C2.10.28 C2.10.26 C2.11.25 C2.11.26 C2.10.27 C2.11.27 C2.11.29 C2.10.29 C2.10.30 C2.10.31 +C2.10.29 C2.10.27 C2.10.28 C2.09.29 C2.10.30 C2.09.30 C2.09.31 +C2.10.30 C2.10.27 C2.10.28 C2.10.29 C2.10.31 C2.09.31 +C2.10.31 C2.10.28 C2.11.29 C2.11.30 C2.10.30 +C2.11.00 C2.12.00 C2.11.03 C2.11.04 C2.11.05 C2.12.05 +C2.11.01 C2.11.02 C2.10.02 C2.10.04 C2.10.08 C2.11.06 C2.11.07 +C2.11.02 C2.11.01 C2.11.03 C2.11.06 C2.11.07 C2.11.08 +C2.11.03 C2.11.00 C2.11.02 C2.11.04 C2.11.07 C2.11.08 C2.11.09 +C2.11.04 C2.11.00 C2.11.03 C2.11.05 C2.11.08 C2.11.09 C2.11.10 +C2.11.05 C2.11.00 C2.12.00 C2.11.04 C2.12.05 C2.11.09 C2.11.10 C2.12.10 +C2.11.06 C2.11.01 C2.11.02 C2.10.04 C2.10.08 C2.11.07 C2.10.12 C2.10.13 C2.11.11 +C2.11.07 C2.11.01 C2.11.02 C2.11.03 C2.11.06 C2.11.08 C2.10.13 C2.11.11 C2.11.12 +C2.11.08 C2.11.02 C2.11.03 C2.11.04 C2.11.07 C2.11.09 C2.11.11 C2.11.12 C2.11.13 +C2.11.09 C2.11.03 C2.11.04 C2.11.05 C2.11.08 C2.11.10 C2.11.12 C2.11.13 C2.11.14 +C2.11.10 C2.11.04 C2.11.05 C2.12.05 C2.11.09 C2.12.10 C2.11.13 C2.11.14 C2.12.14 +C2.11.11 C2.11.06 C2.11.07 C2.11.08 C2.10.13 C2.11.12 C2.10.17 C2.11.15 C2.11.16 +C2.11.12 C2.11.07 C2.11.08 C2.11.09 C2.11.11 C2.11.13 C2.11.15 C2.11.16 C2.11.17 +C2.11.13 C2.11.08 C2.11.09 C2.11.10 C2.11.12 C2.11.14 C2.11.16 C2.11.17 C2.11.18 +C2.11.14 C2.11.09 C2.11.10 C2.12.10 C2.11.13 C2.12.14 C2.11.17 C2.11.18 C2.12.18 +C2.11.15 C2.10.13 C2.11.11 C2.11.12 C2.10.17 C2.11.16 C2.10.19 C2.10.21 C2.11.19 +C2.11.16 C2.11.11 C2.11.12 C2.11.13 C2.11.15 C2.11.17 C2.10.21 C2.11.19 C2.11.20 +C2.11.17 C2.11.12 C2.11.13 C2.11.14 C2.11.16 C2.11.18 C2.11.19 C2.11.20 C2.11.21 +C2.11.18 C2.11.13 C2.11.14 C2.12.14 C2.11.17 C2.12.18 C2.11.20 C2.11.21 C2.12.21 +C2.11.19 C2.11.15 C2.11.16 C2.11.17 C2.10.21 C2.11.20 C2.10.23 C2.11.22 C2.11.23 +C2.11.20 C2.11.16 C2.11.17 C2.11.18 C2.11.19 C2.11.21 C2.11.22 C2.11.23 C2.11.24 +C2.11.21 C2.11.17 C2.11.18 C2.12.18 C2.11.20 C2.12.21 C2.11.23 C2.11.24 C2.12.24 +C2.11.22 C2.10.21 C2.11.19 C2.11.20 C2.10.23 C2.11.23 C2.10.25 C2.10.26 C2.11.25 +C2.11.23 C2.11.19 C2.11.20 C2.11.21 C2.11.22 C2.11.24 C2.10.26 C2.11.25 C2.11.26 +C2.11.24 C2.11.20 C2.11.21 C2.12.21 C2.11.23 C2.12.24 C2.11.25 C2.11.26 C2.12.26 +C2.11.25 C2.11.22 C2.11.23 C2.11.24 C2.10.26 C2.11.26 C2.10.27 C2.10.28 C2.11.27 +C2.11.26 C2.11.23 C2.11.24 C2.12.24 C2.11.25 C2.12.26 C2.10.28 C2.11.27 C2.11.28 C2.12.28 +C2.11.27 C2.11.25 C2.11.26 C2.10.28 C2.11.28 C2.11.29 C2.11.30 +C2.11.28 C2.11.26 C2.12.26 C2.11.27 C2.12.28 C2.11.29 C2.11.30 C2.12.30 +C2.11.29 C2.10.28 C2.11.27 C2.11.28 C2.11.30 C2.10.31 +C2.11.30 C2.11.27 C2.11.28 C2.12.28 C2.11.29 C2.12.30 C2.10.31 +C2.12.00 C2.11.00 C2.11.05 C2.12.05 C2.12.04 C2.12.03 +C2.12.01 C2.12.02 C2.13.04 C2.13.02 C2.12.07 C2.12.06 C2.13.08 +C2.12.02 C2.12.03 C2.12.01 C2.12.08 C2.12.07 C2.12.06 +C2.12.03 C2.12.00 C2.12.04 C2.12.02 C2.12.09 C2.12.08 C2.12.07 +C2.12.04 C2.12.00 C2.12.05 C2.12.03 C2.12.10 C2.12.09 C2.12.08 +C2.12.05 C2.11.00 C2.12.00 C2.11.05 C2.12.04 C2.11.10 C2.12.10 C2.12.09 +C2.12.06 C2.12.02 C2.12.01 C2.13.04 C2.12.07 C2.13.08 C2.12.11 C2.13.13 C2.13.12 +C2.12.07 C2.12.03 C2.12.02 C2.12.01 C2.12.08 C2.12.06 C2.12.12 C2.12.11 C2.13.13 +C2.12.08 C2.12.04 C2.12.03 C2.12.02 C2.12.09 C2.12.07 C2.12.13 C2.12.12 C2.12.11 +C2.12.09 C2.12.05 C2.12.04 C2.12.03 C2.12.10 C2.12.08 C2.12.14 C2.12.13 C2.12.12 +C2.12.10 C2.11.05 C2.12.05 C2.12.04 C2.11.10 C2.12.09 C2.11.14 C2.12.14 C2.12.13 +C2.12.11 C2.12.08 C2.12.07 C2.12.06 C2.12.12 C2.13.13 C2.12.16 C2.12.15 C2.13.17 +C2.12.12 C2.12.09 C2.12.08 C2.12.07 C2.12.13 C2.12.11 C2.12.17 C2.12.16 C2.12.15 +C2.12.13 C2.12.10 C2.12.09 C2.12.08 C2.12.14 C2.12.12 C2.12.18 C2.12.17 C2.12.16 +C2.12.14 C2.11.10 C2.12.10 C2.12.09 C2.11.14 C2.12.13 C2.11.18 C2.12.18 C2.12.17 +C2.12.15 C2.12.12 C2.12.11 C2.13.13 C2.12.16 C2.13.17 C2.12.19 C2.13.21 C2.13.19 +C2.12.16 C2.12.13 C2.12.12 C2.12.11 C2.12.17 C2.12.15 C2.12.20 C2.12.19 C2.13.21 +C2.12.17 C2.12.14 C2.12.13 C2.12.12 C2.12.18 C2.12.16 C2.12.21 C2.12.20 C2.12.19 +C2.12.18 C2.11.14 C2.12.14 C2.12.13 C2.11.18 C2.12.17 C2.11.21 C2.12.21 C2.12.20 +C2.12.19 C2.12.17 C2.12.16 C2.12.15 C2.12.20 C2.13.21 C2.12.23 C2.12.22 C2.13.23 +C2.12.20 C2.12.18 C2.12.17 C2.12.16 C2.12.21 C2.12.19 C2.12.24 C2.12.23 C2.12.22 +C2.12.21 C2.11.18 C2.12.18 C2.12.17 C2.11.21 C2.12.20 C2.11.24 C2.12.24 C2.12.23 +C2.12.22 C2.12.20 C2.12.19 C2.13.21 C2.12.23 C2.13.23 C2.12.25 C2.13.26 C2.13.25 +C2.12.23 C2.12.21 C2.12.20 C2.12.19 C2.12.24 C2.12.22 C2.12.26 C2.12.25 C2.13.26 +C2.12.24 C2.11.21 C2.12.21 C2.12.20 C2.11.24 C2.12.23 C2.11.26 C2.12.26 C2.12.25 +C2.12.25 C2.12.24 C2.12.23 C2.12.22 C2.12.26 C2.13.26 C2.12.27 C2.13.28 C2.13.27 +C2.12.26 C2.11.24 C2.12.24 C2.12.23 C2.11.26 C2.12.25 C2.11.28 C2.12.28 C2.12.27 C2.13.28 +C2.12.27 C2.12.26 C2.12.25 C2.12.28 C2.13.28 C2.12.30 C2.12.29 +C2.12.28 C2.11.26 C2.12.26 C2.11.28 C2.12.27 C2.11.30 C2.12.30 C2.12.29 +C2.12.29 C2.12.28 C2.12.27 C2.13.28 C2.12.30 C2.13.31 +C2.12.30 C2.11.28 C2.12.28 C2.12.27 C2.11.30 C2.12.29 +C2.13.00 C2.13.02 C2.13.08 C2.13.07 +C2.13.01 C2.13.06 C2.14.00 C2.14.03 +C2.13.02 C2.12.01 C2.13.04 C2.13.00 C2.13.08 C2.13.07 +C2.13.03 C2.13.05 C2.13.09 C2.13.06 +C2.13.04 C2.12.01 C2.13.02 C2.12.06 C2.13.08 +C2.13.05 C2.13.07 C2.13.03 C2.13.10 C2.13.09 +C2.13.06 C2.13.03 C2.13.09 C2.13.01 C2.14.03 C2.13.11 C2.14.08 +C2.13.07 C2.13.02 C2.13.00 C2.13.08 C2.13.05 C2.13.12 C2.13.10 C2.13.09 +C2.13.08 C2.12.01 C2.13.04 C2.13.02 C2.13.00 C2.12.06 C2.13.07 C2.13.13 C2.13.12 C2.13.10 +C2.13.09 C2.13.07 C2.13.05 C2.13.03 C2.13.10 C2.13.06 C2.13.14 C2.13.11 C2.14.08 +C2.13.10 C2.13.08 C2.13.07 C2.13.05 C2.13.12 C2.13.09 C2.13.15 C2.13.14 C2.13.11 +C2.13.11 C2.13.10 C2.13.09 C2.13.06 C2.13.14 C2.14.08 C2.13.16 C2.14.14 C2.14.12 +C2.13.12 C2.12.06 C2.13.08 C2.13.07 C2.13.13 C2.13.10 C2.13.17 C2.13.15 C2.13.14 +C2.13.13 C2.12.07 C2.12.06 C2.13.08 C2.12.11 C2.13.12 C2.12.15 C2.13.17 C2.13.15 +C2.13.14 C2.13.12 C2.13.10 C2.13.09 C2.13.15 C2.13.11 C2.13.18 C2.13.16 C2.14.14 +C2.13.15 C2.13.13 C2.13.12 C2.13.10 C2.13.17 C2.13.14 C2.13.19 C2.13.18 C2.13.16 +C2.13.16 C2.13.15 C2.13.14 C2.13.11 C2.13.18 C2.14.14 C2.13.20 C2.14.19 C2.14.17 +C2.13.17 C2.12.11 C2.13.13 C2.13.12 C2.12.15 C2.13.15 C2.13.21 C2.13.19 C2.13.18 +C2.13.18 C2.13.17 C2.13.15 C2.13.14 C2.13.19 C2.13.16 C2.13.22 C2.13.20 C2.14.19 +C2.13.19 C2.12.15 C2.13.17 C2.13.15 C2.13.21 C2.13.18 C2.13.23 C2.13.22 C2.13.20 +C2.13.20 C2.13.19 C2.13.18 C2.13.16 C2.13.22 C2.14.19 C2.13.24 C2.14.23 C2.14.21 +C2.13.21 C2.12.16 C2.12.15 C2.13.17 C2.12.19 C2.13.19 C2.12.22 C2.13.23 C2.13.22 +C2.13.22 C2.13.21 C2.13.19 C2.13.18 C2.13.23 C2.13.20 C2.13.25 C2.13.24 C2.14.23 +C2.13.23 C2.12.19 C2.13.21 C2.13.19 C2.12.22 C2.13.22 C2.13.26 C2.13.25 C2.13.24 +C2.13.24 C2.13.23 C2.13.22 C2.13.20 C2.13.25 C2.14.23 C2.14.27 C2.14.25 C2.14.24 +C2.13.25 C2.12.22 C2.13.23 C2.13.22 C2.13.26 C2.13.24 C2.13.27 C2.14.27 C2.14.25 +C2.13.26 C2.12.23 C2.12.22 C2.13.23 C2.12.25 C2.13.25 C2.13.28 C2.13.27 C2.14.27 +C2.13.27 C2.12.25 C2.13.26 C2.13.25 C2.13.28 C2.14.27 C2.13.30 C2.13.29 C2.14.28 +C2.13.28 C2.12.26 C2.12.25 C2.13.26 C2.12.27 C2.13.27 C2.12.29 C2.13.31 C2.13.30 +C2.13.29 C2.13.27 C2.14.27 C2.13.30 C2.14.28 C2.14.31 C2.14.29 +C2.13.30 C2.13.28 C2.13.27 C2.13.31 C2.13.29 C2.14.31 C2.14.29 +C2.13.31 C2.13.28 C2.12.29 C2.13.30 +C2.14.00 C2.13.01 C2.14.03 C2.14.05 +C2.14.01 C2.14.05 C2.14.06 +C2.14.02 C2.14.06 C2.14.07 C2.14.04 +C2.14.03 C2.13.06 C2.13.01 C2.14.00 C2.14.08 C2.14.05 +C2.14.04 C2.14.06 C2.14.02 C2.14.07 C2.15.03 C2.14.10 C2.15.07 +C2.14.05 C2.14.00 C2.14.03 C2.14.08 C2.14.01 C2.14.12 C2.14.09 C2.14.06 +C2.14.06 C2.14.05 C2.14.01 C2.14.09 C2.14.02 C2.14.11 C2.14.07 C2.14.04 +C2.14.07 C2.14.09 C2.14.06 C2.14.02 C2.14.11 C2.14.04 C2.14.13 C2.14.10 C2.15.07 +C2.14.08 C2.13.09 C2.13.06 C2.14.03 C2.13.11 C2.14.05 C2.14.14 C2.14.12 C2.14.09 +C2.14.09 C2.14.08 C2.14.05 C2.14.12 C2.14.06 C2.14.15 C2.14.11 C2.14.07 +C2.14.10 C2.14.11 C2.14.07 C2.14.04 C2.14.13 C2.15.07 C2.15.14 C2.15.11 C2.15.08 +C2.14.11 C2.14.12 C2.14.09 C2.14.06 C2.14.15 C2.14.07 C2.14.16 C2.14.13 C2.14.10 +C2.14.12 C2.13.11 C2.14.08 C2.14.05 C2.14.14 C2.14.09 C2.14.17 C2.14.15 C2.14.11 +C2.14.13 C2.14.15 C2.14.11 C2.14.07 C2.14.16 C2.14.10 C2.15.17 C2.15.14 C2.15.11 +C2.14.14 C2.13.14 C2.13.11 C2.14.08 C2.13.16 C2.14.12 C2.14.19 C2.14.17 C2.14.15 +C2.14.15 C2.14.14 C2.14.12 C2.14.09 C2.14.17 C2.14.11 C2.14.18 C2.14.16 C2.14.13 +C2.14.16 C2.14.17 C2.14.15 C2.14.11 C2.14.18 C2.14.13 C2.14.20 C2.15.17 C2.15.14 +C2.14.17 C2.13.16 C2.14.14 C2.14.12 C2.14.19 C2.14.15 C2.14.21 C2.14.18 C2.14.16 +C2.14.18 C2.14.19 C2.14.17 C2.14.15 C2.14.21 C2.14.16 C2.14.22 C2.14.20 C2.15.17 +C2.14.19 C2.13.18 C2.13.16 C2.14.14 C2.13.20 C2.14.17 C2.14.23 C2.14.21 C2.14.18 +C2.14.20 C2.14.21 C2.14.18 C2.14.16 C2.14.22 C2.15.17 C2.15.22 C2.15.20 C2.15.18 +C2.14.21 C2.13.20 C2.14.19 C2.14.17 C2.14.23 C2.14.18 C2.14.24 C2.14.22 C2.14.20 +C2.14.22 C2.14.23 C2.14.21 C2.14.18 C2.14.24 C2.14.20 C2.15.24 C2.15.22 C2.15.20 +C2.14.23 C2.13.22 C2.13.20 C2.14.19 C2.13.24 C2.14.21 C2.14.25 C2.14.24 C2.14.22 +C2.14.24 C2.13.24 C2.14.23 C2.14.21 C2.14.25 C2.14.22 C2.14.26 C2.15.24 C2.15.22 +C2.14.25 C2.13.25 C2.13.24 C2.14.23 C2.14.27 C2.14.24 C2.14.28 C2.14.26 C2.15.24 +C2.14.26 C2.14.27 C2.14.25 C2.14.24 C2.14.28 C2.15.24 C2.15.27 C2.15.26 C2.15.25 +C2.14.27 C2.13.26 C2.13.25 C2.13.24 C2.13.27 C2.14.25 C2.13.29 C2.14.28 C2.14.26 +C2.14.28 C2.13.27 C2.14.27 C2.14.25 C2.13.29 C2.14.26 C2.14.29 C2.14.30 C2.15.28 C2.15.27 C2.15.26 +C2.14.29 C2.13.30 C2.13.29 C2.14.28 C2.14.31 C2.14.30 +C2.14.30 C2.14.28 C2.14.31 C2.14.29 C2.15.28 C2.15.27 +C2.14.31 C2.13.30 C2.13.29 C2.14.29 C2.14.30 C2.15.28 +C2.15.00 C2.15.05 C2.15.06 C2.15.02 +C2.15.01 C2.15.06 C2.15.02 C2.00.06 C2.00.02 +C2.15.02 C2.15.05 C2.15.00 C2.15.06 C2.15.01 +C2.15.03 C2.14.04 C2.15.07 C2.15.08 C2.15.04 +C2.15.04 C2.15.03 C2.15.07 C2.15.08 C2.15.09 C2.15.05 +C2.15.05 C2.15.08 C2.15.04 C2.15.09 C2.15.00 C2.15.10 C2.15.06 C2.15.02 +C2.15.06 C2.15.09 C2.15.05 C2.15.00 C2.15.10 C2.15.02 C2.15.01 C2.00.10 C2.00.06 C2.00.02 +C2.15.07 C2.14.07 C2.14.04 C2.15.03 C2.14.10 C2.15.11 C2.15.08 C2.15.04 +C2.15.08 C2.15.03 C2.14.10 C2.15.07 C2.15.11 C2.15.04 C2.15.12 C2.15.09 C2.15.05 +C2.15.09 C2.15.11 C2.15.08 C2.15.04 C2.15.12 C2.15.05 C2.15.13 C2.15.10 C2.15.06 +C2.15.10 C2.15.12 C2.15.09 C2.15.05 C2.15.13 C2.15.06 C2.00.13 C2.00.10 C2.00.06 +C2.15.11 C2.14.13 C2.14.10 C2.15.07 C2.15.14 C2.15.08 C2.15.15 C2.15.12 C2.15.09 +C2.15.12 C2.15.14 C2.15.11 C2.15.08 C2.15.15 C2.15.09 C2.15.16 C2.15.13 C2.15.10 +C2.15.13 C2.15.15 C2.15.12 C2.15.09 C2.15.16 C2.15.10 C2.00.16 C2.00.13 C2.00.10 +C2.15.14 C2.14.16 C2.14.13 C2.14.10 C2.15.17 C2.15.11 C2.15.18 C2.15.15 C2.15.12 +C2.15.15 C2.15.17 C2.15.14 C2.15.11 C2.15.18 C2.15.12 C2.15.19 C2.15.16 C2.15.13 +C2.15.16 C2.15.18 C2.15.15 C2.15.12 C2.15.19 C2.15.13 C2.00.19 C2.00.16 C2.00.13 +C2.15.17 C2.14.18 C2.14.16 C2.14.13 C2.14.20 C2.15.14 C2.15.20 C2.15.18 C2.15.15 +C2.15.18 C2.14.20 C2.15.17 C2.15.14 C2.15.20 C2.15.15 C2.15.21 C2.15.19 C2.15.16 +C2.15.19 C2.15.20 C2.15.18 C2.15.15 C2.15.21 C2.15.16 C2.00.21 C2.00.19 C2.00.16 +C2.15.20 C2.14.22 C2.14.20 C2.15.17 C2.15.22 C2.15.18 C2.15.23 C2.15.21 C2.15.19 +C2.15.21 C2.15.22 C2.15.20 C2.15.18 C2.15.23 C2.15.19 C2.00.23 C2.00.21 C2.00.19 +C2.15.22 C2.14.24 C2.14.22 C2.14.20 C2.15.24 C2.15.20 C2.15.25 C2.15.23 C2.15.21 +C2.15.23 C2.15.24 C2.15.22 C2.15.20 C2.15.25 C2.15.21 C2.00.25 C2.00.23 C2.00.21 +C2.15.24 C2.14.25 C2.14.24 C2.14.22 C2.14.26 C2.15.22 C2.15.26 C2.15.25 C2.15.23 +C2.15.25 C2.14.26 C2.15.24 C2.15.22 C2.15.26 C2.15.23 C2.00.26 C2.00.25 C2.00.23 +C2.15.26 C2.14.28 C2.14.26 C2.15.24 C2.15.27 C2.15.25 C2.00.27 C2.00.26 C2.00.25 +C2.15.27 C2.14.28 C2.14.26 C2.14.30 C2.15.28 C2.15.26 C2.15.29 C2.00.29 C2.00.27 C2.00.26 +C2.15.28 C2.14.28 C2.14.31 C2.14.30 C2.15.27 C2.15.29 +C2.15.29 C2.15.28 C2.15.27 C2.00.29 C2.00.27 +C3.00.00 C3.15.03 C3.15.00 C3.00.03 C3.00.02 +C3.00.01 C3.00.05 C3.00.02 C3.00.04 C3.01.03 C3.01.01 +C3.00.02 C3.00.06 C3.00.03 C3.00.00 C3.00.05 C3.00.04 C3.00.01 +C3.00.03 C3.15.06 C3.15.03 C3.15.00 C3.00.06 C3.00.00 C3.00.05 C3.00.02 +C3.00.04 C3.00.08 C3.00.05 C3.00.02 C3.00.07 C3.00.01 C3.01.05 C3.01.03 +C3.00.05 C3.00.09 C3.00.06 C3.00.03 C3.00.08 C3.00.02 C3.00.07 C3.00.04 C3.00.01 +C3.00.06 C3.15.09 C3.15.06 C3.15.03 C3.00.09 C3.00.03 C3.00.08 C3.00.05 C3.00.02 +C3.00.07 C3.00.10 C3.00.08 C3.00.05 C3.01.08 C3.00.04 C3.01.07 C3.01.05 C3.01.03 +C3.00.08 C3.00.11 C3.00.09 C3.00.06 C3.00.10 C3.00.05 C3.01.08 C3.00.07 C3.00.04 +C3.00.09 C3.15.11 C3.15.09 C3.15.06 C3.00.11 C3.00.06 C3.00.10 C3.00.08 C3.00.05 +C3.00.10 C3.00.13 C3.00.11 C3.00.09 C3.00.12 C3.00.08 C3.01.10 C3.01.08 C3.00.07 +C3.00.11 C3.15.13 C3.15.11 C3.15.09 C3.00.13 C3.00.09 C3.00.12 C3.00.10 C3.00.08 +C3.00.12 C3.00.14 C3.00.13 C3.00.11 C3.01.12 C3.00.10 C3.01.11 C3.01.10 C3.01.08 +C3.00.13 C3.15.14 C3.15.13 C3.15.11 C3.00.14 C3.00.11 C3.01.12 C3.00.12 C3.00.10 +C3.00.14 C3.15.14 C3.15.13 C3.15.15 C3.00.15 C3.00.13 C3.01.14 C3.01.12 C3.00.12 +C3.00.15 C3.15.14 C3.15.15 C3.00.14 C3.01.14 +C3.01.00 C3.01.01 C3.01.04 C3.01.02 C3.02.00 +C3.01.01 C3.00.01 C3.01.05 C3.01.03 C3.01.04 C3.01.00 +C3.01.02 C3.01.06 C3.01.04 C3.01.00 C3.02.05 C3.02.03 C3.02.00 +C3.01.03 C3.00.07 C3.00.04 C3.00.01 C3.01.05 C3.01.01 C3.01.04 +C3.01.04 C3.01.07 C3.01.05 C3.01.03 C3.01.01 C3.01.06 C3.01.00 C3.02.05 C3.01.02 +C3.01.05 C3.01.08 C3.00.07 C3.00.04 C3.01.07 C3.01.03 C3.01.01 C3.01.06 C3.01.04 +C3.01.06 C3.01.09 C3.01.07 C3.01.05 C3.02.09 C3.01.04 C3.02.07 C3.02.05 C3.01.02 +C3.01.07 C3.01.10 C3.01.08 C3.00.07 C3.01.09 C3.01.05 C3.02.09 C3.01.06 C3.01.04 +C3.01.08 C3.00.12 C3.00.10 C3.00.08 C3.01.10 C3.00.07 C3.01.09 C3.01.07 C3.01.05 +C3.01.09 C3.01.11 C3.01.10 C3.01.08 C3.02.11 C3.01.07 C3.02.10 C3.02.09 C3.01.06 +C3.01.10 C3.01.12 C3.00.12 C3.00.10 C3.01.11 C3.01.08 C3.02.11 C3.01.09 C3.01.07 +C3.01.11 C3.01.12 C3.00.12 C3.01.13 C3.02.13 C3.01.10 C3.02.12 C3.02.11 C3.01.09 +C3.01.12 C3.00.14 C3.00.13 C3.01.14 C3.00.12 C3.01.13 C3.02.13 C3.01.11 C3.01.10 +C3.01.13 C3.01.14 C3.01.12 C3.01.15 C3.02.14 C3.02.13 C3.01.11 +C3.01.14 C3.00.15 C3.00.14 C3.01.12 C3.01.15 C3.01.13 +C3.01.15 C3.01.14 C3.01.13 C3.02.14 +C3.02.00 C3.01.00 C3.02.05 C3.01.02 C3.02.03 C3.02.01 +C3.02.01 C3.02.04 C3.02.03 C3.02.00 C3.02.02 +C3.02.02 C3.02.06 C3.02.04 C3.02.03 C3.03.05 C3.02.01 C3.03.02 +C3.02.03 C3.02.07 C3.02.05 C3.01.02 C3.02.04 C3.02.00 C3.02.02 C3.02.01 +C3.02.04 C3.02.08 C3.02.07 C3.02.05 C3.02.06 C3.02.03 C3.03.05 C3.02.02 C3.02.01 +C3.02.05 C3.02.09 C3.01.06 C3.01.04 C3.02.07 C3.01.02 C3.02.04 C3.02.03 C3.02.00 +C3.02.06 C3.03.10 C3.02.08 C3.02.07 C3.03.08 C3.02.04 C3.03.06 C3.03.05 C3.02.02 +C3.02.07 C3.02.10 C3.02.09 C3.01.06 C3.02.08 C3.02.05 C3.02.06 C3.02.04 C3.02.03 +C3.02.08 C3.03.12 C3.02.10 C3.02.09 C3.03.10 C3.02.07 C3.03.08 C3.02.06 C3.02.04 +C3.02.09 C3.02.11 C3.01.09 C3.01.07 C3.02.10 C3.01.06 C3.02.08 C3.02.07 C3.02.05 +C3.02.10 C3.02.12 C3.02.11 C3.01.09 C3.03.12 C3.02.09 C3.03.10 C3.02.08 C3.02.07 +C3.02.11 C3.02.13 C3.01.11 C3.01.10 C3.02.12 C3.01.09 C3.03.12 C3.02.10 C3.02.09 +C3.02.12 C3.03.15 C3.02.13 C3.01.11 C3.03.14 C3.02.11 C3.03.13 C3.03.12 C3.02.10 +C3.02.13 C3.01.12 C3.01.13 C3.02.14 C3.03.15 C3.01.11 C3.03.14 C3.02.12 C3.02.11 +C3.02.14 C3.01.15 C3.01.13 C3.03.15 C3.02.13 +C3.03.00 C3.03.04 C3.03.03 C3.03.01 +C3.03.01 C3.04.04 C3.03.04 C3.04.01 C3.03.00 +C3.03.02 C3.03.06 C3.03.05 C3.02.02 C3.03.03 +C3.03.03 C3.03.07 C3.03.06 C3.03.05 C3.03.04 C3.03.02 C3.03.00 +C3.03.04 C3.04.07 C3.03.07 C3.03.06 C3.04.04 C3.03.03 C3.04.01 C3.03.01 C3.03.00 +C3.03.05 C3.03.08 C3.02.06 C3.02.04 C3.03.06 C3.02.02 C3.03.03 C3.03.02 +C3.03.06 C3.03.09 C3.03.08 C3.02.06 C3.03.07 C3.03.05 C3.03.04 C3.03.03 C3.03.02 +C3.03.07 C3.04.09 C3.03.09 C3.03.08 C3.04.07 C3.03.06 C3.04.04 C3.03.04 C3.03.03 +C3.03.08 C3.03.11 C3.03.10 C3.02.08 C3.03.09 C3.02.06 C3.03.07 C3.03.06 C3.03.05 +C3.03.09 C3.04.11 C3.03.11 C3.03.10 C3.04.09 C3.03.08 C3.04.07 C3.03.07 C3.03.06 +C3.03.10 C3.03.13 C3.03.12 C3.02.10 C3.03.11 C3.02.08 C3.03.09 C3.03.08 C3.02.06 +C3.03.11 C3.04.13 C3.03.13 C3.03.12 C3.04.11 C3.03.10 C3.04.09 C3.03.09 C3.03.08 +C3.03.12 C3.03.14 C3.02.12 C3.02.11 C3.03.13 C3.02.10 C3.03.11 C3.03.10 C3.02.08 +C3.03.13 C3.04.14 C3.03.14 C3.02.12 C3.04.13 C3.03.12 C3.04.11 C3.03.11 C3.03.10 +C3.03.14 C3.04.15 C3.03.15 C3.02.13 C3.04.14 C3.02.12 C3.04.13 C3.03.13 C3.03.12 +C3.03.15 C3.02.14 C3.04.15 C3.02.13 C3.04.14 C3.03.14 C3.02.12 +C3.04.00 C3.04.03 C3.04.04 C3.04.01 +C3.04.01 C3.04.04 C3.03.04 C3.04.00 C3.03.01 +C3.04.02 C3.04.05 C3.04.06 C3.05.01 C3.04.03 +C3.04.03 C3.04.05 C3.04.06 C3.04.07 C3.04.02 C3.04.04 C3.04.00 +C3.04.04 C3.04.06 C3.04.07 C3.03.07 C3.04.03 C3.03.04 C3.04.00 C3.04.01 C3.03.01 +C3.04.05 C3.05.04 C3.05.06 C3.04.08 C3.05.02 C3.04.06 C3.05.01 C3.04.02 C3.04.03 +C3.04.06 C3.05.06 C3.04.08 C3.04.09 C3.04.05 C3.04.07 C3.04.02 C3.04.03 C3.04.04 +C3.04.07 C3.04.08 C3.04.09 C3.03.09 C3.04.06 C3.03.07 C3.04.03 C3.04.04 C3.03.04 +C3.04.08 C3.05.08 C3.04.10 C3.04.11 C3.05.06 C3.04.09 C3.04.05 C3.04.06 C3.04.07 +C3.04.09 C3.04.10 C3.04.11 C3.03.11 C3.04.08 C3.03.09 C3.04.06 C3.04.07 C3.03.07 +C3.04.10 C3.05.10 C3.04.12 C3.04.13 C3.05.08 C3.04.11 C3.05.06 C3.04.08 C3.04.09 +C3.04.11 C3.04.12 C3.04.13 C3.03.13 C3.04.10 C3.03.11 C3.04.08 C3.04.09 C3.03.09 +C3.04.12 C3.05.11 C3.05.12 C3.04.14 C3.05.10 C3.04.13 C3.05.08 C3.04.10 C3.04.11 +C3.04.13 C3.05.12 C3.04.14 C3.03.14 C3.04.12 C3.03.13 C3.04.10 C3.04.11 C3.03.11 +C3.04.14 C3.05.13 C3.04.15 C3.03.15 C3.05.12 C3.03.14 C3.04.12 C3.04.13 C3.03.13 +C3.04.15 C3.05.15 C3.05.13 C3.03.15 C3.05.12 C3.04.14 C3.03.14 +C3.05.00 C3.06.01 C3.06.03 C3.05.05 C3.05.03 C3.05.02 +C3.05.01 C3.05.02 C3.04.05 C3.04.02 +C3.05.02 C3.05.00 C3.05.03 C3.05.04 C3.05.06 C3.04.05 C3.05.01 +C3.05.03 C3.06.03 C3.05.05 C3.05.07 C3.05.00 C3.05.04 C3.05.02 +C3.05.04 C3.05.05 C3.05.07 C3.05.08 C3.05.03 C3.05.06 C3.05.02 C3.04.05 +C3.05.05 C3.06.05 C3.06.07 C3.05.09 C3.06.03 C3.05.07 C3.05.00 C3.05.03 C3.05.04 +C3.05.06 C3.05.07 C3.05.08 C3.04.10 C3.05.04 C3.04.08 C3.05.02 C3.04.05 C3.04.06 +C3.05.07 C3.06.07 C3.05.09 C3.05.10 C3.05.05 C3.05.08 C3.05.03 C3.05.04 C3.05.06 +C3.05.08 C3.05.09 C3.05.10 C3.04.12 C3.05.07 C3.04.10 C3.05.04 C3.05.06 C3.04.08 +C3.05.09 C3.06.08 C3.06.10 C3.05.11 C3.06.07 C3.05.10 C3.05.05 C3.05.07 C3.05.08 +C3.05.10 C3.06.10 C3.05.11 C3.05.12 C3.05.09 C3.04.12 C3.05.07 C3.05.08 C3.04.10 +C3.05.11 C3.06.11 C3.06.12 C3.05.13 C3.06.10 C3.05.12 C3.05.09 C3.05.10 C3.04.12 +C3.05.12 C3.06.12 C3.05.13 C3.04.15 C3.05.11 C3.04.14 C3.05.10 C3.04.12 C3.04.13 +C3.05.13 C3.06.13 C3.06.14 C3.05.14 C3.05.15 C3.06.12 C3.04.15 C3.05.11 C3.05.12 C3.04.14 +C3.05.14 C3.06.15 C3.06.14 C3.05.15 C3.05.13 +C3.05.15 C3.05.14 C3.05.13 C3.04.15 +C3.06.00 C3.07.01 C3.06.04 C3.06.02 +C3.06.01 C3.06.02 C3.06.05 C3.06.03 C3.05.00 +C3.06.02 C3.06.04 C3.06.06 C3.06.00 C3.06.05 C3.06.01 +C3.06.03 C3.06.05 C3.06.07 C3.06.01 C3.05.05 C3.05.00 C3.05.03 +C3.06.04 C3.07.01 C3.07.04 C3.07.07 C3.06.06 C3.06.00 C3.06.02 C3.06.05 +C3.06.05 C3.06.04 C3.06.06 C3.06.08 C3.06.02 C3.06.07 C3.06.01 C3.06.03 C3.05.05 +C3.06.06 C3.07.04 C3.07.07 C3.06.09 C3.06.04 C3.06.08 C3.06.02 C3.06.05 C3.06.07 +C3.06.07 C3.06.06 C3.06.08 C3.06.10 C3.06.05 C3.05.09 C3.06.03 C3.05.05 C3.05.07 +C3.06.08 C3.07.07 C3.06.09 C3.06.11 C3.06.06 C3.06.10 C3.06.05 C3.06.07 C3.05.09 +C3.06.09 C3.07.08 C3.07.10 C3.07.12 C3.07.07 C3.06.11 C3.06.06 C3.06.08 C3.06.10 +C3.06.10 C3.06.09 C3.06.11 C3.06.12 C3.06.08 C3.05.11 C3.06.07 C3.05.09 C3.05.10 +C3.06.11 C3.07.10 C3.07.12 C3.06.13 C3.06.09 C3.06.12 C3.06.08 C3.06.10 C3.05.11 +C3.06.12 C3.07.12 C3.06.13 C3.06.14 C3.06.11 C3.05.13 C3.06.10 C3.05.11 C3.05.12 +C3.06.13 C3.07.13 C3.07.14 C3.06.15 C3.07.12 C3.06.14 C3.06.11 C3.06.12 C3.05.13 +C3.06.14 C3.06.15 C3.06.13 C3.05.14 C3.06.12 C3.05.13 +C3.06.15 C3.07.14 C3.07.15 C3.06.13 C3.06.14 C3.05.14 +C3.07.00 C3.08.00 C3.08.03 C3.07.03 C3.07.02 +C3.07.01 C3.07.02 C3.07.05 C3.07.04 C3.06.04 C3.06.00 +C3.07.02 C3.07.00 C3.07.03 C3.07.06 C3.07.05 C3.07.01 C3.07.04 +C3.07.03 C3.08.00 C3.08.03 C3.08.06 C3.07.00 C3.07.06 C3.07.02 C3.07.05 +C3.07.04 C3.07.02 C3.07.05 C3.07.08 C3.07.01 C3.07.07 C3.06.04 C3.06.06 +C3.07.05 C3.07.03 C3.07.06 C3.07.09 C3.07.02 C3.07.08 C3.07.01 C3.07.04 C3.07.07 +C3.07.06 C3.08.03 C3.08.06 C3.08.09 C3.07.03 C3.07.09 C3.07.02 C3.07.05 C3.07.08 +C3.07.07 C3.07.05 C3.07.08 C3.07.10 C3.07.04 C3.06.09 C3.06.04 C3.06.06 C3.06.08 +C3.07.08 C3.07.06 C3.07.09 C3.07.11 C3.07.05 C3.07.10 C3.07.04 C3.07.07 C3.06.09 +C3.07.09 C3.08.06 C3.08.09 C3.08.11 C3.07.06 C3.07.11 C3.07.05 C3.07.08 C3.07.10 +C3.07.10 C3.07.09 C3.07.11 C3.07.13 C3.07.08 C3.07.12 C3.07.07 C3.06.09 C3.06.11 +C3.07.11 C3.08.09 C3.08.11 C3.08.13 C3.07.09 C3.07.13 C3.07.08 C3.07.10 C3.07.12 +C3.07.12 C3.07.11 C3.07.13 C3.07.14 C3.07.10 C3.06.13 C3.06.09 C3.06.11 C3.06.12 +C3.07.13 C3.08.11 C3.08.13 C3.08.14 C3.07.11 C3.07.14 C3.07.10 C3.07.12 C3.06.13 +C3.07.14 C3.08.13 C3.08.14 C3.08.15 C3.07.13 C3.07.15 C3.06.15 C3.07.12 C3.06.13 +C3.07.15 C3.08.14 C3.08.15 C3.07.14 C3.06.15 +C3.08.00 C3.08.02 C3.08.03 C3.07.00 C3.07.03 +C3.08.01 C3.09.01 C3.09.03 C3.08.04 C3.08.02 C3.08.05 +C3.08.02 C3.08.01 C3.08.04 C3.08.05 C3.08.00 C3.08.03 C3.08.06 +C3.08.03 C3.08.02 C3.08.05 C3.08.00 C3.08.06 C3.07.00 C3.07.03 C3.07.06 +C3.08.04 C3.09.03 C3.09.05 C3.08.01 C3.08.07 C3.08.02 C3.08.05 C3.08.08 +C3.08.05 C3.08.01 C3.08.04 C3.08.07 C3.08.02 C3.08.08 C3.08.03 C3.08.06 C3.08.09 +C3.08.06 C3.08.02 C3.08.05 C3.08.08 C3.08.03 C3.08.09 C3.07.03 C3.07.06 C3.07.09 +C3.08.07 C3.09.03 C3.09.05 C3.09.07 C3.08.04 C3.09.08 C3.08.05 C3.08.08 C3.08.10 +C3.08.08 C3.08.04 C3.08.07 C3.09.08 C3.08.05 C3.08.10 C3.08.06 C3.08.09 C3.08.11 +C3.08.09 C3.08.05 C3.08.08 C3.08.10 C3.08.06 C3.08.11 C3.07.06 C3.07.09 C3.07.11 +C3.08.10 C3.08.07 C3.09.08 C3.09.10 C3.08.08 C3.08.12 C3.08.09 C3.08.11 C3.08.13 +C3.08.11 C3.08.08 C3.08.10 C3.08.12 C3.08.09 C3.08.13 C3.07.09 C3.07.11 C3.07.13 +C3.08.12 C3.09.08 C3.09.10 C3.09.11 C3.08.10 C3.09.12 C3.08.11 C3.08.13 C3.08.14 +C3.08.13 C3.08.10 C3.08.12 C3.09.12 C3.08.11 C3.08.14 C3.07.11 C3.07.13 C3.07.14 +C3.08.14 C3.08.12 C3.09.12 C3.09.14 C3.08.13 C3.08.15 C3.07.13 C3.07.14 C3.07.15 +C3.08.15 C3.09.14 C3.08.14 C3.07.14 C3.07.15 +C3.09.00 C3.10.00 C3.09.02 C3.09.04 C3.09.01 +C3.09.01 C3.09.00 C3.09.04 C3.09.03 C3.09.05 C3.08.01 +C3.09.02 C3.10.00 C3.10.03 C3.09.00 C3.10.05 C3.09.04 C3.09.06 +C3.09.03 C3.09.04 C3.09.01 C3.09.05 C3.08.01 C3.08.04 C3.08.07 +C3.09.04 C3.09.00 C3.09.02 C3.10.05 C3.09.06 C3.09.01 C3.09.03 C3.09.05 C3.09.07 +C3.09.05 C3.09.04 C3.09.06 C3.09.01 C3.09.03 C3.09.07 C3.08.04 C3.08.07 C3.09.08 +C3.09.06 C3.09.02 C3.10.05 C3.10.07 C3.09.04 C3.10.09 C3.09.05 C3.09.07 C3.09.09 +C3.09.07 C3.09.04 C3.09.06 C3.10.09 C3.09.05 C3.09.09 C3.08.07 C3.09.08 C3.09.10 +C3.09.08 C3.09.05 C3.09.07 C3.09.09 C3.08.07 C3.09.10 C3.08.08 C3.08.10 C3.08.12 +C3.09.09 C3.09.06 C3.10.09 C3.10.10 C3.09.07 C3.10.11 C3.09.08 C3.09.10 C3.09.11 +C3.09.10 C3.09.07 C3.09.09 C3.10.11 C3.09.08 C3.09.11 C3.08.10 C3.08.12 C3.09.12 +C3.09.11 C3.09.09 C3.10.11 C3.10.12 C3.09.10 C3.10.13 C3.08.12 C3.09.12 C3.09.13 +C3.09.12 C3.09.10 C3.09.11 C3.10.13 C3.08.12 C3.09.13 C3.09.14 C3.08.13 C3.08.14 +C3.09.13 C3.09.11 C3.10.13 C3.09.12 C3.10.14 C3.09.15 C3.09.14 +C3.09.14 C3.09.12 C3.09.13 C3.09.15 C3.08.14 C3.08.15 +C3.09.15 C3.09.13 C3.10.14 C3.09.14 +C3.10.00 C3.10.01 C3.10.03 C3.09.00 C3.09.02 C3.10.05 +C3.10.01 C3.10.02 C3.10.00 C3.10.03 C3.10.04 +C3.10.02 C3.11.02 C3.10.01 C3.11.05 C3.10.03 C3.10.04 C3.10.06 +C3.10.03 C3.10.02 C3.10.01 C3.10.00 C3.10.04 C3.09.02 C3.10.05 C3.10.07 +C3.10.04 C3.10.02 C3.10.01 C3.11.05 C3.10.03 C3.10.06 C3.10.05 C3.10.07 C3.10.08 +C3.10.05 C3.10.00 C3.10.03 C3.10.04 C3.09.02 C3.10.07 C3.09.04 C3.09.06 C3.10.09 +C3.10.06 C3.10.02 C3.11.05 C3.11.06 C3.10.04 C3.11.08 C3.10.07 C3.10.08 C3.11.10 +C3.10.07 C3.10.03 C3.10.04 C3.10.06 C3.10.05 C3.10.08 C3.09.06 C3.10.09 C3.10.10 +C3.10.08 C3.10.04 C3.10.06 C3.11.08 C3.10.07 C3.11.10 C3.10.09 C3.10.10 C3.11.12 +C3.10.09 C3.10.05 C3.10.07 C3.10.08 C3.09.06 C3.10.10 C3.09.07 C3.09.09 C3.10.11 +C3.10.10 C3.10.07 C3.10.08 C3.11.10 C3.10.09 C3.11.12 C3.09.09 C3.10.11 C3.10.12 +C3.10.11 C3.10.09 C3.10.10 C3.11.12 C3.09.09 C3.10.12 C3.09.10 C3.09.11 C3.10.13 +C3.10.12 C3.10.10 C3.11.12 C3.11.13 C3.10.11 C3.11.14 C3.09.11 C3.10.13 C3.11.15 +C3.10.13 C3.10.11 C3.10.12 C3.11.14 C3.09.11 C3.11.15 C3.09.12 C3.09.13 C3.10.14 +C3.10.14 C3.10.13 C3.11.15 C3.09.13 C3.09.15 +C3.11.00 C3.11.01 C3.11.03 C3.11.04 +C3.11.01 C3.11.00 C3.12.01 C3.11.04 C3.12.04 +C3.11.02 C3.11.03 C3.10.02 C3.11.05 C3.11.06 +C3.11.03 C3.11.00 C3.11.02 C3.11.04 C3.11.05 C3.11.06 C3.11.07 +C3.11.04 C3.11.00 C3.11.01 C3.12.01 C3.11.03 C3.12.04 C3.11.06 C3.11.07 C3.12.07 +C3.11.05 C3.11.03 C3.11.02 C3.10.02 C3.11.06 C3.10.04 C3.10.06 C3.11.08 +C3.11.06 C3.11.03 C3.11.02 C3.11.04 C3.11.05 C3.11.07 C3.10.06 C3.11.08 C3.11.09 +C3.11.07 C3.11.03 C3.11.04 C3.12.04 C3.11.06 C3.12.07 C3.11.08 C3.11.09 C3.12.09 +C3.11.08 C3.11.05 C3.11.06 C3.11.07 C3.10.06 C3.11.09 C3.10.08 C3.11.10 C3.11.11 +C3.11.09 C3.11.06 C3.11.07 C3.12.07 C3.11.08 C3.12.09 C3.11.10 C3.11.11 C3.12.11 +C3.11.10 C3.10.06 C3.11.08 C3.11.09 C3.10.08 C3.11.11 C3.10.10 C3.11.12 C3.11.13 +C3.11.11 C3.11.08 C3.11.09 C3.12.09 C3.11.10 C3.12.11 C3.11.12 C3.11.13 C3.12.13 +C3.11.12 C3.10.08 C3.11.10 C3.11.11 C3.10.10 C3.11.13 C3.10.11 C3.10.12 C3.11.14 +C3.11.13 C3.11.10 C3.11.11 C3.12.11 C3.11.12 C3.12.13 C3.10.12 C3.11.14 C3.12.14 +C3.11.14 C3.11.12 C3.11.13 C3.12.13 C3.10.12 C3.12.14 C3.10.13 C3.11.15 C3.12.15 +C3.11.15 C3.10.12 C3.11.14 C3.12.14 C3.10.13 C3.12.15 C3.10.14 +C3.12.00 C3.12.01 C3.12.03 C3.12.04 +C3.12.01 C3.11.01 C3.12.00 C3.11.04 C3.12.04 +C3.12.02 C3.12.03 C3.13.01 C3.12.06 C3.12.05 +C3.12.03 C3.12.00 C3.12.04 C3.12.02 C3.12.07 C3.12.06 C3.12.05 +C3.12.04 C3.11.01 C3.12.01 C3.12.00 C3.12.03 C3.11.04 C3.11.07 C3.12.07 C3.12.06 +C3.12.05 C3.12.03 C3.12.02 C3.13.01 C3.12.06 C3.13.02 C3.12.08 C3.13.06 C3.13.04 +C3.12.06 C3.12.03 C3.12.04 C3.12.02 C3.12.07 C3.12.05 C3.12.09 C3.12.08 C3.13.06 +C3.12.07 C3.12.03 C3.11.04 C3.12.04 C3.11.07 C3.12.06 C3.11.09 C3.12.09 C3.12.08 +C3.12.08 C3.12.07 C3.12.06 C3.12.05 C3.12.09 C3.13.06 C3.12.11 C3.12.10 C3.13.08 +C3.12.09 C3.11.07 C3.12.07 C3.12.06 C3.11.09 C3.12.08 C3.11.11 C3.12.11 C3.12.10 +C3.12.10 C3.12.09 C3.12.08 C3.13.06 C3.12.11 C3.13.08 C3.12.13 C3.12.12 C3.13.10 +C3.12.11 C3.11.09 C3.12.09 C3.12.08 C3.11.11 C3.12.10 C3.11.13 C3.12.13 C3.12.12 +C3.12.12 C3.12.11 C3.12.10 C3.13.08 C3.12.13 C3.13.10 C3.12.14 C3.13.12 C3.13.11 +C3.12.13 C3.11.11 C3.12.11 C3.12.10 C3.11.13 C3.12.12 C3.11.14 C3.12.14 C3.13.12 +C3.12.14 C3.11.13 C3.12.13 C3.12.12 C3.11.14 C3.13.12 C3.11.15 C3.12.15 C3.13.13 +C3.12.15 C3.11.14 C3.12.14 C3.13.12 C3.11.15 C3.13.13 C3.13.15 +C3.13.00 C3.13.02 C3.13.03 C3.14.01 C3.13.05 C3.14.03 +C3.13.01 C3.12.02 C3.12.05 C3.13.02 +C3.13.02 C3.13.01 C3.12.05 C3.13.00 C3.13.06 C3.13.04 C3.13.03 +C3.13.03 C3.13.02 C3.13.00 C3.13.04 C3.13.07 C3.13.05 C3.14.03 +C3.13.04 C3.12.05 C3.13.02 C3.13.06 C3.13.03 C3.13.08 C3.13.07 C3.13.05 +C3.13.05 C3.13.00 C3.13.04 C3.13.03 C3.13.07 C3.14.03 C3.13.09 C3.14.07 C3.14.05 +C3.13.06 C3.12.06 C3.12.05 C3.13.02 C3.12.08 C3.13.04 C3.12.10 C3.13.08 C3.13.07 +C3.13.07 C3.13.06 C3.13.04 C3.13.03 C3.13.08 C3.13.05 C3.13.10 C3.13.09 C3.14.07 +C3.13.08 C3.12.08 C3.13.06 C3.13.04 C3.12.10 C3.13.07 C3.12.12 C3.13.10 C3.13.09 +C3.13.09 C3.13.08 C3.13.07 C3.13.05 C3.13.10 C3.14.07 C3.13.11 C3.14.10 C3.14.08 +C3.13.10 C3.12.10 C3.13.08 C3.13.07 C3.12.12 C3.13.09 C3.13.12 C3.13.11 C3.14.10 +C3.13.11 C3.12.12 C3.13.10 C3.13.09 C3.13.12 C3.14.10 C3.13.13 C3.14.12 C3.14.11 +C3.13.12 C3.12.13 C3.12.12 C3.13.10 C3.12.14 C3.13.11 C3.12.15 C3.13.13 C3.14.12 +C3.13.13 C3.12.14 C3.13.12 C3.13.11 C3.12.15 C3.14.12 C3.13.15 C3.13.14 C3.14.14 C3.14.13 +C3.13.14 C3.13.13 C3.13.15 C3.14.14 C3.14.15 +C3.13.15 C3.12.15 C3.13.13 C3.13.14 +C3.14.00 C3.14.02 C3.14.04 C3.15.01 +C3.14.01 C3.13.00 C3.14.03 C3.14.02 C3.14.05 +C3.14.02 C3.14.01 C3.14.05 C3.14.06 C3.14.04 C3.14.00 +C3.14.03 C3.13.00 C3.13.03 C3.14.01 C3.13.05 C3.14.07 C3.14.05 +C3.14.04 C3.14.02 C3.14.05 C3.14.06 C3.14.00 C3.15.01 C3.15.07 C3.15.04 +C3.14.05 C3.14.01 C3.13.05 C3.14.03 C3.14.02 C3.14.07 C3.14.08 C3.14.06 C3.14.04 +C3.14.06 C3.14.02 C3.14.07 C3.14.05 C3.14.08 C3.14.04 C3.14.09 C3.15.07 C3.15.04 +C3.14.07 C3.13.07 C3.13.05 C3.14.03 C3.13.09 C3.14.05 C3.14.10 C3.14.08 C3.14.06 +C3.14.08 C3.13.09 C3.14.07 C3.14.05 C3.14.10 C3.14.06 C3.14.11 C3.14.09 C3.15.07 +C3.14.09 C3.14.10 C3.14.08 C3.14.06 C3.14.11 C3.15.07 C3.15.12 C3.15.10 C3.15.08 +C3.14.10 C3.13.10 C3.13.09 C3.14.07 C3.13.11 C3.14.08 C3.14.12 C3.14.11 C3.14.09 +C3.14.11 C3.13.11 C3.14.10 C3.14.08 C3.14.12 C3.14.09 C3.14.13 C3.15.12 C3.15.10 +C3.14.12 C3.13.12 C3.13.11 C3.14.10 C3.13.13 C3.14.11 C3.14.14 C3.14.13 C3.15.12 +C3.14.13 C3.13.13 C3.14.12 C3.14.11 C3.14.14 C3.15.12 C3.14.15 C3.15.14 C3.15.13 +C3.14.14 C3.13.13 C3.14.12 C3.13.14 C3.14.13 C3.14.15 +C3.14.15 C3.13.14 C3.14.14 C3.14.13 C3.15.14 C3.15.15 +C3.15.00 C3.15.02 C3.15.03 C3.00.03 C3.00.00 +C3.15.01 C3.14.04 C3.14.00 C3.15.04 C3.15.05 C3.15.02 +C3.15.02 C3.15.01 C3.15.04 C3.15.05 C3.15.06 C3.15.03 C3.15.00 +C3.15.03 C3.15.05 C3.15.02 C3.15.06 C3.15.00 C3.00.06 C3.00.03 C3.00.00 +C3.15.04 C3.14.06 C3.14.04 C3.15.01 C3.15.07 C3.15.08 C3.15.05 C3.15.02 +C3.15.05 C3.15.01 C3.15.07 C3.15.04 C3.15.08 C3.15.02 C3.15.09 C3.15.06 C3.15.03 +C3.15.06 C3.15.08 C3.15.05 C3.15.02 C3.15.09 C3.15.03 C3.00.09 C3.00.06 C3.00.03 +C3.15.07 C3.14.08 C3.14.06 C3.14.04 C3.14.09 C3.15.04 C3.15.10 C3.15.08 C3.15.05 +C3.15.08 C3.14.09 C3.15.07 C3.15.04 C3.15.10 C3.15.05 C3.15.11 C3.15.09 C3.15.06 +C3.15.09 C3.15.10 C3.15.08 C3.15.05 C3.15.11 C3.15.06 C3.00.11 C3.00.09 C3.00.06 +C3.15.10 C3.14.11 C3.14.09 C3.15.07 C3.15.12 C3.15.08 C3.15.13 C3.15.11 C3.15.09 +C3.15.11 C3.15.12 C3.15.10 C3.15.08 C3.15.13 C3.15.09 C3.00.13 C3.00.11 C3.00.09 +C3.15.12 C3.14.12 C3.14.11 C3.14.09 C3.14.13 C3.15.10 C3.15.14 C3.15.13 C3.15.11 +C3.15.13 C3.14.13 C3.15.12 C3.15.10 C3.15.14 C3.15.11 C3.00.14 C3.00.13 C3.00.11 +C3.15.14 C3.14.13 C3.15.12 C3.14.15 C3.15.13 C3.15.15 C3.00.15 C3.00.14 C3.00.13 +C3.15.15 C3.14.15 C3.15.14 C3.00.15 C3.00.14 diff --git a/Calorimeter/CaloIdentifier/share/FCal2DNeighbors_H6.txt b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors_H6.txt new file mode 100755 index 0000000000000000000000000000000000000000..7db84c5877e4fa8144db204b0c133061512a2df6 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal2DNeighbors_H6.txt @@ -0,0 +1,323 @@ +# 2D FCal Neighbors for the H6 Beam Test 2004 +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Mar 10 11:16:32 2004 +# +# 2d neighbors are all touching neighbors including corners. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# +A1.04.00 A1.04.01 A1.04.04 A1.04.05 +A1.04.01 A1.04.00 A1.04.02 A1.04.05 A1.04.06 +A1.04.02 A1.04.01 A1.04.03 A1.04.05 A1.04.06 +A1.04.03 A1.04.02 A1.04.06 +A1.04.04 A1.04.00 A1.05.01 A1.04.05 A1.04.07 A1.05.09 A1.05.13 +A1.04.05 A1.04.00 A1.04.01 A1.04.02 A1.04.04 A1.04.06 A1.04.07 A1.04.08 A1.05.13 +A1.04.06 A1.04.01 A1.04.02 A1.04.03 A1.04.05 A1.04.07 A1.04.08 A1.04.09 +A1.04.07 A1.04.04 A1.04.05 A1.04.06 A1.04.08 A1.04.10 A1.04.11 A1.05.13 A1.05.18 +A1.04.08 A1.04.05 A1.04.06 A1.04.07 A1.04.09 A1.04.10 A1.04.11 A1.04.12 +A1.04.09 A1.04.06 A1.04.08 A1.04.11 A1.04.12 +A1.04.10 A1.04.07 A1.04.08 A1.04.11 A1.04.13 A1.05.13 A1.05.18 A1.05.22 A1.05.25 +A1.04.11 A1.04.07 A1.04.08 A1.04.09 A1.04.10 A1.04.12 A1.04.13 A1.04.14 A1.05.25 +A1.04.12 A1.04.08 A1.04.09 A1.04.11 A1.04.13 A1.04.14 +A1.04.13 A1.04.10 A1.04.11 A1.04.12 A1.04.14 A1.04.15 A1.04.16 A1.05.25 A1.05.29 +A1.04.14 A1.04.11 A1.04.12 A1.04.13 A1.04.15 A1.04.16 +A1.04.15 A1.04.13 A1.04.14 A1.04.16 A1.04.17 A1.04.18 A1.05.25 A1.05.29 A1.05.32 +A1.04.16 A1.04.13 A1.04.14 A1.04.15 A1.04.17 A1.04.18 +A1.04.17 A1.04.15 A1.04.16 A1.04.18 A1.04.19 A1.05.29 A1.05.32 A1.05.35 A1.05.38 +A1.04.18 A1.04.15 A1.04.16 A1.04.17 A1.04.19 A1.05.38 +A1.04.19 A1.04.17 A1.04.18 A1.04.20 A1.04.21 A1.05.38 A1.05.41 +A1.04.20 A1.04.19 A1.04.21 A1.04.22 A1.04.23 A1.05.38 A1.05.41 A1.05.44 +A1.04.21 A1.04.19 A1.04.20 A1.04.22 A1.04.23 +A1.04.22 A1.04.20 A1.04.21 A1.04.23 A1.04.24 A1.05.41 A1.05.44 A1.05.46 A1.05.48 +A1.04.23 A1.04.20 A1.04.21 A1.04.22 A1.04.24 A1.05.48 +A1.04.24 A1.04.22 A1.04.23 A1.04.25 A1.05.48 A1.05.50 +A1.04.25 A1.04.24 A1.04.26 A1.05.48 A1.05.50 A1.05.52 +A1.04.26 A1.04.25 A1.04.27 A1.04.28 A1.05.50 A1.05.52 A1.05.54 A1.05.56 +A1.04.27 A1.04.26 A1.04.28 A1.04.29 A1.05.56 A1.05.58 A1.05.60 +A1.04.28 A1.04.26 A1.04.27 A1.04.29 A1.05.60 +A1.04.29 A1.04.27 A1.04.28 A1.05.60 A1.05.63 +A1.05.00 A1.05.01 A1.05.02 A1.05.09 +A1.05.01 A1.05.00 A1.04.04 A1.05.09 +A1.05.02 A1.05.00 A1.05.03 A1.05.09 +A1.05.03 A1.05.02 A1.05.09 A1.05.10 A1.05.15 +A1.05.04 A1.05.05 A1.05.06 A1.05.10 +A1.05.05 A1.05.04 A1.05.06 A1.05.07 A1.05.11 A1.05.12 +A1.05.06 A1.05.04 A1.05.05 A1.05.10 A1.05.12 A1.05.16 +A1.05.07 A1.05.05 A1.05.11 A1.05.12 +A1.05.08 A1.06.09 A1.05.11 +A1.05.09 A1.05.00 A1.05.01 A1.05.02 A1.05.03 A1.04.04 A1.05.10 A1.05.13 A1.05.15 A1.05.18 +A1.05.10 A1.05.03 A1.05.04 A1.05.06 A1.05.09 A1.05.12 A1.05.15 A1.05.16 A1.05.19 +A1.05.11 A1.05.05 A1.05.07 A1.05.08 A1.06.09 A1.05.12 A1.05.14 A1.05.17 +A1.05.12 A1.05.05 A1.05.06 A1.05.07 A1.05.10 A1.05.11 A1.05.14 A1.05.16 A1.05.17 A1.05.20 +A1.05.13 A1.04.04 A1.04.05 A1.04.07 A1.05.09 A1.04.10 A1.05.15 A1.05.18 +A1.05.14 A1.06.09 A1.05.11 A1.05.12 A1.06.12 A1.05.17 A1.06.17 A1.05.21 +A1.05.15 A1.05.03 A1.05.09 A1.05.10 A1.05.13 A1.05.16 A1.05.18 A1.05.19 A1.05.22 +A1.05.16 A1.05.06 A1.05.10 A1.05.12 A1.05.15 A1.05.17 A1.05.19 A1.05.20 A1.05.23 +A1.05.17 A1.05.11 A1.05.12 A1.05.14 A1.05.16 A1.06.17 A1.05.20 A1.05.21 A1.05.24 +A1.05.18 A1.04.07 A1.05.09 A1.04.10 A1.05.13 A1.05.15 A1.05.19 A1.05.22 A1.05.25 +A1.05.19 A1.05.10 A1.05.15 A1.05.16 A1.05.18 A1.05.20 A1.05.22 A1.05.23 A1.05.26 +A1.05.20 A1.05.12 A1.05.16 A1.05.17 A1.05.19 A1.05.21 A1.05.23 A1.05.24 A1.05.27 +A1.05.21 A1.05.14 A1.05.17 A1.06.17 A1.05.20 A1.06.20 A1.05.24 A1.06.25 A1.05.28 +A1.05.22 A1.04.10 A1.05.15 A1.05.18 A1.05.19 A1.05.23 A1.05.25 A1.05.26 A1.05.29 +A1.05.23 A1.05.16 A1.05.19 A1.05.20 A1.05.22 A1.05.24 A1.05.26 A1.05.27 A1.05.30 +A1.05.24 A1.05.17 A1.05.20 A1.05.21 A1.05.23 A1.06.25 A1.05.27 A1.05.28 A1.05.31 +A1.05.25 A1.04.10 A1.04.11 A1.04.13 A1.04.15 A1.05.18 A1.05.22 A1.05.26 A1.05.29 +A1.05.26 A1.05.19 A1.05.22 A1.05.23 A1.05.25 A1.05.27 A1.05.29 A1.05.30 A1.05.32 +A1.05.27 A1.05.20 A1.05.23 A1.05.24 A1.05.26 A1.05.28 A1.05.30 A1.05.31 A1.05.33 +A1.05.28 A1.05.21 A1.05.24 A1.06.25 A1.05.27 A1.06.28 A1.05.31 A1.06.32 A1.05.34 +A1.05.29 A1.04.13 A1.04.15 A1.04.17 A1.05.22 A1.05.25 A1.05.26 A1.05.30 A1.05.32 +A1.05.30 A1.05.23 A1.05.26 A1.05.27 A1.05.29 A1.05.31 A1.05.32 A1.05.33 A1.05.35 +A1.05.31 A1.05.24 A1.05.27 A1.05.28 A1.05.30 A1.06.32 A1.05.33 A1.05.34 A1.05.37 +A1.05.32 A1.04.15 A1.04.17 A1.05.26 A1.05.29 A1.05.30 A1.05.33 A1.05.35 A1.05.38 +A1.05.33 A1.05.27 A1.05.30 A1.05.31 A1.05.32 A1.05.34 A1.05.35 A1.05.37 A1.05.39 +A1.05.34 A1.05.28 A1.05.31 A1.06.32 A1.05.33 A1.06.35 A1.05.36 A1.05.37 A1.05.40 +A1.05.35 A1.04.17 A1.05.30 A1.05.32 A1.05.33 A1.05.37 A1.05.38 A1.05.39 A1.05.41 +A1.05.36 A1.06.32 A1.05.34 A1.06.35 A1.05.37 A1.06.37 A1.05.40 A1.06.40 A1.05.43 +A1.05.37 A1.05.31 A1.05.33 A1.05.34 A1.05.35 A1.05.36 A1.05.39 A1.05.40 A1.05.42 +A1.05.38 A1.04.17 A1.04.18 A1.04.19 A1.04.20 A1.05.32 A1.05.35 A1.05.39 A1.05.41 +A1.05.39 A1.05.33 A1.05.35 A1.05.37 A1.05.38 A1.05.40 A1.05.41 A1.05.42 A1.05.44 +A1.05.40 A1.05.34 A1.05.36 A1.05.37 A1.05.39 A1.06.40 A1.05.42 A1.05.43 A1.05.45 +A1.05.41 A1.04.19 A1.04.20 A1.04.22 A1.05.35 A1.05.38 A1.05.39 A1.05.42 A1.05.44 +A1.05.42 A1.05.37 A1.05.39 A1.05.40 A1.05.41 A1.05.43 A1.05.44 A1.05.45 A1.05.46 +A1.05.43 A1.05.36 A1.05.40 A1.06.40 A1.05.42 A1.06.42 A1.06.44 A1.05.45 A1.05.47 +A1.05.44 A1.04.20 A1.04.22 A1.05.39 A1.05.41 A1.05.42 A1.05.45 A1.05.46 A1.05.48 +A1.05.45 A1.05.40 A1.05.42 A1.05.43 A1.05.44 A1.06.44 A1.05.46 A1.05.47 A1.05.49 +A1.05.46 A1.04.22 A1.05.42 A1.05.44 A1.05.45 A1.05.47 A1.05.48 A1.05.49 A1.05.50 +A1.05.47 A1.05.43 A1.06.44 A1.05.45 A1.05.46 A1.06.46 A1.06.48 A1.05.49 A1.05.51 +A1.05.48 A1.04.22 A1.04.23 A1.04.24 A1.04.25 A1.05.44 A1.05.46 A1.05.49 A1.05.50 +A1.05.49 A1.05.45 A1.05.46 A1.05.47 A1.05.48 A1.06.48 A1.05.50 A1.05.51 A1.05.52 +A1.05.50 A1.04.24 A1.04.25 A1.04.26 A1.05.46 A1.05.48 A1.05.49 A1.05.51 A1.05.52 +A1.05.51 A1.05.47 A1.06.48 A1.05.49 A1.06.49 A1.05.50 A1.06.51 A1.05.52 A1.05.53 +A1.05.52 A1.04.25 A1.04.26 A1.05.49 A1.05.50 A1.05.51 A1.06.51 A1.05.53 A1.05.54 A1.05.56 +A1.05.53 A1.05.51 A1.06.51 A1.05.52 A1.05.54 A1.05.55 A1.05.57 +A1.05.54 A1.04.26 A1.05.52 A1.05.53 A1.05.55 A1.05.56 A1.05.57 A1.05.58 +A1.05.55 A1.06.51 A1.05.53 A1.05.54 A1.06.55 A1.05.57 A1.06.57 A1.05.59 +A1.05.56 A1.04.26 A1.04.27 A1.05.52 A1.05.54 A1.05.57 A1.05.58 A1.05.60 +A1.05.57 A1.05.53 A1.05.54 A1.05.55 A1.05.56 A1.06.57 A1.05.58 A1.05.59 A1.05.61 +A1.05.58 A1.04.27 A1.05.54 A1.05.56 A1.05.57 A1.05.59 A1.05.60 A1.05.61 +A1.05.59 A1.05.55 A1.05.57 A1.06.57 A1.05.58 A1.06.59 A1.05.61 A1.06.61 A1.05.62 +A1.05.60 A1.04.27 A1.04.28 A1.04.29 A1.05.56 A1.05.58 A1.05.61 A1.05.63 +A1.05.61 A1.05.57 A1.05.58 A1.05.59 A1.05.60 A1.06.61 A1.05.62 A1.05.63 +A1.05.62 A1.05.59 A1.05.61 A1.06.61 A1.06.62 A1.05.63 +A1.05.63 A1.04.29 A1.05.60 A1.05.61 A1.05.62 +A1.06.00 A1.06.01 A1.06.02 A1.06.09 A1.06.12 +A1.06.01 A1.06.00 A1.06.02 A1.06.10 A1.06.12 A1.06.15 +A1.06.02 A1.06.00 A1.06.01 A1.06.10 +A1.06.03 A1.06.04 A1.06.05 A1.06.10 A1.06.14 +A1.06.04 A1.06.03 A1.06.05 A1.06.11 A1.06.14 A1.06.16 +A1.06.05 A1.06.03 A1.06.04 A1.06.06 A1.06.11 +A1.06.06 A1.06.05 A1.06.07 A1.06.11 +A1.06.07 A1.06.06 A1.06.08 A1.06.11 A1.06.13 +A1.06.08 A1.07.00 A1.07.03 A1.06.07 A1.06.11 A1.06.13 +A1.06.09 A1.06.00 A1.05.08 A1.05.11 A1.06.12 A1.05.14 A1.06.17 +A1.06.10 A1.06.01 A1.06.02 A1.06.03 A1.06.12 A1.06.14 A1.06.15 A1.06.18 +A1.06.11 A1.06.04 A1.06.05 A1.06.06 A1.06.07 A1.06.08 A1.06.13 A1.06.14 A1.06.16 A1.06.19 +A1.06.12 A1.06.00 A1.06.01 A1.06.09 A1.06.10 A1.05.14 A1.06.15 A1.06.17 A1.06.20 +A1.06.13 A1.07.03 A1.07.04 A1.06.07 A1.07.07 A1.06.08 A1.06.11 A1.06.16 A1.06.19 A1.06.21 +A1.06.14 A1.06.03 A1.06.04 A1.06.10 A1.06.11 A1.06.15 A1.06.16 A1.06.18 A1.06.22 +A1.06.15 A1.06.01 A1.06.10 A1.06.12 A1.06.14 A1.06.17 A1.06.18 A1.06.20 A1.06.23 +A1.06.16 A1.06.04 A1.06.11 A1.06.13 A1.06.14 A1.06.18 A1.06.19 A1.06.22 A1.06.24 +A1.06.17 A1.06.09 A1.06.12 A1.05.14 A1.06.15 A1.05.17 A1.06.20 A1.05.21 A1.06.25 +A1.06.18 A1.06.10 A1.06.14 A1.06.15 A1.06.16 A1.06.20 A1.06.22 A1.06.23 A1.06.27 +A1.06.19 A1.07.07 A1.06.11 A1.06.13 A1.06.16 A1.06.21 A1.06.22 A1.06.24 A1.06.26 +A1.06.20 A1.06.12 A1.06.15 A1.06.17 A1.06.18 A1.05.21 A1.06.23 A1.06.25 A1.06.28 +A1.06.21 A1.07.07 A1.07.08 A1.07.10 A1.06.13 A1.07.13 A1.06.19 A1.06.24 A1.06.26 +A1.06.22 A1.06.14 A1.06.16 A1.06.18 A1.06.19 A1.06.23 A1.06.24 A1.06.27 A1.06.29 +A1.06.23 A1.06.15 A1.06.18 A1.06.20 A1.06.22 A1.06.25 A1.06.27 A1.06.28 A1.06.30 +A1.06.24 A1.06.16 A1.06.19 A1.06.21 A1.06.22 A1.06.26 A1.06.27 A1.06.29 A1.06.31 +A1.06.25 A1.06.17 A1.06.20 A1.05.21 A1.06.23 A1.05.24 A1.05.28 A1.06.28 A1.06.32 +A1.06.26 A1.07.10 A1.07.13 A1.06.19 A1.06.21 A1.06.24 A1.06.29 A1.06.31 A1.06.33 +A1.06.27 A1.06.18 A1.06.22 A1.06.23 A1.06.24 A1.06.28 A1.06.29 A1.06.30 A1.06.34 +A1.06.28 A1.06.20 A1.06.23 A1.06.25 A1.06.27 A1.05.28 A1.06.30 A1.06.32 A1.06.35 +A1.06.29 A1.06.22 A1.06.24 A1.06.26 A1.06.27 A1.06.30 A1.06.31 A1.06.34 A1.06.36 +A1.06.30 A1.06.23 A1.06.27 A1.06.28 A1.06.29 A1.06.32 A1.06.34 A1.06.35 A1.06.37 +A1.06.31 A1.07.13 A1.06.24 A1.06.26 A1.06.29 A1.06.33 A1.06.34 A1.06.36 A1.06.38 +A1.06.32 A1.06.25 A1.05.28 A1.06.28 A1.06.30 A1.05.31 A1.05.34 A1.06.35 A1.05.36 +A1.06.33 A1.07.13 A1.07.14 A1.07.16 A1.07.18 A1.06.26 A1.06.31 A1.06.36 A1.06.38 +A1.06.34 A1.06.27 A1.06.29 A1.06.30 A1.06.31 A1.06.35 A1.06.36 A1.06.37 A1.06.39 +A1.06.35 A1.06.28 A1.06.30 A1.06.32 A1.05.34 A1.06.34 A1.05.36 A1.06.37 A1.06.40 +A1.06.36 A1.06.29 A1.06.31 A1.06.33 A1.06.34 A1.06.37 A1.06.38 A1.06.39 A1.06.41 +A1.06.37 A1.06.30 A1.06.34 A1.06.35 A1.05.36 A1.06.36 A1.06.39 A1.06.40 A1.06.42 +A1.06.38 A1.07.16 A1.07.18 A1.07.20 A1.06.31 A1.06.33 A1.06.36 A1.06.39 A1.06.41 +A1.06.39 A1.06.34 A1.06.36 A1.06.37 A1.06.38 A1.06.40 A1.06.41 A1.06.42 A1.06.43 +A1.06.40 A1.06.35 A1.05.36 A1.06.37 A1.06.39 A1.05.40 A1.06.42 A1.05.43 A1.06.44 +A1.06.41 A1.07.18 A1.07.20 A1.06.36 A1.06.38 A1.06.39 A1.06.42 A1.06.43 A1.06.45 +A1.06.42 A1.06.37 A1.06.39 A1.06.40 A1.06.41 A1.05.43 A1.06.43 A1.06.44 A1.06.46 +A1.06.43 A1.07.20 A1.06.39 A1.06.41 A1.06.42 A1.06.44 A1.06.45 A1.06.46 A1.06.47 +A1.06.44 A1.06.40 A1.06.42 A1.05.43 A1.06.43 A1.05.45 A1.06.46 A1.05.47 A1.06.48 +A1.06.45 A1.07.20 A1.07.21 A1.07.22 A1.07.24 A1.06.41 A1.06.43 A1.06.46 A1.06.47 +A1.06.46 A1.06.42 A1.06.43 A1.06.44 A1.06.45 A1.05.47 A1.06.47 A1.06.48 A1.06.49 +A1.06.47 A1.07.22 A1.07.24 A1.06.43 A1.06.45 A1.06.46 A1.06.48 A1.06.49 A1.06.50 +A1.06.48 A1.06.44 A1.06.46 A1.05.47 A1.06.47 A1.05.49 A1.06.49 A1.05.51 A1.06.51 +A1.06.49 A1.07.24 A1.06.46 A1.06.47 A1.06.48 A1.06.50 A1.05.51 A1.06.51 A1.06.52 +A1.06.50 A1.07.24 A1.07.25 A1.07.26 A1.06.47 A1.06.49 A1.06.51 A1.06.52 A1.06.53 A1.06.54 +A1.06.51 A1.06.48 A1.06.49 A1.06.50 A1.05.51 A1.05.52 A1.06.52 A1.05.53 A1.05.55 A1.06.55 A1.06.57 +A1.06.52 A1.06.49 A1.06.50 A1.06.51 A1.06.53 A1.06.55 A1.06.56 +A1.06.53 A1.07.26 A1.06.50 A1.06.52 A1.06.54 A1.06.55 A1.06.56 A1.06.58 +A1.06.54 A1.07.26 A1.07.27 A1.07.28 A1.06.50 A1.06.53 A1.06.56 A1.06.58 +A1.06.55 A1.06.51 A1.06.52 A1.06.53 A1.05.55 A1.06.56 A1.06.57 A1.06.59 +A1.06.56 A1.06.52 A1.06.53 A1.06.54 A1.06.55 A1.06.57 A1.06.58 A1.06.59 A1.06.60 +A1.06.57 A1.06.51 A1.05.55 A1.06.55 A1.06.56 A1.05.57 A1.05.59 A1.06.59 A1.06.61 +A1.06.58 A1.07.27 A1.07.28 A1.07.30 A1.06.53 A1.06.54 A1.06.56 A1.06.59 A1.06.60 +A1.06.59 A1.06.55 A1.06.56 A1.06.57 A1.06.58 A1.05.59 A1.06.60 A1.06.61 A1.06.62 +A1.06.60 A1.07.28 A1.07.30 A1.06.56 A1.06.58 A1.06.59 A1.06.61 A1.06.62 +A1.06.61 A1.06.57 A1.05.59 A1.06.59 A1.06.60 A1.05.61 A1.05.62 A1.06.62 +A1.06.62 A1.07.30 A1.06.59 A1.06.60 A1.06.61 A1.05.62 +A1.07.00 A1.07.03 A1.07.04 A1.06.08 +A1.07.01 A1.07.04 A1.07.05 A1.07.06 +A1.07.02 A1.07.06 +A1.07.03 A1.07.00 A1.07.04 A1.07.07 A1.06.08 A1.06.13 +A1.07.04 A1.07.00 A1.07.01 A1.07.03 A1.07.05 A1.07.07 A1.07.08 A1.06.13 +A1.07.05 A1.07.01 A1.07.04 A1.07.06 A1.07.07 A1.07.08 A1.07.09 +A1.07.06 A1.07.01 A1.07.02 A1.07.05 A1.07.08 A1.07.09 +A1.07.07 A1.07.03 A1.07.04 A1.07.05 A1.07.08 A1.07.10 A1.06.13 A1.06.19 A1.06.21 +A1.07.08 A1.07.04 A1.07.05 A1.07.06 A1.07.07 A1.07.09 A1.07.10 A1.07.11 A1.06.21 +A1.07.09 A1.07.05 A1.07.06 A1.07.08 A1.07.10 A1.07.11 A1.07.12 +A1.07.10 A1.07.07 A1.07.08 A1.07.09 A1.07.11 A1.07.13 A1.07.14 A1.06.21 A1.06.26 +A1.07.11 A1.07.08 A1.07.09 A1.07.10 A1.07.12 A1.07.13 A1.07.14 A1.07.15 +A1.07.12 A1.07.09 A1.07.11 A1.07.14 A1.07.15 +A1.07.13 A1.07.10 A1.07.11 A1.07.14 A1.07.16 A1.06.21 A1.06.26 A1.06.31 A1.06.33 +A1.07.14 A1.07.10 A1.07.11 A1.07.12 A1.07.13 A1.07.15 A1.07.16 A1.07.17 A1.06.33 +A1.07.15 A1.07.11 A1.07.12 A1.07.14 A1.07.16 A1.07.17 +A1.07.16 A1.07.13 A1.07.14 A1.07.15 A1.07.17 A1.07.18 A1.07.19 A1.06.33 A1.06.38 +A1.07.17 A1.07.14 A1.07.15 A1.07.16 A1.07.18 A1.07.19 +A1.07.18 A1.07.16 A1.07.17 A1.07.19 A1.07.20 A1.07.21 A1.06.33 A1.06.38 A1.06.41 +A1.07.19 A1.07.16 A1.07.17 A1.07.18 A1.07.20 A1.07.21 +A1.07.20 A1.07.18 A1.07.19 A1.07.21 A1.07.22 A1.06.38 A1.06.41 A1.06.43 A1.06.45 +A1.07.21 A1.07.18 A1.07.19 A1.07.20 A1.07.22 A1.07.23 A1.06.45 +A1.07.22 A1.07.20 A1.07.21 A1.07.23 A1.07.24 A1.07.25 A1.06.45 A1.06.47 +A1.07.23 A1.07.21 A1.07.22 A1.07.24 A1.07.25 +A1.07.24 A1.07.22 A1.07.23 A1.07.25 A1.07.26 A1.06.45 A1.06.47 A1.06.49 A1.06.50 +A1.07.25 A1.07.22 A1.07.23 A1.07.24 A1.07.26 A1.06.50 +A1.07.26 A1.07.24 A1.07.25 A1.07.27 A1.06.50 A1.06.53 A1.06.54 +A1.07.27 A1.07.26 A1.07.28 A1.07.29 A1.06.54 A1.06.58 +A1.07.28 A1.07.27 A1.07.29 A1.07.30 A1.07.31 A1.06.54 A1.06.58 A1.06.60 +A1.07.29 A1.07.27 A1.07.28 A1.07.30 A1.07.31 +A1.07.30 A1.07.28 A1.07.29 A1.07.31 A1.06.58 A1.06.60 A1.06.62 +A1.07.31 A1.07.28 A1.07.29 A1.07.30 +A2.04.00 A2.04.06 A2.04.07 A2.04.08 +A2.04.01 A2.04.02 A2.04.03 A2.04.04 A2.04.09 +A2.04.02 A2.05.00 A2.04.01 A2.04.03 A2.04.04 A2.04.05 +A2.04.03 A2.04.01 A2.04.02 A2.04.04 A2.04.09 A2.04.13 A2.04.14 +A2.04.04 A2.04.01 A2.04.02 A2.04.03 A2.04.05 A2.05.08 A2.04.14 +A2.04.05 A2.05.00 A2.04.02 A2.04.04 A2.05.08 A2.04.14 +A2.04.06 A2.04.00 A2.04.07 A2.04.10 A2.04.11 +A2.04.07 A2.04.00 A2.04.06 A2.04.08 A2.04.10 A2.04.11 A2.04.12 +A2.04.08 A2.04.00 A2.04.07 A2.04.09 A2.04.11 A2.04.12 A2.04.13 +A2.04.09 A2.04.01 A2.04.03 A2.04.08 A2.04.12 A2.04.13 A2.04.14 +A2.04.10 A2.04.06 A2.04.07 A2.04.11 A2.04.15 A2.04.16 +A2.04.11 A2.04.06 A2.04.07 A2.04.08 A2.04.10 A2.04.12 A2.04.15 A2.04.16 A2.04.17 +A2.04.12 A2.04.07 A2.04.08 A2.04.09 A2.04.11 A2.04.13 A2.04.16 A2.04.17 A2.04.18 +A2.04.13 A2.04.03 A2.04.08 A2.04.09 A2.05.09 A2.04.12 A2.04.14 A2.04.17 A2.04.18 +A2.04.14 A2.04.03 A2.04.04 A2.04.05 A2.05.08 A2.04.09 A2.05.09 A2.05.10 A2.04.13 A2.04.18 +A2.04.15 A2.04.10 A2.04.11 A2.04.16 A2.04.19 A2.04.20 +A2.04.16 A2.04.10 A2.04.11 A2.04.12 A2.04.15 A2.04.17 A2.04.19 A2.04.20 A2.04.21 +A2.04.17 A2.04.11 A2.04.12 A2.04.13 A2.04.16 A2.04.18 A2.04.20 A2.04.21 A2.04.22 +A2.04.18 A2.05.09 A2.04.12 A2.04.13 A2.04.14 A2.05.16 A2.04.17 A2.04.21 A2.04.22 +A2.04.19 A2.04.15 A2.04.16 A2.04.20 A2.04.23 A2.04.24 +A2.04.20 A2.04.15 A2.04.16 A2.04.17 A2.04.19 A2.04.21 A2.04.23 A2.04.24 A2.04.25 +A2.04.21 A2.04.16 A2.04.17 A2.04.18 A2.05.18 A2.04.20 A2.04.22 A2.04.24 A2.04.25 +A2.04.22 A2.05.09 A2.05.16 A2.04.17 A2.04.18 A2.05.18 A2.05.19 A2.04.21 A2.04.25 +A2.04.23 A2.04.19 A2.04.20 A2.04.24 A2.04.26 A2.04.27 +A2.04.24 A2.04.19 A2.04.20 A2.04.21 A2.04.23 A2.04.25 A2.04.26 A2.04.27 A2.04.28 +A2.04.25 A2.05.18 A2.04.20 A2.04.21 A2.04.22 A2.05.22 A2.04.24 A2.04.27 A2.04.28 +A2.04.26 A2.04.23 A2.04.24 A2.04.27 A2.04.29 A2.04.30 +A2.04.27 A2.04.23 A2.04.24 A2.04.25 A2.05.25 A2.04.26 A2.04.28 A2.04.29 A2.04.30 +A2.04.28 A2.05.18 A2.05.22 A2.04.24 A2.04.25 A2.05.25 A2.05.26 A2.04.27 A2.04.30 +A2.04.29 A2.04.26 A2.04.27 A2.05.28 A2.04.30 A2.04.31 +A2.04.30 A2.05.25 A2.04.26 A2.04.27 A2.04.28 A2.05.28 A2.04.29 A2.05.29 A2.04.31 +A2.04.31 A2.05.28 A2.04.29 A2.04.30 A2.05.30 +A2.05.00 A2.05.01 A2.04.02 A2.05.02 A2.04.05 A2.05.08 +A2.05.01 A2.05.00 A2.05.02 A2.05.03 A2.05.08 +A2.05.02 A2.05.00 A2.05.01 A2.05.03 A2.05.04 A2.05.05 A2.05.08 +A2.05.03 A2.05.01 A2.05.02 A2.05.04 A2.05.05 A2.05.06 +A2.05.04 A2.05.02 A2.05.03 A2.05.05 A2.05.08 A2.05.10 A2.05.11 +A2.05.05 A2.05.02 A2.05.03 A2.05.04 A2.05.06 A2.05.11 A2.05.12 +A2.05.06 A2.05.03 A2.05.05 A2.05.07 A2.05.11 A2.05.12 +A2.05.07 A2.05.06 A2.05.12 A2.05.13 +A2.05.08 A2.05.00 A2.05.01 A2.05.02 A2.04.04 A2.05.04 A2.04.05 A2.05.09 A2.05.10 A2.05.11 A2.04.14 +A2.05.09 A2.05.08 A2.05.10 A2.04.13 A2.04.14 A2.05.16 A2.05.17 A2.04.18 A2.04.22 +A2.05.10 A2.05.04 A2.05.08 A2.05.09 A2.05.11 A2.04.14 A2.05.14 A2.05.16 A2.05.17 +A2.05.11 A2.05.04 A2.05.05 A2.05.06 A2.05.08 A2.05.10 A2.05.12 A2.05.14 A2.05.15 A2.05.17 +A2.05.12 A2.05.05 A2.06.05 A2.05.06 A2.05.07 A2.05.11 A2.05.13 A2.05.14 A2.05.15 +A2.05.13 A2.06.00 A2.06.01 A2.06.05 A2.06.06 A2.05.07 A2.05.12 A2.05.15 +A2.05.14 A2.06.07 A2.05.10 A2.05.11 A2.05.12 A2.05.15 A2.05.17 A2.05.20 A2.05.21 +A2.05.15 A2.06.05 A2.06.07 A2.06.08 A2.05.11 A2.05.12 A2.05.13 A2.05.14 A2.05.21 +A2.05.16 A2.05.09 A2.05.10 A2.05.17 A2.04.18 A2.05.18 A2.05.19 A2.05.20 A2.04.22 +A2.05.17 A2.05.09 A2.05.10 A2.05.11 A2.05.14 A2.05.16 A2.05.19 A2.05.20 A2.05.21 +A2.05.18 A2.05.16 A2.05.19 A2.04.21 A2.04.22 A2.05.22 A2.05.23 A2.04.25 A2.04.28 +A2.05.19 A2.05.16 A2.05.17 A2.05.18 A2.05.20 A2.04.22 A2.05.22 A2.05.23 A2.05.24 +A2.05.20 A2.05.14 A2.05.16 A2.06.16 A2.05.17 A2.05.19 A2.05.21 A2.05.23 A2.05.24 +A2.05.21 A2.06.07 A2.05.14 A2.05.15 A2.06.16 A2.05.17 A2.06.17 A2.05.20 A2.05.24 +A2.05.22 A2.05.18 A2.05.19 A2.05.23 A2.04.25 A2.05.25 A2.05.26 A2.05.27 A2.04.28 +A2.05.23 A2.05.18 A2.06.18 A2.05.19 A2.05.20 A2.05.22 A2.05.24 A2.05.26 A2.05.27 +A2.05.24 A2.06.16 A2.06.18 A2.05.19 A2.06.19 A2.05.20 A2.05.21 A2.05.23 A2.05.27 +A2.05.25 A2.05.22 A2.06.23 A2.05.26 A2.04.27 A2.04.28 A2.05.28 A2.05.29 A2.04.30 +A2.05.26 A2.05.22 A2.05.23 A2.06.23 A2.06.24 A2.05.25 A2.05.27 A2.04.28 A2.05.29 +A2.05.27 A2.06.18 A2.05.22 A2.05.23 A2.06.23 A2.05.24 A2.06.24 A2.06.25 A2.05.26 +A2.05.28 A2.05.25 A2.06.28 A2.04.29 A2.05.29 A2.04.30 A2.05.30 A2.04.31 A2.05.31 +A2.05.29 A2.06.23 A2.05.25 A2.05.26 A2.05.28 A2.06.28 A2.06.29 A2.04.30 A2.05.31 +A2.05.30 A2.05.28 A2.04.31 A2.05.31 +A2.05.31 A2.05.28 A2.06.28 A2.05.29 A2.05.30 +A2.06.00 A2.06.01 A2.05.13 +A2.06.01 A2.06.00 A2.06.05 A2.06.06 A2.05.13 +A2.06.02 A2.06.03 A2.06.06 +A2.06.03 A2.06.02 A2.06.06 A2.06.09 A2.06.10 +A2.06.04 A2.06.10 A2.06.13 A2.06.14 +A2.06.05 A2.06.01 A2.06.06 A2.06.07 A2.06.08 A2.06.09 A2.05.12 A2.05.13 A2.05.15 +A2.06.06 A2.06.01 A2.06.02 A2.06.03 A2.06.05 A2.06.08 A2.06.09 A2.06.10 A2.05.13 +A2.06.07 A2.06.05 A2.06.08 A2.06.11 A2.05.14 A2.05.15 A2.06.16 A2.06.17 A2.05.21 +A2.06.08 A2.06.05 A2.06.06 A2.06.07 A2.06.09 A2.06.11 A2.06.12 A2.05.15 A2.06.17 +A2.06.09 A2.06.03 A2.06.05 A2.06.06 A2.06.08 A2.06.10 A2.06.11 A2.06.12 A2.06.13 +A2.06.10 A2.06.03 A2.06.04 A2.06.06 A2.06.09 A2.06.12 A2.06.13 A2.06.14 +A2.06.11 A2.06.07 A2.06.08 A2.06.09 A2.06.12 A2.06.17 A2.06.20 A2.06.21 A2.06.22 +A2.06.12 A2.06.08 A2.06.09 A2.06.10 A2.06.11 A2.06.13 A2.06.15 A2.06.21 A2.06.22 +A2.06.13 A2.06.04 A2.07.07 A2.06.09 A2.06.10 A2.06.12 A2.06.14 A2.06.15 A2.06.22 +A2.06.14 A2.07.03 A2.06.04 A2.07.07 A2.06.10 A2.06.13 A2.06.15 +A2.06.15 A2.07.07 A2.07.08 A2.07.11 A2.06.12 A2.06.13 A2.06.14 A2.07.14 A2.06.22 +A2.06.16 A2.06.07 A2.06.17 A2.06.18 A2.06.19 A2.05.20 A2.06.20 A2.05.21 A2.05.24 +A2.06.17 A2.06.07 A2.06.08 A2.06.11 A2.06.16 A2.06.19 A2.06.20 A2.05.21 A2.06.21 +A2.06.18 A2.06.16 A2.06.19 A2.05.23 A2.05.24 A2.06.24 A2.06.25 A2.06.26 A2.05.27 +A2.06.19 A2.06.16 A2.06.17 A2.06.18 A2.06.20 A2.05.24 A2.06.25 A2.06.26 A2.06.27 +A2.06.20 A2.06.11 A2.06.16 A2.06.17 A2.07.17 A2.06.19 A2.06.21 A2.06.26 A2.06.27 +A2.06.21 A2.06.11 A2.06.12 A2.07.14 A2.06.17 A2.07.17 A2.06.20 A2.06.22 A2.06.27 +A2.06.22 A2.06.11 A2.07.11 A2.06.12 A2.06.13 A2.07.14 A2.06.15 A2.07.17 A2.06.21 +A2.06.23 A2.06.24 A2.05.25 A2.05.26 A2.05.27 A2.06.28 A2.05.29 A2.06.29 A2.06.30 +A2.06.24 A2.06.18 A2.06.23 A2.07.24 A2.06.25 A2.05.26 A2.05.27 A2.06.29 A2.06.30 +A2.06.25 A2.06.18 A2.06.19 A2.07.22 A2.06.24 A2.07.24 A2.06.26 A2.05.27 A2.06.30 +A2.06.26 A2.06.18 A2.06.19 A2.06.20 A2.07.20 A2.07.22 A2.07.24 A2.06.25 A2.06.27 +A2.06.27 A2.07.17 A2.07.18 A2.06.19 A2.06.20 A2.07.20 A2.06.21 A2.07.22 A2.06.26 +A2.06.28 A2.06.23 A2.07.27 A2.05.28 A2.07.28 A2.05.29 A2.06.29 A2.05.31 +A2.06.29 A2.06.23 A2.06.24 A2.07.26 A2.07.27 A2.06.28 A2.07.28 A2.05.29 A2.06.30 +A2.06.30 A2.06.23 A2.06.24 A2.07.24 A2.06.25 A2.07.25 A2.07.26 A2.07.27 A2.06.29 +A2.07.00 A2.07.01 A2.07.05 A2.07.06 +A2.07.01 A2.07.00 A2.07.02 A2.07.05 A2.07.06 +A2.07.02 A2.07.01 A2.07.06 +A2.07.03 A2.07.04 A2.07.07 A2.07.08 A2.06.14 +A2.07.04 A2.07.03 A2.07.05 A2.07.07 A2.07.08 A2.07.09 +A2.07.05 A2.07.00 A2.07.01 A2.07.04 A2.07.06 A2.07.08 A2.07.09 A2.07.10 +A2.07.06 A2.07.00 A2.07.01 A2.07.02 A2.07.05 A2.07.09 A2.07.10 +A2.07.07 A2.07.03 A2.07.04 A2.07.08 A2.07.11 A2.06.13 A2.06.14 A2.06.15 +A2.07.08 A2.07.03 A2.07.04 A2.07.05 A2.07.07 A2.07.09 A2.07.11 A2.07.12 A2.06.15 +A2.07.09 A2.07.04 A2.07.05 A2.07.06 A2.07.08 A2.07.10 A2.07.11 A2.07.12 A2.07.13 +A2.07.10 A2.07.05 A2.07.06 A2.07.09 A2.07.12 A2.07.13 +A2.07.11 A2.07.07 A2.07.08 A2.07.09 A2.07.12 A2.07.14 A2.06.15 A2.07.15 A2.06.22 +A2.07.12 A2.07.08 A2.07.09 A2.07.10 A2.07.11 A2.07.13 A2.07.14 A2.07.15 A2.07.16 +A2.07.13 A2.07.09 A2.07.10 A2.07.12 A2.07.15 A2.07.16 +A2.07.14 A2.07.11 A2.07.12 A2.06.15 A2.07.15 A2.07.17 A2.07.18 A2.06.21 A2.06.22 +A2.07.15 A2.07.11 A2.07.12 A2.07.13 A2.07.14 A2.07.16 A2.07.17 A2.07.18 A2.07.19 +A2.07.16 A2.07.12 A2.07.13 A2.07.15 A2.07.18 A2.07.19 +A2.07.17 A2.07.14 A2.07.15 A2.07.18 A2.06.20 A2.07.20 A2.06.21 A2.06.22 A2.06.27 +A2.07.18 A2.07.14 A2.07.15 A2.07.16 A2.07.17 A2.07.19 A2.07.20 A2.07.21 A2.06.27 +A2.07.19 A2.07.15 A2.07.16 A2.07.18 A2.07.20 A2.07.21 +A2.07.20 A2.07.17 A2.07.18 A2.07.19 A2.07.21 A2.07.22 A2.07.23 A2.06.26 A2.06.27 +A2.07.21 A2.07.18 A2.07.19 A2.07.20 A2.07.22 A2.07.23 +A2.07.22 A2.07.20 A2.07.21 A2.07.23 A2.07.24 A2.06.25 A2.07.25 A2.06.26 A2.06.27 +A2.07.23 A2.07.20 A2.07.21 A2.07.22 A2.07.24 A2.07.25 +A2.07.24 A2.07.22 A2.07.23 A2.06.24 A2.06.25 A2.07.25 A2.06.26 A2.07.26 A2.06.30 +A2.07.25 A2.07.22 A2.07.23 A2.07.24 A2.07.26 A2.06.30 +A2.07.26 A2.07.24 A2.07.25 A2.07.27 A2.06.29 A2.06.30 +A2.07.27 A2.07.26 A2.06.28 A2.07.28 A2.06.29 A2.07.29 A2.06.30 +A2.07.28 A2.07.27 A2.06.28 A2.06.29 A2.07.29 +A2.07.29 A2.07.27 A2.07.28 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext-April2011.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext-April2011.txt new file mode 100644 index 0000000000000000000000000000000000000000..81600dfc06c7fa6e93cd1d2640f23bf9a7f5ea7d --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext-April2011.txt @@ -0,0 +1,2509 @@ +# 3D FCal Neighbors Next in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Apr 20 10:35:58 2011 +# +# 3d neighbors next in sampling are all cells touching the same +# eta phi area in the next sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without next sampling neighbors are not listed. +# +A1.00.14 A2.00.00 +A1.00.15 A2.00.00 A2.00.02 +A1.00.16 A2.00.01 A2.00.02 +A1.00.17 A2.00.03 +A1.00.18 A2.00.03 A2.00.04 +A1.00.19 A2.00.04 +A1.00.20 A2.00.05 +A1.00.21 A2.00.05 A2.00.06 +A1.00.22 A2.00.06 +A1.00.23 A2.00.07 A2.00.08 +A1.00.24 A2.00.08 +A1.00.25 A2.00.09 +A1.00.26 A2.00.09 A2.00.10 +A1.00.27 A2.00.10 +A1.00.28 A2.00.11 A2.01.10 +A1.00.29 A2.00.11 +A1.00.30 A2.00.12 +A1.00.31 A2.00.12 A2.00.13 +A1.00.32 A2.00.13 +A1.00.33 A2.00.14 +A1.00.34 A2.00.15 +A1.00.35 A2.00.15 A2.00.16 +A1.00.36 A2.00.16 +A1.00.37 A2.00.17 +A1.00.38 A2.00.18 +A1.00.39 A2.00.18 A2.00.19 +A1.00.40 A2.00.19 +A1.00.41 A2.01.20 +A1.00.42 A2.00.20 +A1.00.43 A2.00.20 A2.00.21 +A1.00.44 A2.00.21 +A1.00.45 A2.00.22 +A1.00.46 A2.00.22 A2.00.23 +A1.00.47 A2.00.23 +A1.00.48 A2.00.24 +A1.00.49 A2.00.24 A2.00.25 +A1.00.50 A2.00.25 +A1.00.51 A2.00.24 A2.00.25 A2.00.26 A2.01.26 +A1.00.52 A2.00.25 A2.00.26 +A1.00.53 A2.01.26 A2.01.28 +A1.00.54 A2.00.26 A2.00.27 +A1.00.55 A2.00.26 A2.00.27 +A1.00.56 A2.00.26 A2.00.27 +A1.00.57 A2.00.27 +A1.00.58 A2.00.27 +A1.00.59 A2.00.27 +A1.00.60 A2.00.27 A2.00.28 +A1.00.61 A2.00.27 A2.00.28 A2.00.29 +A1.00.62 A2.00.27 A2.00.29 +A1.01.12 A2.01.05 +A1.01.13 A2.00.03 +A1.01.14 A2.01.02 +A1.01.15 A2.01.01 A2.01.05 +A1.01.16 A2.01.02 A2.01.04 +A1.01.17 A2.01.00 A2.01.03 A2.01.05 A2.02.01 +A1.01.18 A2.01.06 +A1.01.19 A2.01.04 +A1.01.20 A2.01.05 +A1.01.21 A2.00.07 +A1.01.22 A2.01.06 A2.01.07 +A1.01.23 A2.01.09 +A1.01.24 A2.01.07 +A1.01.25 A2.01.08 +A1.01.26 A2.01.10 +A1.01.27 A2.01.09 A2.01.11 +A1.01.28 A2.01.12 +A1.01.29 A2.01.11 +A1.01.30 A2.01.12 A2.01.15 +A1.01.31 A2.01.13 +A1.01.32 A2.01.14 +A1.01.33 A2.00.14 A2.01.13 +A1.01.34 A2.01.15 +A1.01.35 A2.01.14 A2.01.17 +A1.01.36 A2.01.16 +A1.01.37 A2.01.17 +A1.01.38 A2.00.17 A2.01.16 +A1.01.39 A2.01.18 +A1.01.40 A2.01.19 +A1.01.41 A2.01.18 A2.01.20 +A1.01.42 A2.01.21 +A1.01.43 A2.01.21 A2.01.22 +A1.01.44 A2.01.23 +A1.01.45 A2.01.22 +A1.01.46 A2.01.23 A2.01.24 +A1.01.47 A2.01.24 +A1.01.48 A2.01.23 A2.01.24 A2.01.25 A2.02.24 +A1.01.49 A2.01.24 A2.01.25 +A1.01.50 A2.00.24 A2.01.26 +A1.01.51 A2.01.25 A2.01.27 +A1.01.52 A2.01.26 A2.01.28 +A1.01.53 A2.01.26 A2.01.28 +A1.01.54 A2.01.28 +A1.01.55 A2.01.28 +A1.01.56 A2.01.28 A2.02.29 +A1.01.57 A2.01.28 +A1.01.58 A2.01.28 A2.01.29 +A1.01.59 A2.01.28 A2.01.30 +A1.01.60 A2.01.29 A2.01.31 +A1.01.61 A2.01.30 A2.01.31 A2.02.30 +A1.01.62 A2.00.28 A2.01.30 A2.01.31 +A1.02.12 A2.02.03 +A1.02.13 A2.02.01 +A1.02.14 A2.02.02 A2.02.04 A2.03.01 +A1.02.15 A2.02.00 A2.02.07 +A1.02.16 A2.02.03 A2.02.05 A2.02.07 +A1.02.17 A2.02.06 +A1.02.18 A2.02.02 A2.02.04 A2.02.08 +A1.02.19 A2.02.07 +A1.02.20 A2.02.09 +A1.02.21 A2.01.08 A2.02.06 +A1.02.22 A2.02.08 +A1.02.23 A2.02.10 +A1.02.24 A2.02.09 A2.02.11 +A1.02.25 A2.02.08 A2.03.06 +A1.02.26 A2.02.12 +A1.02.27 A2.02.10 A2.02.14 +A1.02.28 A2.02.11 +A1.02.29 A2.02.12 A2.02.13 +A1.02.30 A2.02.12 A2.02.15 +A1.02.31 A2.02.14 +A1.02.32 A2.02.12 A2.02.13 A2.02.15 A2.02.17 +A1.02.33 A2.02.15 +A1.02.34 A2.02.16 +A1.02.35 A2.02.15 A2.02.17 +A1.02.36 A2.02.18 +A1.02.37 A2.01.19 A2.02.16 +A1.02.38 A2.02.17 A2.03.15 +A1.02.39 A2.02.18 A2.02.19 +A1.02.40 A2.02.18 A2.02.20 +A1.02.41 A2.02.19 A2.02.21 +A1.02.42 A2.02.18 A2.02.19 A2.02.20 A2.02.22 +A1.02.43 A2.02.20 +A1.02.44 A2.02.19 A2.02.21 A2.02.22 A2.02.23 +A1.02.45 A2.02.20 A2.02.22 +A1.02.46 A2.02.22 A2.02.23 +A1.02.47 A2.01.23 A2.02.24 +A1.02.48 A2.02.23 A2.03.22 +A1.02.49 A2.02.24 A2.02.25 +A1.02.50 A2.02.25 A2.02.26 +A1.02.51 A2.01.25 A2.01.27 A2.02.24 A2.02.25 +A1.02.52 A2.01.27 A2.02.25 A2.02.26 A2.02.27 +A1.02.53 A2.01.27 A2.02.27 +A1.02.54 A2.02.27 +A1.02.55 A2.01.27 A2.02.27 +A1.02.56 A2.02.27 A2.02.28 +A1.02.57 A2.02.27 +A1.02.58 A2.02.27 A2.02.28 +A1.02.59 A2.02.29 A2.02.30 +A1.02.60 A2.02.28 +A1.02.61 A2.02.30 A2.02.31 +A1.02.62 A2.02.30 A2.02.31 +A1.03.12 A2.03.00 +A1.03.13 A2.03.00 +A1.03.14 A2.03.00 +A1.03.15 A2.02.04 A2.03.01 +A1.03.16 A2.03.01 A2.03.02 +A1.03.17 A2.03.02 A2.03.03 +A1.03.18 A2.03.03 A2.03.04 +A1.03.19 A2.03.04 A2.03.05 +A1.03.20 A2.02.04 A2.02.08 A2.03.01 A2.03.06 +A1.03.21 A2.03.01 A2.03.02 A2.03.06 A2.03.07 +A1.03.22 A2.03.02 A2.03.03 A2.03.07 A2.03.08 +A1.03.23 A2.03.03 A2.03.04 A2.03.08 A2.03.09 +A1.03.24 A2.03.04 A2.03.05 A2.03.09 A2.03.10 +A1.03.25 A2.03.06 A2.03.07 +A1.03.26 A2.03.07 A2.03.08 +A1.03.27 A2.03.08 A2.03.09 +A1.03.28 A2.03.09 A2.03.10 +A1.03.29 A2.02.13 A2.03.11 +A1.03.30 A2.03.11 A2.03.12 +A1.03.31 A2.03.12 A2.03.13 +A1.03.32 A2.03.13 A2.03.14 +A1.03.33 A2.02.13 A2.02.17 A2.03.11 A2.03.15 +A1.03.34 A2.03.11 A2.03.12 A2.03.15 A2.03.16 +A1.03.35 A2.03.12 A2.03.13 A2.03.16 A2.03.17 +A1.03.36 A2.03.13 A2.03.14 A2.03.17 A2.03.18 +A1.03.37 A2.03.15 A2.03.16 +A1.03.38 A2.03.16 A2.03.17 +A1.03.39 A2.03.17 A2.03.18 +A1.03.40 A2.02.21 A2.03.19 +A1.03.41 A2.03.19 A2.03.20 +A1.03.42 A2.03.20 A2.03.21 +A1.03.43 A2.02.21 A2.02.23 A2.03.19 A2.03.22 +A1.03.44 A2.03.19 A2.03.20 A2.03.22 A2.03.23 +A1.03.45 A2.03.20 A2.03.21 A2.03.23 A2.03.24 +A1.03.46 A2.03.22 A2.03.23 +A1.03.47 A2.03.23 A2.03.24 +A1.03.48 A2.02.26 A2.03.25 +A1.03.49 A2.03.25 A2.03.26 +A1.03.50 A2.02.26 A2.03.25 +A1.03.51 A2.03.25 +A1.03.52 A2.03.25 A2.03.26 +A1.03.53 A2.03.26 +A1.03.54 A2.02.27 A2.02.28 +A1.03.55 A2.02.28 +A1.03.56 A2.02.28 A2.03.27 +A1.03.57 A2.03.27 A2.03.28 +A1.03.58 A2.02.28 +A1.03.59 A2.02.28 A2.03.27 A2.03.29 +A1.03.60 A2.03.27 A2.03.28 A2.03.29 A2.03.30 +A1.03.61 A2.02.28 A2.03.29 +A1.03.62 A2.03.29 A2.03.30 +A1.04.12 A2.04.00 +A1.04.13 A2.04.00 +A1.04.14 A2.03.00 A2.04.00 +A1.04.15 A2.04.01 A2.04.02 +A1.04.16 A2.04.02 A2.04.03 +A1.04.17 A2.04.03 A2.04.04 +A1.04.18 A2.04.04 A2.04.05 +A1.04.19 A2.03.05 A2.04.05 +A1.04.20 A2.04.01 A2.04.02 A2.04.06 A2.04.07 +A1.04.21 A2.04.02 A2.04.03 A2.04.07 A2.04.08 +A1.04.22 A2.04.03 A2.04.04 A2.04.08 A2.04.09 +A1.04.23 A2.04.04 A2.04.05 A2.04.09 A2.04.10 +A1.04.24 A2.03.05 A2.03.10 A2.04.05 A2.04.10 +A1.04.25 A2.04.07 A2.04.08 +A1.04.26 A2.04.08 A2.04.09 +A1.04.27 A2.04.09 A2.04.10 +A1.04.28 A2.03.10 A2.04.10 +A1.04.29 A2.04.11 A2.04.12 +A1.04.30 A2.04.12 A2.04.13 +A1.04.31 A2.04.13 A2.04.14 +A1.04.32 A2.03.14 A2.04.14 +A1.04.33 A2.04.11 A2.04.12 A2.04.15 A2.04.16 +A1.04.34 A2.04.12 A2.04.13 A2.04.16 A2.04.17 +A1.04.35 A2.04.13 A2.04.14 A2.04.17 A2.04.18 +A1.04.36 A2.03.14 A2.03.18 A2.04.14 A2.04.18 +A1.04.37 A2.04.16 A2.04.17 +A1.04.38 A2.04.17 A2.04.18 +A1.04.39 A2.03.18 A2.04.18 +A1.04.40 A2.04.19 A2.04.20 +A1.04.41 A2.04.20 A2.04.21 +A1.04.42 A2.03.21 A2.04.21 +A1.04.43 A2.04.19 A2.04.20 A2.04.22 A2.04.23 +A1.04.44 A2.04.20 A2.04.21 A2.04.23 A2.04.24 +A1.04.45 A2.03.21 A2.03.24 A2.04.21 A2.04.24 +A1.04.46 A2.04.23 A2.04.24 +A1.04.47 A2.03.24 A2.04.24 +A1.04.48 A2.04.25 A2.04.26 +A1.04.49 A2.03.26 A2.04.26 +A1.04.50 A2.04.25 +A1.04.51 A2.04.25 A2.04.26 +A1.04.52 A2.04.26 +A1.04.53 A2.03.26 A2.04.26 +A1.04.54 A2.05.28 +A1.04.55 A2.04.27 A2.05.28 +A1.04.56 A2.04.27 A2.04.28 +A1.04.57 A2.03.28 A2.04.28 +A1.04.58 A2.04.27 A2.04.29 A2.05.28 +A1.04.59 A2.04.27 A2.04.28 A2.04.29 A2.04.30 +A1.04.60 A2.03.28 A2.03.30 A2.04.28 A2.04.30 +A1.04.61 A2.04.29 A2.04.30 +A1.04.62 A2.03.30 A2.04.30 +A1.05.09 A2.05.02 +A1.05.10 A2.05.07 +A1.05.11 A2.05.00 A2.05.06 A2.06.00 +A1.05.12 A2.05.03 +A1.05.13 A2.04.01 A2.05.02 A2.05.04 +A1.05.14 A2.05.01 A2.05.02 A2.05.07 A2.05.08 +A1.05.15 A2.05.03 A2.05.05 A2.05.07 +A1.05.16 A2.05.06 A2.05.09 +A1.05.17 A2.04.01 A2.04.06 A2.05.02 A2.05.04 A2.05.08 +A1.05.18 A2.05.07 A2.05.08 +A1.05.19 A2.05.09 A2.05.10 +A1.05.20 A2.05.06 A2.05.09 A2.05.11 A2.06.08 +A1.05.21 A2.04.06 A2.05.08 +A1.05.22 A2.05.10 A2.05.12 +A1.05.23 A2.05.09 A2.05.10 A2.05.11 A2.05.14 +A1.05.24 A2.04.06 A2.04.07 +A1.05.25 A2.05.12 A2.05.13 +A1.05.26 A2.05.10 A2.05.12 A2.05.14 A2.05.15 +A1.05.27 A2.05.11 A2.05.14 +A1.05.28 A2.04.11 A2.05.13 +A1.05.29 A2.05.12 A2.05.13 A2.05.15 A2.05.17 +A1.05.30 A2.05.14 A2.05.15 +A1.05.31 A2.04.11 A2.04.15 A2.05.13 A2.05.17 +A1.05.32 A2.05.15 A2.05.17 +A1.05.33 A2.05.16 A2.05.18 +A1.05.34 A2.04.15 A2.05.17 +A1.05.35 A2.05.16 A2.05.18 A2.05.20 A2.06.19 +A1.05.36 A2.05.18 A2.05.19 +A1.05.37 A2.04.15 A2.04.16 +A1.05.38 A2.05.19 A2.05.21 +A1.05.39 A2.05.18 A2.05.19 A2.05.20 A2.05.22 +A1.05.40 A2.04.19 A2.05.21 +A1.05.41 A2.05.19 A2.05.21 A2.05.22 A2.05.23 +A1.05.42 A2.05.20 A2.05.22 +A1.05.43 A2.04.19 A2.04.22 A2.05.21 A2.05.23 +A1.05.44 A2.05.22 A2.05.23 +A1.05.45 A2.04.22 A2.05.23 +A1.05.46 A2.05.24 A2.05.25 +A1.05.47 A2.04.22 A2.04.23 +A1.05.48 A2.05.25 A2.05.26 +A1.05.49 A2.04.25 A2.05.26 +A1.05.50 A2.05.25 A2.05.26 A2.05.27 A2.06.27 +A1.05.51 A2.04.25 A2.05.26 A2.05.27 A2.05.28 +A1.05.52 A2.05.27 +A1.05.53 A2.05.27 A2.05.28 +A1.05.54 A2.05.27 +A1.05.55 A2.05.28 +A1.05.56 A2.05.27 A2.05.28 +A1.05.57 A2.05.28 +A1.05.58 A2.05.29 A2.05.30 +A1.05.59 A2.04.29 A2.05.28 +A1.05.60 A2.05.30 A2.05.31 +A1.05.61 A2.05.30 A2.05.31 +A1.05.62 A2.05.31 +A1.06.11 A2.06.02 A2.06.04 +A1.06.12 A2.06.00 A2.06.01 A2.06.05 +A1.06.13 A2.06.04 A2.07.03 +A1.06.14 A2.06.06 +A1.06.15 A2.06.01 A2.06.03 A2.06.05 +A1.06.16 A2.06.02 A2.06.04 A2.06.06 A2.06.07 +A1.06.17 A2.05.06 A2.06.00 A2.06.05 A2.06.08 +A1.06.18 A2.06.06 A2.06.09 +A1.06.19 A2.06.04 A2.06.07 +A1.06.20 A2.06.05 A2.06.08 +A1.06.21 A2.06.10 A2.07.07 +A1.06.22 A2.06.06 A2.06.07 A2.06.09 A2.06.11 +A1.06.23 A2.06.09 A2.06.12 +A1.06.24 A2.06.07 A2.06.11 +A1.06.25 A2.05.11 A2.06.08 +A1.06.26 A2.06.10 A2.06.13 +A1.06.27 A2.06.09 A2.06.11 A2.06.12 A2.06.15 +A1.06.28 A2.06.12 A2.06.14 +A1.06.29 A2.06.11 A2.06.15 +A1.06.30 A2.06.12 A2.06.14 A2.06.15 A2.06.17 +A1.06.31 A2.06.13 A2.06.16 +A1.06.32 A2.05.16 A2.06.14 +A1.06.33 A2.06.13 A2.06.16 A2.07.14 A2.07.17 +A1.06.34 A2.06.15 A2.06.17 +A1.06.35 A2.05.16 A2.06.14 A2.06.17 A2.06.19 +A1.06.36 A2.06.16 A2.06.18 +A1.06.37 A2.06.17 A2.06.19 +A1.06.38 A2.06.16 A2.06.18 A2.06.20 A2.07.17 +A1.06.39 A2.06.18 A2.06.21 +A1.06.40 A2.05.20 A2.06.19 +A1.06.41 A2.06.18 A2.06.20 A2.06.21 A2.06.22 +A1.06.42 A2.06.21 A2.06.23 +A1.06.43 A2.06.21 A2.06.22 A2.06.23 A2.06.24 +A1.06.44 A2.05.24 A2.06.23 +A1.06.45 A2.06.22 A2.06.24 +A1.06.46 A2.05.24 A2.06.23 A2.06.24 A2.06.25 +A1.06.47 A2.06.24 A2.06.25 +A1.06.48 A2.05.24 A2.05.25 A2.06.25 A2.06.27 +A1.06.49 A2.06.25 A2.06.27 +A1.06.50 A2.06.26 A2.06.28 +A1.06.51 A2.05.27 A2.06.27 +A1.06.52 A2.06.28 +A1.06.53 A2.06.28 +A1.06.54 A2.06.28 +A1.06.55 A2.06.28 A2.06.29 +A1.06.56 A2.06.28 A2.06.29 A2.06.30 +A1.06.57 A2.05.29 A2.06.29 +A1.06.58 A2.06.28 A2.06.30 +A1.06.59 A2.05.29 A2.06.29 A2.06.30 A2.06.31 +A1.06.60 A2.06.30 A2.06.31 +A1.06.61 A2.05.29 A2.05.30 A2.06.31 +A1.06.62 A2.06.31 +A1.07.07 A2.07.03 +A1.07.13 A2.07.03 A2.07.04 +A1.07.14 A2.07.04 +A1.07.15 A2.07.00 A2.07.05 +A1.07.16 A2.07.00 A2.07.01 A2.07.05 A2.07.06 +A1.07.17 A2.07.01 A2.07.02 A2.07.06 +A1.07.18 A2.07.03 A2.07.07 +A1.07.19 A2.07.03 A2.07.04 A2.07.07 A2.07.08 +A1.07.20 A2.07.04 A2.07.08 +A1.07.21 A2.07.05 A2.07.09 +A1.07.22 A2.07.05 A2.07.06 A2.07.09 A2.07.10 +A1.07.23 A2.07.06 A2.07.10 +A1.07.24 A2.06.10 A2.07.07 A2.07.08 A2.07.11 +A1.07.25 A2.07.08 A2.07.11 +A1.07.26 A2.07.09 A2.07.12 +A1.07.27 A2.07.09 A2.07.10 A2.07.12 A2.07.13 +A1.07.28 A2.07.10 A2.07.13 +A1.07.29 A2.06.10 A2.06.13 A2.07.11 A2.07.14 +A1.07.30 A2.07.11 A2.07.14 +A1.07.31 A2.07.12 A2.07.15 +A1.07.32 A2.07.12 A2.07.13 A2.07.15 A2.07.16 +A1.07.33 A2.07.13 A2.07.16 +A1.07.34 A2.07.14 A2.07.17 +A1.07.35 A2.07.15 A2.07.18 +A1.07.36 A2.07.15 A2.07.16 A2.07.18 A2.07.19 +A1.07.37 A2.07.16 A2.07.19 +A1.07.38 A2.06.20 A2.07.17 +A1.07.39 A2.07.18 A2.07.20 +A1.07.40 A2.07.18 A2.07.19 A2.07.20 A2.07.21 +A1.07.41 A2.07.19 A2.07.21 +A1.07.42 A2.06.20 A2.06.22 +A1.07.43 A2.07.20 A2.07.22 +A1.07.44 A2.07.20 A2.07.21 A2.07.22 A2.07.23 +A1.07.45 A2.07.21 A2.07.23 +A1.07.46 A2.07.22 A2.07.24 +A1.07.47 A2.07.22 A2.07.23 A2.07.24 A2.07.25 +A1.07.48 A2.07.23 A2.07.25 +A1.07.49 A2.06.26 A2.07.24 +A1.07.50 A2.06.26 A2.07.24 A2.07.25 A2.07.26 +A1.07.51 A2.07.25 A2.07.26 +A1.07.52 A2.06.26 A2.06.28 A2.07.26 A2.07.27 +A1.07.53 A2.07.26 A2.07.27 +A1.07.54 A2.07.27 +A1.07.55 A2.07.27 +A1.07.56 A2.07.27 +A1.07.57 A2.07.27 A2.07.28 +A1.07.58 A2.07.27 A2.07.28 A2.07.29 +A1.07.59 A2.07.27 A2.07.29 +A1.07.60 A2.06.31 A2.07.28 +A1.07.61 A2.07.28 A2.07.29 +A1.07.62 A2.07.29 +A1.08.12 A2.08.03 A2.08.04 +A1.08.13 A2.08.04 +A1.08.14 A2.08.00 A2.08.05 +A1.08.15 A2.08.00 A2.08.02 A2.08.05 A2.08.06 +A1.08.16 A2.08.01 A2.08.02 A2.08.06 +A1.08.17 A2.08.03 A2.08.07 +A1.08.18 A2.08.03 A2.08.04 A2.08.07 A2.08.08 +A1.08.19 A2.08.04 A2.08.08 +A1.08.20 A2.08.05 A2.08.09 +A1.08.21 A2.08.05 A2.08.06 A2.08.09 A2.08.10 +A1.08.22 A2.08.06 A2.08.10 +A1.08.23 A2.08.07 A2.08.08 A2.08.11 A2.09.10 +A1.08.24 A2.08.08 A2.08.11 +A1.08.25 A2.08.09 A2.08.12 +A1.08.26 A2.08.09 A2.08.10 A2.08.12 A2.08.13 +A1.08.27 A2.08.10 A2.08.13 +A1.08.28 A2.08.11 A2.08.14 A2.09.10 A2.09.13 +A1.08.29 A2.08.11 A2.08.14 +A1.08.30 A2.08.12 A2.08.15 +A1.08.31 A2.08.12 A2.08.13 A2.08.15 A2.08.16 +A1.08.32 A2.08.13 A2.08.16 +A1.08.33 A2.08.14 A2.08.17 +A1.08.34 A2.08.15 A2.08.18 +A1.08.35 A2.08.15 A2.08.16 A2.08.18 A2.08.19 +A1.08.36 A2.08.16 A2.08.19 +A1.08.37 A2.08.17 A2.09.20 +A1.08.38 A2.08.18 A2.08.20 +A1.08.39 A2.08.18 A2.08.19 A2.08.20 A2.08.21 +A1.08.40 A2.08.19 A2.08.21 +A1.08.41 A2.09.20 A2.09.22 +A1.08.42 A2.08.20 A2.08.22 +A1.08.43 A2.08.20 A2.08.21 A2.08.22 A2.08.23 +A1.08.44 A2.08.21 A2.08.23 +A1.08.45 A2.08.22 A2.08.24 +A1.08.46 A2.08.22 A2.08.23 A2.08.24 A2.08.25 +A1.08.47 A2.08.23 A2.08.25 +A1.08.48 A2.08.24 A2.09.26 +A1.08.49 A2.08.24 A2.08.25 A2.08.26 A2.09.26 +A1.08.50 A2.08.25 A2.08.26 +A1.08.51 A2.08.26 A2.08.27 A2.09.26 A2.09.28 +A1.08.52 A2.08.26 A2.08.27 +A1.08.53 A2.09.28 +A1.08.54 A2.08.27 +A1.08.55 A2.08.27 +A1.08.56 A2.08.27 +A1.08.57 A2.08.27 A2.08.28 +A1.08.58 A2.08.27 A2.08.28 A2.08.29 +A1.08.59 A2.08.27 A2.08.29 +A1.08.60 A2.08.28 A2.09.31 +A1.08.61 A2.08.28 A2.08.29 +A1.08.62 A2.08.29 +A1.09.11 A2.09.04 +A1.09.12 A2.09.00 A2.09.05 +A1.09.13 A2.08.03 A2.09.04 +A1.09.14 A2.09.02 A2.09.06 +A1.09.15 A2.09.01 A2.09.05 +A1.09.16 A2.09.02 A2.09.04 A2.09.06 A2.09.07 +A1.09.17 A2.09.00 A2.09.03 A2.09.05 A2.09.08 A2.10.01 A2.10.06 +A1.09.18 A2.09.06 A2.09.09 +A1.09.19 A2.09.04 A2.09.07 +A1.09.20 A2.09.05 A2.09.08 +A1.09.21 A2.08.07 A2.09.10 +A1.09.22 A2.09.06 A2.09.07 A2.09.09 A2.09.11 +A1.09.23 A2.09.09 A2.09.12 +A1.09.24 A2.09.07 A2.09.11 +A1.09.25 A2.09.08 A2.10.11 +A1.09.26 A2.09.10 A2.09.13 +A1.09.27 A2.09.09 A2.09.11 A2.09.12 A2.09.15 +A1.09.28 A2.09.12 A2.09.14 +A1.09.29 A2.09.11 A2.09.15 +A1.09.30 A2.09.12 A2.09.14 A2.09.15 A2.09.17 +A1.09.31 A2.09.13 A2.09.16 +A1.09.32 A2.09.14 A2.10.16 +A1.09.33 A2.08.14 A2.08.17 A2.09.13 A2.09.16 +A1.09.34 A2.09.15 A2.09.17 +A1.09.35 A2.09.14 A2.09.17 A2.09.19 A2.10.16 +A1.09.36 A2.09.16 A2.09.18 +A1.09.37 A2.09.17 A2.09.19 +A1.09.38 A2.08.17 A2.09.16 A2.09.18 A2.09.20 +A1.09.39 A2.09.18 A2.09.21 +A1.09.40 A2.09.19 A2.10.20 +A1.09.41 A2.09.18 A2.09.20 A2.09.21 A2.09.22 +A1.09.42 A2.09.21 A2.09.23 +A1.09.43 A2.09.21 A2.09.22 A2.09.23 A2.09.24 +A1.09.44 A2.09.23 A2.10.24 +A1.09.45 A2.09.22 A2.09.24 +A1.09.46 A2.09.23 A2.09.24 A2.09.25 A2.10.24 +A1.09.47 A2.09.24 A2.09.25 +A1.09.48 A2.09.25 A2.09.27 A2.10.24 A2.10.25 +A1.09.49 A2.09.25 A2.09.27 +A1.09.50 A2.09.26 A2.09.28 +A1.09.51 A2.09.27 A2.10.27 +A1.09.52 A2.09.28 +A1.09.53 A2.09.28 +A1.09.54 A2.09.28 A2.10.29 +A1.09.55 A2.09.28 A2.09.29 +A1.09.56 A2.10.29 +A1.09.57 A2.09.28 A2.09.30 +A1.09.58 A2.09.29 +A1.09.59 A2.09.30 +A1.09.60 A2.09.29 A2.09.31 A2.10.30 +A1.09.61 A2.09.30 A2.09.31 A2.10.30 +A1.09.62 A2.09.30 A2.09.31 +A1.10.10 A2.10.02 +A1.10.11 A2.10.07 +A1.10.12 A2.10.01 A2.10.06 +A1.10.13 A2.10.03 +A1.10.14 A2.10.02 A2.10.04 A2.11.01 +A1.10.15 A2.10.00 A2.10.02 A2.10.07 A2.10.08 +A1.10.16 A2.10.03 A2.10.05 A2.10.07 +A1.10.17 A2.10.06 A2.10.09 +A1.10.18 A2.10.02 A2.10.04 A2.10.08 A2.11.01 A2.11.06 +A1.10.19 A2.10.07 A2.10.08 +A1.10.20 A2.10.09 A2.10.10 +A1.10.21 A2.09.08 A2.10.06 A2.10.09 A2.10.11 +A1.10.22 A2.10.08 A2.11.06 +A1.10.23 A2.10.10 A2.10.12 +A1.10.24 A2.10.09 A2.10.10 A2.10.11 A2.10.14 +A1.10.25 A2.11.06 A2.11.07 +A1.10.26 A2.10.12 A2.10.13 +A1.10.27 A2.10.10 A2.10.12 A2.10.14 A2.10.15 +A1.10.28 A2.10.11 A2.10.14 +A1.10.29 A2.10.13 A2.11.11 +A1.10.30 A2.10.12 A2.10.13 A2.10.15 A2.10.17 +A1.10.31 A2.10.14 A2.10.15 +A1.10.32 A2.10.13 A2.10.17 A2.11.11 A2.11.15 +A1.10.33 A2.10.15 A2.10.17 +A1.10.34 A2.10.16 A2.10.18 +A1.10.35 A2.10.17 A2.11.15 +A1.10.36 A2.09.19 A2.10.16 A2.10.18 A2.10.20 +A1.10.37 A2.10.18 A2.10.19 +A1.10.38 A2.11.15 A2.11.16 +A1.10.39 A2.10.19 A2.10.21 +A1.10.40 A2.10.18 A2.10.19 A2.10.20 A2.10.22 +A1.10.41 A2.10.21 A2.11.19 +A1.10.42 A2.10.19 A2.10.21 A2.10.22 A2.10.23 +A1.10.43 A2.10.20 A2.10.22 +A1.10.44 A2.10.21 A2.10.23 A2.11.19 A2.11.22 +A1.10.45 A2.10.22 A2.10.23 +A1.10.46 A2.10.23 A2.11.22 +A1.10.47 A2.10.24 A2.10.25 +A1.10.48 A2.11.22 A2.11.23 +A1.10.49 A2.10.25 A2.10.26 +A1.10.50 A2.10.26 A2.11.25 +A1.10.51 A2.09.27 A2.10.25 A2.10.26 A2.10.27 +A1.10.52 A2.10.26 A2.10.27 A2.10.28 A2.11.25 +A1.10.53 A2.10.27 +A1.10.54 A2.10.27 A2.10.28 +A1.10.55 A2.10.27 +A1.10.56 A2.10.28 +A1.10.57 A2.10.27 A2.10.28 +A1.10.58 A2.10.28 +A1.10.59 A2.10.29 A2.10.30 +A1.10.60 A2.10.28 A2.11.29 +A1.10.61 A2.10.30 A2.10.31 +A1.10.62 A2.10.31 +A1.11.12 A2.11.00 +A1.11.13 A2.11.00 +A1.11.14 A2.11.00 A2.12.00 +A1.11.15 A2.11.01 A2.11.02 +A1.11.16 A2.11.02 A2.11.03 +A1.11.17 A2.11.03 A2.11.04 +A1.11.18 A2.11.04 A2.11.05 +A1.11.19 A2.11.05 A2.12.05 +A1.11.20 A2.11.01 A2.11.02 A2.11.06 A2.11.07 +A1.11.21 A2.11.02 A2.11.03 A2.11.07 A2.11.08 +A1.11.22 A2.11.03 A2.11.04 A2.11.08 A2.11.09 +A1.11.23 A2.11.04 A2.11.05 A2.11.09 A2.11.10 +A1.11.24 A2.11.05 A2.11.10 A2.12.05 A2.12.10 +A1.11.25 A2.11.07 A2.11.08 +A1.11.26 A2.11.08 A2.11.09 +A1.11.27 A2.11.09 A2.11.10 +A1.11.28 A2.11.10 A2.12.10 +A1.11.29 A2.11.11 A2.11.12 +A1.11.30 A2.11.12 A2.11.13 +A1.11.31 A2.11.13 A2.11.14 +A1.11.32 A2.11.14 A2.12.14 +A1.11.33 A2.11.11 A2.11.12 A2.11.15 A2.11.16 +A1.11.34 A2.11.12 A2.11.13 A2.11.16 A2.11.17 +A1.11.35 A2.11.13 A2.11.14 A2.11.17 A2.11.18 +A1.11.36 A2.11.14 A2.11.18 A2.12.14 A2.12.18 +A1.11.37 A2.11.16 A2.11.17 +A1.11.38 A2.11.17 A2.11.18 +A1.11.39 A2.11.18 A2.12.18 +A1.11.40 A2.11.19 A2.11.20 +A1.11.41 A2.11.20 A2.11.21 +A1.11.42 A2.11.21 A2.12.21 +A1.11.43 A2.11.19 A2.11.20 A2.11.22 A2.11.23 +A1.11.44 A2.11.20 A2.11.21 A2.11.23 A2.11.24 +A1.11.45 A2.11.21 A2.11.24 A2.12.21 A2.12.24 +A1.11.46 A2.11.23 A2.11.24 +A1.11.47 A2.11.24 A2.12.24 +A1.11.48 A2.11.25 A2.11.26 +A1.11.49 A2.11.26 A2.12.26 +A1.11.50 A2.11.25 +A1.11.51 A2.11.25 A2.11.26 +A1.11.52 A2.11.26 +A1.11.53 A2.11.26 A2.12.26 +A1.11.54 A2.10.28 +A1.11.55 A2.10.28 A2.11.27 +A1.11.56 A2.11.27 A2.11.28 +A1.11.57 A2.11.28 A2.12.28 +A1.11.58 A2.10.28 A2.11.27 A2.11.29 +A1.11.59 A2.11.27 A2.11.28 A2.11.29 A2.11.30 +A1.11.60 A2.11.28 A2.11.30 A2.12.28 A2.12.30 +A1.11.61 A2.11.29 A2.11.30 +A1.11.62 A2.11.30 A2.12.30 +A1.12.12 A2.12.00 +A1.12.13 A2.12.00 +A1.12.14 A2.12.00 +A1.12.15 A2.12.01 +A1.12.16 A2.12.01 A2.12.02 +A1.12.17 A2.12.02 A2.12.03 +A1.12.18 A2.12.03 A2.12.04 +A1.12.19 A2.12.04 A2.12.05 +A1.12.20 A2.12.01 A2.12.06 A2.13.04 A2.13.08 +A1.12.21 A2.12.01 A2.12.02 A2.12.06 A2.12.07 +A1.12.22 A2.12.02 A2.12.03 A2.12.07 A2.12.08 +A1.12.23 A2.12.03 A2.12.04 A2.12.08 A2.12.09 +A1.12.24 A2.12.04 A2.12.05 A2.12.09 A2.12.10 +A1.12.25 A2.12.06 A2.12.07 +A1.12.26 A2.12.07 A2.12.08 +A1.12.27 A2.12.08 A2.12.09 +A1.12.28 A2.12.09 A2.12.10 +A1.12.29 A2.12.11 A2.13.13 +A1.12.30 A2.12.11 A2.12.12 +A1.12.31 A2.12.12 A2.12.13 +A1.12.32 A2.12.13 A2.12.14 +A1.12.33 A2.12.11 A2.12.15 A2.13.13 A2.13.17 +A1.12.34 A2.12.11 A2.12.12 A2.12.15 A2.12.16 +A1.12.35 A2.12.12 A2.12.13 A2.12.16 A2.12.17 +A1.12.36 A2.12.13 A2.12.14 A2.12.17 A2.12.18 +A1.12.37 A2.12.15 A2.12.16 +A1.12.38 A2.12.16 A2.12.17 +A1.12.39 A2.12.17 A2.12.18 +A1.12.40 A2.12.19 A2.13.21 +A1.12.41 A2.12.19 A2.12.20 +A1.12.42 A2.12.20 A2.12.21 +A1.12.43 A2.12.19 A2.12.22 A2.13.21 A2.13.23 +A1.12.44 A2.12.19 A2.12.20 A2.12.22 A2.12.23 +A1.12.45 A2.12.20 A2.12.21 A2.12.23 A2.12.24 +A1.12.46 A2.12.22 A2.12.23 +A1.12.47 A2.12.23 A2.12.24 +A1.12.48 A2.12.25 A2.13.26 +A1.12.49 A2.12.25 A2.12.26 +A1.12.50 A2.12.25 A2.13.26 +A1.12.51 A2.12.25 +A1.12.52 A2.12.25 A2.12.26 +A1.12.53 A2.12.26 +A1.12.54 A2.13.27 A2.13.28 +A1.12.55 A2.13.28 +A1.12.56 A2.12.27 A2.13.28 +A1.12.57 A2.12.27 A2.12.28 +A1.12.58 A2.13.28 +A1.12.59 A2.12.27 A2.12.29 A2.13.28 +A1.12.60 A2.12.27 A2.12.28 A2.12.29 A2.12.30 +A1.12.61 A2.12.29 A2.13.28 +A1.12.62 A2.12.29 A2.12.30 +A1.13.11 A2.13.03 +A1.13.12 A2.13.00 A2.13.06 A2.14.00 +A1.13.13 A2.12.01 A2.13.02 A2.13.04 +A1.13.14 A2.13.01 A2.13.07 +A1.13.15 A2.13.03 A2.13.05 A2.13.07 +A1.13.16 A2.13.00 A2.13.06 +A1.13.17 A2.13.02 A2.13.04 A2.13.08 +A1.13.18 A2.13.07 +A1.13.19 A2.13.09 +A1.13.20 A2.13.06 A2.14.08 +A1.13.21 A2.13.08 +A1.13.22 A2.13.10 +A1.13.23 A2.13.09 A2.13.11 +A1.13.24 A2.12.06 A2.13.08 +A1.13.25 A2.13.12 +A1.13.26 A2.13.10 A2.13.14 +A1.13.27 A2.13.11 +A1.13.28 A2.13.12 A2.13.13 +A1.13.29 A2.13.12 A2.13.15 +A1.13.30 A2.13.14 +A1.13.31 A2.13.12 A2.13.13 A2.13.15 A2.13.17 +A1.13.32 A2.13.15 +A1.13.33 A2.13.16 +A1.13.34 A2.13.15 A2.13.17 +A1.13.35 A2.13.16 A2.14.19 +A1.13.36 A2.13.18 +A1.13.37 A2.12.15 A2.13.17 +A1.13.38 A2.13.18 A2.13.19 +A1.13.39 A2.13.18 A2.13.20 +A1.13.40 A2.13.19 A2.13.21 +A1.13.41 A2.13.18 A2.13.19 A2.13.20 A2.13.22 +A1.13.42 A2.13.20 +A1.13.43 A2.13.19 A2.13.21 A2.13.22 A2.13.23 +A1.13.44 A2.13.20 A2.13.22 +A1.13.45 A2.13.22 A2.13.23 +A1.13.46 A2.13.24 A2.14.23 +A1.13.47 A2.12.22 A2.13.23 +A1.13.48 A2.13.24 A2.13.25 +A1.13.49 A2.13.25 A2.13.26 +A1.13.50 A2.13.24 A2.13.25 A2.14.25 A2.14.27 +A1.13.51 A2.13.25 A2.13.26 A2.13.27 A2.14.27 +A1.13.52 A2.13.27 A2.14.27 +A1.13.53 A2.13.27 +A1.13.54 A2.13.27 A2.14.27 +A1.13.55 A2.13.27 A2.13.28 +A1.13.56 A2.13.27 +A1.13.57 A2.13.27 A2.13.28 +A1.13.58 A2.13.29 A2.14.29 +A1.13.59 A2.13.28 +A1.13.60 A2.13.29 A2.13.30 A2.13.31 +A1.13.61 A2.13.29 A2.13.30 A2.13.31 A2.14.31 +A1.13.62 A2.13.31 +A1.14.12 A2.14.01 +A1.14.13 A2.15.03 +A1.14.14 A2.14.06 +A1.14.15 A2.14.01 A2.14.03 +A1.14.16 A2.14.02 A2.14.04 +A1.14.17 A2.13.06 A2.14.00 A2.14.05 +A1.14.18 A2.14.06 +A1.14.19 A2.14.04 +A1.14.20 A2.14.05 +A1.14.21 A2.15.07 +A1.14.22 A2.14.06 A2.14.07 +A1.14.23 A2.14.09 +A1.14.24 A2.14.07 +A1.14.25 A2.14.08 +A1.14.26 A2.14.10 +A1.14.27 A2.14.09 A2.14.11 +A1.14.28 A2.14.12 +A1.14.29 A2.14.11 +A1.14.30 A2.14.12 A2.14.15 +A1.14.31 A2.14.13 +A1.14.32 A2.14.14 +A1.14.33 A2.14.13 A2.15.14 +A1.14.34 A2.14.15 +A1.14.35 A2.14.14 A2.14.17 +A1.14.36 A2.14.16 +A1.14.37 A2.14.17 +A1.14.38 A2.14.16 A2.15.17 +A1.14.39 A2.14.18 +A1.14.40 A2.14.19 +A1.14.41 A2.14.18 A2.14.20 +A1.14.42 A2.14.21 +A1.14.43 A2.14.21 A2.14.22 +A1.14.44 A2.14.23 +A1.14.45 A2.14.22 +A1.14.46 A2.14.23 A2.14.24 +A1.14.47 A2.14.24 +A1.14.48 A2.13.24 A2.14.23 A2.14.24 A2.14.25 +A1.14.49 A2.14.24 A2.14.25 +A1.14.50 A2.14.26 A2.15.24 +A1.14.51 A2.14.25 A2.14.27 +A1.14.52 A2.14.26 A2.14.28 +A1.14.53 A2.14.26 A2.14.28 +A1.14.54 A2.14.26 A2.14.28 +A1.14.55 A2.14.28 +A1.14.56 A2.14.28 +A1.14.57 A2.14.28 A2.14.29 +A1.14.58 A2.14.28 +A1.14.59 A2.14.28 A2.14.29 A2.14.30 +A1.14.60 A2.14.28 A2.14.30 +A1.14.61 A2.13.29 A2.14.29 A2.14.30 A2.14.31 +A1.14.62 A2.14.30 A2.14.31 A2.15.28 +A1.15.15 A2.15.02 +A1.15.16 A2.15.01 A2.15.02 +A1.15.17 A2.15.00 A2.15.01 +A1.15.18 A2.15.03 +A1.15.19 A2.15.03 A2.15.04 +A1.15.20 A2.15.04 +A1.15.21 A2.15.05 +A1.15.22 A2.15.05 A2.15.06 +A1.15.23 A2.15.06 +A1.15.24 A2.15.07 A2.15.08 +A1.15.25 A2.15.08 +A1.15.26 A2.15.09 +A1.15.27 A2.15.09 A2.15.10 +A1.15.28 A2.15.10 +A1.15.29 A2.14.10 A2.15.11 +A1.15.30 A2.15.11 +A1.15.31 A2.15.12 +A1.15.32 A2.15.12 A2.15.13 +A1.15.33 A2.15.13 +A1.15.34 A2.15.14 +A1.15.35 A2.15.15 +A1.15.36 A2.15.15 A2.15.16 +A1.15.37 A2.15.16 +A1.15.38 A2.15.17 +A1.15.39 A2.15.18 +A1.15.40 A2.15.18 A2.15.19 +A1.15.41 A2.15.19 +A1.15.42 A2.14.20 +A1.15.43 A2.15.20 +A1.15.44 A2.15.20 A2.15.21 +A1.15.45 A2.15.21 +A1.15.46 A2.15.22 +A1.15.47 A2.15.22 A2.15.23 +A1.15.48 A2.15.23 +A1.15.49 A2.15.24 +A1.15.50 A2.15.24 A2.15.25 +A1.15.51 A2.15.25 +A1.15.52 A2.14.26 A2.15.24 A2.15.25 A2.15.26 +A1.15.53 A2.15.25 A2.15.26 +A1.15.54 A2.15.26 A2.15.27 +A1.15.55 A2.15.26 A2.15.27 +A1.15.56 A2.15.26 A2.15.27 +A1.15.57 A2.15.27 +A1.15.58 A2.15.27 +A1.15.59 A2.15.27 +A1.15.60 A2.15.27 A2.15.28 +A1.15.61 A2.15.27 A2.15.28 A2.15.29 +A1.15.62 A2.15.27 A2.15.29 +A2.00.05 A3.00.02 +A2.00.06 A3.00.00 +A2.00.07 A3.00.01 A3.01.00 A3.01.02 +A2.00.08 A3.00.01 +A2.00.09 A3.00.02 +A2.00.10 A3.00.03 +A2.00.11 A3.00.01 A3.00.04 +A2.00.12 A3.00.02 A3.00.05 +A2.00.13 A3.00.03 A3.00.06 +A2.00.14 A3.00.04 A3.00.07 +A2.00.15 A3.00.05 A3.00.08 +A2.00.16 A3.00.06 A3.00.09 +A2.00.17 A3.00.07 +A2.00.18 A3.00.08 +A2.00.19 A3.00.09 +A2.00.20 A3.00.08 A3.00.10 +A2.00.21 A3.00.09 A3.00.11 +A2.00.22 A3.00.10 A3.00.12 +A2.00.23 A3.00.11 A3.00.13 +A2.00.24 A3.00.12 +A2.00.25 A3.00.13 +A2.00.26 A3.00.13 A3.00.14 +A2.00.27 A3.00.14 A3.00.15 A3.01.15 +A2.00.28 A3.00.15 A3.01.15 +A2.00.29 A3.00.15 +A2.01.03 A3.02.00 +A2.01.04 A3.01.02 +A2.01.05 A3.01.01 A3.01.03 +A2.01.06 A3.01.01 A3.01.02 +A2.01.07 A3.01.02 +A2.01.08 A3.01.01 A3.01.03 A3.02.00 +A2.01.09 A3.01.01 A3.01.02 A3.01.03 A3.01.05 +A2.01.10 A3.00.01 A3.01.00 A3.01.02 A3.01.04 +A2.01.11 A3.01.01 A3.01.02 A3.01.05 +A2.01.12 A3.01.03 A3.01.05 +A2.01.13 A3.01.04 A3.01.06 +A2.01.14 A3.01.03 A3.01.05 A3.01.07 A3.02.05 +A2.01.15 A3.01.05 +A2.01.16 A3.01.06 +A2.01.17 A3.01.05 A3.01.07 +A2.01.18 A3.01.06 A3.01.08 +A2.01.19 A3.01.07 A3.02.09 +A2.01.20 A3.00.07 A3.01.09 +A2.01.21 A3.01.08 A3.01.10 +A2.01.22 A3.01.09 A3.01.11 +A2.01.23 A3.01.10 +A2.01.24 A3.01.11 +A2.01.25 A3.01.11 A3.01.12 +A2.01.26 A3.00.12 A3.01.13 +A2.01.27 A3.01.12 A3.02.13 +A2.01.28 A3.01.13 A3.01.14 A3.01.15 +A2.01.29 A3.01.14 A3.02.14 +A2.01.30 A3.01.14 A3.01.15 +A2.01.31 A3.01.15 A3.02.14 +A2.02.06 A3.02.00 +A2.02.07 A3.02.01 A3.02.02 +A2.02.08 A3.02.01 +A2.02.09 A3.02.00 A3.02.02 A3.02.03 +A2.02.10 A3.02.00 A3.02.01 A3.02.02 A3.02.03 A3.02.04 +A2.02.11 A3.01.03 A3.02.00 A3.02.03 A3.02.05 +A2.02.12 A3.02.01 A3.02.02 A3.02.04 +A2.02.13 A3.02.01 A3.02.02 A3.02.04 A3.02.06 A3.03.05 +A2.02.14 A3.02.03 A3.02.04 A3.02.05 A3.02.07 +A2.02.15 A3.02.04 A3.02.07 +A2.02.16 A3.01.07 A3.02.05 A3.02.07 A3.02.09 +A2.02.17 A3.02.04 A3.02.06 A3.02.07 A3.02.08 +A2.02.18 A3.02.07 A3.02.09 +A2.02.19 A3.02.07 A3.02.08 A3.02.09 A3.02.10 +A2.02.20 A3.02.09 +A2.02.21 A3.02.08 A3.02.10 A3.03.10 A3.03.12 +A2.02.22 A3.02.09 A3.02.10 +A2.02.23 A3.02.10 A3.03.12 +A2.02.24 A3.01.10 A3.02.11 +A2.02.25 A3.02.11 A3.02.12 +A2.02.26 A3.02.12 +A2.02.27 A3.02.13 +A2.02.28 A3.02.13 A3.03.15 +A2.02.29 A3.01.14 A3.02.14 A3.02.15 +A2.02.30 A3.02.14 A3.02.15 +A2.02.31 A3.02.15 +A2.03.01 A3.03.02 +A2.03.02 A3.03.02 +A2.03.03 A3.03.02 A3.03.03 +A2.03.04 A3.03.00 A3.03.03 A3.03.04 +A2.03.05 A3.03.00 A3.03.01 A3.03.04 A3.04.01 A3.04.04 +A2.03.06 A3.02.01 A3.03.02 A3.03.05 +A2.03.07 A3.03.02 A3.03.03 A3.03.05 A3.03.06 +A2.03.08 A3.03.02 A3.03.03 A3.03.06 +A2.03.09 A3.03.03 A3.03.04 A3.03.06 A3.03.07 +A2.03.10 A3.03.04 A3.03.07 A3.04.04 A3.04.07 +A2.03.11 A3.02.06 A3.03.05 A3.03.06 A3.03.08 +A2.03.12 A3.03.06 A3.03.08 +A2.03.13 A3.03.06 A3.03.07 A3.03.08 A3.03.09 +A2.03.14 A3.03.07 A3.03.09 A3.04.07 A3.04.09 +A2.03.15 A3.02.06 A3.02.08 A3.03.08 A3.03.10 +A2.03.16 A3.03.08 A3.03.10 +A2.03.17 A3.03.08 A3.03.09 A3.03.10 A3.03.11 +A2.03.18 A3.03.09 A3.03.11 A3.04.09 A3.04.11 +A2.03.19 A3.03.10 A3.03.12 +A2.03.20 A3.03.10 A3.03.11 A3.03.12 A3.03.13 +A2.03.21 A3.03.11 A3.03.13 A3.04.11 A3.04.13 +A2.03.22 A3.03.12 +A2.03.23 A3.03.12 A3.03.13 +A2.03.24 A3.03.13 A3.04.13 +A2.03.25 A3.02.12 A3.03.14 +A2.03.26 A3.03.14 A3.04.14 +A2.03.27 A3.03.15 +A2.03.28 A3.03.15 A3.04.15 +A2.03.29 A3.03.15 +A2.03.30 A3.03.15 A3.04.15 +A2.04.02 A3.04.02 +A2.04.03 A3.04.02 A3.04.03 +A2.04.04 A3.04.00 A3.04.03 A3.04.04 +A2.04.05 A3.04.00 A3.04.01 A3.04.04 +A2.04.06 A3.04.02 A3.04.05 A3.05.02 +A2.04.07 A3.04.02 A3.04.05 +A2.04.08 A3.04.02 A3.04.03 A3.04.05 A3.04.06 +A2.04.09 A3.04.03 A3.04.04 A3.04.06 A3.04.07 +A2.04.10 A3.04.04 A3.04.07 +A2.04.11 A3.04.05 A3.05.06 +A2.04.12 A3.04.05 A3.04.06 A3.04.08 A3.05.06 +A2.04.13 A3.04.06 A3.04.07 A3.04.08 A3.04.09 +A2.04.14 A3.04.07 A3.04.09 +A2.04.15 A3.05.06 A3.05.08 +A2.04.16 A3.04.08 A3.04.10 A3.05.06 A3.05.08 +A2.04.17 A3.04.08 A3.04.09 A3.04.10 A3.04.11 +A2.04.18 A3.04.09 A3.04.11 +A2.04.19 A3.04.10 A3.04.12 A3.05.08 A3.05.10 +A2.04.20 A3.04.10 A3.04.11 A3.04.12 A3.04.13 +A2.04.21 A3.04.11 A3.04.13 +A2.04.22 A3.04.12 A3.05.10 +A2.04.23 A3.04.12 A3.04.13 +A2.04.24 A3.04.13 +A2.04.25 A3.04.14 A3.05.12 +A2.04.26 A3.04.14 +A2.04.27 A3.04.15 +A2.04.28 A3.04.15 +A2.04.29 A3.04.15 +A2.04.30 A3.04.15 +A2.05.06 A3.05.00 +A2.05.07 A3.05.01 +A2.05.08 A3.05.01 A3.05.02 +A2.05.09 A3.05.00 A3.05.01 A3.05.03 +A2.05.10 A3.05.01 A3.05.03 +A2.05.11 A3.05.00 A3.05.03 A3.05.05 A3.06.02 +A2.05.12 A3.05.01 A3.05.02 A3.05.03 A3.05.04 +A2.05.13 A3.04.05 A3.05.02 A3.05.04 A3.05.06 +A2.05.14 A3.05.03 A3.05.05 +A2.05.15 A3.05.03 A3.05.04 A3.05.05 A3.05.07 +A2.05.16 A3.05.05 A3.06.06 +A2.05.17 A3.05.04 A3.05.06 A3.05.07 A3.05.08 +A2.05.18 A3.05.05 A3.05.07 A3.05.09 A3.06.06 +A2.05.19 A3.05.07 A3.05.08 A3.05.09 A3.05.10 +A2.05.20 A3.05.09 A3.06.06 +A2.05.21 A3.05.08 A3.05.10 +A2.05.22 A3.05.09 A3.05.10 +A2.05.23 A3.05.10 +A2.05.24 A3.05.11 A3.06.09 +A2.05.25 A3.05.11 +A2.05.26 A3.05.11 A3.05.12 +A2.05.27 A3.05.13 A3.06.11 +A2.05.28 A3.04.15 A3.05.13 +A2.05.29 A3.05.14 A3.06.13 A3.06.15 +A2.05.30 A3.05.14 A3.06.15 +A2.05.31 A3.05.14 +A2.06.05 A3.06.00 +A2.06.06 A3.06.00 +A2.06.07 A3.06.00 A3.06.01 +A2.06.08 A3.05.00 A3.06.00 A3.06.02 +A2.06.09 A3.06.00 +A2.06.10 A3.06.01 A3.06.03 A3.07.01 +A2.06.11 A3.06.00 A3.06.01 +A2.06.12 A3.06.00 A3.06.02 A3.06.04 +A2.06.13 A3.06.03 +A2.06.14 A3.05.05 A3.06.02 A3.06.04 A3.06.06 +A2.06.15 A3.06.00 A3.06.01 A3.06.04 +A2.06.16 A3.06.03 A3.06.05 +A2.06.17 A3.06.04 A3.06.06 +A2.06.18 A3.06.05 A3.06.07 +A2.06.19 A3.06.06 +A2.06.20 A3.06.08 A3.07.07 +A2.06.21 A3.06.07 +A2.06.22 A3.06.08 +A2.06.23 A3.06.07 A3.06.09 +A2.06.24 A3.06.08 A3.06.10 +A2.06.25 A3.06.10 A3.06.11 +A2.06.26 A3.06.12 A3.07.12 +A2.06.27 A3.06.11 +A2.06.28 A3.06.12 +A2.06.29 A3.06.12 A3.06.13 +A2.06.30 A3.06.12 A3.06.14 A3.06.15 +A2.06.31 A3.06.14 A3.06.15 +A2.07.06 A3.07.00 +A2.07.07 A3.07.01 +A2.07.08 A3.07.01 A3.07.02 +A2.07.09 A3.07.02 +A2.07.10 A3.07.00 A3.07.03 +A2.07.11 A3.07.01 A3.07.04 +A2.07.12 A3.07.02 A3.07.05 +A2.07.13 A3.07.03 A3.07.06 +A2.07.14 A3.07.04 +A2.07.15 A3.07.05 +A2.07.16 A3.07.06 +A2.07.17 A3.07.04 A3.07.07 +A2.07.18 A3.07.05 A3.07.08 +A2.07.19 A3.07.06 A3.07.09 +A2.07.20 A3.07.08 A3.07.10 +A2.07.21 A3.07.09 A3.07.11 +A2.07.22 A3.07.10 +A2.07.23 A3.07.11 +A2.07.24 A3.07.10 A3.07.12 +A2.07.25 A3.07.11 A3.07.13 +A2.07.26 A3.07.13 A3.07.14 +A2.07.27 A3.07.14 +A2.07.28 A3.06.14 A3.07.14 A3.07.15 +A2.07.29 A3.07.14 A3.07.15 +A2.08.06 A3.08.00 +A2.08.07 A3.08.01 A3.09.00 +A2.08.08 A3.08.01 +A2.08.09 A3.08.02 +A2.08.10 A3.08.00 A3.08.03 +A2.08.11 A3.08.01 A3.08.04 +A2.08.12 A3.08.02 A3.08.05 +A2.08.13 A3.08.03 A3.08.06 +A2.08.14 A3.08.04 +A2.08.15 A3.08.05 +A2.08.16 A3.08.06 +A2.08.17 A3.08.04 A3.08.07 +A2.08.18 A3.08.05 A3.08.08 +A2.08.19 A3.08.06 A3.08.09 +A2.08.20 A3.08.08 A3.08.10 +A2.08.21 A3.08.09 A3.08.11 +A2.08.22 A3.08.10 +A2.08.23 A3.08.11 +A2.08.24 A3.08.10 A3.08.12 +A2.08.25 A3.08.11 A3.08.13 +A2.08.26 A3.08.13 A3.08.14 +A2.08.27 A3.08.14 +A2.08.28 A3.08.14 A3.08.15 A3.09.15 +A2.08.29 A3.08.14 A3.08.15 +A2.09.05 A3.09.01 +A2.09.06 A3.09.02 +A2.09.07 A3.09.02 +A2.09.08 A3.09.01 A3.09.03 A3.10.00 +A2.09.09 A3.09.01 A3.09.02 +A2.09.10 A3.08.01 A3.09.00 A3.09.02 A3.09.04 +A2.09.11 A3.09.01 A3.09.02 +A2.09.12 A3.09.01 A3.09.03 A3.09.05 +A2.09.13 A3.09.04 +A2.09.14 A3.09.03 A3.09.05 A3.09.07 A3.10.05 +A2.09.15 A3.09.01 A3.09.02 A3.09.05 +A2.09.16 A3.09.04 A3.09.06 +A2.09.17 A3.09.05 A3.09.07 +A2.09.18 A3.09.06 A3.09.08 +A2.09.19 A3.09.07 +A2.09.20 A3.08.07 A3.09.09 +A2.09.21 A3.09.08 +A2.09.22 A3.09.09 +A2.09.23 A3.09.08 A3.09.10 +A2.09.24 A3.09.09 A3.09.11 +A2.09.25 A3.09.11 A3.09.12 +A2.09.26 A3.08.12 A3.09.13 +A2.09.27 A3.09.12 +A2.09.28 A3.09.13 +A2.09.29 A3.09.13 A3.09.14 A3.10.14 +A2.09.30 A3.09.13 A3.09.14 A3.09.15 +A2.09.31 A3.09.14 A3.09.15 A3.10.14 +A2.10.06 A3.10.00 +A2.10.07 A3.10.01 A3.10.02 +A2.10.08 A3.10.01 A3.10.02 +A2.10.09 A3.10.00 A3.10.03 +A2.10.10 A3.10.00 A3.10.02 A3.10.03 +A2.10.11 A3.09.03 A3.10.00 A3.10.03 A3.10.05 +A2.10.12 A3.10.01 A3.10.02 A3.10.03 A3.10.04 +A2.10.13 A3.10.01 A3.10.02 A3.10.04 A3.10.06 A3.11.05 +A2.10.14 A3.10.03 A3.10.05 +A2.10.15 A3.10.03 A3.10.04 A3.10.05 A3.10.07 +A2.10.16 A3.09.07 A3.10.05 +A2.10.17 A3.10.04 A3.10.06 A3.10.07 A3.10.08 +A2.10.18 A3.09.07 A3.10.05 A3.10.07 A3.10.09 +A2.10.19 A3.10.07 A3.10.08 A3.10.09 A3.10.10 +A2.10.20 A3.09.07 A3.10.09 +A2.10.21 A3.10.08 A3.10.10 +A2.10.22 A3.10.09 A3.10.10 +A2.10.23 A3.10.10 +A2.10.24 A3.09.10 A3.10.11 +A2.10.25 A3.10.11 +A2.10.26 A3.10.11 A3.10.12 +A2.10.27 A3.09.12 A3.10.13 +A2.10.28 A3.10.13 A3.11.15 +A2.10.29 A3.09.13 A3.09.14 A3.10.14 +A2.10.30 A3.10.14 A3.10.15 +A2.10.31 A3.10.15 +A2.11.02 A3.11.02 +A2.11.03 A3.11.02 A3.11.03 +A2.11.04 A3.11.00 A3.11.03 A3.11.04 +A2.11.05 A3.11.00 A3.11.01 A3.11.04 +A2.11.06 A3.10.01 A3.11.02 A3.11.05 +A2.11.07 A3.11.02 A3.11.05 +A2.11.08 A3.11.02 A3.11.03 A3.11.05 A3.11.06 +A2.11.09 A3.11.03 A3.11.04 A3.11.06 A3.11.07 +A2.11.10 A3.11.04 A3.11.07 +A2.11.11 A3.10.06 A3.11.05 +A2.11.12 A3.10.06 A3.11.05 A3.11.06 A3.11.08 +A2.11.13 A3.11.06 A3.11.07 A3.11.08 A3.11.09 +A2.11.14 A3.11.07 A3.11.09 +A2.11.15 A3.10.06 A3.10.08 +A2.11.16 A3.10.06 A3.10.08 A3.11.08 A3.11.10 +A2.11.17 A3.11.08 A3.11.09 A3.11.10 A3.11.11 +A2.11.18 A3.11.09 A3.11.11 +A2.11.19 A3.10.08 A3.10.10 A3.11.10 A3.11.12 +A2.11.20 A3.11.10 A3.11.11 A3.11.12 A3.11.13 +A2.11.21 A3.11.11 A3.11.13 +A2.11.22 A3.10.10 A3.11.12 +A2.11.23 A3.11.12 A3.11.13 +A2.11.24 A3.11.13 +A2.11.25 A3.10.12 A3.11.14 +A2.11.26 A3.11.14 +A2.11.27 A3.11.15 +A2.11.28 A3.11.15 +A2.11.29 A3.11.15 +A2.11.30 A3.11.15 +A2.12.02 A3.12.02 +A2.12.03 A3.12.02 A3.12.03 +A2.12.04 A3.12.00 A3.12.03 A3.12.04 +A2.12.05 A3.11.01 A3.11.04 A3.12.00 A3.12.01 A3.12.04 +A2.12.06 A3.12.02 A3.12.05 A3.13.02 +A2.12.07 A3.12.02 A3.12.03 A3.12.05 A3.12.06 +A2.12.08 A3.12.02 A3.12.03 A3.12.06 +A2.12.09 A3.12.03 A3.12.04 A3.12.06 A3.12.07 +A2.12.10 A3.11.04 A3.11.07 A3.12.04 A3.12.07 +A2.12.11 A3.12.05 A3.12.06 A3.12.08 A3.13.06 +A2.12.12 A3.12.06 A3.12.08 +A2.12.13 A3.12.06 A3.12.07 A3.12.08 A3.12.09 +A2.12.14 A3.11.07 A3.11.09 A3.12.07 A3.12.09 +A2.12.15 A3.12.08 A3.12.10 A3.13.06 A3.13.08 +A2.12.16 A3.12.08 A3.12.10 +A2.12.17 A3.12.08 A3.12.09 A3.12.10 A3.12.11 +A2.12.18 A3.11.09 A3.11.11 A3.12.09 A3.12.11 +A2.12.19 A3.12.10 A3.12.12 +A2.12.20 A3.12.10 A3.12.11 A3.12.12 A3.12.13 +A2.12.21 A3.11.11 A3.11.13 A3.12.11 A3.12.13 +A2.12.22 A3.12.12 +A2.12.23 A3.12.12 A3.12.13 +A2.12.24 A3.11.13 A3.12.13 +A2.12.25 A3.12.14 A3.13.12 +A2.12.26 A3.11.14 A3.12.14 +A2.12.27 A3.12.15 +A2.12.28 A3.11.15 A3.12.15 +A2.12.29 A3.12.15 +A2.12.30 A3.11.15 A3.12.15 +A2.13.06 A3.13.00 +A2.13.07 A3.13.01 +A2.13.08 A3.13.01 A3.13.02 +A2.13.09 A3.13.00 A3.13.01 A3.13.03 +A2.13.10 A3.13.01 A3.13.02 A3.13.03 A3.13.04 +A2.13.11 A3.13.00 A3.13.03 A3.13.05 A3.14.02 +A2.13.12 A3.13.01 A3.13.02 A3.13.04 +A2.13.13 A3.12.05 A3.13.02 A3.13.04 A3.13.06 +A2.13.14 A3.13.03 A3.13.04 A3.13.05 A3.13.07 +A2.13.15 A3.13.04 A3.13.07 +A2.13.16 A3.13.05 A3.13.07 A3.13.09 A3.14.06 +A2.13.17 A3.13.04 A3.13.06 A3.13.07 A3.13.08 +A2.13.18 A3.13.07 A3.13.09 +A2.13.19 A3.13.07 A3.13.08 A3.13.09 A3.13.10 +A2.13.20 A3.13.09 +A2.13.21 A3.12.10 A3.12.12 A3.13.08 A3.13.10 +A2.13.22 A3.13.09 A3.13.10 +A2.13.23 A3.12.12 A3.13.10 +A2.13.24 A3.13.11 A3.14.09 +A2.13.25 A3.13.11 A3.13.12 +A2.13.26 A3.13.12 +A2.13.27 A3.13.13 +A2.13.28 A3.12.15 A3.13.13 +A2.13.29 A3.13.14 A3.14.13 A3.14.15 +A2.13.30 A3.13.14 A3.14.15 +A2.13.31 A3.13.14 +A2.14.04 A3.14.01 +A2.14.05 A3.13.00 A3.14.00 A3.14.02 +A2.14.06 A3.14.00 +A2.14.07 A3.14.00 A3.14.01 +A2.14.08 A3.13.00 A3.14.00 A3.14.02 +A2.14.09 A3.14.00 A3.14.02 A3.14.04 +A2.14.10 A3.14.01 A3.14.03 A3.15.01 +A2.14.11 A3.14.00 A3.14.01 A3.14.04 +A2.14.12 A3.14.02 A3.14.04 +A2.14.13 A3.14.03 A3.14.05 +A2.14.14 A3.13.05 A3.14.02 A3.14.04 A3.14.06 +A2.14.15 A3.14.04 +A2.14.16 A3.14.05 +A2.14.17 A3.14.04 A3.14.06 +A2.14.18 A3.14.05 A3.14.07 +A2.14.19 A3.13.09 A3.14.06 +A2.14.20 A3.14.08 A3.15.07 +A2.14.21 A3.14.07 A3.14.09 +A2.14.22 A3.14.08 A3.14.10 +A2.14.23 A3.14.09 +A2.14.24 A3.14.10 +A2.14.25 A3.14.10 A3.14.11 +A2.14.26 A3.14.12 A3.15.12 +A2.14.27 A3.13.13 A3.14.11 +A2.14.28 A3.14.12 A3.14.13 A3.14.14 +A2.14.29 A3.14.13 +A2.14.30 A3.14.14 A3.14.15 +A2.14.31 A3.14.14 A3.14.15 +A2.15.05 A3.15.02 +A2.15.06 A3.15.00 +A2.15.07 A3.14.01 A3.15.01 +A2.15.08 A3.15.01 A3.15.02 +A2.15.09 A3.15.02 +A2.15.10 A3.15.03 +A2.15.11 A3.15.01 A3.15.04 +A2.15.12 A3.15.02 A3.15.05 +A2.15.13 A3.15.03 A3.15.06 +A2.15.14 A3.15.04 A3.15.07 +A2.15.15 A3.15.05 A3.15.08 +A2.15.16 A3.15.06 A3.15.09 +A2.15.17 A3.15.07 +A2.15.18 A3.15.08 +A2.15.19 A3.15.09 +A2.15.20 A3.15.08 A3.15.10 +A2.15.21 A3.15.09 A3.15.11 +A2.15.22 A3.15.10 A3.15.12 +A2.15.23 A3.15.11 A3.15.13 +A2.15.24 A3.15.12 +A2.15.25 A3.15.13 +A2.15.26 A3.15.13 A3.15.14 +A2.15.27 A3.14.14 A3.15.14 A3.15.15 +A2.15.28 A3.14.14 A3.15.15 +A2.15.29 A3.15.15 +C1.00.14 C2.00.00 +C1.00.15 C2.00.00 C2.00.02 +C1.00.16 C2.00.01 C2.00.02 +C1.00.17 C2.00.03 +C1.00.18 C2.00.03 C2.00.04 +C1.00.19 C2.00.04 +C1.00.20 C2.00.05 +C1.00.21 C2.00.05 C2.00.06 +C1.00.22 C2.00.06 +C1.00.23 C2.00.07 C2.00.08 +C1.00.24 C2.00.08 +C1.00.25 C2.00.09 +C1.00.26 C2.00.09 C2.00.10 +C1.00.27 C2.00.10 +C1.00.28 C2.00.11 C2.01.10 +C1.00.29 C2.00.11 +C1.00.30 C2.00.12 +C1.00.31 C2.00.12 C2.00.13 +C1.00.32 C2.00.13 +C1.00.33 C2.00.14 +C1.00.34 C2.00.15 +C1.00.35 C2.00.15 C2.00.16 +C1.00.36 C2.00.16 +C1.00.37 C2.00.17 +C1.00.38 C2.00.18 +C1.00.39 C2.00.18 C2.00.19 +C1.00.40 C2.00.19 +C1.00.41 C2.01.20 +C1.00.42 C2.00.20 +C1.00.43 C2.00.20 C2.00.21 +C1.00.44 C2.00.21 +C1.00.45 C2.00.22 +C1.00.46 C2.00.22 C2.00.23 +C1.00.47 C2.00.23 +C1.00.48 C2.00.24 +C1.00.49 C2.00.24 C2.00.25 +C1.00.50 C2.00.25 +C1.00.51 C2.00.24 C2.00.25 C2.00.26 C2.01.26 +C1.00.52 C2.00.25 C2.00.26 +C1.00.53 C2.01.26 C2.01.28 +C1.00.54 C2.00.26 C2.00.27 +C1.00.55 C2.00.26 C2.00.27 +C1.00.56 C2.00.26 C2.00.27 +C1.00.57 C2.00.27 +C1.00.58 C2.00.27 +C1.00.59 C2.00.27 +C1.00.60 C2.00.27 C2.00.28 +C1.00.61 C2.00.27 C2.00.28 C2.00.29 +C1.00.62 C2.00.27 C2.00.29 +C1.01.12 C2.01.05 +C1.01.13 C2.00.03 +C1.01.14 C2.01.02 +C1.01.15 C2.01.01 C2.01.05 +C1.01.16 C2.01.02 C2.01.04 +C1.01.17 C2.01.00 C2.01.03 C2.01.05 C2.02.01 +C1.01.18 C2.01.06 +C1.01.19 C2.01.04 +C1.01.20 C2.01.05 +C1.01.21 C2.00.07 +C1.01.22 C2.01.06 C2.01.07 +C1.01.23 C2.01.09 +C1.01.24 C2.01.07 +C1.01.25 C2.01.08 +C1.01.26 C2.01.10 +C1.01.27 C2.01.09 C2.01.11 +C1.01.28 C2.01.12 +C1.01.29 C2.01.11 +C1.01.30 C2.01.12 C2.01.15 +C1.01.31 C2.01.13 +C1.01.32 C2.01.14 +C1.01.33 C2.00.14 C2.01.13 +C1.01.34 C2.01.15 +C1.01.35 C2.01.14 C2.01.17 +C1.01.36 C2.01.16 +C1.01.37 C2.01.17 +C1.01.38 C2.00.17 C2.01.16 +C1.01.39 C2.01.18 +C1.01.40 C2.01.19 +C1.01.41 C2.01.18 C2.01.20 +C1.01.42 C2.01.21 +C1.01.43 C2.01.21 C2.01.22 +C1.01.44 C2.01.23 +C1.01.45 C2.01.22 +C1.01.46 C2.01.23 C2.01.24 +C1.01.47 C2.01.24 +C1.01.48 C2.01.23 C2.01.24 C2.01.25 C2.02.24 +C1.01.49 C2.01.24 C2.01.25 +C1.01.50 C2.00.24 C2.01.26 +C1.01.51 C2.01.25 C2.01.27 +C1.01.52 C2.01.26 C2.01.28 +C1.01.53 C2.01.26 C2.01.28 +C1.01.54 C2.01.28 +C1.01.55 C2.01.28 +C1.01.56 C2.01.28 C2.02.29 +C1.01.57 C2.01.28 +C1.01.58 C2.01.28 C2.01.29 +C1.01.59 C2.01.28 C2.01.30 +C1.01.60 C2.01.29 C2.01.31 +C1.01.61 C2.01.30 C2.01.31 C2.02.30 +C1.01.62 C2.00.28 C2.01.30 C2.01.31 +C1.02.12 C2.02.03 +C1.02.13 C2.02.01 +C1.02.14 C2.02.02 C2.02.04 C2.03.01 +C1.02.15 C2.02.00 C2.02.07 +C1.02.16 C2.02.03 C2.02.05 C2.02.07 +C1.02.17 C2.02.06 +C1.02.18 C2.02.02 C2.02.04 C2.02.08 +C1.02.19 C2.02.07 +C1.02.20 C2.02.09 +C1.02.21 C2.01.08 C2.02.06 +C1.02.22 C2.02.08 +C1.02.23 C2.02.10 +C1.02.24 C2.02.09 C2.02.11 +C1.02.25 C2.02.08 C2.03.06 +C1.02.26 C2.02.12 +C1.02.27 C2.02.10 C2.02.14 +C1.02.28 C2.02.11 +C1.02.29 C2.02.12 C2.02.13 +C1.02.30 C2.02.12 C2.02.15 +C1.02.31 C2.02.14 +C1.02.32 C2.02.12 C2.02.13 C2.02.15 C2.02.17 +C1.02.33 C2.02.15 +C1.02.34 C2.02.16 +C1.02.35 C2.02.15 C2.02.17 +C1.02.36 C2.02.18 +C1.02.37 C2.01.19 C2.02.16 +C1.02.38 C2.02.17 C2.03.15 +C1.02.39 C2.02.18 C2.02.19 +C1.02.40 C2.02.18 C2.02.20 +C1.02.41 C2.02.19 C2.02.21 +C1.02.42 C2.02.18 C2.02.19 C2.02.20 C2.02.22 +C1.02.43 C2.02.20 +C1.02.44 C2.02.19 C2.02.21 C2.02.22 C2.02.23 +C1.02.45 C2.02.20 C2.02.22 +C1.02.46 C2.02.22 C2.02.23 +C1.02.47 C2.01.23 C2.02.24 +C1.02.48 C2.02.23 C2.03.22 +C1.02.49 C2.02.24 C2.02.25 +C1.02.50 C2.02.25 C2.02.26 +C1.02.51 C2.01.25 C2.01.27 C2.02.24 C2.02.25 +C1.02.52 C2.01.27 C2.02.25 C2.02.26 C2.02.27 +C1.02.53 C2.01.27 C2.02.27 +C1.02.54 C2.02.27 +C1.02.55 C2.01.27 C2.02.27 +C1.02.56 C2.02.27 C2.02.28 +C1.02.57 C2.02.27 +C1.02.58 C2.02.27 C2.02.28 +C1.02.59 C2.02.29 C2.02.30 +C1.02.60 C2.02.28 +C1.02.61 C2.02.30 C2.02.31 +C1.02.62 C2.02.30 C2.02.31 +C1.03.12 C2.03.00 +C1.03.13 C2.03.00 +C1.03.14 C2.03.00 +C1.03.15 C2.02.04 C2.03.01 +C1.03.16 C2.03.01 C2.03.02 +C1.03.17 C2.03.02 C2.03.03 +C1.03.18 C2.03.03 C2.03.04 +C1.03.19 C2.03.04 C2.03.05 +C1.03.20 C2.02.04 C2.02.08 C2.03.01 C2.03.06 +C1.03.21 C2.03.01 C2.03.02 C2.03.06 C2.03.07 +C1.03.22 C2.03.02 C2.03.03 C2.03.07 C2.03.08 +C1.03.23 C2.03.03 C2.03.04 C2.03.08 C2.03.09 +C1.03.24 C2.03.04 C2.03.05 C2.03.09 C2.03.10 +C1.03.25 C2.03.06 C2.03.07 +C1.03.26 C2.03.07 C2.03.08 +C1.03.27 C2.03.08 C2.03.09 +C1.03.28 C2.03.09 C2.03.10 +C1.03.29 C2.02.13 C2.03.11 +C1.03.30 C2.03.11 C2.03.12 +C1.03.31 C2.03.12 C2.03.13 +C1.03.32 C2.03.13 C2.03.14 +C1.03.33 C2.02.13 C2.02.17 C2.03.11 C2.03.15 +C1.03.34 C2.03.11 C2.03.12 C2.03.15 C2.03.16 +C1.03.35 C2.03.12 C2.03.13 C2.03.16 C2.03.17 +C1.03.36 C2.03.13 C2.03.14 C2.03.17 C2.03.18 +C1.03.37 C2.03.15 C2.03.16 +C1.03.38 C2.03.16 C2.03.17 +C1.03.39 C2.03.17 C2.03.18 +C1.03.40 C2.02.21 C2.03.19 +C1.03.41 C2.03.19 C2.03.20 +C1.03.42 C2.03.20 C2.03.21 +C1.03.43 C2.02.21 C2.02.23 C2.03.19 C2.03.22 +C1.03.44 C2.03.19 C2.03.20 C2.03.22 C2.03.23 +C1.03.45 C2.03.20 C2.03.21 C2.03.23 C2.03.24 +C1.03.46 C2.03.22 C2.03.23 +C1.03.47 C2.03.23 C2.03.24 +C1.03.48 C2.02.26 C2.03.25 +C1.03.49 C2.03.25 C2.03.26 +C1.03.50 C2.02.26 C2.03.25 +C1.03.51 C2.03.25 +C1.03.52 C2.03.25 C2.03.26 +C1.03.53 C2.03.26 +C1.03.54 C2.02.27 C2.02.28 +C1.03.55 C2.02.28 +C1.03.56 C2.02.28 C2.03.27 +C1.03.57 C2.03.27 C2.03.28 +C1.03.58 C2.02.28 +C1.03.59 C2.02.28 C2.03.27 C2.03.29 +C1.03.60 C2.03.27 C2.03.28 C2.03.29 C2.03.30 +C1.03.61 C2.02.28 C2.03.29 +C1.03.62 C2.03.29 C2.03.30 +C1.04.12 C2.04.00 +C1.04.13 C2.04.00 +C1.04.14 C2.03.00 C2.04.00 +C1.04.15 C2.04.01 C2.04.02 +C1.04.16 C2.04.02 C2.04.03 +C1.04.17 C2.04.03 C2.04.04 +C1.04.18 C2.04.04 C2.04.05 +C1.04.19 C2.03.05 C2.04.05 +C1.04.20 C2.04.01 C2.04.02 C2.04.06 C2.04.07 +C1.04.21 C2.04.02 C2.04.03 C2.04.07 C2.04.08 +C1.04.22 C2.04.03 C2.04.04 C2.04.08 C2.04.09 +C1.04.23 C2.04.04 C2.04.05 C2.04.09 C2.04.10 +C1.04.24 C2.03.05 C2.03.10 C2.04.05 C2.04.10 +C1.04.25 C2.04.07 C2.04.08 +C1.04.26 C2.04.08 C2.04.09 +C1.04.27 C2.04.09 C2.04.10 +C1.04.28 C2.03.10 C2.04.10 +C1.04.29 C2.04.11 C2.04.12 +C1.04.30 C2.04.12 C2.04.13 +C1.04.31 C2.04.13 C2.04.14 +C1.04.32 C2.03.14 C2.04.14 +C1.04.33 C2.04.11 C2.04.12 C2.04.15 C2.04.16 +C1.04.34 C2.04.12 C2.04.13 C2.04.16 C2.04.17 +C1.04.35 C2.04.13 C2.04.14 C2.04.17 C2.04.18 +C1.04.36 C2.03.14 C2.03.18 C2.04.14 C2.04.18 +C1.04.37 C2.04.16 C2.04.17 +C1.04.38 C2.04.17 C2.04.18 +C1.04.39 C2.03.18 C2.04.18 +C1.04.40 C2.04.19 C2.04.20 +C1.04.41 C2.04.20 C2.04.21 +C1.04.42 C2.03.21 C2.04.21 +C1.04.43 C2.04.19 C2.04.20 C2.04.22 C2.04.23 +C1.04.44 C2.04.20 C2.04.21 C2.04.23 C2.04.24 +C1.04.45 C2.03.21 C2.03.24 C2.04.21 C2.04.24 +C1.04.46 C2.04.23 C2.04.24 +C1.04.47 C2.03.24 C2.04.24 +C1.04.48 C2.04.25 C2.04.26 +C1.04.49 C2.03.26 C2.04.26 +C1.04.50 C2.04.25 +C1.04.51 C2.04.25 C2.04.26 +C1.04.52 C2.04.26 +C1.04.53 C2.03.26 C2.04.26 +C1.04.54 C2.05.28 +C1.04.55 C2.04.27 C2.05.28 +C1.04.56 C2.04.27 C2.04.28 +C1.04.57 C2.03.28 C2.04.28 +C1.04.58 C2.04.27 C2.04.29 C2.05.28 +C1.04.59 C2.04.27 C2.04.28 C2.04.29 C2.04.30 +C1.04.60 C2.03.28 C2.03.30 C2.04.28 C2.04.30 +C1.04.61 C2.04.29 C2.04.30 +C1.04.62 C2.03.30 C2.04.30 +C1.05.09 C2.05.02 +C1.05.10 C2.05.07 +C1.05.11 C2.05.00 C2.05.06 C2.06.00 +C1.05.12 C2.05.03 +C1.05.13 C2.04.01 C2.05.02 C2.05.04 +C1.05.14 C2.05.01 C2.05.02 C2.05.07 C2.05.08 +C1.05.15 C2.05.03 C2.05.05 C2.05.07 +C1.05.16 C2.05.06 C2.05.09 +C1.05.17 C2.04.01 C2.04.06 C2.05.02 C2.05.04 C2.05.08 +C1.05.18 C2.05.07 C2.05.08 +C1.05.19 C2.05.09 C2.05.10 +C1.05.20 C2.05.06 C2.05.09 C2.05.11 C2.06.08 +C1.05.21 C2.04.06 C2.05.08 +C1.05.22 C2.05.10 C2.05.12 +C1.05.23 C2.05.09 C2.05.10 C2.05.11 C2.05.14 +C1.05.24 C2.04.06 C2.04.07 +C1.05.25 C2.05.12 C2.05.13 +C1.05.26 C2.05.10 C2.05.12 C2.05.14 C2.05.15 +C1.05.27 C2.05.11 C2.05.14 +C1.05.28 C2.04.11 C2.05.13 +C1.05.29 C2.05.12 C2.05.13 C2.05.15 C2.05.17 +C1.05.30 C2.05.14 C2.05.15 +C1.05.31 C2.04.11 C2.04.15 C2.05.13 C2.05.17 +C1.05.32 C2.05.15 C2.05.17 +C1.05.33 C2.05.16 C2.05.18 +C1.05.34 C2.04.15 C2.05.17 +C1.05.35 C2.05.16 C2.05.18 C2.05.20 C2.06.19 +C1.05.36 C2.05.18 C2.05.19 +C1.05.37 C2.04.15 C2.04.16 +C1.05.38 C2.05.19 C2.05.21 +C1.05.39 C2.05.18 C2.05.19 C2.05.20 C2.05.22 +C1.05.40 C2.04.19 C2.05.21 +C1.05.41 C2.05.19 C2.05.21 C2.05.22 C2.05.23 +C1.05.42 C2.05.20 C2.05.22 +C1.05.43 C2.04.19 C2.04.22 C2.05.21 C2.05.23 +C1.05.44 C2.05.22 C2.05.23 +C1.05.45 C2.04.22 C2.05.23 +C1.05.46 C2.05.24 C2.05.25 +C1.05.47 C2.04.22 C2.04.23 +C1.05.48 C2.05.25 C2.05.26 +C1.05.49 C2.04.25 C2.05.26 +C1.05.50 C2.05.25 C2.05.26 C2.05.27 C2.06.27 +C1.05.51 C2.04.25 C2.05.26 C2.05.27 C2.05.28 +C1.05.52 C2.05.27 +C1.05.53 C2.05.27 C2.05.28 +C1.05.54 C2.05.27 +C1.05.55 C2.05.28 +C1.05.56 C2.05.27 C2.05.28 +C1.05.57 C2.05.28 +C1.05.58 C2.05.29 C2.05.30 +C1.05.59 C2.04.29 C2.05.28 +C1.05.60 C2.05.30 C2.05.31 +C1.05.61 C2.05.30 C2.05.31 +C1.05.62 C2.05.31 +C1.06.11 C2.06.02 C2.06.04 +C1.06.12 C2.06.00 C2.06.01 C2.06.05 +C1.06.13 C2.06.04 C2.07.03 +C1.06.14 C2.06.06 +C1.06.15 C2.06.01 C2.06.03 C2.06.05 +C1.06.16 C2.06.02 C2.06.04 C2.06.06 C2.06.07 +C1.06.17 C2.05.06 C2.06.00 C2.06.05 C2.06.08 +C1.06.18 C2.06.06 C2.06.09 +C1.06.19 C2.06.04 C2.06.07 +C1.06.20 C2.06.05 C2.06.08 +C1.06.21 C2.06.10 C2.07.07 +C1.06.22 C2.06.06 C2.06.07 C2.06.09 C2.06.11 +C1.06.23 C2.06.09 C2.06.12 +C1.06.24 C2.06.07 C2.06.11 +C1.06.25 C2.05.11 C2.06.08 +C1.06.26 C2.06.10 C2.06.13 +C1.06.27 C2.06.09 C2.06.11 C2.06.12 C2.06.15 +C1.06.28 C2.06.12 C2.06.14 +C1.06.29 C2.06.11 C2.06.15 +C1.06.30 C2.06.12 C2.06.14 C2.06.15 C2.06.17 +C1.06.31 C2.06.13 C2.06.16 +C1.06.32 C2.05.16 C2.06.14 +C1.06.33 C2.06.13 C2.06.16 C2.07.14 C2.07.17 +C1.06.34 C2.06.15 C2.06.17 +C1.06.35 C2.05.16 C2.06.14 C2.06.17 C2.06.19 +C1.06.36 C2.06.16 C2.06.18 +C1.06.37 C2.06.17 C2.06.19 +C1.06.38 C2.06.16 C2.06.18 C2.06.20 C2.07.17 +C1.06.39 C2.06.18 C2.06.21 +C1.06.40 C2.05.20 C2.06.19 +C1.06.41 C2.06.18 C2.06.20 C2.06.21 C2.06.22 +C1.06.42 C2.06.21 C2.06.23 +C1.06.43 C2.06.21 C2.06.22 C2.06.23 C2.06.24 +C1.06.44 C2.05.24 C2.06.23 +C1.06.45 C2.06.22 C2.06.24 +C1.06.46 C2.05.24 C2.06.23 C2.06.24 C2.06.25 +C1.06.47 C2.06.24 C2.06.25 +C1.06.48 C2.05.24 C2.05.25 C2.06.25 C2.06.27 +C1.06.49 C2.06.25 C2.06.27 +C1.06.50 C2.06.26 C2.06.28 +C1.06.51 C2.05.27 C2.06.27 +C1.06.52 C2.06.28 +C1.06.53 C2.06.28 +C1.06.54 C2.06.28 +C1.06.55 C2.06.28 C2.06.29 +C1.06.56 C2.06.28 C2.06.29 C2.06.30 +C1.06.57 C2.05.29 C2.06.29 +C1.06.58 C2.06.28 C2.06.30 +C1.06.59 C2.05.29 C2.06.29 C2.06.30 C2.06.31 +C1.06.60 C2.06.30 C2.06.31 +C1.06.61 C2.05.29 C2.05.30 C2.06.31 +C1.06.62 C2.06.31 +C1.07.07 C2.07.03 +C1.07.13 C2.07.03 C2.07.04 +C1.07.14 C2.07.04 +C1.07.15 C2.07.00 C2.07.05 +C1.07.16 C2.07.00 C2.07.01 C2.07.05 C2.07.06 +C1.07.17 C2.07.01 C2.07.02 C2.07.06 +C1.07.18 C2.07.03 C2.07.07 +C1.07.19 C2.07.03 C2.07.04 C2.07.07 C2.07.08 +C1.07.20 C2.07.04 C2.07.08 +C1.07.21 C2.07.05 C2.07.09 +C1.07.22 C2.07.05 C2.07.06 C2.07.09 C2.07.10 +C1.07.23 C2.07.06 C2.07.10 +C1.07.24 C2.06.10 C2.07.07 C2.07.08 C2.07.11 +C1.07.25 C2.07.08 C2.07.11 +C1.07.26 C2.07.09 C2.07.12 +C1.07.27 C2.07.09 C2.07.10 C2.07.12 C2.07.13 +C1.07.28 C2.07.10 C2.07.13 +C1.07.29 C2.06.10 C2.06.13 C2.07.11 C2.07.14 +C1.07.30 C2.07.11 C2.07.14 +C1.07.31 C2.07.12 C2.07.15 +C1.07.32 C2.07.12 C2.07.13 C2.07.15 C2.07.16 +C1.07.33 C2.07.13 C2.07.16 +C1.07.34 C2.07.14 C2.07.17 +C1.07.35 C2.07.15 C2.07.18 +C1.07.36 C2.07.15 C2.07.16 C2.07.18 C2.07.19 +C1.07.37 C2.07.16 C2.07.19 +C1.07.38 C2.06.20 C2.07.17 +C1.07.39 C2.07.18 C2.07.20 +C1.07.40 C2.07.18 C2.07.19 C2.07.20 C2.07.21 +C1.07.41 C2.07.19 C2.07.21 +C1.07.42 C2.06.20 C2.06.22 +C1.07.43 C2.07.20 C2.07.22 +C1.07.44 C2.07.20 C2.07.21 C2.07.22 C2.07.23 +C1.07.45 C2.07.21 C2.07.23 +C1.07.46 C2.07.22 C2.07.24 +C1.07.47 C2.07.22 C2.07.23 C2.07.24 C2.07.25 +C1.07.48 C2.07.23 C2.07.25 +C1.07.49 C2.06.26 C2.07.24 +C1.07.50 C2.06.26 C2.07.24 C2.07.25 C2.07.26 +C1.07.51 C2.07.25 C2.07.26 +C1.07.52 C2.06.26 C2.06.28 C2.07.26 C2.07.27 +C1.07.53 C2.07.26 C2.07.27 +C1.07.54 C2.07.27 +C1.07.55 C2.07.27 +C1.07.56 C2.07.27 +C1.07.57 C2.07.27 C2.07.28 +C1.07.58 C2.07.27 C2.07.28 C2.07.29 +C1.07.59 C2.07.27 C2.07.29 +C1.07.60 C2.06.31 C2.07.28 +C1.07.61 C2.07.28 C2.07.29 +C1.07.62 C2.07.29 +C1.08.12 C2.08.03 C2.08.04 +C1.08.13 C2.08.04 +C1.08.14 C2.08.00 C2.08.05 +C1.08.15 C2.08.00 C2.08.02 C2.08.05 C2.08.06 +C1.08.16 C2.08.01 C2.08.02 C2.08.06 +C1.08.17 C2.08.03 C2.08.07 +C1.08.18 C2.08.03 C2.08.04 C2.08.07 C2.08.08 +C1.08.19 C2.08.04 C2.08.08 +C1.08.20 C2.08.05 C2.08.09 +C1.08.21 C2.08.05 C2.08.06 C2.08.09 C2.08.10 +C1.08.22 C2.08.06 C2.08.10 +C1.08.23 C2.08.07 C2.08.08 C2.08.11 C2.09.10 +C1.08.24 C2.08.08 C2.08.11 +C1.08.25 C2.08.09 C2.08.12 +C1.08.26 C2.08.09 C2.08.10 C2.08.12 C2.08.13 +C1.08.27 C2.08.10 C2.08.13 +C1.08.28 C2.08.11 C2.08.14 C2.09.10 C2.09.13 +C1.08.29 C2.08.11 C2.08.14 +C1.08.30 C2.08.12 C2.08.15 +C1.08.31 C2.08.12 C2.08.13 C2.08.15 C2.08.16 +C1.08.32 C2.08.13 C2.08.16 +C1.08.33 C2.08.14 C2.08.17 +C1.08.34 C2.08.15 C2.08.18 +C1.08.35 C2.08.15 C2.08.16 C2.08.18 C2.08.19 +C1.08.36 C2.08.16 C2.08.19 +C1.08.37 C2.08.17 C2.09.20 +C1.08.38 C2.08.18 C2.08.20 +C1.08.39 C2.08.18 C2.08.19 C2.08.20 C2.08.21 +C1.08.40 C2.08.19 C2.08.21 +C1.08.41 C2.09.20 C2.09.22 +C1.08.42 C2.08.20 C2.08.22 +C1.08.43 C2.08.20 C2.08.21 C2.08.22 C2.08.23 +C1.08.44 C2.08.21 C2.08.23 +C1.08.45 C2.08.22 C2.08.24 +C1.08.46 C2.08.22 C2.08.23 C2.08.24 C2.08.25 +C1.08.47 C2.08.23 C2.08.25 +C1.08.48 C2.08.24 C2.09.26 +C1.08.49 C2.08.24 C2.08.25 C2.08.26 C2.09.26 +C1.08.50 C2.08.25 C2.08.26 +C1.08.51 C2.08.26 C2.08.27 C2.09.26 C2.09.28 +C1.08.52 C2.08.26 C2.08.27 +C1.08.53 C2.09.28 +C1.08.54 C2.08.27 +C1.08.55 C2.08.27 +C1.08.56 C2.08.27 +C1.08.57 C2.08.27 C2.08.28 +C1.08.58 C2.08.27 C2.08.28 C2.08.29 +C1.08.59 C2.08.27 C2.08.29 +C1.08.60 C2.08.28 C2.09.31 +C1.08.61 C2.08.28 C2.08.29 +C1.08.62 C2.08.29 +C1.09.11 C2.09.04 +C1.09.12 C2.09.00 C2.09.05 +C1.09.13 C2.08.03 C2.09.04 +C1.09.14 C2.09.02 C2.09.06 +C1.09.15 C2.09.01 C2.09.05 +C1.09.16 C2.09.02 C2.09.04 C2.09.06 C2.09.07 +C1.09.17 C2.09.00 C2.09.03 C2.09.05 C2.09.08 C2.10.01 C2.10.06 +C1.09.18 C2.09.06 C2.09.09 +C1.09.19 C2.09.04 C2.09.07 +C1.09.20 C2.09.05 C2.09.08 +C1.09.21 C2.08.07 C2.09.10 +C1.09.22 C2.09.06 C2.09.07 C2.09.09 C2.09.11 +C1.09.23 C2.09.09 C2.09.12 +C1.09.24 C2.09.07 C2.09.11 +C1.09.25 C2.09.08 C2.10.11 +C1.09.26 C2.09.10 C2.09.13 +C1.09.27 C2.09.09 C2.09.11 C2.09.12 C2.09.15 +C1.09.28 C2.09.12 C2.09.14 +C1.09.29 C2.09.11 C2.09.15 +C1.09.30 C2.09.12 C2.09.14 C2.09.15 C2.09.17 +C1.09.31 C2.09.13 C2.09.16 +C1.09.32 C2.09.14 C2.10.16 +C1.09.33 C2.08.14 C2.08.17 C2.09.13 C2.09.16 +C1.09.34 C2.09.15 C2.09.17 +C1.09.35 C2.09.14 C2.09.17 C2.09.19 C2.10.16 +C1.09.36 C2.09.16 C2.09.18 +C1.09.37 C2.09.17 C2.09.19 +C1.09.38 C2.08.17 C2.09.16 C2.09.18 C2.09.20 +C1.09.39 C2.09.18 C2.09.21 +C1.09.40 C2.09.19 C2.10.20 +C1.09.41 C2.09.18 C2.09.20 C2.09.21 C2.09.22 +C1.09.42 C2.09.21 C2.09.23 +C1.09.43 C2.09.21 C2.09.22 C2.09.23 C2.09.24 +C1.09.44 C2.09.23 C2.10.24 +C1.09.45 C2.09.22 C2.09.24 +C1.09.46 C2.09.23 C2.09.24 C2.09.25 C2.10.24 +C1.09.47 C2.09.24 C2.09.25 +C1.09.48 C2.09.25 C2.09.27 C2.10.24 C2.10.25 +C1.09.49 C2.09.25 C2.09.27 +C1.09.50 C2.09.26 C2.09.28 +C1.09.51 C2.09.27 C2.10.27 +C1.09.52 C2.09.28 +C1.09.53 C2.09.28 +C1.09.54 C2.09.28 C2.10.29 +C1.09.55 C2.09.28 C2.09.29 +C1.09.56 C2.10.29 +C1.09.57 C2.09.28 C2.09.30 +C1.09.58 C2.09.29 +C1.09.59 C2.09.30 +C1.09.60 C2.09.29 C2.09.31 C2.10.30 +C1.09.61 C2.09.30 C2.09.31 C2.10.30 +C1.09.62 C2.09.30 C2.09.31 +C1.10.10 C2.10.02 +C1.10.11 C2.10.07 +C1.10.12 C2.10.01 C2.10.06 +C1.10.13 C2.10.03 +C1.10.14 C2.10.02 C2.10.04 C2.11.01 +C1.10.15 C2.10.00 C2.10.02 C2.10.07 C2.10.08 +C1.10.16 C2.10.03 C2.10.05 C2.10.07 +C1.10.17 C2.10.06 C2.10.09 +C1.10.18 C2.10.02 C2.10.04 C2.10.08 C2.11.01 C2.11.06 +C1.10.19 C2.10.07 C2.10.08 +C1.10.20 C2.10.09 C2.10.10 +C1.10.21 C2.09.08 C2.10.06 C2.10.09 C2.10.11 +C1.10.22 C2.10.08 C2.11.06 +C1.10.23 C2.10.10 C2.10.12 +C1.10.24 C2.10.09 C2.10.10 C2.10.11 C2.10.14 +C1.10.25 C2.11.06 C2.11.07 +C1.10.26 C2.10.12 C2.10.13 +C1.10.27 C2.10.10 C2.10.12 C2.10.14 C2.10.15 +C1.10.28 C2.10.11 C2.10.14 +C1.10.29 C2.10.13 C2.11.11 +C1.10.30 C2.10.12 C2.10.13 C2.10.15 C2.10.17 +C1.10.31 C2.10.14 C2.10.15 +C1.10.32 C2.10.13 C2.10.17 C2.11.11 C2.11.15 +C1.10.33 C2.10.15 C2.10.17 +C1.10.34 C2.10.16 C2.10.18 +C1.10.35 C2.10.17 C2.11.15 +C1.10.36 C2.09.19 C2.10.16 C2.10.18 C2.10.20 +C1.10.37 C2.10.18 C2.10.19 +C1.10.38 C2.11.15 C2.11.16 +C1.10.39 C2.10.19 C2.10.21 +C1.10.40 C2.10.18 C2.10.19 C2.10.20 C2.10.22 +C1.10.41 C2.10.21 C2.11.19 +C1.10.42 C2.10.19 C2.10.21 C2.10.22 C2.10.23 +C1.10.43 C2.10.20 C2.10.22 +C1.10.44 C2.10.21 C2.10.23 C2.11.19 C2.11.22 +C1.10.45 C2.10.22 C2.10.23 +C1.10.46 C2.10.23 C2.11.22 +C1.10.47 C2.10.24 C2.10.25 +C1.10.48 C2.11.22 C2.11.23 +C1.10.49 C2.10.25 C2.10.26 +C1.10.50 C2.10.26 C2.11.25 +C1.10.51 C2.09.27 C2.10.25 C2.10.26 C2.10.27 +C1.10.52 C2.10.26 C2.10.27 C2.10.28 C2.11.25 +C1.10.53 C2.10.27 +C1.10.54 C2.10.27 C2.10.28 +C1.10.55 C2.10.27 +C1.10.56 C2.10.28 +C1.10.57 C2.10.27 C2.10.28 +C1.10.58 C2.10.28 +C1.10.59 C2.10.29 C2.10.30 +C1.10.60 C2.10.28 C2.11.29 +C1.10.61 C2.10.30 C2.10.31 +C1.10.62 C2.10.31 +C1.11.12 C2.11.00 +C1.11.13 C2.11.00 +C1.11.14 C2.11.00 C2.12.00 +C1.11.15 C2.11.01 C2.11.02 +C1.11.16 C2.11.02 C2.11.03 +C1.11.17 C2.11.03 C2.11.04 +C1.11.18 C2.11.04 C2.11.05 +C1.11.19 C2.11.05 C2.12.05 +C1.11.20 C2.11.01 C2.11.02 C2.11.06 C2.11.07 +C1.11.21 C2.11.02 C2.11.03 C2.11.07 C2.11.08 +C1.11.22 C2.11.03 C2.11.04 C2.11.08 C2.11.09 +C1.11.23 C2.11.04 C2.11.05 C2.11.09 C2.11.10 +C1.11.24 C2.11.05 C2.11.10 C2.12.05 C2.12.10 +C1.11.25 C2.11.07 C2.11.08 +C1.11.26 C2.11.08 C2.11.09 +C1.11.27 C2.11.09 C2.11.10 +C1.11.28 C2.11.10 C2.12.10 +C1.11.29 C2.11.11 C2.11.12 +C1.11.30 C2.11.12 C2.11.13 +C1.11.31 C2.11.13 C2.11.14 +C1.11.32 C2.11.14 C2.12.14 +C1.11.33 C2.11.11 C2.11.12 C2.11.15 C2.11.16 +C1.11.34 C2.11.12 C2.11.13 C2.11.16 C2.11.17 +C1.11.35 C2.11.13 C2.11.14 C2.11.17 C2.11.18 +C1.11.36 C2.11.14 C2.11.18 C2.12.14 C2.12.18 +C1.11.37 C2.11.16 C2.11.17 +C1.11.38 C2.11.17 C2.11.18 +C1.11.39 C2.11.18 C2.12.18 +C1.11.40 C2.11.19 C2.11.20 +C1.11.41 C2.11.20 C2.11.21 +C1.11.42 C2.11.21 C2.12.21 +C1.11.43 C2.11.19 C2.11.20 C2.11.22 C2.11.23 +C1.11.44 C2.11.20 C2.11.21 C2.11.23 C2.11.24 +C1.11.45 C2.11.21 C2.11.24 C2.12.21 C2.12.24 +C1.11.46 C2.11.23 C2.11.24 +C1.11.47 C2.11.24 C2.12.24 +C1.11.48 C2.11.25 C2.11.26 +C1.11.49 C2.11.26 C2.12.26 +C1.11.50 C2.11.25 +C1.11.51 C2.11.25 C2.11.26 +C1.11.52 C2.11.26 +C1.11.53 C2.11.26 C2.12.26 +C1.11.54 C2.10.28 +C1.11.55 C2.10.28 C2.11.27 +C1.11.56 C2.11.27 C2.11.28 +C1.11.57 C2.11.28 C2.12.28 +C1.11.58 C2.10.28 C2.11.27 C2.11.29 +C1.11.59 C2.11.27 C2.11.28 C2.11.29 C2.11.30 +C1.11.60 C2.11.28 C2.11.30 C2.12.28 C2.12.30 +C1.11.61 C2.11.29 C2.11.30 +C1.11.62 C2.11.30 C2.12.30 +C1.12.12 C2.12.00 +C1.12.13 C2.12.00 +C1.12.14 C2.12.00 +C1.12.15 C2.12.01 +C1.12.16 C2.12.01 C2.12.02 +C1.12.17 C2.12.02 C2.12.03 +C1.12.18 C2.12.03 C2.12.04 +C1.12.19 C2.12.04 C2.12.05 +C1.12.20 C2.12.01 C2.12.06 C2.13.04 C2.13.08 +C1.12.21 C2.12.01 C2.12.02 C2.12.06 C2.12.07 +C1.12.22 C2.12.02 C2.12.03 C2.12.07 C2.12.08 +C1.12.23 C2.12.03 C2.12.04 C2.12.08 C2.12.09 +C1.12.24 C2.12.04 C2.12.05 C2.12.09 C2.12.10 +C1.12.25 C2.12.06 C2.12.07 +C1.12.26 C2.12.07 C2.12.08 +C1.12.27 C2.12.08 C2.12.09 +C1.12.28 C2.12.09 C2.12.10 +C1.12.29 C2.12.11 C2.13.13 +C1.12.30 C2.12.11 C2.12.12 +C1.12.31 C2.12.12 C2.12.13 +C1.12.32 C2.12.13 C2.12.14 +C1.12.33 C2.12.11 C2.12.15 C2.13.13 C2.13.17 +C1.12.34 C2.12.11 C2.12.12 C2.12.15 C2.12.16 +C1.12.35 C2.12.12 C2.12.13 C2.12.16 C2.12.17 +C1.12.36 C2.12.13 C2.12.14 C2.12.17 C2.12.18 +C1.12.37 C2.12.15 C2.12.16 +C1.12.38 C2.12.16 C2.12.17 +C1.12.39 C2.12.17 C2.12.18 +C1.12.40 C2.12.19 C2.13.21 +C1.12.41 C2.12.19 C2.12.20 +C1.12.42 C2.12.20 C2.12.21 +C1.12.43 C2.12.19 C2.12.22 C2.13.21 C2.13.23 +C1.12.44 C2.12.19 C2.12.20 C2.12.22 C2.12.23 +C1.12.45 C2.12.20 C2.12.21 C2.12.23 C2.12.24 +C1.12.46 C2.12.22 C2.12.23 +C1.12.47 C2.12.23 C2.12.24 +C1.12.48 C2.12.25 C2.13.26 +C1.12.49 C2.12.25 C2.12.26 +C1.12.50 C2.12.25 C2.13.26 +C1.12.51 C2.12.25 +C1.12.52 C2.12.25 C2.12.26 +C1.12.53 C2.12.26 +C1.12.54 C2.13.27 C2.13.28 +C1.12.55 C2.13.28 +C1.12.56 C2.12.27 C2.13.28 +C1.12.57 C2.12.27 C2.12.28 +C1.12.58 C2.13.28 +C1.12.59 C2.12.27 C2.12.29 C2.13.28 +C1.12.60 C2.12.27 C2.12.28 C2.12.29 C2.12.30 +C1.12.61 C2.12.29 C2.13.28 +C1.12.62 C2.12.29 C2.12.30 +C1.13.11 C2.13.03 +C1.13.12 C2.13.00 C2.13.06 C2.14.00 +C1.13.13 C2.12.01 C2.13.02 C2.13.04 +C1.13.14 C2.13.01 C2.13.07 +C1.13.15 C2.13.03 C2.13.05 C2.13.07 +C1.13.16 C2.13.00 C2.13.06 +C1.13.17 C2.13.02 C2.13.04 C2.13.08 +C1.13.18 C2.13.07 +C1.13.19 C2.13.09 +C1.13.20 C2.13.06 C2.14.08 +C1.13.21 C2.13.08 +C1.13.22 C2.13.10 +C1.13.23 C2.13.09 C2.13.11 +C1.13.24 C2.12.06 C2.13.08 +C1.13.25 C2.13.12 +C1.13.26 C2.13.10 C2.13.14 +C1.13.27 C2.13.11 +C1.13.28 C2.13.12 C2.13.13 +C1.13.29 C2.13.12 C2.13.15 +C1.13.30 C2.13.14 +C1.13.31 C2.13.12 C2.13.13 C2.13.15 C2.13.17 +C1.13.32 C2.13.15 +C1.13.33 C2.13.16 +C1.13.34 C2.13.15 C2.13.17 +C1.13.35 C2.13.16 C2.14.19 +C1.13.36 C2.13.18 +C1.13.37 C2.12.15 C2.13.17 +C1.13.38 C2.13.18 C2.13.19 +C1.13.39 C2.13.18 C2.13.20 +C1.13.40 C2.13.19 C2.13.21 +C1.13.41 C2.13.18 C2.13.19 C2.13.20 C2.13.22 +C1.13.42 C2.13.20 +C1.13.43 C2.13.19 C2.13.21 C2.13.22 C2.13.23 +C1.13.44 C2.13.20 C2.13.22 +C1.13.45 C2.13.22 C2.13.23 +C1.13.46 C2.13.24 C2.14.23 +C1.13.47 C2.12.22 C2.13.23 +C1.13.48 C2.13.24 C2.13.25 +C1.13.49 C2.13.25 C2.13.26 +C1.13.50 C2.13.24 C2.13.25 C2.14.25 C2.14.27 +C1.13.51 C2.13.25 C2.13.26 C2.13.27 C2.14.27 +C1.13.52 C2.13.27 C2.14.27 +C1.13.53 C2.13.27 +C1.13.54 C2.13.27 C2.14.27 +C1.13.55 C2.13.27 C2.13.28 +C1.13.56 C2.13.27 +C1.13.57 C2.13.27 C2.13.28 +C1.13.58 C2.13.29 C2.14.29 +C1.13.59 C2.13.28 +C1.13.60 C2.13.29 C2.13.30 C2.13.31 +C1.13.61 C2.13.29 C2.13.30 C2.13.31 C2.14.31 +C1.13.62 C2.13.31 +C1.14.12 C2.14.01 +C1.14.13 C2.15.03 +C1.14.14 C2.14.06 +C1.14.15 C2.14.01 C2.14.03 +C1.14.16 C2.14.02 C2.14.04 +C1.14.17 C2.13.06 C2.14.00 C2.14.05 +C1.14.18 C2.14.06 +C1.14.19 C2.14.04 +C1.14.20 C2.14.05 +C1.14.21 C2.15.07 +C1.14.22 C2.14.06 C2.14.07 +C1.14.23 C2.14.09 +C1.14.24 C2.14.07 +C1.14.25 C2.14.08 +C1.14.26 C2.14.10 +C1.14.27 C2.14.09 C2.14.11 +C1.14.28 C2.14.12 +C1.14.29 C2.14.11 +C1.14.30 C2.14.12 C2.14.15 +C1.14.31 C2.14.13 +C1.14.32 C2.14.14 +C1.14.33 C2.14.13 C2.15.14 +C1.14.34 C2.14.15 +C1.14.35 C2.14.14 C2.14.17 +C1.14.36 C2.14.16 +C1.14.37 C2.14.17 +C1.14.38 C2.14.16 C2.15.17 +C1.14.39 C2.14.18 +C1.14.40 C2.14.19 +C1.14.41 C2.14.18 C2.14.20 +C1.14.42 C2.14.21 +C1.14.43 C2.14.21 C2.14.22 +C1.14.44 C2.14.23 +C1.14.45 C2.14.22 +C1.14.46 C2.14.23 C2.14.24 +C1.14.47 C2.14.24 +C1.14.48 C2.13.24 C2.14.23 C2.14.24 C2.14.25 +C1.14.49 C2.14.24 C2.14.25 +C1.14.50 C2.14.26 C2.15.24 +C1.14.51 C2.14.25 C2.14.27 +C1.14.52 C2.14.26 C2.14.28 +C1.14.53 C2.14.26 C2.14.28 +C1.14.54 C2.14.26 C2.14.28 +C1.14.55 C2.14.28 +C1.14.56 C2.14.28 +C1.14.57 C2.14.28 C2.14.29 +C1.14.58 C2.14.28 +C1.14.59 C2.14.28 C2.14.29 C2.14.30 +C1.14.60 C2.14.28 C2.14.30 +C1.14.61 C2.13.29 C2.14.29 C2.14.30 C2.14.31 +C1.14.62 C2.14.30 C2.14.31 C2.15.28 +C1.15.15 C2.15.02 +C1.15.16 C2.15.01 C2.15.02 +C1.15.17 C2.15.00 C2.15.01 +C1.15.18 C2.15.03 +C1.15.19 C2.15.03 C2.15.04 +C1.15.20 C2.15.04 +C1.15.21 C2.15.05 +C1.15.22 C2.15.05 C2.15.06 +C1.15.23 C2.15.06 +C1.15.24 C2.15.07 C2.15.08 +C1.15.25 C2.15.08 +C1.15.26 C2.15.09 +C1.15.27 C2.15.09 C2.15.10 +C1.15.28 C2.15.10 +C1.15.29 C2.14.10 C2.15.11 +C1.15.30 C2.15.11 +C1.15.31 C2.15.12 +C1.15.32 C2.15.12 C2.15.13 +C1.15.33 C2.15.13 +C1.15.34 C2.15.14 +C1.15.35 C2.15.15 +C1.15.36 C2.15.15 C2.15.16 +C1.15.37 C2.15.16 +C1.15.38 C2.15.17 +C1.15.39 C2.15.18 +C1.15.40 C2.15.18 C2.15.19 +C1.15.41 C2.15.19 +C1.15.42 C2.14.20 +C1.15.43 C2.15.20 +C1.15.44 C2.15.20 C2.15.21 +C1.15.45 C2.15.21 +C1.15.46 C2.15.22 +C1.15.47 C2.15.22 C2.15.23 +C1.15.48 C2.15.23 +C1.15.49 C2.15.24 +C1.15.50 C2.15.24 C2.15.25 +C1.15.51 C2.15.25 +C1.15.52 C2.14.26 C2.15.24 C2.15.25 C2.15.26 +C1.15.53 C2.15.25 C2.15.26 +C1.15.54 C2.15.26 C2.15.27 +C1.15.55 C2.15.26 C2.15.27 +C1.15.56 C2.15.26 C2.15.27 +C1.15.57 C2.15.27 +C1.15.58 C2.15.27 +C1.15.59 C2.15.27 +C1.15.60 C2.15.27 C2.15.28 +C1.15.61 C2.15.27 C2.15.28 C2.15.29 +C1.15.62 C2.15.27 C2.15.29 +C2.00.05 C3.00.02 +C2.00.06 C3.00.00 +C2.00.07 C3.00.01 C3.01.00 C3.01.02 +C2.00.08 C3.00.01 +C2.00.09 C3.00.02 +C2.00.10 C3.00.03 +C2.00.11 C3.00.01 C3.00.04 +C2.00.12 C3.00.02 C3.00.05 +C2.00.13 C3.00.03 C3.00.06 +C2.00.14 C3.00.04 C3.00.07 +C2.00.15 C3.00.05 C3.00.08 +C2.00.16 C3.00.06 C3.00.09 +C2.00.17 C3.00.07 +C2.00.18 C3.00.08 +C2.00.19 C3.00.09 +C2.00.20 C3.00.08 C3.00.10 +C2.00.21 C3.00.09 C3.00.11 +C2.00.22 C3.00.10 C3.00.12 +C2.00.23 C3.00.11 C3.00.13 +C2.00.24 C3.00.12 +C2.00.25 C3.00.13 +C2.00.26 C3.00.13 C3.00.14 +C2.00.27 C3.00.14 C3.00.15 C3.01.15 +C2.00.28 C3.00.15 C3.01.15 +C2.00.29 C3.00.15 +C2.01.03 C3.02.00 +C2.01.04 C3.01.02 +C2.01.05 C3.01.01 C3.01.03 +C2.01.06 C3.01.01 C3.01.02 +C2.01.07 C3.01.02 +C2.01.08 C3.01.01 C3.01.03 C3.02.00 +C2.01.09 C3.01.01 C3.01.02 C3.01.03 C3.01.05 +C2.01.10 C3.00.01 C3.01.00 C3.01.02 C3.01.04 +C2.01.11 C3.01.01 C3.01.02 C3.01.05 +C2.01.12 C3.01.03 C3.01.05 +C2.01.13 C3.01.04 C3.01.06 +C2.01.14 C3.01.03 C3.01.05 C3.01.07 C3.02.05 +C2.01.15 C3.01.05 +C2.01.16 C3.01.06 +C2.01.17 C3.01.05 C3.01.07 +C2.01.18 C3.01.06 C3.01.08 +C2.01.19 C3.01.07 C3.02.09 +C2.01.20 C3.00.07 C3.01.09 +C2.01.21 C3.01.08 C3.01.10 +C2.01.22 C3.01.09 C3.01.11 +C2.01.23 C3.01.10 +C2.01.24 C3.01.11 +C2.01.25 C3.01.11 C3.01.12 +C2.01.26 C3.00.12 C3.01.13 +C2.01.27 C3.01.12 C3.02.13 +C2.01.28 C3.01.13 C3.01.14 C3.01.15 +C2.01.29 C3.01.14 C3.02.14 +C2.01.30 C3.01.14 C3.01.15 +C2.01.31 C3.01.15 C3.02.14 +C2.02.06 C3.02.00 +C2.02.07 C3.02.01 C3.02.02 +C2.02.08 C3.02.01 +C2.02.09 C3.02.00 C3.02.02 C3.02.03 +C2.02.10 C3.02.00 C3.02.01 C3.02.02 C3.02.03 C3.02.04 +C2.02.11 C3.01.03 C3.02.00 C3.02.03 C3.02.05 +C2.02.12 C3.02.01 C3.02.02 C3.02.04 +C2.02.13 C3.02.01 C3.02.02 C3.02.04 C3.02.06 C3.03.05 +C2.02.14 C3.02.03 C3.02.04 C3.02.05 C3.02.07 +C2.02.15 C3.02.04 C3.02.07 +C2.02.16 C3.01.07 C3.02.05 C3.02.07 C3.02.09 +C2.02.17 C3.02.04 C3.02.06 C3.02.07 C3.02.08 +C2.02.18 C3.02.07 C3.02.09 +C2.02.19 C3.02.07 C3.02.08 C3.02.09 C3.02.10 +C2.02.20 C3.02.09 +C2.02.21 C3.02.08 C3.02.10 C3.03.10 C3.03.12 +C2.02.22 C3.02.09 C3.02.10 +C2.02.23 C3.02.10 C3.03.12 +C2.02.24 C3.01.10 C3.02.11 +C2.02.25 C3.02.11 C3.02.12 +C2.02.26 C3.02.12 +C2.02.27 C3.02.13 +C2.02.28 C3.02.13 C3.03.15 +C2.02.29 C3.01.14 C3.02.14 C3.02.15 +C2.02.30 C3.02.14 C3.02.15 +C2.02.31 C3.02.15 +C2.03.01 C3.03.02 +C2.03.02 C3.03.02 +C2.03.03 C3.03.02 C3.03.03 +C2.03.04 C3.03.00 C3.03.03 C3.03.04 +C2.03.05 C3.03.00 C3.03.01 C3.03.04 C3.04.01 C3.04.04 +C2.03.06 C3.02.01 C3.03.02 C3.03.05 +C2.03.07 C3.03.02 C3.03.03 C3.03.05 C3.03.06 +C2.03.08 C3.03.02 C3.03.03 C3.03.06 +C2.03.09 C3.03.03 C3.03.04 C3.03.06 C3.03.07 +C2.03.10 C3.03.04 C3.03.07 C3.04.04 C3.04.07 +C2.03.11 C3.02.06 C3.03.05 C3.03.06 C3.03.08 +C2.03.12 C3.03.06 C3.03.08 +C2.03.13 C3.03.06 C3.03.07 C3.03.08 C3.03.09 +C2.03.14 C3.03.07 C3.03.09 C3.04.07 C3.04.09 +C2.03.15 C3.02.06 C3.02.08 C3.03.08 C3.03.10 +C2.03.16 C3.03.08 C3.03.10 +C2.03.17 C3.03.08 C3.03.09 C3.03.10 C3.03.11 +C2.03.18 C3.03.09 C3.03.11 C3.04.09 C3.04.11 +C2.03.19 C3.03.10 C3.03.12 +C2.03.20 C3.03.10 C3.03.11 C3.03.12 C3.03.13 +C2.03.21 C3.03.11 C3.03.13 C3.04.11 C3.04.13 +C2.03.22 C3.03.12 +C2.03.23 C3.03.12 C3.03.13 +C2.03.24 C3.03.13 C3.04.13 +C2.03.25 C3.02.12 C3.03.14 +C2.03.26 C3.03.14 C3.04.14 +C2.03.27 C3.03.15 +C2.03.28 C3.03.15 C3.04.15 +C2.03.29 C3.03.15 +C2.03.30 C3.03.15 C3.04.15 +C2.04.02 C3.04.02 +C2.04.03 C3.04.02 C3.04.03 +C2.04.04 C3.04.00 C3.04.03 C3.04.04 +C2.04.05 C3.04.00 C3.04.01 C3.04.04 +C2.04.06 C3.04.02 C3.04.05 C3.05.02 +C2.04.07 C3.04.02 C3.04.05 +C2.04.08 C3.04.02 C3.04.03 C3.04.05 C3.04.06 +C2.04.09 C3.04.03 C3.04.04 C3.04.06 C3.04.07 +C2.04.10 C3.04.04 C3.04.07 +C2.04.11 C3.04.05 C3.05.06 +C2.04.12 C3.04.05 C3.04.06 C3.04.08 C3.05.06 +C2.04.13 C3.04.06 C3.04.07 C3.04.08 C3.04.09 +C2.04.14 C3.04.07 C3.04.09 +C2.04.15 C3.05.06 C3.05.08 +C2.04.16 C3.04.08 C3.04.10 C3.05.06 C3.05.08 +C2.04.17 C3.04.08 C3.04.09 C3.04.10 C3.04.11 +C2.04.18 C3.04.09 C3.04.11 +C2.04.19 C3.04.10 C3.04.12 C3.05.08 C3.05.10 +C2.04.20 C3.04.10 C3.04.11 C3.04.12 C3.04.13 +C2.04.21 C3.04.11 C3.04.13 +C2.04.22 C3.04.12 C3.05.10 +C2.04.23 C3.04.12 C3.04.13 +C2.04.24 C3.04.13 +C2.04.25 C3.04.14 C3.05.12 +C2.04.26 C3.04.14 +C2.04.27 C3.04.15 +C2.04.28 C3.04.15 +C2.04.29 C3.04.15 +C2.04.30 C3.04.15 +C2.05.06 C3.05.00 +C2.05.07 C3.05.01 +C2.05.08 C3.05.01 C3.05.02 +C2.05.09 C3.05.00 C3.05.01 C3.05.03 +C2.05.10 C3.05.01 C3.05.03 +C2.05.11 C3.05.00 C3.05.03 C3.05.05 C3.06.02 +C2.05.12 C3.05.01 C3.05.02 C3.05.03 C3.05.04 +C2.05.13 C3.04.05 C3.05.02 C3.05.04 C3.05.06 +C2.05.14 C3.05.03 C3.05.05 +C2.05.15 C3.05.03 C3.05.04 C3.05.05 C3.05.07 +C2.05.16 C3.05.05 C3.06.06 +C2.05.17 C3.05.04 C3.05.06 C3.05.07 C3.05.08 +C2.05.18 C3.05.05 C3.05.07 C3.05.09 C3.06.06 +C2.05.19 C3.05.07 C3.05.08 C3.05.09 C3.05.10 +C2.05.20 C3.05.09 C3.06.06 +C2.05.21 C3.05.08 C3.05.10 +C2.05.22 C3.05.09 C3.05.10 +C2.05.23 C3.05.10 +C2.05.24 C3.05.11 C3.06.09 +C2.05.25 C3.05.11 +C2.05.26 C3.05.11 C3.05.12 +C2.05.27 C3.05.13 C3.06.11 +C2.05.28 C3.04.15 C3.05.13 +C2.05.29 C3.05.14 C3.06.13 C3.06.15 +C2.05.30 C3.05.14 C3.06.15 +C2.05.31 C3.05.14 +C2.06.05 C3.06.00 +C2.06.06 C3.06.00 +C2.06.07 C3.06.00 C3.06.01 +C2.06.08 C3.05.00 C3.06.00 C3.06.02 +C2.06.09 C3.06.00 +C2.06.10 C3.06.01 C3.06.03 C3.07.01 +C2.06.11 C3.06.00 C3.06.01 +C2.06.12 C3.06.00 C3.06.02 C3.06.04 +C2.06.13 C3.06.03 +C2.06.14 C3.05.05 C3.06.02 C3.06.04 C3.06.06 +C2.06.15 C3.06.00 C3.06.01 C3.06.04 +C2.06.16 C3.06.03 C3.06.05 +C2.06.17 C3.06.04 C3.06.06 +C2.06.18 C3.06.05 C3.06.07 +C2.06.19 C3.06.06 +C2.06.20 C3.06.08 C3.07.07 +C2.06.21 C3.06.07 +C2.06.22 C3.06.08 +C2.06.23 C3.06.07 C3.06.09 +C2.06.24 C3.06.08 C3.06.10 +C2.06.25 C3.06.10 C3.06.11 +C2.06.26 C3.06.12 C3.07.12 +C2.06.27 C3.06.11 +C2.06.28 C3.06.12 +C2.06.29 C3.06.12 C3.06.13 +C2.06.30 C3.06.12 C3.06.14 C3.06.15 +C2.06.31 C3.06.14 C3.06.15 +C2.07.06 C3.07.00 +C2.07.07 C3.07.01 +C2.07.08 C3.07.01 C3.07.02 +C2.07.09 C3.07.02 +C2.07.10 C3.07.00 C3.07.03 +C2.07.11 C3.07.01 C3.07.04 +C2.07.12 C3.07.02 C3.07.05 +C2.07.13 C3.07.03 C3.07.06 +C2.07.14 C3.07.04 +C2.07.15 C3.07.05 +C2.07.16 C3.07.06 +C2.07.17 C3.07.04 C3.07.07 +C2.07.18 C3.07.05 C3.07.08 +C2.07.19 C3.07.06 C3.07.09 +C2.07.20 C3.07.08 C3.07.10 +C2.07.21 C3.07.09 C3.07.11 +C2.07.22 C3.07.10 +C2.07.23 C3.07.11 +C2.07.24 C3.07.10 C3.07.12 +C2.07.25 C3.07.11 C3.07.13 +C2.07.26 C3.07.13 C3.07.14 +C2.07.27 C3.07.14 +C2.07.28 C3.06.14 C3.07.14 C3.07.15 +C2.07.29 C3.07.14 C3.07.15 +C2.08.06 C3.08.00 +C2.08.07 C3.08.01 C3.09.00 +C2.08.08 C3.08.01 +C2.08.09 C3.08.02 +C2.08.10 C3.08.00 C3.08.03 +C2.08.11 C3.08.01 C3.08.04 +C2.08.12 C3.08.02 C3.08.05 +C2.08.13 C3.08.03 C3.08.06 +C2.08.14 C3.08.04 +C2.08.15 C3.08.05 +C2.08.16 C3.08.06 +C2.08.17 C3.08.04 C3.08.07 +C2.08.18 C3.08.05 C3.08.08 +C2.08.19 C3.08.06 C3.08.09 +C2.08.20 C3.08.08 C3.08.10 +C2.08.21 C3.08.09 C3.08.11 +C2.08.22 C3.08.10 +C2.08.23 C3.08.11 +C2.08.24 C3.08.10 C3.08.12 +C2.08.25 C3.08.11 C3.08.13 +C2.08.26 C3.08.13 C3.08.14 +C2.08.27 C3.08.14 +C2.08.28 C3.08.14 C3.08.15 C3.09.15 +C2.08.29 C3.08.14 C3.08.15 +C2.09.05 C3.09.01 +C2.09.06 C3.09.02 +C2.09.07 C3.09.02 +C2.09.08 C3.09.01 C3.09.03 C3.10.00 +C2.09.09 C3.09.01 C3.09.02 +C2.09.10 C3.08.01 C3.09.00 C3.09.02 C3.09.04 +C2.09.11 C3.09.01 C3.09.02 +C2.09.12 C3.09.01 C3.09.03 C3.09.05 +C2.09.13 C3.09.04 +C2.09.14 C3.09.03 C3.09.05 C3.09.07 C3.10.05 +C2.09.15 C3.09.01 C3.09.02 C3.09.05 +C2.09.16 C3.09.04 C3.09.06 +C2.09.17 C3.09.05 C3.09.07 +C2.09.18 C3.09.06 C3.09.08 +C2.09.19 C3.09.07 +C2.09.20 C3.08.07 C3.09.09 +C2.09.21 C3.09.08 +C2.09.22 C3.09.09 +C2.09.23 C3.09.08 C3.09.10 +C2.09.24 C3.09.09 C3.09.11 +C2.09.25 C3.09.11 C3.09.12 +C2.09.26 C3.08.12 C3.09.13 +C2.09.27 C3.09.12 +C2.09.28 C3.09.13 +C2.09.29 C3.09.13 C3.09.14 C3.10.14 +C2.09.30 C3.09.13 C3.09.14 C3.09.15 +C2.09.31 C3.09.14 C3.09.15 C3.10.14 +C2.10.06 C3.10.00 +C2.10.07 C3.10.01 C3.10.02 +C2.10.08 C3.10.01 C3.10.02 +C2.10.09 C3.10.00 C3.10.03 +C2.10.10 C3.10.00 C3.10.02 C3.10.03 +C2.10.11 C3.09.03 C3.10.00 C3.10.03 C3.10.05 +C2.10.12 C3.10.01 C3.10.02 C3.10.03 C3.10.04 +C2.10.13 C3.10.01 C3.10.02 C3.10.04 C3.10.06 C3.11.05 +C2.10.14 C3.10.03 C3.10.05 +C2.10.15 C3.10.03 C3.10.04 C3.10.05 C3.10.07 +C2.10.16 C3.09.07 C3.10.05 +C2.10.17 C3.10.04 C3.10.06 C3.10.07 C3.10.08 +C2.10.18 C3.09.07 C3.10.05 C3.10.07 C3.10.09 +C2.10.19 C3.10.07 C3.10.08 C3.10.09 C3.10.10 +C2.10.20 C3.09.07 C3.10.09 +C2.10.21 C3.10.08 C3.10.10 +C2.10.22 C3.10.09 C3.10.10 +C2.10.23 C3.10.10 +C2.10.24 C3.09.10 C3.10.11 +C2.10.25 C3.10.11 +C2.10.26 C3.10.11 C3.10.12 +C2.10.27 C3.09.12 C3.10.13 +C2.10.28 C3.10.13 C3.11.15 +C2.10.29 C3.09.13 C3.09.14 C3.10.14 +C2.10.30 C3.10.14 C3.10.15 +C2.10.31 C3.10.15 +C2.11.02 C3.11.02 +C2.11.03 C3.11.02 C3.11.03 +C2.11.04 C3.11.00 C3.11.03 C3.11.04 +C2.11.05 C3.11.00 C3.11.01 C3.11.04 +C2.11.06 C3.10.01 C3.11.02 C3.11.05 +C2.11.07 C3.11.02 C3.11.05 +C2.11.08 C3.11.02 C3.11.03 C3.11.05 C3.11.06 +C2.11.09 C3.11.03 C3.11.04 C3.11.06 C3.11.07 +C2.11.10 C3.11.04 C3.11.07 +C2.11.11 C3.10.06 C3.11.05 +C2.11.12 C3.10.06 C3.11.05 C3.11.06 C3.11.08 +C2.11.13 C3.11.06 C3.11.07 C3.11.08 C3.11.09 +C2.11.14 C3.11.07 C3.11.09 +C2.11.15 C3.10.06 C3.10.08 +C2.11.16 C3.10.06 C3.10.08 C3.11.08 C3.11.10 +C2.11.17 C3.11.08 C3.11.09 C3.11.10 C3.11.11 +C2.11.18 C3.11.09 C3.11.11 +C2.11.19 C3.10.08 C3.10.10 C3.11.10 C3.11.12 +C2.11.20 C3.11.10 C3.11.11 C3.11.12 C3.11.13 +C2.11.21 C3.11.11 C3.11.13 +C2.11.22 C3.10.10 C3.11.12 +C2.11.23 C3.11.12 C3.11.13 +C2.11.24 C3.11.13 +C2.11.25 C3.10.12 C3.11.14 +C2.11.26 C3.11.14 +C2.11.27 C3.11.15 +C2.11.28 C3.11.15 +C2.11.29 C3.11.15 +C2.11.30 C3.11.15 +C2.12.02 C3.12.02 +C2.12.03 C3.12.02 C3.12.03 +C2.12.04 C3.12.00 C3.12.03 C3.12.04 +C2.12.05 C3.11.01 C3.11.04 C3.12.00 C3.12.01 C3.12.04 +C2.12.06 C3.12.02 C3.12.05 C3.13.02 +C2.12.07 C3.12.02 C3.12.03 C3.12.05 C3.12.06 +C2.12.08 C3.12.02 C3.12.03 C3.12.06 +C2.12.09 C3.12.03 C3.12.04 C3.12.06 C3.12.07 +C2.12.10 C3.11.04 C3.11.07 C3.12.04 C3.12.07 +C2.12.11 C3.12.05 C3.12.06 C3.12.08 C3.13.06 +C2.12.12 C3.12.06 C3.12.08 +C2.12.13 C3.12.06 C3.12.07 C3.12.08 C3.12.09 +C2.12.14 C3.11.07 C3.11.09 C3.12.07 C3.12.09 +C2.12.15 C3.12.08 C3.12.10 C3.13.06 C3.13.08 +C2.12.16 C3.12.08 C3.12.10 +C2.12.17 C3.12.08 C3.12.09 C3.12.10 C3.12.11 +C2.12.18 C3.11.09 C3.11.11 C3.12.09 C3.12.11 +C2.12.19 C3.12.10 C3.12.12 +C2.12.20 C3.12.10 C3.12.11 C3.12.12 C3.12.13 +C2.12.21 C3.11.11 C3.11.13 C3.12.11 C3.12.13 +C2.12.22 C3.12.12 +C2.12.23 C3.12.12 C3.12.13 +C2.12.24 C3.11.13 C3.12.13 +C2.12.25 C3.12.14 C3.13.12 +C2.12.26 C3.11.14 C3.12.14 +C2.12.27 C3.12.15 +C2.12.28 C3.11.15 C3.12.15 +C2.12.29 C3.12.15 +C2.12.30 C3.11.15 C3.12.15 +C2.13.06 C3.13.00 +C2.13.07 C3.13.01 +C2.13.08 C3.13.01 C3.13.02 +C2.13.09 C3.13.00 C3.13.01 C3.13.03 +C2.13.10 C3.13.01 C3.13.02 C3.13.03 C3.13.04 +C2.13.11 C3.13.00 C3.13.03 C3.13.05 C3.14.02 +C2.13.12 C3.13.01 C3.13.02 C3.13.04 +C2.13.13 C3.12.05 C3.13.02 C3.13.04 C3.13.06 +C2.13.14 C3.13.03 C3.13.04 C3.13.05 C3.13.07 +C2.13.15 C3.13.04 C3.13.07 +C2.13.16 C3.13.05 C3.13.07 C3.13.09 C3.14.06 +C2.13.17 C3.13.04 C3.13.06 C3.13.07 C3.13.08 +C2.13.18 C3.13.07 C3.13.09 +C2.13.19 C3.13.07 C3.13.08 C3.13.09 C3.13.10 +C2.13.20 C3.13.09 +C2.13.21 C3.12.10 C3.12.12 C3.13.08 C3.13.10 +C2.13.22 C3.13.09 C3.13.10 +C2.13.23 C3.12.12 C3.13.10 +C2.13.24 C3.13.11 C3.14.09 +C2.13.25 C3.13.11 C3.13.12 +C2.13.26 C3.13.12 +C2.13.27 C3.13.13 +C2.13.28 C3.12.15 C3.13.13 +C2.13.29 C3.13.14 C3.14.13 C3.14.15 +C2.13.30 C3.13.14 C3.14.15 +C2.13.31 C3.13.14 +C2.14.04 C3.14.01 +C2.14.05 C3.13.00 C3.14.00 C3.14.02 +C2.14.06 C3.14.00 +C2.14.07 C3.14.00 C3.14.01 +C2.14.08 C3.13.00 C3.14.00 C3.14.02 +C2.14.09 C3.14.00 C3.14.02 C3.14.04 +C2.14.10 C3.14.01 C3.14.03 C3.15.01 +C2.14.11 C3.14.00 C3.14.01 C3.14.04 +C2.14.12 C3.14.02 C3.14.04 +C2.14.13 C3.14.03 C3.14.05 +C2.14.14 C3.13.05 C3.14.02 C3.14.04 C3.14.06 +C2.14.15 C3.14.04 +C2.14.16 C3.14.05 +C2.14.17 C3.14.04 C3.14.06 +C2.14.18 C3.14.05 C3.14.07 +C2.14.19 C3.13.09 C3.14.06 +C2.14.20 C3.14.08 C3.15.07 +C2.14.21 C3.14.07 C3.14.09 +C2.14.22 C3.14.08 C3.14.10 +C2.14.23 C3.14.09 +C2.14.24 C3.14.10 +C2.14.25 C3.14.10 C3.14.11 +C2.14.26 C3.14.12 C3.15.12 +C2.14.27 C3.13.13 C3.14.11 +C2.14.28 C3.14.12 C3.14.13 C3.14.14 +C2.14.29 C3.14.13 +C2.14.30 C3.14.14 C3.14.15 +C2.14.31 C3.14.14 C3.14.15 +C2.15.05 C3.15.02 +C2.15.06 C3.15.00 +C2.15.07 C3.14.01 C3.15.01 +C2.15.08 C3.15.01 C3.15.02 +C2.15.09 C3.15.02 +C2.15.10 C3.15.03 +C2.15.11 C3.15.01 C3.15.04 +C2.15.12 C3.15.02 C3.15.05 +C2.15.13 C3.15.03 C3.15.06 +C2.15.14 C3.15.04 C3.15.07 +C2.15.15 C3.15.05 C3.15.08 +C2.15.16 C3.15.06 C3.15.09 +C2.15.17 C3.15.07 +C2.15.18 C3.15.08 +C2.15.19 C3.15.09 +C2.15.20 C3.15.08 C3.15.10 +C2.15.21 C3.15.09 C3.15.11 +C2.15.22 C3.15.10 C3.15.12 +C2.15.23 C3.15.11 C3.15.13 +C2.15.24 C3.15.12 +C2.15.25 C3.15.13 +C2.15.26 C3.15.13 C3.15.14 +C2.15.27 C3.14.14 C3.15.14 C3.15.15 +C2.15.28 C3.14.14 C3.15.15 +C2.15.29 C3.15.15 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext-DC3-05-Comm-01.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext-DC3-05-Comm-01.txt new file mode 100755 index 0000000000000000000000000000000000000000..805bfd45c8fb927e7faf8117a50b7455fef37758 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext-DC3-05-Comm-01.txt @@ -0,0 +1,2507 @@ +# 3D FCal Neighbors Next in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Thu Nov 30 16:09:58 2006 +# +# 3d neighbors next in sampling are all cells touching the same +# eta phi area in the next sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without next sampling neighbors are not listed. +# +A1.00.14 A2.00.00 +A1.00.15 A2.00.00 A2.00.01 +A1.00.16 A2.00.01 A2.00.02 +A1.00.17 A2.00.03 +A1.00.18 A2.00.03 A2.00.04 +A1.00.19 A2.00.04 +A1.00.20 A2.00.05 +A1.00.21 A2.00.05 A2.00.06 +A1.00.22 A2.00.06 +A1.00.23 A2.00.07 A2.00.08 +A1.00.24 A2.00.08 +A1.00.25 A2.00.09 +A1.00.26 A2.00.09 A2.00.10 +A1.00.27 A2.00.10 +A1.00.28 A2.00.11 A2.01.10 +A1.00.29 A2.00.11 +A1.00.30 A2.00.12 +A1.00.31 A2.00.12 A2.00.13 +A1.00.32 A2.00.13 +A1.00.33 A2.00.14 +A1.00.34 A2.00.15 +A1.00.35 A2.00.15 A2.00.16 +A1.00.36 A2.00.16 +A1.00.37 A2.00.17 +A1.00.38 A2.00.18 +A1.00.39 A2.00.18 A2.00.19 +A1.00.40 A2.00.19 +A1.00.41 A2.01.20 +A1.00.42 A2.00.20 +A1.00.43 A2.00.20 A2.00.21 +A1.00.44 A2.00.21 +A1.00.45 A2.00.22 +A1.00.46 A2.00.22 A2.00.23 +A1.00.47 A2.00.23 +A1.00.48 A2.00.24 +A1.00.49 A2.00.24 A2.00.25 +A1.00.50 A2.00.25 +A1.00.51 A2.00.24 A2.00.25 A2.00.26 A2.01.26 +A1.00.52 A2.00.25 A2.00.26 +A1.00.53 A2.01.26 A2.01.28 +A1.00.54 A2.00.26 A2.00.27 +A1.00.55 A2.00.26 A2.00.27 +A1.00.56 A2.00.26 A2.00.27 +A1.00.57 A2.00.27 +A1.00.58 A2.00.27 +A1.00.59 A2.00.27 +A1.00.60 A2.00.27 A2.00.28 +A1.00.61 A2.00.27 A2.00.28 A2.00.29 +A1.00.62 A2.00.27 A2.00.29 +A1.01.12 A2.01.01 +A1.01.13 A2.00.03 +A1.01.14 A2.01.06 +A1.01.15 A2.01.01 A2.01.03 +A1.01.16 A2.01.02 A2.01.04 +A1.01.17 A2.01.00 A2.01.05 A2.02.06 +A1.01.18 A2.01.06 +A1.01.19 A2.01.04 +A1.01.20 A2.01.05 +A1.01.21 A2.00.07 +A1.01.22 A2.01.06 A2.01.07 +A1.01.23 A2.01.09 +A1.01.24 A2.01.07 +A1.01.25 A2.01.08 +A1.01.26 A2.01.10 +A1.01.27 A2.01.09 A2.01.11 +A1.01.28 A2.01.12 +A1.01.29 A2.01.11 +A1.01.30 A2.01.12 A2.01.15 +A1.01.31 A2.01.13 +A1.01.32 A2.01.14 +A1.01.33 A2.00.14 A2.01.13 +A1.01.34 A2.01.15 +A1.01.35 A2.01.14 A2.01.17 +A1.01.36 A2.01.16 +A1.01.37 A2.01.17 +A1.01.38 A2.00.17 A2.01.16 +A1.01.39 A2.01.18 +A1.01.40 A2.01.19 +A1.01.41 A2.01.18 A2.01.20 +A1.01.42 A2.01.21 +A1.01.43 A2.01.21 A2.01.22 +A1.01.44 A2.01.23 +A1.01.45 A2.01.22 +A1.01.46 A2.01.23 A2.01.24 +A1.01.47 A2.01.24 +A1.01.48 A2.01.23 A2.01.24 A2.01.25 A2.02.24 +A1.01.49 A2.01.24 A2.01.25 +A1.01.50 A2.00.24 A2.01.26 +A1.01.51 A2.01.25 A2.01.27 +A1.01.52 A2.01.26 A2.01.28 +A1.01.53 A2.01.26 A2.01.28 +A1.01.54 A2.01.28 +A1.01.55 A2.01.28 +A1.01.56 A2.01.28 A2.01.29 +A1.01.57 A2.01.28 +A1.01.58 A2.01.28 A2.01.29 A2.01.30 +A1.01.59 A2.01.28 A2.01.30 +A1.01.60 A2.01.29 A2.01.30 A2.01.31 A2.02.29 +A1.01.61 A2.01.30 A2.01.31 A2.02.29 A2.02.30 +A1.01.62 A2.00.28 A2.01.30 A2.01.31 +A1.02.12 A2.02.03 +A1.02.13 A2.01.00 A2.02.00 A2.02.06 +A1.02.14 A2.02.02 A2.02.04 A2.03.01 +A1.02.15 A2.02.01 A2.02.07 +A1.02.16 A2.02.03 A2.02.05 A2.02.07 +A1.02.17 A2.02.00 A2.02.06 +A1.02.18 A2.02.02 A2.02.04 A2.02.08 +A1.02.19 A2.02.07 +A1.02.20 A2.02.09 +A1.02.21 A2.01.08 A2.02.06 +A1.02.22 A2.02.08 +A1.02.23 A2.02.10 +A1.02.24 A2.02.09 A2.02.11 +A1.02.25 A2.02.08 A2.03.06 +A1.02.26 A2.02.12 +A1.02.27 A2.02.10 A2.02.14 +A1.02.28 A2.02.11 +A1.02.29 A2.02.12 A2.02.13 +A1.02.30 A2.02.12 A2.02.15 +A1.02.31 A2.02.14 +A1.02.32 A2.02.12 A2.02.13 A2.02.15 A2.02.17 +A1.02.33 A2.02.15 +A1.02.34 A2.02.16 +A1.02.35 A2.02.15 A2.02.17 +A1.02.36 A2.02.18 +A1.02.37 A2.01.19 A2.02.16 +A1.02.38 A2.02.17 A2.03.15 +A1.02.39 A2.02.18 A2.02.19 +A1.02.40 A2.02.18 A2.02.20 +A1.02.41 A2.02.19 A2.02.21 +A1.02.42 A2.02.18 A2.02.19 A2.02.20 A2.02.22 +A1.02.43 A2.02.20 +A1.02.44 A2.02.19 A2.02.21 A2.02.22 A2.02.23 +A1.02.45 A2.02.20 A2.02.22 +A1.02.46 A2.02.22 A2.02.23 +A1.02.47 A2.01.23 A2.02.24 +A1.02.48 A2.02.23 A2.03.22 +A1.02.49 A2.02.24 A2.02.25 +A1.02.50 A2.02.25 A2.02.26 +A1.02.51 A2.01.25 A2.01.27 A2.02.24 A2.02.25 +A1.02.52 A2.01.27 A2.02.25 A2.02.26 A2.02.27 +A1.02.53 A2.01.27 A2.02.27 +A1.02.54 A2.02.27 +A1.02.55 A2.01.27 A2.02.27 +A1.02.56 A2.02.27 A2.02.28 +A1.02.57 A2.02.27 +A1.02.58 A2.02.27 A2.02.28 +A1.02.59 A2.01.29 A2.02.29 +A1.02.60 A2.02.28 +A1.02.61 A2.02.29 A2.02.30 A2.02.31 +A1.02.62 A2.02.30 A2.02.31 +A1.03.12 A2.03.00 +A1.03.13 A2.03.00 +A1.03.14 A2.03.00 +A1.03.15 A2.03.01 +A1.03.16 A2.03.01 A2.03.02 +A1.03.17 A2.03.02 A2.03.03 +A1.03.18 A2.03.03 A2.03.04 +A1.03.19 A2.03.04 A2.03.05 +A1.03.20 A2.02.04 A2.02.08 A2.03.01 A2.03.06 +A1.03.21 A2.03.01 A2.03.02 A2.03.06 A2.03.07 +A1.03.22 A2.03.02 A2.03.03 A2.03.07 A2.03.08 +A1.03.23 A2.03.03 A2.03.04 A2.03.08 A2.03.09 +A1.03.24 A2.03.04 A2.03.05 A2.03.09 A2.03.10 +A1.03.25 A2.03.06 A2.03.07 +A1.03.26 A2.03.07 A2.03.08 +A1.03.27 A2.03.08 A2.03.09 +A1.03.28 A2.03.09 A2.03.10 +A1.03.29 A2.02.13 A2.03.11 +A1.03.30 A2.03.11 A2.03.12 +A1.03.31 A2.03.12 A2.03.13 +A1.03.32 A2.03.13 A2.03.14 +A1.03.33 A2.02.13 A2.02.17 A2.03.11 A2.03.15 +A1.03.34 A2.03.11 A2.03.12 A2.03.15 A2.03.16 +A1.03.35 A2.03.12 A2.03.13 A2.03.16 A2.03.17 +A1.03.36 A2.03.13 A2.03.14 A2.03.17 A2.03.18 +A1.03.37 A2.03.15 A2.03.16 +A1.03.38 A2.03.16 A2.03.17 +A1.03.39 A2.03.17 A2.03.18 +A1.03.40 A2.02.21 A2.03.19 +A1.03.41 A2.03.19 A2.03.20 +A1.03.42 A2.03.20 A2.03.21 +A1.03.43 A2.02.21 A2.02.23 A2.03.19 A2.03.22 +A1.03.44 A2.03.19 A2.03.20 A2.03.22 A2.03.23 +A1.03.45 A2.03.20 A2.03.21 A2.03.23 A2.03.24 +A1.03.46 A2.03.22 A2.03.23 +A1.03.47 A2.03.23 A2.03.24 +A1.03.48 A2.02.26 A2.03.25 +A1.03.49 A2.03.25 A2.03.26 +A1.03.50 A2.02.26 A2.03.25 +A1.03.51 A2.03.25 +A1.03.52 A2.03.25 A2.03.26 +A1.03.53 A2.03.26 +A1.03.54 A2.02.27 A2.02.28 +A1.03.55 A2.02.28 +A1.03.56 A2.02.28 A2.03.27 +A1.03.57 A2.03.27 A2.03.28 +A1.03.58 A2.02.28 +A1.03.59 A2.02.28 A2.03.27 A2.03.29 +A1.03.60 A2.03.27 A2.03.28 A2.03.29 A2.03.30 +A1.03.61 A2.02.28 A2.03.29 +A1.03.62 A2.03.29 A2.03.30 +A1.04.12 A2.04.00 +A1.04.13 A2.04.00 +A1.04.14 A2.03.00 A2.04.00 +A1.04.15 A2.04.01 A2.04.02 +A1.04.16 A2.04.02 A2.04.03 +A1.04.17 A2.04.03 A2.04.04 +A1.04.18 A2.04.04 A2.04.05 +A1.04.19 A2.03.05 A2.04.05 +A1.04.20 A2.04.01 A2.04.02 A2.04.06 A2.04.07 +A1.04.21 A2.04.02 A2.04.03 A2.04.07 A2.04.08 +A1.04.22 A2.04.03 A2.04.04 A2.04.08 A2.04.09 +A1.04.23 A2.04.04 A2.04.05 A2.04.09 A2.04.10 +A1.04.24 A2.03.05 A2.03.10 A2.04.05 A2.04.10 +A1.04.25 A2.04.07 A2.04.08 +A1.04.26 A2.04.08 A2.04.09 +A1.04.27 A2.04.09 A2.04.10 +A1.04.28 A2.03.10 A2.04.10 +A1.04.29 A2.04.11 A2.04.12 +A1.04.30 A2.04.12 A2.04.13 +A1.04.31 A2.04.13 A2.04.14 +A1.04.32 A2.03.14 A2.04.14 +A1.04.33 A2.04.11 A2.04.12 A2.04.15 A2.04.16 +A1.04.34 A2.04.12 A2.04.13 A2.04.16 A2.04.17 +A1.04.35 A2.04.13 A2.04.14 A2.04.17 A2.04.18 +A1.04.36 A2.03.14 A2.03.18 A2.04.14 A2.04.18 +A1.04.37 A2.04.16 A2.04.17 +A1.04.38 A2.04.17 A2.04.18 +A1.04.39 A2.03.18 A2.04.18 +A1.04.40 A2.04.19 A2.04.20 +A1.04.41 A2.04.20 A2.04.21 +A1.04.42 A2.03.21 A2.04.21 +A1.04.43 A2.04.19 A2.04.20 A2.04.22 A2.04.23 +A1.04.44 A2.04.20 A2.04.21 A2.04.23 A2.04.24 +A1.04.45 A2.03.21 A2.03.24 A2.04.21 A2.04.24 +A1.04.46 A2.04.23 A2.04.24 +A1.04.47 A2.03.24 A2.04.24 +A1.04.48 A2.04.25 A2.04.26 +A1.04.49 A2.03.26 A2.04.26 +A1.04.50 A2.04.25 +A1.04.51 A2.04.25 A2.04.26 +A1.04.52 A2.04.26 +A1.04.53 A2.03.26 A2.04.26 +A1.04.54 A2.05.28 +A1.04.55 A2.04.27 A2.05.28 +A1.04.56 A2.04.27 A2.04.28 +A1.04.57 A2.03.28 A2.04.28 +A1.04.58 A2.04.27 A2.04.29 A2.05.28 +A1.04.59 A2.04.27 A2.04.28 A2.04.29 A2.04.30 +A1.04.60 A2.03.28 A2.03.30 A2.04.28 A2.04.30 +A1.04.61 A2.04.29 A2.04.30 +A1.04.62 A2.03.30 A2.04.30 +A1.05.09 A2.05.02 +A1.05.10 A2.05.07 +A1.05.11 A2.05.01 A2.05.06 +A1.05.12 A2.05.03 +A1.05.13 A2.04.01 A2.05.02 A2.05.04 +A1.05.14 A2.05.00 A2.05.02 A2.05.07 A2.05.08 +A1.05.15 A2.05.03 A2.05.05 A2.05.07 +A1.05.16 A2.05.06 A2.05.09 +A1.05.17 A2.04.01 A2.04.06 A2.05.02 A2.05.04 A2.05.08 +A1.05.18 A2.05.07 A2.05.08 +A1.05.19 A2.05.09 A2.05.10 +A1.05.20 A2.05.06 A2.05.09 A2.05.11 A2.06.08 +A1.05.21 A2.04.06 A2.05.08 +A1.05.22 A2.05.10 A2.05.12 +A1.05.23 A2.05.09 A2.05.10 A2.05.11 A2.05.14 +A1.05.24 A2.04.06 A2.04.07 +A1.05.25 A2.05.12 A2.05.13 +A1.05.26 A2.05.10 A2.05.12 A2.05.14 A2.05.15 +A1.05.27 A2.05.11 A2.05.14 +A1.05.28 A2.04.11 A2.05.13 +A1.05.29 A2.05.12 A2.05.13 A2.05.15 A2.05.17 +A1.05.30 A2.05.14 A2.05.15 +A1.05.31 A2.04.11 A2.04.15 A2.05.13 A2.05.17 +A1.05.32 A2.05.15 A2.05.17 +A1.05.33 A2.05.16 A2.05.18 +A1.05.34 A2.04.15 A2.05.17 +A1.05.35 A2.05.16 A2.05.18 A2.05.20 A2.06.19 +A1.05.36 A2.05.18 A2.05.19 +A1.05.37 A2.04.15 A2.04.16 +A1.05.38 A2.05.19 A2.05.21 +A1.05.39 A2.05.18 A2.05.19 A2.05.20 A2.05.22 +A1.05.40 A2.04.19 A2.05.21 +A1.05.41 A2.05.19 A2.05.21 A2.05.22 A2.05.23 +A1.05.42 A2.05.20 A2.05.22 +A1.05.43 A2.04.19 A2.04.22 A2.05.21 A2.05.23 +A1.05.44 A2.05.22 A2.05.23 +A1.05.45 A2.04.22 A2.05.23 +A1.05.46 A2.05.24 A2.05.25 +A1.05.47 A2.04.22 A2.04.23 +A1.05.48 A2.05.25 A2.05.26 +A1.05.49 A2.04.25 A2.05.26 +A1.05.50 A2.05.25 A2.05.26 A2.05.27 A2.06.27 +A1.05.51 A2.04.25 A2.05.26 A2.05.27 A2.05.28 +A1.05.52 A2.05.27 +A1.05.53 A2.05.27 A2.05.28 +A1.05.54 A2.05.27 +A1.05.55 A2.05.28 +A1.05.56 A2.05.27 A2.05.28 +A1.05.57 A2.05.28 +A1.05.58 A2.05.29 A2.05.30 +A1.05.59 A2.04.29 A2.05.28 +A1.05.60 A2.05.30 A2.05.31 +A1.05.61 A2.05.30 A2.05.31 A2.06.31 +A1.05.62 A2.05.31 +A1.06.11 A2.06.04 +A1.06.12 A2.06.00 A2.06.05 +A1.06.13 A2.06.04 A2.07.03 +A1.06.14 A2.06.02 A2.06.06 +A1.06.15 A2.06.01 A2.06.05 +A1.06.16 A2.06.02 A2.06.04 A2.06.06 A2.06.07 +A1.06.17 A2.05.01 A2.05.06 A2.06.00 A2.06.03 A2.06.05 A2.06.08 +A1.06.18 A2.06.06 A2.06.09 +A1.06.19 A2.06.04 A2.06.07 +A1.06.20 A2.06.05 A2.06.08 +A1.06.21 A2.06.10 A2.07.07 +A1.06.22 A2.06.06 A2.06.07 A2.06.09 A2.06.11 +A1.06.23 A2.06.09 A2.06.12 +A1.06.24 A2.06.07 A2.06.11 +A1.06.25 A2.05.11 A2.06.08 +A1.06.26 A2.06.10 A2.06.13 +A1.06.27 A2.06.09 A2.06.11 A2.06.12 A2.06.15 +A1.06.28 A2.06.12 A2.06.14 +A1.06.29 A2.06.11 A2.06.15 +A1.06.30 A2.06.12 A2.06.14 A2.06.15 A2.06.17 +A1.06.31 A2.06.13 A2.06.16 +A1.06.32 A2.05.16 A2.06.14 +A1.06.33 A2.06.13 A2.06.16 A2.07.14 A2.07.17 +A1.06.34 A2.06.15 A2.06.17 +A1.06.35 A2.05.16 A2.06.14 A2.06.17 A2.06.19 +A1.06.36 A2.06.16 A2.06.18 +A1.06.37 A2.06.17 A2.06.19 +A1.06.38 A2.06.16 A2.06.18 A2.06.20 A2.07.17 +A1.06.39 A2.06.18 A2.06.21 +A1.06.40 A2.05.20 A2.06.19 +A1.06.41 A2.06.18 A2.06.20 A2.06.21 A2.06.22 +A1.06.42 A2.06.21 A2.06.23 +A1.06.43 A2.06.21 A2.06.22 A2.06.23 A2.06.24 +A1.06.44 A2.05.24 A2.06.23 +A1.06.45 A2.06.22 A2.06.24 +A1.06.46 A2.05.24 A2.06.23 A2.06.24 A2.06.25 +A1.06.47 A2.06.24 A2.06.25 +A1.06.48 A2.05.24 A2.05.25 A2.06.25 A2.06.27 +A1.06.49 A2.06.25 A2.06.27 +A1.06.50 A2.06.26 A2.06.28 +A1.06.51 A2.05.27 A2.06.27 +A1.06.52 A2.06.28 +A1.06.53 A2.06.28 +A1.06.54 A2.06.28 +A1.06.55 A2.05.29 A2.06.28 +A1.06.56 A2.06.28 A2.06.29 +A1.06.57 A2.05.29 +A1.06.58 A2.06.28 A2.06.30 +A1.06.59 A2.06.29 +A1.06.60 A2.06.30 +A1.06.61 A2.05.30 A2.06.29 A2.06.31 +A1.06.62 A2.06.30 A2.06.31 +A1.07.13 A2.07.03 A2.07.04 +A1.07.14 A2.07.04 +A1.07.15 A2.07.00 A2.07.05 +A1.07.16 A2.07.00 A2.07.02 A2.07.05 A2.07.06 +A1.07.17 A2.07.01 A2.07.02 A2.07.06 +A1.07.18 A2.07.03 A2.07.07 +A1.07.19 A2.07.03 A2.07.04 A2.07.07 A2.07.08 +A1.07.20 A2.07.04 A2.07.08 +A1.07.21 A2.07.05 A2.07.09 +A1.07.22 A2.07.05 A2.07.06 A2.07.09 A2.07.10 +A1.07.23 A2.07.06 A2.07.10 +A1.07.24 A2.06.10 A2.07.07 A2.07.08 A2.07.11 +A1.07.25 A2.07.08 A2.07.11 +A1.07.26 A2.07.09 A2.07.12 +A1.07.27 A2.07.09 A2.07.10 A2.07.12 A2.07.13 +A1.07.28 A2.07.10 A2.07.13 +A1.07.29 A2.06.10 A2.06.13 A2.07.11 A2.07.14 +A1.07.30 A2.07.11 A2.07.14 +A1.07.31 A2.07.12 A2.07.15 +A1.07.32 A2.07.12 A2.07.13 A2.07.15 A2.07.16 +A1.07.33 A2.07.13 A2.07.16 +A1.07.34 A2.07.14 A2.07.17 +A1.07.35 A2.07.15 A2.07.18 +A1.07.36 A2.07.15 A2.07.16 A2.07.18 A2.07.19 +A1.07.37 A2.07.16 A2.07.19 +A1.07.38 A2.06.20 A2.07.17 +A1.07.39 A2.07.18 A2.07.20 +A1.07.40 A2.07.18 A2.07.19 A2.07.20 A2.07.21 +A1.07.41 A2.07.19 A2.07.21 +A1.07.42 A2.06.20 A2.06.22 +A1.07.43 A2.07.20 A2.07.22 +A1.07.44 A2.07.20 A2.07.21 A2.07.22 A2.07.23 +A1.07.45 A2.07.21 A2.07.23 +A1.07.46 A2.07.22 A2.07.24 +A1.07.47 A2.07.22 A2.07.23 A2.07.24 A2.07.25 +A1.07.48 A2.07.23 A2.07.25 +A1.07.49 A2.06.26 A2.07.24 +A1.07.50 A2.06.26 A2.07.24 A2.07.25 A2.07.26 +A1.07.51 A2.07.25 A2.07.26 +A1.07.52 A2.06.26 A2.06.28 A2.07.26 A2.07.27 +A1.07.53 A2.07.26 A2.07.27 +A1.07.54 A2.07.27 +A1.07.55 A2.07.27 +A1.07.56 A2.07.27 +A1.07.57 A2.07.27 A2.07.28 +A1.07.58 A2.07.27 A2.07.28 A2.07.29 +A1.07.59 A2.07.27 A2.07.29 +A1.07.60 A2.06.31 A2.07.28 +A1.07.61 A2.07.28 A2.07.29 +A1.07.62 A2.07.29 +A1.08.07 A2.08.03 +A1.08.12 A2.08.03 A2.08.04 +A1.08.13 A2.08.04 +A1.08.14 A2.08.02 A2.08.05 +A1.08.15 A2.08.01 A2.08.02 A2.08.05 A2.08.06 +A1.08.16 A2.08.00 A2.08.01 A2.08.06 +A1.08.17 A2.08.03 A2.08.07 +A1.08.18 A2.08.03 A2.08.04 A2.08.07 A2.08.08 +A1.08.19 A2.08.04 A2.08.08 +A1.08.20 A2.08.05 A2.08.09 +A1.08.21 A2.08.05 A2.08.06 A2.08.09 A2.08.10 +A1.08.22 A2.08.06 A2.08.10 +A1.08.23 A2.08.07 A2.08.08 A2.08.11 A2.09.10 +A1.08.24 A2.08.08 A2.08.11 +A1.08.25 A2.08.09 A2.08.12 +A1.08.26 A2.08.09 A2.08.10 A2.08.12 A2.08.13 +A1.08.27 A2.08.10 A2.08.13 +A1.08.28 A2.08.11 A2.08.14 A2.09.10 A2.09.13 +A1.08.29 A2.08.11 A2.08.14 +A1.08.30 A2.08.12 A2.08.15 +A1.08.31 A2.08.12 A2.08.13 A2.08.15 A2.08.16 +A1.08.32 A2.08.13 A2.08.16 +A1.08.33 A2.08.14 A2.08.17 +A1.08.34 A2.08.15 A2.08.18 +A1.08.35 A2.08.15 A2.08.16 A2.08.18 A2.08.19 +A1.08.36 A2.08.16 A2.08.19 +A1.08.37 A2.08.17 A2.09.20 +A1.08.38 A2.08.18 A2.08.20 +A1.08.39 A2.08.18 A2.08.19 A2.08.20 A2.08.21 +A1.08.40 A2.08.19 A2.08.21 +A1.08.41 A2.09.20 A2.09.22 +A1.08.42 A2.08.20 A2.08.22 +A1.08.43 A2.08.20 A2.08.21 A2.08.22 A2.08.23 +A1.08.44 A2.08.21 A2.08.23 +A1.08.45 A2.08.22 A2.08.24 +A1.08.46 A2.08.22 A2.08.23 A2.08.24 A2.08.25 +A1.08.47 A2.08.23 A2.08.25 +A1.08.48 A2.08.24 A2.09.26 +A1.08.49 A2.08.24 A2.08.25 A2.08.26 A2.09.26 +A1.08.50 A2.08.25 A2.08.26 +A1.08.51 A2.08.26 A2.08.27 A2.09.26 A2.09.28 +A1.08.52 A2.08.26 A2.08.27 +A1.08.53 A2.09.28 +A1.08.54 A2.08.27 +A1.08.55 A2.08.27 +A1.08.56 A2.08.27 +A1.08.57 A2.08.27 A2.08.28 +A1.08.58 A2.08.27 A2.08.28 A2.08.29 +A1.08.59 A2.08.27 A2.08.29 +A1.08.60 A2.08.28 A2.09.31 +A1.08.61 A2.08.28 A2.08.29 +A1.08.62 A2.08.29 +A1.09.11 A2.09.02 A2.09.04 +A1.09.12 A2.09.00 A2.09.01 A2.09.05 +A1.09.13 A2.08.03 A2.09.04 +A1.09.14 A2.09.06 +A1.09.15 A2.09.01 A2.09.03 A2.09.05 +A1.09.16 A2.09.02 A2.09.04 A2.09.06 A2.09.07 +A1.09.17 A2.09.00 A2.09.05 A2.09.08 A2.10.06 +A1.09.18 A2.09.06 A2.09.09 +A1.09.19 A2.09.04 A2.09.07 +A1.09.20 A2.09.05 A2.09.08 +A1.09.21 A2.08.07 A2.09.10 +A1.09.22 A2.09.06 A2.09.07 A2.09.09 A2.09.11 +A1.09.23 A2.09.09 A2.09.12 +A1.09.24 A2.09.07 A2.09.11 +A1.09.25 A2.09.08 A2.10.11 +A1.09.26 A2.09.10 A2.09.13 +A1.09.27 A2.09.09 A2.09.11 A2.09.12 A2.09.15 +A1.09.28 A2.09.12 A2.09.14 +A1.09.29 A2.09.11 A2.09.15 +A1.09.30 A2.09.12 A2.09.14 A2.09.15 A2.09.17 +A1.09.31 A2.09.13 A2.09.16 +A1.09.32 A2.09.14 A2.10.16 +A1.09.33 A2.08.14 A2.08.17 A2.09.13 A2.09.16 +A1.09.34 A2.09.15 A2.09.17 +A1.09.35 A2.09.14 A2.09.17 A2.09.19 A2.10.16 +A1.09.36 A2.09.16 A2.09.18 +A1.09.37 A2.09.17 A2.09.19 +A1.09.38 A2.08.17 A2.09.16 A2.09.18 A2.09.20 +A1.09.39 A2.09.18 A2.09.21 +A1.09.40 A2.09.19 A2.10.20 +A1.09.41 A2.09.18 A2.09.20 A2.09.21 A2.09.22 +A1.09.42 A2.09.21 A2.09.23 +A1.09.43 A2.09.21 A2.09.22 A2.09.23 A2.09.24 +A1.09.44 A2.09.23 A2.10.24 +A1.09.45 A2.09.22 A2.09.24 +A1.09.46 A2.09.23 A2.09.24 A2.09.25 A2.10.24 +A1.09.47 A2.09.24 A2.09.25 +A1.09.48 A2.09.25 A2.09.27 A2.10.24 A2.10.25 +A1.09.49 A2.09.25 A2.09.27 +A1.09.50 A2.09.26 A2.09.28 +A1.09.51 A2.09.27 A2.10.27 +A1.09.52 A2.09.28 +A1.09.53 A2.09.28 +A1.09.54 A2.09.28 A2.09.29 +A1.09.55 A2.09.28 A2.09.29 A2.09.30 +A1.09.56 A2.09.29 A2.10.29 +A1.09.57 A2.09.28 A2.09.30 +A1.09.58 A2.09.29 A2.09.30 A2.09.31 A2.10.29 +A1.09.59 A2.09.30 A2.09.31 +A1.09.60 A2.09.31 A2.10.29 A2.10.30 +A1.09.61 A2.09.31 A2.10.30 +A1.09.62 A2.09.31 +A1.10.10 A2.10.02 +A1.10.11 A2.10.07 +A1.10.12 A2.09.00 A2.10.00 A2.10.06 +A1.10.13 A2.10.03 +A1.10.14 A2.10.02 A2.10.04 A2.11.01 +A1.10.15 A2.10.01 A2.10.02 A2.10.07 A2.10.08 +A1.10.16 A2.10.03 A2.10.05 A2.10.07 +A1.10.17 A2.10.06 A2.10.09 +A1.10.18 A2.10.02 A2.10.04 A2.10.08 A2.11.01 A2.11.06 +A1.10.19 A2.10.07 A2.10.08 +A1.10.20 A2.10.09 A2.10.10 +A1.10.21 A2.09.08 A2.10.06 A2.10.09 A2.10.11 +A1.10.22 A2.10.08 A2.11.06 +A1.10.23 A2.10.10 A2.10.12 +A1.10.24 A2.10.09 A2.10.10 A2.10.11 A2.10.14 +A1.10.25 A2.11.06 A2.11.07 +A1.10.26 A2.10.12 A2.10.13 +A1.10.27 A2.10.10 A2.10.12 A2.10.14 A2.10.15 +A1.10.28 A2.10.11 A2.10.14 +A1.10.29 A2.10.13 A2.11.11 +A1.10.30 A2.10.12 A2.10.13 A2.10.15 A2.10.17 +A1.10.31 A2.10.14 A2.10.15 +A1.10.32 A2.10.13 A2.10.17 A2.11.11 A2.11.15 +A1.10.33 A2.10.15 A2.10.17 +A1.10.34 A2.10.16 A2.10.18 +A1.10.35 A2.10.17 A2.11.15 +A1.10.36 A2.09.19 A2.10.16 A2.10.18 A2.10.20 +A1.10.37 A2.10.18 A2.10.19 +A1.10.38 A2.11.15 A2.11.16 +A1.10.39 A2.10.19 A2.10.21 +A1.10.40 A2.10.18 A2.10.19 A2.10.20 A2.10.22 +A1.10.41 A2.10.21 A2.11.19 +A1.10.42 A2.10.19 A2.10.21 A2.10.22 A2.10.23 +A1.10.43 A2.10.20 A2.10.22 +A1.10.44 A2.10.21 A2.10.23 A2.11.19 A2.11.22 +A1.10.45 A2.10.22 A2.10.23 +A1.10.46 A2.10.23 A2.11.22 +A1.10.47 A2.10.24 A2.10.25 +A1.10.48 A2.11.22 A2.11.23 +A1.10.49 A2.10.25 A2.10.26 +A1.10.50 A2.10.26 A2.11.25 +A1.10.51 A2.09.27 A2.10.25 A2.10.26 A2.10.27 +A1.10.52 A2.10.26 A2.10.27 A2.10.28 A2.11.25 +A1.10.53 A2.10.27 +A1.10.54 A2.10.27 A2.10.28 +A1.10.55 A2.10.27 +A1.10.56 A2.10.28 +A1.10.57 A2.10.27 A2.10.28 +A1.10.58 A2.10.28 +A1.10.59 A2.10.29 A2.10.30 +A1.10.60 A2.10.28 A2.11.29 +A1.10.61 A2.10.30 A2.10.31 +A1.10.62 A2.10.31 +A1.11.12 A2.11.00 +A1.11.13 A2.11.00 +A1.11.14 A2.11.00 A2.12.00 +A1.11.15 A2.11.01 A2.11.02 +A1.11.16 A2.11.02 A2.11.03 +A1.11.17 A2.11.03 A2.11.04 +A1.11.18 A2.11.04 A2.11.05 +A1.11.19 A2.11.05 A2.12.05 +A1.11.20 A2.11.01 A2.11.02 A2.11.06 A2.11.07 +A1.11.21 A2.11.02 A2.11.03 A2.11.07 A2.11.08 +A1.11.22 A2.11.03 A2.11.04 A2.11.08 A2.11.09 +A1.11.23 A2.11.04 A2.11.05 A2.11.09 A2.11.10 +A1.11.24 A2.11.05 A2.11.10 A2.12.05 A2.12.10 +A1.11.25 A2.11.07 A2.11.08 +A1.11.26 A2.11.08 A2.11.09 +A1.11.27 A2.11.09 A2.11.10 +A1.11.28 A2.11.10 A2.12.10 +A1.11.29 A2.11.11 A2.11.12 +A1.11.30 A2.11.12 A2.11.13 +A1.11.31 A2.11.13 A2.11.14 +A1.11.32 A2.11.14 A2.12.14 +A1.11.33 A2.11.11 A2.11.12 A2.11.15 A2.11.16 +A1.11.34 A2.11.12 A2.11.13 A2.11.16 A2.11.17 +A1.11.35 A2.11.13 A2.11.14 A2.11.17 A2.11.18 +A1.11.36 A2.11.14 A2.11.18 A2.12.14 A2.12.18 +A1.11.37 A2.11.16 A2.11.17 +A1.11.38 A2.11.17 A2.11.18 +A1.11.39 A2.11.18 A2.12.18 +A1.11.40 A2.11.19 A2.11.20 +A1.11.41 A2.11.20 A2.11.21 +A1.11.42 A2.11.21 A2.12.21 +A1.11.43 A2.11.19 A2.11.20 A2.11.22 A2.11.23 +A1.11.44 A2.11.20 A2.11.21 A2.11.23 A2.11.24 +A1.11.45 A2.11.21 A2.11.24 A2.12.21 A2.12.24 +A1.11.46 A2.11.23 A2.11.24 +A1.11.47 A2.11.24 A2.12.24 +A1.11.48 A2.11.25 A2.11.26 +A1.11.49 A2.11.26 A2.12.26 +A1.11.50 A2.11.25 +A1.11.51 A2.11.25 A2.11.26 +A1.11.52 A2.11.26 +A1.11.53 A2.11.26 A2.12.26 +A1.11.54 A2.10.28 +A1.11.55 A2.10.28 A2.11.27 +A1.11.56 A2.11.27 A2.11.28 +A1.11.57 A2.11.28 A2.12.28 +A1.11.58 A2.10.28 A2.11.27 A2.11.29 +A1.11.59 A2.11.27 A2.11.28 A2.11.29 A2.11.30 +A1.11.60 A2.11.28 A2.11.30 A2.12.28 A2.12.30 +A1.11.61 A2.11.29 A2.11.30 +A1.11.62 A2.11.30 A2.12.30 +A1.12.12 A2.12.00 +A1.12.13 A2.12.00 +A1.12.14 A2.12.00 +A1.12.15 A2.12.01 A2.13.04 +A1.12.16 A2.12.01 A2.12.02 +A1.12.17 A2.12.02 A2.12.03 +A1.12.18 A2.12.03 A2.12.04 +A1.12.19 A2.12.04 A2.12.05 +A1.12.20 A2.12.01 A2.12.06 A2.13.04 A2.13.08 +A1.12.21 A2.12.01 A2.12.02 A2.12.06 A2.12.07 +A1.12.22 A2.12.02 A2.12.03 A2.12.07 A2.12.08 +A1.12.23 A2.12.03 A2.12.04 A2.12.08 A2.12.09 +A1.12.24 A2.12.04 A2.12.05 A2.12.09 A2.12.10 +A1.12.25 A2.12.06 A2.12.07 +A1.12.26 A2.12.07 A2.12.08 +A1.12.27 A2.12.08 A2.12.09 +A1.12.28 A2.12.09 A2.12.10 +A1.12.29 A2.12.11 A2.13.13 +A1.12.30 A2.12.11 A2.12.12 +A1.12.31 A2.12.12 A2.12.13 +A1.12.32 A2.12.13 A2.12.14 +A1.12.33 A2.12.11 A2.12.15 A2.13.13 A2.13.17 +A1.12.34 A2.12.11 A2.12.12 A2.12.15 A2.12.16 +A1.12.35 A2.12.12 A2.12.13 A2.12.16 A2.12.17 +A1.12.36 A2.12.13 A2.12.14 A2.12.17 A2.12.18 +A1.12.37 A2.12.15 A2.12.16 +A1.12.38 A2.12.16 A2.12.17 +A1.12.39 A2.12.17 A2.12.18 +A1.12.40 A2.12.19 A2.13.21 +A1.12.41 A2.12.19 A2.12.20 +A1.12.42 A2.12.20 A2.12.21 +A1.12.43 A2.12.19 A2.12.22 A2.13.21 A2.13.23 +A1.12.44 A2.12.19 A2.12.20 A2.12.22 A2.12.23 +A1.12.45 A2.12.20 A2.12.21 A2.12.23 A2.12.24 +A1.12.46 A2.12.22 A2.12.23 +A1.12.47 A2.12.23 A2.12.24 +A1.12.48 A2.12.25 A2.13.26 +A1.12.49 A2.12.25 A2.12.26 +A1.12.50 A2.12.25 A2.13.26 +A1.12.51 A2.12.25 +A1.12.52 A2.12.25 A2.12.26 +A1.12.53 A2.12.26 +A1.12.54 A2.13.27 A2.13.28 +A1.12.55 A2.13.28 +A1.12.56 A2.12.27 A2.13.28 +A1.12.57 A2.12.27 A2.12.28 +A1.12.58 A2.13.28 +A1.12.59 A2.12.27 A2.12.29 A2.13.28 +A1.12.60 A2.12.27 A2.12.28 A2.12.29 A2.12.30 +A1.12.61 A2.12.29 A2.13.28 +A1.12.62 A2.12.29 A2.12.30 +A1.13.11 A2.13.03 +A1.13.12 A2.13.01 +A1.13.13 A2.12.01 A2.13.02 A2.13.04 +A1.13.14 A2.13.00 A2.13.07 +A1.13.15 A2.13.03 A2.13.05 A2.13.07 +A1.13.16 A2.13.06 +A1.13.17 A2.13.02 A2.13.04 A2.13.08 +A1.13.18 A2.13.07 +A1.13.19 A2.13.09 +A1.13.20 A2.13.06 A2.14.08 +A1.13.21 A2.13.08 +A1.13.22 A2.13.10 +A1.13.23 A2.13.09 A2.13.11 +A1.13.24 A2.12.06 A2.13.08 +A1.13.25 A2.13.12 +A1.13.26 A2.13.10 A2.13.14 +A1.13.27 A2.13.11 +A1.13.28 A2.13.12 A2.13.13 +A1.13.29 A2.13.12 A2.13.15 +A1.13.30 A2.13.14 +A1.13.31 A2.13.12 A2.13.13 A2.13.15 A2.13.17 +A1.13.32 A2.13.15 +A1.13.33 A2.13.16 +A1.13.34 A2.13.15 A2.13.17 +A1.13.35 A2.13.16 A2.14.19 +A1.13.36 A2.13.18 +A1.13.37 A2.12.15 A2.13.17 +A1.13.38 A2.13.18 A2.13.19 +A1.13.39 A2.13.18 A2.13.20 +A1.13.40 A2.13.19 A2.13.21 +A1.13.41 A2.13.18 A2.13.19 A2.13.20 A2.13.22 +A1.13.42 A2.13.20 +A1.13.43 A2.13.19 A2.13.21 A2.13.22 A2.13.23 +A1.13.44 A2.13.20 A2.13.22 +A1.13.45 A2.13.22 A2.13.23 +A1.13.46 A2.13.24 A2.14.23 +A1.13.47 A2.12.22 A2.13.23 +A1.13.48 A2.13.24 A2.13.25 +A1.13.49 A2.13.25 A2.13.26 +A1.13.50 A2.13.24 A2.13.25 A2.14.25 A2.14.27 +A1.13.51 A2.13.25 A2.13.26 A2.13.27 A2.14.27 +A1.13.52 A2.13.27 A2.14.27 +A1.13.53 A2.13.27 +A1.13.54 A2.13.27 A2.14.27 +A1.13.55 A2.13.27 A2.13.28 +A1.13.56 A2.13.27 +A1.13.57 A2.13.27 A2.13.28 +A1.13.58 A2.13.29 A2.13.30 +A1.13.59 A2.13.28 +A1.13.60 A2.13.30 A2.13.31 +A1.13.61 A2.13.30 A2.14.31 +A1.13.62 A2.13.30 A2.13.31 +A1.14.12 A2.14.05 +A1.14.13 A2.15.03 +A1.14.14 A2.14.02 +A1.14.15 A2.14.01 A2.14.05 +A1.14.16 A2.14.02 A2.14.04 +A1.14.17 A2.13.01 A2.14.00 A2.14.03 A2.14.05 +A1.14.18 A2.14.06 +A1.14.19 A2.14.04 +A1.14.20 A2.14.05 +A1.14.21 A2.15.07 +A1.14.22 A2.14.06 A2.14.07 +A1.14.23 A2.14.09 +A1.14.24 A2.14.07 +A1.14.25 A2.14.08 +A1.14.26 A2.14.10 +A1.14.27 A2.14.09 A2.14.11 +A1.14.28 A2.14.12 +A1.14.29 A2.14.11 +A1.14.30 A2.14.12 A2.14.15 +A1.14.31 A2.14.13 +A1.14.32 A2.14.14 +A1.14.33 A2.14.13 A2.15.14 +A1.14.34 A2.14.15 +A1.14.35 A2.14.14 A2.14.17 +A1.14.36 A2.14.16 +A1.14.37 A2.14.17 +A1.14.38 A2.14.16 A2.15.17 +A1.14.39 A2.14.18 +A1.14.40 A2.14.19 +A1.14.41 A2.14.18 A2.14.20 +A1.14.42 A2.14.21 +A1.14.43 A2.14.21 A2.14.22 +A1.14.44 A2.14.23 +A1.14.45 A2.14.22 +A1.14.46 A2.14.23 A2.14.24 +A1.14.47 A2.14.24 +A1.14.48 A2.13.24 A2.14.23 A2.14.24 A2.14.25 +A1.14.49 A2.14.24 A2.14.25 +A1.14.50 A2.14.26 A2.15.24 +A1.14.51 A2.14.25 A2.14.27 +A1.14.52 A2.14.26 A2.14.28 +A1.14.53 A2.14.26 A2.14.28 +A1.14.54 A2.14.26 A2.14.28 +A1.14.55 A2.14.28 +A1.14.56 A2.14.28 +A1.14.57 A2.13.29 A2.14.28 +A1.14.58 A2.14.28 +A1.14.59 A2.14.28 A2.14.29 +A1.14.60 A2.14.28 A2.14.30 +A1.14.61 A2.14.29 A2.14.31 +A1.14.62 A2.14.30 A2.14.31 A2.15.28 +A1.15.15 A2.15.00 +A1.15.16 A2.15.00 A2.15.02 +A1.15.17 A2.15.01 A2.15.02 +A1.15.18 A2.15.03 +A1.15.19 A2.15.03 A2.15.04 +A1.15.20 A2.15.04 +A1.15.21 A2.15.05 +A1.15.22 A2.15.05 A2.15.06 +A1.15.23 A2.15.06 +A1.15.24 A2.15.07 A2.15.08 +A1.15.25 A2.15.08 +A1.15.26 A2.15.09 +A1.15.27 A2.15.09 A2.15.10 +A1.15.28 A2.15.10 +A1.15.29 A2.14.10 A2.15.11 +A1.15.30 A2.15.11 +A1.15.31 A2.15.12 +A1.15.32 A2.15.12 A2.15.13 +A1.15.33 A2.15.13 +A1.15.34 A2.15.14 +A1.15.35 A2.15.15 +A1.15.36 A2.15.15 A2.15.16 +A1.15.37 A2.15.16 +A1.15.38 A2.15.17 +A1.15.39 A2.15.18 +A1.15.40 A2.15.18 A2.15.19 +A1.15.41 A2.15.19 +A1.15.42 A2.14.20 +A1.15.43 A2.15.20 +A1.15.44 A2.15.20 A2.15.21 +A1.15.45 A2.15.21 +A1.15.46 A2.15.22 +A1.15.47 A2.15.22 A2.15.23 +A1.15.48 A2.15.23 +A1.15.49 A2.15.24 +A1.15.50 A2.15.24 A2.15.25 +A1.15.51 A2.15.25 +A1.15.52 A2.14.26 A2.15.24 A2.15.25 A2.15.26 +A1.15.53 A2.15.25 A2.15.26 +A1.15.54 A2.15.26 A2.15.27 +A1.15.55 A2.15.26 A2.15.27 +A1.15.56 A2.15.26 A2.15.27 +A1.15.57 A2.15.27 +A1.15.58 A2.15.27 +A1.15.59 A2.15.27 +A1.15.60 A2.15.27 A2.15.28 +A1.15.61 A2.15.27 A2.15.28 A2.15.29 +A1.15.62 A2.15.27 A2.15.29 +A2.00.05 A3.00.02 +A2.00.06 A3.00.00 +A2.00.07 A3.00.01 A3.01.00 A3.01.02 +A2.00.08 A3.00.01 +A2.00.09 A3.00.02 +A2.00.10 A3.00.03 +A2.00.11 A3.00.01 A3.00.04 +A2.00.12 A3.00.02 A3.00.05 +A2.00.13 A3.00.03 A3.00.06 +A2.00.14 A3.00.04 A3.00.07 +A2.00.15 A3.00.05 A3.00.08 +A2.00.16 A3.00.06 A3.00.09 +A2.00.17 A3.00.07 +A2.00.18 A3.00.08 +A2.00.19 A3.00.09 +A2.00.20 A3.00.08 A3.00.10 +A2.00.21 A3.00.09 A3.00.11 +A2.00.22 A3.00.10 A3.00.12 +A2.00.23 A3.00.11 A3.00.13 +A2.00.24 A3.00.12 +A2.00.25 A3.00.13 +A2.00.26 A3.00.13 A3.00.14 +A2.00.27 A3.00.14 A3.00.15 A3.01.15 +A2.00.28 A3.00.15 A3.01.15 +A2.00.29 A3.00.15 +A2.01.04 A3.01.02 +A2.01.05 A3.01.01 A3.01.03 A3.02.00 +A2.01.06 A3.01.01 A3.01.02 +A2.01.07 A3.01.02 +A2.01.08 A3.01.01 A3.01.03 A3.02.00 +A2.01.09 A3.01.01 A3.01.02 A3.01.03 A3.01.05 +A2.01.10 A3.00.01 A3.01.00 A3.01.02 A3.01.04 +A2.01.11 A3.01.01 A3.01.02 A3.01.05 +A2.01.12 A3.01.03 A3.01.05 +A2.01.13 A3.01.04 A3.01.06 +A2.01.14 A3.01.03 A3.01.05 A3.01.07 A3.02.05 +A2.01.15 A3.01.05 +A2.01.16 A3.01.06 +A2.01.17 A3.01.05 A3.01.07 +A2.01.18 A3.01.06 A3.01.08 +A2.01.19 A3.01.07 A3.02.09 +A2.01.20 A3.00.07 A3.01.09 +A2.01.21 A3.01.08 A3.01.10 +A2.01.22 A3.01.09 A3.01.11 +A2.01.23 A3.01.10 +A2.01.24 A3.01.11 +A2.01.25 A3.01.11 A3.01.12 +A2.01.26 A3.00.12 A3.01.13 +A2.01.27 A3.01.12 A3.02.13 +A2.01.28 A3.01.13 A3.01.14 A3.01.15 +A2.01.29 A3.01.14 A3.02.14 +A2.01.30 A3.01.14 A3.01.15 +A2.01.31 A3.01.14 A3.01.15 A3.02.14 +A2.02.06 A3.02.00 +A2.02.07 A3.02.01 A3.02.02 +A2.02.08 A3.02.01 +A2.02.09 A3.02.00 A3.02.02 A3.02.03 +A2.02.10 A3.02.00 A3.02.01 A3.02.02 A3.02.03 A3.02.04 +A2.02.11 A3.01.03 A3.02.00 A3.02.03 A3.02.05 +A2.02.12 A3.02.01 A3.02.02 A3.02.04 +A2.02.13 A3.02.01 A3.02.02 A3.02.04 A3.02.06 A3.03.05 +A2.02.14 A3.02.03 A3.02.04 A3.02.05 A3.02.07 +A2.02.15 A3.02.04 A3.02.07 +A2.02.16 A3.01.07 A3.02.05 A3.02.07 A3.02.09 +A2.02.17 A3.02.04 A3.02.06 A3.02.07 A3.02.08 +A2.02.18 A3.02.07 A3.02.09 +A2.02.19 A3.02.07 A3.02.08 A3.02.09 A3.02.10 +A2.02.20 A3.02.09 +A2.02.21 A3.02.08 A3.02.10 A3.03.10 A3.03.12 +A2.02.22 A3.02.09 A3.02.10 +A2.02.23 A3.02.10 A3.03.12 +A2.02.24 A3.01.10 A3.02.11 +A2.02.25 A3.02.11 A3.02.12 +A2.02.26 A3.02.12 +A2.02.27 A3.02.13 +A2.02.28 A3.02.13 A3.03.15 +A2.02.29 A3.02.14 A3.02.15 +A2.02.30 A3.02.14 A3.02.15 +A2.02.31 A3.02.15 +A2.03.01 A3.03.02 +A2.03.02 A3.03.02 +A2.03.03 A3.03.02 A3.03.03 +A2.03.04 A3.03.00 A3.03.03 A3.03.04 +A2.03.05 A3.03.00 A3.03.01 A3.03.04 A3.04.01 A3.04.04 +A2.03.06 A3.02.01 A3.03.02 A3.03.05 +A2.03.07 A3.03.02 A3.03.03 A3.03.05 A3.03.06 +A2.03.08 A3.03.02 A3.03.03 A3.03.06 +A2.03.09 A3.03.03 A3.03.04 A3.03.06 A3.03.07 +A2.03.10 A3.03.04 A3.03.07 A3.04.04 A3.04.07 +A2.03.11 A3.02.06 A3.03.05 A3.03.06 A3.03.08 +A2.03.12 A3.03.06 A3.03.08 +A2.03.13 A3.03.06 A3.03.07 A3.03.08 A3.03.09 +A2.03.14 A3.03.07 A3.03.09 A3.04.07 A3.04.09 +A2.03.15 A3.02.06 A3.02.08 A3.03.08 A3.03.10 +A2.03.16 A3.03.08 A3.03.10 +A2.03.17 A3.03.08 A3.03.09 A3.03.10 A3.03.11 +A2.03.18 A3.03.09 A3.03.11 A3.04.09 A3.04.11 +A2.03.19 A3.03.10 A3.03.12 +A2.03.20 A3.03.10 A3.03.11 A3.03.12 A3.03.13 +A2.03.21 A3.03.11 A3.03.13 A3.04.11 A3.04.13 +A2.03.22 A3.03.12 +A2.03.23 A3.03.12 A3.03.13 +A2.03.24 A3.03.13 A3.04.13 +A2.03.25 A3.02.12 A3.03.14 +A2.03.26 A3.03.14 A3.04.14 +A2.03.27 A3.03.15 +A2.03.28 A3.03.15 A3.04.15 +A2.03.29 A3.03.15 +A2.03.30 A3.03.15 A3.04.15 +A2.04.02 A3.04.02 +A2.04.03 A3.04.02 A3.04.03 +A2.04.04 A3.04.00 A3.04.03 A3.04.04 +A2.04.05 A3.04.00 A3.04.01 A3.04.04 +A2.04.06 A3.04.02 A3.04.05 A3.05.02 +A2.04.07 A3.04.02 A3.04.05 +A2.04.08 A3.04.02 A3.04.03 A3.04.05 A3.04.06 +A2.04.09 A3.04.03 A3.04.04 A3.04.06 A3.04.07 +A2.04.10 A3.04.04 A3.04.07 +A2.04.11 A3.04.05 A3.05.06 +A2.04.12 A3.04.05 A3.04.06 A3.04.08 A3.05.06 +A2.04.13 A3.04.06 A3.04.07 A3.04.08 A3.04.09 +A2.04.14 A3.04.07 A3.04.09 +A2.04.15 A3.05.06 A3.05.08 +A2.04.16 A3.04.08 A3.04.10 A3.05.06 A3.05.08 +A2.04.17 A3.04.08 A3.04.09 A3.04.10 A3.04.11 +A2.04.18 A3.04.09 A3.04.11 +A2.04.19 A3.04.10 A3.04.12 A3.05.08 A3.05.10 +A2.04.20 A3.04.10 A3.04.11 A3.04.12 A3.04.13 +A2.04.21 A3.04.11 A3.04.13 +A2.04.22 A3.04.12 A3.05.10 +A2.04.23 A3.04.12 A3.04.13 +A2.04.24 A3.04.13 +A2.04.25 A3.04.14 A3.05.12 +A2.04.26 A3.04.14 +A2.04.27 A3.04.15 +A2.04.28 A3.04.15 +A2.04.29 A3.04.15 +A2.04.30 A3.04.15 +A2.05.06 A3.05.00 +A2.05.07 A3.05.01 +A2.05.08 A3.05.01 A3.05.02 +A2.05.09 A3.05.00 A3.05.01 A3.05.03 +A2.05.10 A3.05.01 A3.05.03 +A2.05.11 A3.05.00 A3.05.03 A3.05.05 A3.06.02 +A2.05.12 A3.05.01 A3.05.02 A3.05.03 A3.05.04 +A2.05.13 A3.04.05 A3.05.02 A3.05.04 A3.05.06 +A2.05.14 A3.05.03 A3.05.05 +A2.05.15 A3.05.03 A3.05.04 A3.05.05 A3.05.07 +A2.05.16 A3.05.05 A3.06.06 +A2.05.17 A3.05.04 A3.05.06 A3.05.07 A3.05.08 +A2.05.18 A3.05.05 A3.05.07 A3.05.09 A3.06.06 +A2.05.19 A3.05.07 A3.05.08 A3.05.09 A3.05.10 +A2.05.20 A3.05.09 A3.06.06 +A2.05.21 A3.05.08 A3.05.10 +A2.05.22 A3.05.09 A3.05.10 +A2.05.23 A3.05.10 +A2.05.24 A3.05.11 A3.06.09 +A2.05.25 A3.05.11 +A2.05.26 A3.05.11 A3.05.12 +A2.05.27 A3.05.13 A3.06.11 +A2.05.28 A3.04.15 A3.05.13 +A2.05.29 A3.06.12 A3.06.13 +A2.05.30 A3.05.14 A3.06.13 A3.06.15 +A2.05.31 A3.05.14 +A2.06.05 A3.06.00 +A2.06.06 A3.06.00 +A2.06.07 A3.06.00 A3.06.01 +A2.06.08 A3.05.00 A3.06.00 A3.06.02 +A2.06.09 A3.06.00 +A2.06.10 A3.06.01 A3.06.03 A3.07.01 +A2.06.11 A3.06.00 A3.06.01 +A2.06.12 A3.06.00 A3.06.02 A3.06.04 +A2.06.13 A3.06.03 +A2.06.14 A3.05.05 A3.06.02 A3.06.04 A3.06.06 +A2.06.15 A3.06.00 A3.06.01 A3.06.04 +A2.06.16 A3.06.03 A3.06.05 +A2.06.17 A3.06.04 A3.06.06 +A2.06.18 A3.06.05 A3.06.07 +A2.06.19 A3.06.06 +A2.06.20 A3.06.08 A3.07.07 +A2.06.21 A3.06.07 +A2.06.22 A3.06.08 +A2.06.23 A3.06.07 A3.06.09 +A2.06.24 A3.06.08 A3.06.10 +A2.06.25 A3.06.10 A3.06.11 +A2.06.26 A3.06.12 A3.07.12 +A2.06.27 A3.06.11 +A2.06.28 A3.06.12 +A2.06.29 A3.06.12 A3.06.13 A3.06.14 A3.06.15 +A2.06.30 A3.06.12 A3.06.14 A3.06.15 +A2.06.31 A3.06.13 A3.06.14 A3.06.15 +A2.07.06 A3.07.00 +A2.07.07 A3.07.01 +A2.07.08 A3.07.01 A3.07.02 +A2.07.09 A3.07.02 +A2.07.10 A3.07.00 A3.07.03 +A2.07.11 A3.07.01 A3.07.04 +A2.07.12 A3.07.02 A3.07.05 +A2.07.13 A3.07.03 A3.07.06 +A2.07.14 A3.07.04 +A2.07.15 A3.07.05 +A2.07.16 A3.07.06 +A2.07.17 A3.07.04 A3.07.07 +A2.07.18 A3.07.05 A3.07.08 +A2.07.19 A3.07.06 A3.07.09 +A2.07.20 A3.07.08 A3.07.10 +A2.07.21 A3.07.09 A3.07.11 +A2.07.22 A3.07.10 +A2.07.23 A3.07.11 +A2.07.24 A3.07.10 A3.07.12 +A2.07.25 A3.07.11 A3.07.13 +A2.07.26 A3.07.13 A3.07.14 +A2.07.27 A3.07.14 +A2.07.28 A3.06.14 A3.07.14 A3.07.15 +A2.07.29 A3.07.14 A3.07.15 +A2.08.06 A3.08.00 +A2.08.07 A3.08.01 A3.09.00 +A2.08.08 A3.08.01 +A2.08.09 A3.08.02 +A2.08.10 A3.08.00 A3.08.03 +A2.08.11 A3.08.01 A3.08.04 +A2.08.12 A3.08.02 A3.08.05 +A2.08.13 A3.08.03 A3.08.06 +A2.08.14 A3.08.04 +A2.08.15 A3.08.05 +A2.08.16 A3.08.06 +A2.08.17 A3.08.04 A3.08.07 +A2.08.18 A3.08.05 A3.08.08 +A2.08.19 A3.08.06 A3.08.09 +A2.08.20 A3.08.08 A3.08.10 +A2.08.21 A3.08.09 A3.08.11 +A2.08.22 A3.08.10 +A2.08.23 A3.08.11 +A2.08.24 A3.08.10 A3.08.12 +A2.08.25 A3.08.11 A3.08.13 +A2.08.26 A3.08.13 A3.08.14 +A2.08.27 A3.08.14 +A2.08.28 A3.08.14 A3.08.15 A3.09.15 +A2.08.29 A3.08.14 A3.08.15 +A2.09.05 A3.09.01 +A2.09.06 A3.09.02 +A2.09.07 A3.09.02 +A2.09.08 A3.09.01 A3.09.03 A3.10.00 +A2.09.09 A3.09.01 A3.09.02 +A2.09.10 A3.08.01 A3.09.00 A3.09.02 A3.09.04 +A2.09.11 A3.09.01 A3.09.02 +A2.09.12 A3.09.01 A3.09.03 A3.09.05 +A2.09.13 A3.09.04 +A2.09.14 A3.09.03 A3.09.05 A3.09.07 A3.10.05 +A2.09.15 A3.09.01 A3.09.02 A3.09.05 +A2.09.16 A3.09.04 A3.09.06 +A2.09.17 A3.09.05 A3.09.07 +A2.09.18 A3.09.06 A3.09.08 +A2.09.19 A3.09.07 +A2.09.20 A3.08.07 A3.09.09 +A2.09.21 A3.09.08 +A2.09.22 A3.09.09 +A2.09.23 A3.09.08 A3.09.10 +A2.09.24 A3.09.09 A3.09.11 +A2.09.25 A3.09.11 A3.09.12 +A2.09.26 A3.08.12 A3.09.13 +A2.09.27 A3.09.12 +A2.09.28 A3.09.13 +A2.09.29 A3.09.13 A3.09.14 A3.10.14 +A2.09.30 A3.09.13 A3.09.14 A3.09.15 +A2.09.31 A3.09.14 A3.09.15 A3.10.14 +A2.10.06 A3.10.00 +A2.10.07 A3.10.01 A3.10.02 +A2.10.08 A3.10.01 A3.10.02 +A2.10.09 A3.10.00 A3.10.03 +A2.10.10 A3.10.00 A3.10.02 A3.10.03 +A2.10.11 A3.09.03 A3.10.00 A3.10.03 A3.10.05 +A2.10.12 A3.10.01 A3.10.02 A3.10.03 A3.10.04 +A2.10.13 A3.10.01 A3.10.02 A3.10.04 A3.10.06 A3.11.05 +A2.10.14 A3.10.03 A3.10.05 +A2.10.15 A3.10.03 A3.10.04 A3.10.05 A3.10.07 +A2.10.16 A3.09.07 A3.10.05 +A2.10.17 A3.10.04 A3.10.06 A3.10.07 A3.10.08 +A2.10.18 A3.09.07 A3.10.05 A3.10.07 A3.10.09 +A2.10.19 A3.10.07 A3.10.08 A3.10.09 A3.10.10 +A2.10.20 A3.09.07 A3.10.09 +A2.10.21 A3.10.08 A3.10.10 +A2.10.22 A3.10.09 A3.10.10 +A2.10.23 A3.10.10 +A2.10.24 A3.09.10 A3.10.11 +A2.10.25 A3.10.11 +A2.10.26 A3.10.11 A3.10.12 +A2.10.27 A3.09.12 A3.10.13 +A2.10.28 A3.10.13 A3.11.15 +A2.10.29 A3.09.14 A3.10.14 A3.10.15 +A2.10.30 A3.10.14 A3.10.15 +A2.10.31 A3.10.15 +A2.11.02 A3.11.02 +A2.11.03 A3.11.02 A3.11.03 +A2.11.04 A3.11.00 A3.11.03 A3.11.04 +A2.11.05 A3.11.00 A3.11.01 A3.11.04 +A2.11.06 A3.10.01 A3.11.02 A3.11.05 +A2.11.07 A3.11.02 A3.11.05 +A2.11.08 A3.11.02 A3.11.03 A3.11.05 A3.11.06 +A2.11.09 A3.11.03 A3.11.04 A3.11.06 A3.11.07 +A2.11.10 A3.11.04 A3.11.07 +A2.11.11 A3.10.06 A3.11.05 +A2.11.12 A3.10.06 A3.11.05 A3.11.06 A3.11.08 +A2.11.13 A3.11.06 A3.11.07 A3.11.08 A3.11.09 +A2.11.14 A3.11.07 A3.11.09 +A2.11.15 A3.10.06 A3.10.08 +A2.11.16 A3.10.06 A3.10.08 A3.11.08 A3.11.10 +A2.11.17 A3.11.08 A3.11.09 A3.11.10 A3.11.11 +A2.11.18 A3.11.09 A3.11.11 +A2.11.19 A3.10.08 A3.10.10 A3.11.10 A3.11.12 +A2.11.20 A3.11.10 A3.11.11 A3.11.12 A3.11.13 +A2.11.21 A3.11.11 A3.11.13 +A2.11.22 A3.10.10 A3.11.12 +A2.11.23 A3.11.12 A3.11.13 +A2.11.24 A3.11.13 +A2.11.25 A3.10.12 A3.11.14 +A2.11.26 A3.11.14 +A2.11.27 A3.11.15 +A2.11.28 A3.11.15 +A2.11.29 A3.11.15 +A2.11.30 A3.11.15 +A2.12.02 A3.12.02 +A2.12.03 A3.12.02 A3.12.03 +A2.12.04 A3.12.00 A3.12.03 A3.12.04 +A2.12.05 A3.11.01 A3.11.04 A3.12.00 A3.12.01 A3.12.04 +A2.12.06 A3.12.02 A3.12.05 A3.13.02 +A2.12.07 A3.12.02 A3.12.03 A3.12.05 A3.12.06 +A2.12.08 A3.12.02 A3.12.03 A3.12.06 +A2.12.09 A3.12.03 A3.12.04 A3.12.06 A3.12.07 +A2.12.10 A3.11.04 A3.11.07 A3.12.04 A3.12.07 +A2.12.11 A3.12.05 A3.12.06 A3.12.08 A3.13.06 +A2.12.12 A3.12.06 A3.12.08 +A2.12.13 A3.12.06 A3.12.07 A3.12.08 A3.12.09 +A2.12.14 A3.11.07 A3.11.09 A3.12.07 A3.12.09 +A2.12.15 A3.12.08 A3.12.10 A3.13.06 A3.13.08 +A2.12.16 A3.12.08 A3.12.10 +A2.12.17 A3.12.08 A3.12.09 A3.12.10 A3.12.11 +A2.12.18 A3.11.09 A3.11.11 A3.12.09 A3.12.11 +A2.12.19 A3.12.10 A3.12.12 +A2.12.20 A3.12.10 A3.12.11 A3.12.12 A3.12.13 +A2.12.21 A3.11.11 A3.11.13 A3.12.11 A3.12.13 +A2.12.22 A3.12.12 +A2.12.23 A3.12.12 A3.12.13 +A2.12.24 A3.11.13 A3.12.13 +A2.12.25 A3.12.14 A3.13.12 +A2.12.26 A3.11.14 A3.12.14 +A2.12.27 A3.12.15 +A2.12.28 A3.11.15 A3.12.15 +A2.12.29 A3.12.15 +A2.12.30 A3.11.15 A3.12.15 +A2.13.06 A3.13.00 +A2.13.07 A3.13.01 +A2.13.08 A3.13.01 A3.13.02 +A2.13.09 A3.13.00 A3.13.01 A3.13.03 +A2.13.10 A3.13.01 A3.13.02 A3.13.03 A3.13.04 +A2.13.11 A3.13.00 A3.13.03 A3.13.05 A3.14.02 +A2.13.12 A3.13.01 A3.13.02 A3.13.04 +A2.13.13 A3.12.05 A3.13.02 A3.13.04 A3.13.06 +A2.13.14 A3.13.03 A3.13.04 A3.13.05 A3.13.07 +A2.13.15 A3.13.04 A3.13.07 +A2.13.16 A3.13.05 A3.13.07 A3.13.09 A3.14.06 +A2.13.17 A3.13.04 A3.13.06 A3.13.07 A3.13.08 +A2.13.18 A3.13.07 A3.13.09 +A2.13.19 A3.13.07 A3.13.08 A3.13.09 A3.13.10 +A2.13.20 A3.13.09 +A2.13.21 A3.12.10 A3.12.12 A3.13.08 A3.13.10 +A2.13.22 A3.13.09 A3.13.10 +A2.13.23 A3.12.12 A3.13.10 +A2.13.24 A3.13.11 A3.14.09 +A2.13.25 A3.13.11 A3.13.12 +A2.13.26 A3.13.12 +A2.13.27 A3.13.13 +A2.13.28 A3.12.15 A3.13.13 +A2.13.29 A3.13.14 A3.14.13 +A2.13.30 A3.13.14 A3.14.15 +A2.13.31 A3.13.14 +A2.14.04 A3.14.01 +A2.14.05 A3.13.00 A3.14.00 A3.14.02 +A2.14.06 A3.14.00 +A2.14.07 A3.14.00 A3.14.01 +A2.14.08 A3.13.00 A3.14.00 A3.14.02 +A2.14.09 A3.14.00 A3.14.02 A3.14.04 +A2.14.10 A3.14.01 A3.14.03 A3.15.01 +A2.14.11 A3.14.00 A3.14.01 A3.14.04 +A2.14.12 A3.14.02 A3.14.04 +A2.14.13 A3.14.03 A3.14.05 +A2.14.14 A3.13.05 A3.14.02 A3.14.04 A3.14.06 +A2.14.15 A3.14.04 +A2.14.16 A3.14.05 +A2.14.17 A3.14.04 A3.14.06 +A2.14.18 A3.14.05 A3.14.07 +A2.14.19 A3.13.09 A3.14.06 +A2.14.20 A3.14.08 A3.15.07 +A2.14.21 A3.14.07 A3.14.09 +A2.14.22 A3.14.08 A3.14.10 +A2.14.23 A3.14.09 +A2.14.24 A3.14.10 +A2.14.25 A3.14.10 A3.14.11 +A2.14.26 A3.14.12 A3.15.12 +A2.14.27 A3.13.13 A3.14.11 +A2.14.28 A3.14.12 A3.14.13 A3.14.14 +A2.14.29 A3.14.13 A3.14.14 A3.14.15 +A2.14.30 A3.14.14 A3.14.15 +A2.14.31 A3.14.14 A3.14.15 +A2.15.05 A3.15.02 +A2.15.06 A3.15.00 +A2.15.07 A3.14.01 A3.15.01 +A2.15.08 A3.15.01 A3.15.02 +A2.15.09 A3.15.02 +A2.15.10 A3.15.03 +A2.15.11 A3.15.01 A3.15.04 +A2.15.12 A3.15.02 A3.15.05 +A2.15.13 A3.15.03 A3.15.06 +A2.15.14 A3.15.04 A3.15.07 +A2.15.15 A3.15.05 A3.15.08 +A2.15.16 A3.15.06 A3.15.09 +A2.15.17 A3.15.07 +A2.15.18 A3.15.08 +A2.15.19 A3.15.09 +A2.15.20 A3.15.08 A3.15.10 +A2.15.21 A3.15.09 A3.15.11 +A2.15.22 A3.15.10 A3.15.12 +A2.15.23 A3.15.11 A3.15.13 +A2.15.24 A3.15.12 +A2.15.25 A3.15.13 +A2.15.26 A3.15.13 A3.15.14 +A2.15.27 A3.14.14 A3.15.14 A3.15.15 +A2.15.28 A3.14.14 A3.15.15 +A2.15.29 A3.15.15 +C1.00.14 C2.00.00 +C1.00.15 C2.00.00 C2.00.01 +C1.00.16 C2.00.01 C2.00.02 +C1.00.17 C2.00.03 +C1.00.18 C2.00.03 C2.00.04 +C1.00.19 C2.00.04 +C1.00.20 C2.00.05 +C1.00.21 C2.00.05 C2.00.06 +C1.00.22 C2.00.06 +C1.00.23 C2.00.07 C2.00.08 +C1.00.24 C2.00.08 +C1.00.25 C2.00.09 +C1.00.26 C2.00.09 C2.00.10 +C1.00.27 C2.00.10 +C1.00.28 C2.00.11 C2.01.10 +C1.00.29 C2.00.11 +C1.00.30 C2.00.12 +C1.00.31 C2.00.12 C2.00.13 +C1.00.32 C2.00.13 +C1.00.33 C2.00.14 +C1.00.34 C2.00.15 +C1.00.35 C2.00.15 C2.00.16 +C1.00.36 C2.00.16 +C1.00.37 C2.00.17 +C1.00.38 C2.00.18 +C1.00.39 C2.00.18 C2.00.19 +C1.00.40 C2.00.19 +C1.00.41 C2.01.20 +C1.00.42 C2.00.20 +C1.00.43 C2.00.20 C2.00.21 +C1.00.44 C2.00.21 +C1.00.45 C2.00.22 +C1.00.46 C2.00.22 C2.00.23 +C1.00.47 C2.00.23 +C1.00.48 C2.00.24 +C1.00.49 C2.00.24 C2.00.25 +C1.00.50 C2.00.25 +C1.00.51 C2.00.24 C2.00.25 C2.00.26 C2.01.26 +C1.00.52 C2.00.25 C2.00.26 +C1.00.53 C2.01.26 C2.01.28 +C1.00.54 C2.00.26 C2.00.27 +C1.00.55 C2.00.26 C2.00.27 +C1.00.56 C2.00.26 C2.00.27 +C1.00.57 C2.00.27 +C1.00.58 C2.00.27 +C1.00.59 C2.00.27 +C1.00.60 C2.00.27 C2.00.28 +C1.00.61 C2.00.27 C2.00.28 C2.00.29 +C1.00.62 C2.00.27 C2.00.29 +C1.01.12 C2.01.01 +C1.01.13 C2.00.03 +C1.01.14 C2.01.06 +C1.01.15 C2.01.01 C2.01.03 +C1.01.16 C2.01.02 C2.01.04 +C1.01.17 C2.01.00 C2.01.05 C2.02.06 +C1.01.18 C2.01.06 +C1.01.19 C2.01.04 +C1.01.20 C2.01.05 +C1.01.21 C2.00.07 +C1.01.22 C2.01.06 C2.01.07 +C1.01.23 C2.01.09 +C1.01.24 C2.01.07 +C1.01.25 C2.01.08 +C1.01.26 C2.01.10 +C1.01.27 C2.01.09 C2.01.11 +C1.01.28 C2.01.12 +C1.01.29 C2.01.11 +C1.01.30 C2.01.12 C2.01.15 +C1.01.31 C2.01.13 +C1.01.32 C2.01.14 +C1.01.33 C2.00.14 C2.01.13 +C1.01.34 C2.01.15 +C1.01.35 C2.01.14 C2.01.17 +C1.01.36 C2.01.16 +C1.01.37 C2.01.17 +C1.01.38 C2.00.17 C2.01.16 +C1.01.39 C2.01.18 +C1.01.40 C2.01.19 +C1.01.41 C2.01.18 C2.01.20 +C1.01.42 C2.01.21 +C1.01.43 C2.01.21 C2.01.22 +C1.01.44 C2.01.23 +C1.01.45 C2.01.22 +C1.01.46 C2.01.23 C2.01.24 +C1.01.47 C2.01.24 +C1.01.48 C2.01.23 C2.01.24 C2.01.25 C2.02.24 +C1.01.49 C2.01.24 C2.01.25 +C1.01.50 C2.00.24 C2.01.26 +C1.01.51 C2.01.25 C2.01.27 +C1.01.52 C2.01.26 C2.01.28 +C1.01.53 C2.01.26 C2.01.28 +C1.01.54 C2.01.28 +C1.01.55 C2.01.28 +C1.01.56 C2.01.28 C2.01.29 +C1.01.57 C2.01.28 +C1.01.58 C2.01.28 C2.01.29 C2.01.30 +C1.01.59 C2.01.28 C2.01.30 +C1.01.60 C2.01.29 C2.01.30 C2.01.31 C2.02.29 +C1.01.61 C2.01.30 C2.01.31 C2.02.29 C2.02.30 +C1.01.62 C2.00.28 C2.01.30 C2.01.31 +C1.02.12 C2.02.03 +C1.02.13 C2.01.00 C2.02.00 C2.02.06 +C1.02.14 C2.02.02 C2.02.04 C2.03.01 +C1.02.15 C2.02.01 C2.02.07 +C1.02.16 C2.02.03 C2.02.05 C2.02.07 +C1.02.17 C2.02.00 C2.02.06 +C1.02.18 C2.02.02 C2.02.04 C2.02.08 +C1.02.19 C2.02.07 +C1.02.20 C2.02.09 +C1.02.21 C2.01.08 C2.02.06 +C1.02.22 C2.02.08 +C1.02.23 C2.02.10 +C1.02.24 C2.02.09 C2.02.11 +C1.02.25 C2.02.08 C2.03.06 +C1.02.26 C2.02.12 +C1.02.27 C2.02.10 C2.02.14 +C1.02.28 C2.02.11 +C1.02.29 C2.02.12 C2.02.13 +C1.02.30 C2.02.12 C2.02.15 +C1.02.31 C2.02.14 +C1.02.32 C2.02.12 C2.02.13 C2.02.15 C2.02.17 +C1.02.33 C2.02.15 +C1.02.34 C2.02.16 +C1.02.35 C2.02.15 C2.02.17 +C1.02.36 C2.02.18 +C1.02.37 C2.01.19 C2.02.16 +C1.02.38 C2.02.17 C2.03.15 +C1.02.39 C2.02.18 C2.02.19 +C1.02.40 C2.02.18 C2.02.20 +C1.02.41 C2.02.19 C2.02.21 +C1.02.42 C2.02.18 C2.02.19 C2.02.20 C2.02.22 +C1.02.43 C2.02.20 +C1.02.44 C2.02.19 C2.02.21 C2.02.22 C2.02.23 +C1.02.45 C2.02.20 C2.02.22 +C1.02.46 C2.02.22 C2.02.23 +C1.02.47 C2.01.23 C2.02.24 +C1.02.48 C2.02.23 C2.03.22 +C1.02.49 C2.02.24 C2.02.25 +C1.02.50 C2.02.25 C2.02.26 +C1.02.51 C2.01.25 C2.01.27 C2.02.24 C2.02.25 +C1.02.52 C2.01.27 C2.02.25 C2.02.26 C2.02.27 +C1.02.53 C2.01.27 C2.02.27 +C1.02.54 C2.02.27 +C1.02.55 C2.01.27 C2.02.27 +C1.02.56 C2.02.27 C2.02.28 +C1.02.57 C2.02.27 +C1.02.58 C2.02.27 C2.02.28 +C1.02.59 C2.01.29 C2.02.29 +C1.02.60 C2.02.28 +C1.02.61 C2.02.29 C2.02.30 C2.02.31 +C1.02.62 C2.02.30 C2.02.31 +C1.03.12 C2.03.00 +C1.03.13 C2.03.00 +C1.03.14 C2.03.00 +C1.03.15 C2.03.01 +C1.03.16 C2.03.01 C2.03.02 +C1.03.17 C2.03.02 C2.03.03 +C1.03.18 C2.03.03 C2.03.04 +C1.03.19 C2.03.04 C2.03.05 +C1.03.20 C2.02.04 C2.02.08 C2.03.01 C2.03.06 +C1.03.21 C2.03.01 C2.03.02 C2.03.06 C2.03.07 +C1.03.22 C2.03.02 C2.03.03 C2.03.07 C2.03.08 +C1.03.23 C2.03.03 C2.03.04 C2.03.08 C2.03.09 +C1.03.24 C2.03.04 C2.03.05 C2.03.09 C2.03.10 +C1.03.25 C2.03.06 C2.03.07 +C1.03.26 C2.03.07 C2.03.08 +C1.03.27 C2.03.08 C2.03.09 +C1.03.28 C2.03.09 C2.03.10 +C1.03.29 C2.02.13 C2.03.11 +C1.03.30 C2.03.11 C2.03.12 +C1.03.31 C2.03.12 C2.03.13 +C1.03.32 C2.03.13 C2.03.14 +C1.03.33 C2.02.13 C2.02.17 C2.03.11 C2.03.15 +C1.03.34 C2.03.11 C2.03.12 C2.03.15 C2.03.16 +C1.03.35 C2.03.12 C2.03.13 C2.03.16 C2.03.17 +C1.03.36 C2.03.13 C2.03.14 C2.03.17 C2.03.18 +C1.03.37 C2.03.15 C2.03.16 +C1.03.38 C2.03.16 C2.03.17 +C1.03.39 C2.03.17 C2.03.18 +C1.03.40 C2.02.21 C2.03.19 +C1.03.41 C2.03.19 C2.03.20 +C1.03.42 C2.03.20 C2.03.21 +C1.03.43 C2.02.21 C2.02.23 C2.03.19 C2.03.22 +C1.03.44 C2.03.19 C2.03.20 C2.03.22 C2.03.23 +C1.03.45 C2.03.20 C2.03.21 C2.03.23 C2.03.24 +C1.03.46 C2.03.22 C2.03.23 +C1.03.47 C2.03.23 C2.03.24 +C1.03.48 C2.02.26 C2.03.25 +C1.03.49 C2.03.25 C2.03.26 +C1.03.50 C2.02.26 C2.03.25 +C1.03.51 C2.03.25 +C1.03.52 C2.03.25 C2.03.26 +C1.03.53 C2.03.26 +C1.03.54 C2.02.27 C2.02.28 +C1.03.55 C2.02.28 +C1.03.56 C2.02.28 C2.03.27 +C1.03.57 C2.03.27 C2.03.28 +C1.03.58 C2.02.28 +C1.03.59 C2.02.28 C2.03.27 C2.03.29 +C1.03.60 C2.03.27 C2.03.28 C2.03.29 C2.03.30 +C1.03.61 C2.02.28 C2.03.29 +C1.03.62 C2.03.29 C2.03.30 +C1.04.12 C2.04.00 +C1.04.13 C2.04.00 +C1.04.14 C2.03.00 C2.04.00 +C1.04.15 C2.04.01 C2.04.02 +C1.04.16 C2.04.02 C2.04.03 +C1.04.17 C2.04.03 C2.04.04 +C1.04.18 C2.04.04 C2.04.05 +C1.04.19 C2.03.05 C2.04.05 +C1.04.20 C2.04.01 C2.04.02 C2.04.06 C2.04.07 +C1.04.21 C2.04.02 C2.04.03 C2.04.07 C2.04.08 +C1.04.22 C2.04.03 C2.04.04 C2.04.08 C2.04.09 +C1.04.23 C2.04.04 C2.04.05 C2.04.09 C2.04.10 +C1.04.24 C2.03.05 C2.03.10 C2.04.05 C2.04.10 +C1.04.25 C2.04.07 C2.04.08 +C1.04.26 C2.04.08 C2.04.09 +C1.04.27 C2.04.09 C2.04.10 +C1.04.28 C2.03.10 C2.04.10 +C1.04.29 C2.04.11 C2.04.12 +C1.04.30 C2.04.12 C2.04.13 +C1.04.31 C2.04.13 C2.04.14 +C1.04.32 C2.03.14 C2.04.14 +C1.04.33 C2.04.11 C2.04.12 C2.04.15 C2.04.16 +C1.04.34 C2.04.12 C2.04.13 C2.04.16 C2.04.17 +C1.04.35 C2.04.13 C2.04.14 C2.04.17 C2.04.18 +C1.04.36 C2.03.14 C2.03.18 C2.04.14 C2.04.18 +C1.04.37 C2.04.16 C2.04.17 +C1.04.38 C2.04.17 C2.04.18 +C1.04.39 C2.03.18 C2.04.18 +C1.04.40 C2.04.19 C2.04.20 +C1.04.41 C2.04.20 C2.04.21 +C1.04.42 C2.03.21 C2.04.21 +C1.04.43 C2.04.19 C2.04.20 C2.04.22 C2.04.23 +C1.04.44 C2.04.20 C2.04.21 C2.04.23 C2.04.24 +C1.04.45 C2.03.21 C2.03.24 C2.04.21 C2.04.24 +C1.04.46 C2.04.23 C2.04.24 +C1.04.47 C2.03.24 C2.04.24 +C1.04.48 C2.04.25 C2.04.26 +C1.04.49 C2.03.26 C2.04.26 +C1.04.50 C2.04.25 +C1.04.51 C2.04.25 C2.04.26 +C1.04.52 C2.04.26 +C1.04.53 C2.03.26 C2.04.26 +C1.04.54 C2.05.28 +C1.04.55 C2.04.27 C2.05.28 +C1.04.56 C2.04.27 C2.04.28 +C1.04.57 C2.03.28 C2.04.28 +C1.04.58 C2.04.27 C2.04.29 C2.05.28 +C1.04.59 C2.04.27 C2.04.28 C2.04.29 C2.04.30 +C1.04.60 C2.03.28 C2.03.30 C2.04.28 C2.04.30 +C1.04.61 C2.04.29 C2.04.30 +C1.04.62 C2.03.30 C2.04.30 +C1.05.09 C2.05.02 +C1.05.10 C2.05.07 +C1.05.11 C2.05.01 C2.05.06 +C1.05.12 C2.05.03 +C1.05.13 C2.04.01 C2.05.02 C2.05.04 +C1.05.14 C2.05.00 C2.05.02 C2.05.07 C2.05.08 +C1.05.15 C2.05.03 C2.05.05 C2.05.07 +C1.05.16 C2.05.06 C2.05.09 +C1.05.17 C2.04.01 C2.04.06 C2.05.02 C2.05.04 C2.05.08 +C1.05.18 C2.05.07 C2.05.08 +C1.05.19 C2.05.09 C2.05.10 +C1.05.20 C2.05.06 C2.05.09 C2.05.11 C2.06.08 +C1.05.21 C2.04.06 C2.05.08 +C1.05.22 C2.05.10 C2.05.12 +C1.05.23 C2.05.09 C2.05.10 C2.05.11 C2.05.14 +C1.05.24 C2.04.06 C2.04.07 +C1.05.25 C2.05.12 C2.05.13 +C1.05.26 C2.05.10 C2.05.12 C2.05.14 C2.05.15 +C1.05.27 C2.05.11 C2.05.14 +C1.05.28 C2.04.11 C2.05.13 +C1.05.29 C2.05.12 C2.05.13 C2.05.15 C2.05.17 +C1.05.30 C2.05.14 C2.05.15 +C1.05.31 C2.04.11 C2.04.15 C2.05.13 C2.05.17 +C1.05.32 C2.05.15 C2.05.17 +C1.05.33 C2.05.16 C2.05.18 +C1.05.34 C2.04.15 C2.05.17 +C1.05.35 C2.05.16 C2.05.18 C2.05.20 C2.06.19 +C1.05.36 C2.05.18 C2.05.19 +C1.05.37 C2.04.15 C2.04.16 +C1.05.38 C2.05.19 C2.05.21 +C1.05.39 C2.05.18 C2.05.19 C2.05.20 C2.05.22 +C1.05.40 C2.04.19 C2.05.21 +C1.05.41 C2.05.19 C2.05.21 C2.05.22 C2.05.23 +C1.05.42 C2.05.20 C2.05.22 +C1.05.43 C2.04.19 C2.04.22 C2.05.21 C2.05.23 +C1.05.44 C2.05.22 C2.05.23 +C1.05.45 C2.04.22 C2.05.23 +C1.05.46 C2.05.24 C2.05.25 +C1.05.47 C2.04.22 C2.04.23 +C1.05.48 C2.05.25 C2.05.26 +C1.05.49 C2.04.25 C2.05.26 +C1.05.50 C2.05.25 C2.05.26 C2.05.27 C2.06.27 +C1.05.51 C2.04.25 C2.05.26 C2.05.27 C2.05.28 +C1.05.52 C2.05.27 +C1.05.53 C2.05.27 C2.05.28 +C1.05.54 C2.05.27 +C1.05.55 C2.05.28 +C1.05.56 C2.05.27 C2.05.28 +C1.05.57 C2.05.28 +C1.05.58 C2.05.29 C2.05.30 +C1.05.59 C2.04.29 C2.05.28 +C1.05.60 C2.05.30 C2.05.31 +C1.05.61 C2.05.30 C2.05.31 C2.06.31 +C1.05.62 C2.05.31 +C1.06.11 C2.06.04 +C1.06.12 C2.06.00 C2.06.05 +C1.06.13 C2.06.04 C2.07.03 +C1.06.14 C2.06.02 C2.06.06 +C1.06.15 C2.06.01 C2.06.05 +C1.06.16 C2.06.02 C2.06.04 C2.06.06 C2.06.07 +C1.06.17 C2.05.01 C2.05.06 C2.06.00 C2.06.03 C2.06.05 C2.06.08 +C1.06.18 C2.06.06 C2.06.09 +C1.06.19 C2.06.04 C2.06.07 +C1.06.20 C2.06.05 C2.06.08 +C1.06.21 C2.06.10 C2.07.07 +C1.06.22 C2.06.06 C2.06.07 C2.06.09 C2.06.11 +C1.06.23 C2.06.09 C2.06.12 +C1.06.24 C2.06.07 C2.06.11 +C1.06.25 C2.05.11 C2.06.08 +C1.06.26 C2.06.10 C2.06.13 +C1.06.27 C2.06.09 C2.06.11 C2.06.12 C2.06.15 +C1.06.28 C2.06.12 C2.06.14 +C1.06.29 C2.06.11 C2.06.15 +C1.06.30 C2.06.12 C2.06.14 C2.06.15 C2.06.17 +C1.06.31 C2.06.13 C2.06.16 +C1.06.32 C2.05.16 C2.06.14 +C1.06.33 C2.06.13 C2.06.16 C2.07.14 C2.07.17 +C1.06.34 C2.06.15 C2.06.17 +C1.06.35 C2.05.16 C2.06.14 C2.06.17 C2.06.19 +C1.06.36 C2.06.16 C2.06.18 +C1.06.37 C2.06.17 C2.06.19 +C1.06.38 C2.06.16 C2.06.18 C2.06.20 C2.07.17 +C1.06.39 C2.06.18 C2.06.21 +C1.06.40 C2.05.20 C2.06.19 +C1.06.41 C2.06.18 C2.06.20 C2.06.21 C2.06.22 +C1.06.42 C2.06.21 C2.06.23 +C1.06.43 C2.06.21 C2.06.22 C2.06.23 C2.06.24 +C1.06.44 C2.05.24 C2.06.23 +C1.06.45 C2.06.22 C2.06.24 +C1.06.46 C2.05.24 C2.06.23 C2.06.24 C2.06.25 +C1.06.47 C2.06.24 C2.06.25 +C1.06.48 C2.05.24 C2.05.25 C2.06.25 C2.06.27 +C1.06.49 C2.06.25 C2.06.27 +C1.06.50 C2.06.26 C2.06.28 +C1.06.51 C2.05.27 C2.06.27 +C1.06.52 C2.06.28 +C1.06.53 C2.06.28 +C1.06.54 C2.06.28 +C1.06.55 C2.05.29 C2.06.28 +C1.06.56 C2.06.28 C2.06.29 +C1.06.57 C2.05.29 +C1.06.58 C2.06.28 C2.06.30 +C1.06.59 C2.06.29 +C1.06.60 C2.06.30 +C1.06.61 C2.05.30 C2.06.29 C2.06.31 +C1.06.62 C2.06.30 C2.06.31 +C1.07.13 C2.07.03 C2.07.04 +C1.07.14 C2.07.04 +C1.07.15 C2.07.00 C2.07.05 +C1.07.16 C2.07.00 C2.07.02 C2.07.05 C2.07.06 +C1.07.17 C2.07.01 C2.07.02 C2.07.06 +C1.07.18 C2.07.03 C2.07.07 +C1.07.19 C2.07.03 C2.07.04 C2.07.07 C2.07.08 +C1.07.20 C2.07.04 C2.07.08 +C1.07.21 C2.07.05 C2.07.09 +C1.07.22 C2.07.05 C2.07.06 C2.07.09 C2.07.10 +C1.07.23 C2.07.06 C2.07.10 +C1.07.24 C2.06.10 C2.07.07 C2.07.08 C2.07.11 +C1.07.25 C2.07.08 C2.07.11 +C1.07.26 C2.07.09 C2.07.12 +C1.07.27 C2.07.09 C2.07.10 C2.07.12 C2.07.13 +C1.07.28 C2.07.10 C2.07.13 +C1.07.29 C2.06.10 C2.06.13 C2.07.11 C2.07.14 +C1.07.30 C2.07.11 C2.07.14 +C1.07.31 C2.07.12 C2.07.15 +C1.07.32 C2.07.12 C2.07.13 C2.07.15 C2.07.16 +C1.07.33 C2.07.13 C2.07.16 +C1.07.34 C2.07.14 C2.07.17 +C1.07.35 C2.07.15 C2.07.18 +C1.07.36 C2.07.15 C2.07.16 C2.07.18 C2.07.19 +C1.07.37 C2.07.16 C2.07.19 +C1.07.38 C2.06.20 C2.07.17 +C1.07.39 C2.07.18 C2.07.20 +C1.07.40 C2.07.18 C2.07.19 C2.07.20 C2.07.21 +C1.07.41 C2.07.19 C2.07.21 +C1.07.42 C2.06.20 C2.06.22 +C1.07.43 C2.07.20 C2.07.22 +C1.07.44 C2.07.20 C2.07.21 C2.07.22 C2.07.23 +C1.07.45 C2.07.21 C2.07.23 +C1.07.46 C2.07.22 C2.07.24 +C1.07.47 C2.07.22 C2.07.23 C2.07.24 C2.07.25 +C1.07.48 C2.07.23 C2.07.25 +C1.07.49 C2.06.26 C2.07.24 +C1.07.50 C2.06.26 C2.07.24 C2.07.25 C2.07.26 +C1.07.51 C2.07.25 C2.07.26 +C1.07.52 C2.06.26 C2.06.28 C2.07.26 C2.07.27 +C1.07.53 C2.07.26 C2.07.27 +C1.07.54 C2.07.27 +C1.07.55 C2.07.27 +C1.07.56 C2.07.27 +C1.07.57 C2.07.27 C2.07.28 +C1.07.58 C2.07.27 C2.07.28 C2.07.29 +C1.07.59 C2.07.27 C2.07.29 +C1.07.60 C2.06.31 C2.07.28 +C1.07.61 C2.07.28 C2.07.29 +C1.07.62 C2.07.29 +C1.08.07 C2.08.03 +C1.08.12 C2.08.03 C2.08.04 +C1.08.13 C2.08.04 +C1.08.14 C2.08.02 C2.08.05 +C1.08.15 C2.08.01 C2.08.02 C2.08.05 C2.08.06 +C1.08.16 C2.08.00 C2.08.01 C2.08.06 +C1.08.17 C2.08.03 C2.08.07 +C1.08.18 C2.08.03 C2.08.04 C2.08.07 C2.08.08 +C1.08.19 C2.08.04 C2.08.08 +C1.08.20 C2.08.05 C2.08.09 +C1.08.21 C2.08.05 C2.08.06 C2.08.09 C2.08.10 +C1.08.22 C2.08.06 C2.08.10 +C1.08.23 C2.08.07 C2.08.08 C2.08.11 C2.09.10 +C1.08.24 C2.08.08 C2.08.11 +C1.08.25 C2.08.09 C2.08.12 +C1.08.26 C2.08.09 C2.08.10 C2.08.12 C2.08.13 +C1.08.27 C2.08.10 C2.08.13 +C1.08.28 C2.08.11 C2.08.14 C2.09.10 C2.09.13 +C1.08.29 C2.08.11 C2.08.14 +C1.08.30 C2.08.12 C2.08.15 +C1.08.31 C2.08.12 C2.08.13 C2.08.15 C2.08.16 +C1.08.32 C2.08.13 C2.08.16 +C1.08.33 C2.08.14 C2.08.17 +C1.08.34 C2.08.15 C2.08.18 +C1.08.35 C2.08.15 C2.08.16 C2.08.18 C2.08.19 +C1.08.36 C2.08.16 C2.08.19 +C1.08.37 C2.08.17 C2.09.20 +C1.08.38 C2.08.18 C2.08.20 +C1.08.39 C2.08.18 C2.08.19 C2.08.20 C2.08.21 +C1.08.40 C2.08.19 C2.08.21 +C1.08.41 C2.09.20 C2.09.22 +C1.08.42 C2.08.20 C2.08.22 +C1.08.43 C2.08.20 C2.08.21 C2.08.22 C2.08.23 +C1.08.44 C2.08.21 C2.08.23 +C1.08.45 C2.08.22 C2.08.24 +C1.08.46 C2.08.22 C2.08.23 C2.08.24 C2.08.25 +C1.08.47 C2.08.23 C2.08.25 +C1.08.48 C2.08.24 C2.09.26 +C1.08.49 C2.08.24 C2.08.25 C2.08.26 C2.09.26 +C1.08.50 C2.08.25 C2.08.26 +C1.08.51 C2.08.26 C2.08.27 C2.09.26 C2.09.28 +C1.08.52 C2.08.26 C2.08.27 +C1.08.53 C2.09.28 +C1.08.54 C2.08.27 +C1.08.55 C2.08.27 +C1.08.56 C2.08.27 +C1.08.57 C2.08.27 C2.08.28 +C1.08.58 C2.08.27 C2.08.28 C2.08.29 +C1.08.59 C2.08.27 C2.08.29 +C1.08.60 C2.08.28 C2.09.31 +C1.08.61 C2.08.28 C2.08.29 +C1.08.62 C2.08.29 +C1.09.11 C2.09.02 C2.09.04 +C1.09.12 C2.09.00 C2.09.01 C2.09.05 +C1.09.13 C2.08.03 C2.09.04 +C1.09.14 C2.09.06 +C1.09.15 C2.09.01 C2.09.03 C2.09.05 +C1.09.16 C2.09.02 C2.09.04 C2.09.06 C2.09.07 +C1.09.17 C2.09.00 C2.09.05 C2.09.08 C2.10.06 +C1.09.18 C2.09.06 C2.09.09 +C1.09.19 C2.09.04 C2.09.07 +C1.09.20 C2.09.05 C2.09.08 +C1.09.21 C2.08.07 C2.09.10 +C1.09.22 C2.09.06 C2.09.07 C2.09.09 C2.09.11 +C1.09.23 C2.09.09 C2.09.12 +C1.09.24 C2.09.07 C2.09.11 +C1.09.25 C2.09.08 C2.10.11 +C1.09.26 C2.09.10 C2.09.13 +C1.09.27 C2.09.09 C2.09.11 C2.09.12 C2.09.15 +C1.09.28 C2.09.12 C2.09.14 +C1.09.29 C2.09.11 C2.09.15 +C1.09.30 C2.09.12 C2.09.14 C2.09.15 C2.09.17 +C1.09.31 C2.09.13 C2.09.16 +C1.09.32 C2.09.14 C2.10.16 +C1.09.33 C2.08.14 C2.08.17 C2.09.13 C2.09.16 +C1.09.34 C2.09.15 C2.09.17 +C1.09.35 C2.09.14 C2.09.17 C2.09.19 C2.10.16 +C1.09.36 C2.09.16 C2.09.18 +C1.09.37 C2.09.17 C2.09.19 +C1.09.38 C2.08.17 C2.09.16 C2.09.18 C2.09.20 +C1.09.39 C2.09.18 C2.09.21 +C1.09.40 C2.09.19 C2.10.20 +C1.09.41 C2.09.18 C2.09.20 C2.09.21 C2.09.22 +C1.09.42 C2.09.21 C2.09.23 +C1.09.43 C2.09.21 C2.09.22 C2.09.23 C2.09.24 +C1.09.44 C2.09.23 C2.10.24 +C1.09.45 C2.09.22 C2.09.24 +C1.09.46 C2.09.23 C2.09.24 C2.09.25 C2.10.24 +C1.09.47 C2.09.24 C2.09.25 +C1.09.48 C2.09.25 C2.09.27 C2.10.24 C2.10.25 +C1.09.49 C2.09.25 C2.09.27 +C1.09.50 C2.09.26 C2.09.28 +C1.09.51 C2.09.27 C2.10.27 +C1.09.52 C2.09.28 +C1.09.53 C2.09.28 +C1.09.54 C2.09.28 C2.09.29 +C1.09.55 C2.09.28 C2.09.29 C2.09.30 +C1.09.56 C2.09.29 C2.10.29 +C1.09.57 C2.09.28 C2.09.30 +C1.09.58 C2.09.29 C2.09.30 C2.09.31 C2.10.29 +C1.09.59 C2.09.30 C2.09.31 +C1.09.60 C2.09.31 C2.10.29 C2.10.30 +C1.09.61 C2.09.31 C2.10.30 +C1.09.62 C2.09.31 +C1.10.10 C2.10.02 +C1.10.11 C2.10.07 +C1.10.12 C2.09.00 C2.10.00 C2.10.06 +C1.10.13 C2.10.03 +C1.10.14 C2.10.02 C2.10.04 C2.11.01 +C1.10.15 C2.10.01 C2.10.02 C2.10.07 C2.10.08 +C1.10.16 C2.10.03 C2.10.05 C2.10.07 +C1.10.17 C2.10.06 C2.10.09 +C1.10.18 C2.10.02 C2.10.04 C2.10.08 C2.11.01 C2.11.06 +C1.10.19 C2.10.07 C2.10.08 +C1.10.20 C2.10.09 C2.10.10 +C1.10.21 C2.09.08 C2.10.06 C2.10.09 C2.10.11 +C1.10.22 C2.10.08 C2.11.06 +C1.10.23 C2.10.10 C2.10.12 +C1.10.24 C2.10.09 C2.10.10 C2.10.11 C2.10.14 +C1.10.25 C2.11.06 C2.11.07 +C1.10.26 C2.10.12 C2.10.13 +C1.10.27 C2.10.10 C2.10.12 C2.10.14 C2.10.15 +C1.10.28 C2.10.11 C2.10.14 +C1.10.29 C2.10.13 C2.11.11 +C1.10.30 C2.10.12 C2.10.13 C2.10.15 C2.10.17 +C1.10.31 C2.10.14 C2.10.15 +C1.10.32 C2.10.13 C2.10.17 C2.11.11 C2.11.15 +C1.10.33 C2.10.15 C2.10.17 +C1.10.34 C2.10.16 C2.10.18 +C1.10.35 C2.10.17 C2.11.15 +C1.10.36 C2.09.19 C2.10.16 C2.10.18 C2.10.20 +C1.10.37 C2.10.18 C2.10.19 +C1.10.38 C2.11.15 C2.11.16 +C1.10.39 C2.10.19 C2.10.21 +C1.10.40 C2.10.18 C2.10.19 C2.10.20 C2.10.22 +C1.10.41 C2.10.21 C2.11.19 +C1.10.42 C2.10.19 C2.10.21 C2.10.22 C2.10.23 +C1.10.43 C2.10.20 C2.10.22 +C1.10.44 C2.10.21 C2.10.23 C2.11.19 C2.11.22 +C1.10.45 C2.10.22 C2.10.23 +C1.10.46 C2.10.23 C2.11.22 +C1.10.47 C2.10.24 C2.10.25 +C1.10.48 C2.11.22 C2.11.23 +C1.10.49 C2.10.25 C2.10.26 +C1.10.50 C2.10.26 C2.11.25 +C1.10.51 C2.09.27 C2.10.25 C2.10.26 C2.10.27 +C1.10.52 C2.10.26 C2.10.27 C2.10.28 C2.11.25 +C1.10.53 C2.10.27 +C1.10.54 C2.10.27 C2.10.28 +C1.10.55 C2.10.27 +C1.10.56 C2.10.28 +C1.10.57 C2.10.27 C2.10.28 +C1.10.58 C2.10.28 +C1.10.59 C2.10.29 C2.10.30 +C1.10.60 C2.10.28 C2.11.29 +C1.10.61 C2.10.30 C2.10.31 +C1.10.62 C2.10.31 +C1.11.12 C2.11.00 +C1.11.13 C2.11.00 +C1.11.14 C2.11.00 C2.12.00 +C1.11.15 C2.11.01 C2.11.02 +C1.11.16 C2.11.02 C2.11.03 +C1.11.17 C2.11.03 C2.11.04 +C1.11.18 C2.11.04 C2.11.05 +C1.11.19 C2.11.05 C2.12.05 +C1.11.20 C2.11.01 C2.11.02 C2.11.06 C2.11.07 +C1.11.21 C2.11.02 C2.11.03 C2.11.07 C2.11.08 +C1.11.22 C2.11.03 C2.11.04 C2.11.08 C2.11.09 +C1.11.23 C2.11.04 C2.11.05 C2.11.09 C2.11.10 +C1.11.24 C2.11.05 C2.11.10 C2.12.05 C2.12.10 +C1.11.25 C2.11.07 C2.11.08 +C1.11.26 C2.11.08 C2.11.09 +C1.11.27 C2.11.09 C2.11.10 +C1.11.28 C2.11.10 C2.12.10 +C1.11.29 C2.11.11 C2.11.12 +C1.11.30 C2.11.12 C2.11.13 +C1.11.31 C2.11.13 C2.11.14 +C1.11.32 C2.11.14 C2.12.14 +C1.11.33 C2.11.11 C2.11.12 C2.11.15 C2.11.16 +C1.11.34 C2.11.12 C2.11.13 C2.11.16 C2.11.17 +C1.11.35 C2.11.13 C2.11.14 C2.11.17 C2.11.18 +C1.11.36 C2.11.14 C2.11.18 C2.12.14 C2.12.18 +C1.11.37 C2.11.16 C2.11.17 +C1.11.38 C2.11.17 C2.11.18 +C1.11.39 C2.11.18 C2.12.18 +C1.11.40 C2.11.19 C2.11.20 +C1.11.41 C2.11.20 C2.11.21 +C1.11.42 C2.11.21 C2.12.21 +C1.11.43 C2.11.19 C2.11.20 C2.11.22 C2.11.23 +C1.11.44 C2.11.20 C2.11.21 C2.11.23 C2.11.24 +C1.11.45 C2.11.21 C2.11.24 C2.12.21 C2.12.24 +C1.11.46 C2.11.23 C2.11.24 +C1.11.47 C2.11.24 C2.12.24 +C1.11.48 C2.11.25 C2.11.26 +C1.11.49 C2.11.26 C2.12.26 +C1.11.50 C2.11.25 +C1.11.51 C2.11.25 C2.11.26 +C1.11.52 C2.11.26 +C1.11.53 C2.11.26 C2.12.26 +C1.11.54 C2.10.28 +C1.11.55 C2.10.28 C2.11.27 +C1.11.56 C2.11.27 C2.11.28 +C1.11.57 C2.11.28 C2.12.28 +C1.11.58 C2.10.28 C2.11.27 C2.11.29 +C1.11.59 C2.11.27 C2.11.28 C2.11.29 C2.11.30 +C1.11.60 C2.11.28 C2.11.30 C2.12.28 C2.12.30 +C1.11.61 C2.11.29 C2.11.30 +C1.11.62 C2.11.30 C2.12.30 +C1.12.12 C2.12.00 +C1.12.13 C2.12.00 +C1.12.14 C2.12.00 +C1.12.15 C2.12.01 C2.13.04 +C1.12.16 C2.12.01 C2.12.02 +C1.12.17 C2.12.02 C2.12.03 +C1.12.18 C2.12.03 C2.12.04 +C1.12.19 C2.12.04 C2.12.05 +C1.12.20 C2.12.01 C2.12.06 C2.13.04 C2.13.08 +C1.12.21 C2.12.01 C2.12.02 C2.12.06 C2.12.07 +C1.12.22 C2.12.02 C2.12.03 C2.12.07 C2.12.08 +C1.12.23 C2.12.03 C2.12.04 C2.12.08 C2.12.09 +C1.12.24 C2.12.04 C2.12.05 C2.12.09 C2.12.10 +C1.12.25 C2.12.06 C2.12.07 +C1.12.26 C2.12.07 C2.12.08 +C1.12.27 C2.12.08 C2.12.09 +C1.12.28 C2.12.09 C2.12.10 +C1.12.29 C2.12.11 C2.13.13 +C1.12.30 C2.12.11 C2.12.12 +C1.12.31 C2.12.12 C2.12.13 +C1.12.32 C2.12.13 C2.12.14 +C1.12.33 C2.12.11 C2.12.15 C2.13.13 C2.13.17 +C1.12.34 C2.12.11 C2.12.12 C2.12.15 C2.12.16 +C1.12.35 C2.12.12 C2.12.13 C2.12.16 C2.12.17 +C1.12.36 C2.12.13 C2.12.14 C2.12.17 C2.12.18 +C1.12.37 C2.12.15 C2.12.16 +C1.12.38 C2.12.16 C2.12.17 +C1.12.39 C2.12.17 C2.12.18 +C1.12.40 C2.12.19 C2.13.21 +C1.12.41 C2.12.19 C2.12.20 +C1.12.42 C2.12.20 C2.12.21 +C1.12.43 C2.12.19 C2.12.22 C2.13.21 C2.13.23 +C1.12.44 C2.12.19 C2.12.20 C2.12.22 C2.12.23 +C1.12.45 C2.12.20 C2.12.21 C2.12.23 C2.12.24 +C1.12.46 C2.12.22 C2.12.23 +C1.12.47 C2.12.23 C2.12.24 +C1.12.48 C2.12.25 C2.13.26 +C1.12.49 C2.12.25 C2.12.26 +C1.12.50 C2.12.25 C2.13.26 +C1.12.51 C2.12.25 +C1.12.52 C2.12.25 C2.12.26 +C1.12.53 C2.12.26 +C1.12.54 C2.13.27 C2.13.28 +C1.12.55 C2.13.28 +C1.12.56 C2.12.27 C2.13.28 +C1.12.57 C2.12.27 C2.12.28 +C1.12.58 C2.13.28 +C1.12.59 C2.12.27 C2.12.29 C2.13.28 +C1.12.60 C2.12.27 C2.12.28 C2.12.29 C2.12.30 +C1.12.61 C2.12.29 C2.13.28 +C1.12.62 C2.12.29 C2.12.30 +C1.13.11 C2.13.03 +C1.13.12 C2.13.01 +C1.13.13 C2.12.01 C2.13.02 C2.13.04 +C1.13.14 C2.13.00 C2.13.07 +C1.13.15 C2.13.03 C2.13.05 C2.13.07 +C1.13.16 C2.13.06 +C1.13.17 C2.13.02 C2.13.04 C2.13.08 +C1.13.18 C2.13.07 +C1.13.19 C2.13.09 +C1.13.20 C2.13.06 C2.14.08 +C1.13.21 C2.13.08 +C1.13.22 C2.13.10 +C1.13.23 C2.13.09 C2.13.11 +C1.13.24 C2.12.06 C2.13.08 +C1.13.25 C2.13.12 +C1.13.26 C2.13.10 C2.13.14 +C1.13.27 C2.13.11 +C1.13.28 C2.13.12 C2.13.13 +C1.13.29 C2.13.12 C2.13.15 +C1.13.30 C2.13.14 +C1.13.31 C2.13.12 C2.13.13 C2.13.15 C2.13.17 +C1.13.32 C2.13.15 +C1.13.33 C2.13.16 +C1.13.34 C2.13.15 C2.13.17 +C1.13.35 C2.13.16 C2.14.19 +C1.13.36 C2.13.18 +C1.13.37 C2.12.15 C2.13.17 +C1.13.38 C2.13.18 C2.13.19 +C1.13.39 C2.13.18 C2.13.20 +C1.13.40 C2.13.19 C2.13.21 +C1.13.41 C2.13.18 C2.13.19 C2.13.20 C2.13.22 +C1.13.42 C2.13.20 +C1.13.43 C2.13.19 C2.13.21 C2.13.22 C2.13.23 +C1.13.44 C2.13.20 C2.13.22 +C1.13.45 C2.13.22 C2.13.23 +C1.13.46 C2.13.24 C2.14.23 +C1.13.47 C2.12.22 C2.13.23 +C1.13.48 C2.13.24 C2.13.25 +C1.13.49 C2.13.25 C2.13.26 +C1.13.50 C2.13.24 C2.13.25 C2.14.25 C2.14.27 +C1.13.51 C2.13.25 C2.13.26 C2.13.27 C2.14.27 +C1.13.52 C2.13.27 C2.14.27 +C1.13.53 C2.13.27 +C1.13.54 C2.13.27 C2.14.27 +C1.13.55 C2.13.27 C2.13.28 +C1.13.56 C2.13.27 +C1.13.57 C2.13.27 C2.13.28 +C1.13.58 C2.13.29 C2.13.30 +C1.13.59 C2.13.28 +C1.13.60 C2.13.30 C2.13.31 +C1.13.61 C2.13.30 C2.14.31 +C1.13.62 C2.13.30 C2.13.31 +C1.14.12 C2.14.05 +C1.14.13 C2.15.03 +C1.14.14 C2.14.02 +C1.14.15 C2.14.01 C2.14.05 +C1.14.16 C2.14.02 C2.14.04 +C1.14.17 C2.13.01 C2.14.00 C2.14.03 C2.14.05 +C1.14.18 C2.14.06 +C1.14.19 C2.14.04 +C1.14.20 C2.14.05 +C1.14.21 C2.15.07 +C1.14.22 C2.14.06 C2.14.07 +C1.14.23 C2.14.09 +C1.14.24 C2.14.07 +C1.14.25 C2.14.08 +C1.14.26 C2.14.10 +C1.14.27 C2.14.09 C2.14.11 +C1.14.28 C2.14.12 +C1.14.29 C2.14.11 +C1.14.30 C2.14.12 C2.14.15 +C1.14.31 C2.14.13 +C1.14.32 C2.14.14 +C1.14.33 C2.14.13 C2.15.14 +C1.14.34 C2.14.15 +C1.14.35 C2.14.14 C2.14.17 +C1.14.36 C2.14.16 +C1.14.37 C2.14.17 +C1.14.38 C2.14.16 C2.15.17 +C1.14.39 C2.14.18 +C1.14.40 C2.14.19 +C1.14.41 C2.14.18 C2.14.20 +C1.14.42 C2.14.21 +C1.14.43 C2.14.21 C2.14.22 +C1.14.44 C2.14.23 +C1.14.45 C2.14.22 +C1.14.46 C2.14.23 C2.14.24 +C1.14.47 C2.14.24 +C1.14.48 C2.13.24 C2.14.23 C2.14.24 C2.14.25 +C1.14.49 C2.14.24 C2.14.25 +C1.14.50 C2.14.26 C2.15.24 +C1.14.51 C2.14.25 C2.14.27 +C1.14.52 C2.14.26 C2.14.28 +C1.14.53 C2.14.26 C2.14.28 +C1.14.54 C2.14.26 C2.14.28 +C1.14.55 C2.14.28 +C1.14.56 C2.14.28 +C1.14.57 C2.13.29 C2.14.28 +C1.14.58 C2.14.28 +C1.14.59 C2.14.28 C2.14.29 +C1.14.60 C2.14.28 C2.14.30 +C1.14.61 C2.14.29 C2.14.31 +C1.14.62 C2.14.30 C2.14.31 C2.15.28 +C1.15.15 C2.15.00 +C1.15.16 C2.15.00 C2.15.02 +C1.15.17 C2.15.01 C2.15.02 +C1.15.18 C2.15.03 +C1.15.19 C2.15.03 C2.15.04 +C1.15.20 C2.15.04 +C1.15.21 C2.15.05 +C1.15.22 C2.15.05 C2.15.06 +C1.15.23 C2.15.06 +C1.15.24 C2.15.07 C2.15.08 +C1.15.25 C2.15.08 +C1.15.26 C2.15.09 +C1.15.27 C2.15.09 C2.15.10 +C1.15.28 C2.15.10 +C1.15.29 C2.14.10 C2.15.11 +C1.15.30 C2.15.11 +C1.15.31 C2.15.12 +C1.15.32 C2.15.12 C2.15.13 +C1.15.33 C2.15.13 +C1.15.34 C2.15.14 +C1.15.35 C2.15.15 +C1.15.36 C2.15.15 C2.15.16 +C1.15.37 C2.15.16 +C1.15.38 C2.15.17 +C1.15.39 C2.15.18 +C1.15.40 C2.15.18 C2.15.19 +C1.15.41 C2.15.19 +C1.15.42 C2.14.20 +C1.15.43 C2.15.20 +C1.15.44 C2.15.20 C2.15.21 +C1.15.45 C2.15.21 +C1.15.46 C2.15.22 +C1.15.47 C2.15.22 C2.15.23 +C1.15.48 C2.15.23 +C1.15.49 C2.15.24 +C1.15.50 C2.15.24 C2.15.25 +C1.15.51 C2.15.25 +C1.15.52 C2.14.26 C2.15.24 C2.15.25 C2.15.26 +C1.15.53 C2.15.25 C2.15.26 +C1.15.54 C2.15.26 C2.15.27 +C1.15.55 C2.15.26 C2.15.27 +C1.15.56 C2.15.26 C2.15.27 +C1.15.57 C2.15.27 +C1.15.58 C2.15.27 +C1.15.59 C2.15.27 +C1.15.60 C2.15.27 C2.15.28 +C1.15.61 C2.15.27 C2.15.28 C2.15.29 +C1.15.62 C2.15.27 C2.15.29 +C2.00.05 C3.00.02 +C2.00.06 C3.00.00 +C2.00.07 C3.00.01 C3.01.00 C3.01.02 +C2.00.08 C3.00.01 +C2.00.09 C3.00.02 +C2.00.10 C3.00.03 +C2.00.11 C3.00.01 C3.00.04 +C2.00.12 C3.00.02 C3.00.05 +C2.00.13 C3.00.03 C3.00.06 +C2.00.14 C3.00.04 C3.00.07 +C2.00.15 C3.00.05 C3.00.08 +C2.00.16 C3.00.06 C3.00.09 +C2.00.17 C3.00.07 +C2.00.18 C3.00.08 +C2.00.19 C3.00.09 +C2.00.20 C3.00.08 C3.00.10 +C2.00.21 C3.00.09 C3.00.11 +C2.00.22 C3.00.10 C3.00.12 +C2.00.23 C3.00.11 C3.00.13 +C2.00.24 C3.00.12 +C2.00.25 C3.00.13 +C2.00.26 C3.00.13 C3.00.14 +C2.00.27 C3.00.14 C3.00.15 C3.01.15 +C2.00.28 C3.00.15 C3.01.15 +C2.00.29 C3.00.15 +C2.01.04 C3.01.02 +C2.01.05 C3.01.01 C3.01.03 C3.02.00 +C2.01.06 C3.01.01 C3.01.02 +C2.01.07 C3.01.02 +C2.01.08 C3.01.01 C3.01.03 C3.02.00 +C2.01.09 C3.01.01 C3.01.02 C3.01.03 C3.01.05 +C2.01.10 C3.00.01 C3.01.00 C3.01.02 C3.01.04 +C2.01.11 C3.01.01 C3.01.02 C3.01.05 +C2.01.12 C3.01.03 C3.01.05 +C2.01.13 C3.01.04 C3.01.06 +C2.01.14 C3.01.03 C3.01.05 C3.01.07 C3.02.05 +C2.01.15 C3.01.05 +C2.01.16 C3.01.06 +C2.01.17 C3.01.05 C3.01.07 +C2.01.18 C3.01.06 C3.01.08 +C2.01.19 C3.01.07 C3.02.09 +C2.01.20 C3.00.07 C3.01.09 +C2.01.21 C3.01.08 C3.01.10 +C2.01.22 C3.01.09 C3.01.11 +C2.01.23 C3.01.10 +C2.01.24 C3.01.11 +C2.01.25 C3.01.11 C3.01.12 +C2.01.26 C3.00.12 C3.01.13 +C2.01.27 C3.01.12 C3.02.13 +C2.01.28 C3.01.13 C3.01.14 C3.01.15 +C2.01.29 C3.01.14 C3.02.14 +C2.01.30 C3.01.14 C3.01.15 +C2.01.31 C3.01.14 C3.01.15 C3.02.14 +C2.02.06 C3.02.00 +C2.02.07 C3.02.01 C3.02.02 +C2.02.08 C3.02.01 +C2.02.09 C3.02.00 C3.02.02 C3.02.03 +C2.02.10 C3.02.00 C3.02.01 C3.02.02 C3.02.03 C3.02.04 +C2.02.11 C3.01.03 C3.02.00 C3.02.03 C3.02.05 +C2.02.12 C3.02.01 C3.02.02 C3.02.04 +C2.02.13 C3.02.01 C3.02.02 C3.02.04 C3.02.06 C3.03.05 +C2.02.14 C3.02.03 C3.02.04 C3.02.05 C3.02.07 +C2.02.15 C3.02.04 C3.02.07 +C2.02.16 C3.01.07 C3.02.05 C3.02.07 C3.02.09 +C2.02.17 C3.02.04 C3.02.06 C3.02.07 C3.02.08 +C2.02.18 C3.02.07 C3.02.09 +C2.02.19 C3.02.07 C3.02.08 C3.02.09 C3.02.10 +C2.02.20 C3.02.09 +C2.02.21 C3.02.08 C3.02.10 C3.03.10 C3.03.12 +C2.02.22 C3.02.09 C3.02.10 +C2.02.23 C3.02.10 C3.03.12 +C2.02.24 C3.01.10 C3.02.11 +C2.02.25 C3.02.11 C3.02.12 +C2.02.26 C3.02.12 +C2.02.27 C3.02.13 +C2.02.28 C3.02.13 C3.03.15 +C2.02.29 C3.02.14 C3.02.15 +C2.02.30 C3.02.14 C3.02.15 +C2.02.31 C3.02.15 +C2.03.01 C3.03.02 +C2.03.02 C3.03.02 +C2.03.03 C3.03.02 C3.03.03 +C2.03.04 C3.03.00 C3.03.03 C3.03.04 +C2.03.05 C3.03.00 C3.03.01 C3.03.04 C3.04.01 C3.04.04 +C2.03.06 C3.02.01 C3.03.02 C3.03.05 +C2.03.07 C3.03.02 C3.03.03 C3.03.05 C3.03.06 +C2.03.08 C3.03.02 C3.03.03 C3.03.06 +C2.03.09 C3.03.03 C3.03.04 C3.03.06 C3.03.07 +C2.03.10 C3.03.04 C3.03.07 C3.04.04 C3.04.07 +C2.03.11 C3.02.06 C3.03.05 C3.03.06 C3.03.08 +C2.03.12 C3.03.06 C3.03.08 +C2.03.13 C3.03.06 C3.03.07 C3.03.08 C3.03.09 +C2.03.14 C3.03.07 C3.03.09 C3.04.07 C3.04.09 +C2.03.15 C3.02.06 C3.02.08 C3.03.08 C3.03.10 +C2.03.16 C3.03.08 C3.03.10 +C2.03.17 C3.03.08 C3.03.09 C3.03.10 C3.03.11 +C2.03.18 C3.03.09 C3.03.11 C3.04.09 C3.04.11 +C2.03.19 C3.03.10 C3.03.12 +C2.03.20 C3.03.10 C3.03.11 C3.03.12 C3.03.13 +C2.03.21 C3.03.11 C3.03.13 C3.04.11 C3.04.13 +C2.03.22 C3.03.12 +C2.03.23 C3.03.12 C3.03.13 +C2.03.24 C3.03.13 C3.04.13 +C2.03.25 C3.02.12 C3.03.14 +C2.03.26 C3.03.14 C3.04.14 +C2.03.27 C3.03.15 +C2.03.28 C3.03.15 C3.04.15 +C2.03.29 C3.03.15 +C2.03.30 C3.03.15 C3.04.15 +C2.04.02 C3.04.02 +C2.04.03 C3.04.02 C3.04.03 +C2.04.04 C3.04.00 C3.04.03 C3.04.04 +C2.04.05 C3.04.00 C3.04.01 C3.04.04 +C2.04.06 C3.04.02 C3.04.05 C3.05.02 +C2.04.07 C3.04.02 C3.04.05 +C2.04.08 C3.04.02 C3.04.03 C3.04.05 C3.04.06 +C2.04.09 C3.04.03 C3.04.04 C3.04.06 C3.04.07 +C2.04.10 C3.04.04 C3.04.07 +C2.04.11 C3.04.05 C3.05.06 +C2.04.12 C3.04.05 C3.04.06 C3.04.08 C3.05.06 +C2.04.13 C3.04.06 C3.04.07 C3.04.08 C3.04.09 +C2.04.14 C3.04.07 C3.04.09 +C2.04.15 C3.05.06 C3.05.08 +C2.04.16 C3.04.08 C3.04.10 C3.05.06 C3.05.08 +C2.04.17 C3.04.08 C3.04.09 C3.04.10 C3.04.11 +C2.04.18 C3.04.09 C3.04.11 +C2.04.19 C3.04.10 C3.04.12 C3.05.08 C3.05.10 +C2.04.20 C3.04.10 C3.04.11 C3.04.12 C3.04.13 +C2.04.21 C3.04.11 C3.04.13 +C2.04.22 C3.04.12 C3.05.10 +C2.04.23 C3.04.12 C3.04.13 +C2.04.24 C3.04.13 +C2.04.25 C3.04.14 C3.05.12 +C2.04.26 C3.04.14 +C2.04.27 C3.04.15 +C2.04.28 C3.04.15 +C2.04.29 C3.04.15 +C2.04.30 C3.04.15 +C2.05.06 C3.05.00 +C2.05.07 C3.05.01 +C2.05.08 C3.05.01 C3.05.02 +C2.05.09 C3.05.00 C3.05.01 C3.05.03 +C2.05.10 C3.05.01 C3.05.03 +C2.05.11 C3.05.00 C3.05.03 C3.05.05 C3.06.02 +C2.05.12 C3.05.01 C3.05.02 C3.05.03 C3.05.04 +C2.05.13 C3.04.05 C3.05.02 C3.05.04 C3.05.06 +C2.05.14 C3.05.03 C3.05.05 +C2.05.15 C3.05.03 C3.05.04 C3.05.05 C3.05.07 +C2.05.16 C3.05.05 C3.06.06 +C2.05.17 C3.05.04 C3.05.06 C3.05.07 C3.05.08 +C2.05.18 C3.05.05 C3.05.07 C3.05.09 C3.06.06 +C2.05.19 C3.05.07 C3.05.08 C3.05.09 C3.05.10 +C2.05.20 C3.05.09 C3.06.06 +C2.05.21 C3.05.08 C3.05.10 +C2.05.22 C3.05.09 C3.05.10 +C2.05.23 C3.05.10 +C2.05.24 C3.05.11 C3.06.09 +C2.05.25 C3.05.11 +C2.05.26 C3.05.11 C3.05.12 +C2.05.27 C3.05.13 C3.06.11 +C2.05.28 C3.04.15 C3.05.13 +C2.05.29 C3.06.12 C3.06.13 +C2.05.30 C3.05.14 C3.06.13 C3.06.15 +C2.05.31 C3.05.14 +C2.06.05 C3.06.00 +C2.06.06 C3.06.00 +C2.06.07 C3.06.00 C3.06.01 +C2.06.08 C3.05.00 C3.06.00 C3.06.02 +C2.06.09 C3.06.00 +C2.06.10 C3.06.01 C3.06.03 C3.07.01 +C2.06.11 C3.06.00 C3.06.01 +C2.06.12 C3.06.00 C3.06.02 C3.06.04 +C2.06.13 C3.06.03 +C2.06.14 C3.05.05 C3.06.02 C3.06.04 C3.06.06 +C2.06.15 C3.06.00 C3.06.01 C3.06.04 +C2.06.16 C3.06.03 C3.06.05 +C2.06.17 C3.06.04 C3.06.06 +C2.06.18 C3.06.05 C3.06.07 +C2.06.19 C3.06.06 +C2.06.20 C3.06.08 C3.07.07 +C2.06.21 C3.06.07 +C2.06.22 C3.06.08 +C2.06.23 C3.06.07 C3.06.09 +C2.06.24 C3.06.08 C3.06.10 +C2.06.25 C3.06.10 C3.06.11 +C2.06.26 C3.06.12 C3.07.12 +C2.06.27 C3.06.11 +C2.06.28 C3.06.12 +C2.06.29 C3.06.12 C3.06.13 C3.06.14 C3.06.15 +C2.06.30 C3.06.12 C3.06.14 C3.06.15 +C2.06.31 C3.06.13 C3.06.14 C3.06.15 +C2.07.06 C3.07.00 +C2.07.07 C3.07.01 +C2.07.08 C3.07.01 C3.07.02 +C2.07.09 C3.07.02 +C2.07.10 C3.07.00 C3.07.03 +C2.07.11 C3.07.01 C3.07.04 +C2.07.12 C3.07.02 C3.07.05 +C2.07.13 C3.07.03 C3.07.06 +C2.07.14 C3.07.04 +C2.07.15 C3.07.05 +C2.07.16 C3.07.06 +C2.07.17 C3.07.04 C3.07.07 +C2.07.18 C3.07.05 C3.07.08 +C2.07.19 C3.07.06 C3.07.09 +C2.07.20 C3.07.08 C3.07.10 +C2.07.21 C3.07.09 C3.07.11 +C2.07.22 C3.07.10 +C2.07.23 C3.07.11 +C2.07.24 C3.07.10 C3.07.12 +C2.07.25 C3.07.11 C3.07.13 +C2.07.26 C3.07.13 C3.07.14 +C2.07.27 C3.07.14 +C2.07.28 C3.06.14 C3.07.14 C3.07.15 +C2.07.29 C3.07.14 C3.07.15 +C2.08.06 C3.08.00 +C2.08.07 C3.08.01 C3.09.00 +C2.08.08 C3.08.01 +C2.08.09 C3.08.02 +C2.08.10 C3.08.00 C3.08.03 +C2.08.11 C3.08.01 C3.08.04 +C2.08.12 C3.08.02 C3.08.05 +C2.08.13 C3.08.03 C3.08.06 +C2.08.14 C3.08.04 +C2.08.15 C3.08.05 +C2.08.16 C3.08.06 +C2.08.17 C3.08.04 C3.08.07 +C2.08.18 C3.08.05 C3.08.08 +C2.08.19 C3.08.06 C3.08.09 +C2.08.20 C3.08.08 C3.08.10 +C2.08.21 C3.08.09 C3.08.11 +C2.08.22 C3.08.10 +C2.08.23 C3.08.11 +C2.08.24 C3.08.10 C3.08.12 +C2.08.25 C3.08.11 C3.08.13 +C2.08.26 C3.08.13 C3.08.14 +C2.08.27 C3.08.14 +C2.08.28 C3.08.14 C3.08.15 C3.09.15 +C2.08.29 C3.08.14 C3.08.15 +C2.09.05 C3.09.01 +C2.09.06 C3.09.02 +C2.09.07 C3.09.02 +C2.09.08 C3.09.01 C3.09.03 C3.10.00 +C2.09.09 C3.09.01 C3.09.02 +C2.09.10 C3.08.01 C3.09.00 C3.09.02 C3.09.04 +C2.09.11 C3.09.01 C3.09.02 +C2.09.12 C3.09.01 C3.09.03 C3.09.05 +C2.09.13 C3.09.04 +C2.09.14 C3.09.03 C3.09.05 C3.09.07 C3.10.05 +C2.09.15 C3.09.01 C3.09.02 C3.09.05 +C2.09.16 C3.09.04 C3.09.06 +C2.09.17 C3.09.05 C3.09.07 +C2.09.18 C3.09.06 C3.09.08 +C2.09.19 C3.09.07 +C2.09.20 C3.08.07 C3.09.09 +C2.09.21 C3.09.08 +C2.09.22 C3.09.09 +C2.09.23 C3.09.08 C3.09.10 +C2.09.24 C3.09.09 C3.09.11 +C2.09.25 C3.09.11 C3.09.12 +C2.09.26 C3.08.12 C3.09.13 +C2.09.27 C3.09.12 +C2.09.28 C3.09.13 +C2.09.29 C3.09.13 C3.09.14 C3.10.14 +C2.09.30 C3.09.13 C3.09.14 C3.09.15 +C2.09.31 C3.09.14 C3.09.15 C3.10.14 +C2.10.06 C3.10.00 +C2.10.07 C3.10.01 C3.10.02 +C2.10.08 C3.10.01 C3.10.02 +C2.10.09 C3.10.00 C3.10.03 +C2.10.10 C3.10.00 C3.10.02 C3.10.03 +C2.10.11 C3.09.03 C3.10.00 C3.10.03 C3.10.05 +C2.10.12 C3.10.01 C3.10.02 C3.10.03 C3.10.04 +C2.10.13 C3.10.01 C3.10.02 C3.10.04 C3.10.06 C3.11.05 +C2.10.14 C3.10.03 C3.10.05 +C2.10.15 C3.10.03 C3.10.04 C3.10.05 C3.10.07 +C2.10.16 C3.09.07 C3.10.05 +C2.10.17 C3.10.04 C3.10.06 C3.10.07 C3.10.08 +C2.10.18 C3.09.07 C3.10.05 C3.10.07 C3.10.09 +C2.10.19 C3.10.07 C3.10.08 C3.10.09 C3.10.10 +C2.10.20 C3.09.07 C3.10.09 +C2.10.21 C3.10.08 C3.10.10 +C2.10.22 C3.10.09 C3.10.10 +C2.10.23 C3.10.10 +C2.10.24 C3.09.10 C3.10.11 +C2.10.25 C3.10.11 +C2.10.26 C3.10.11 C3.10.12 +C2.10.27 C3.09.12 C3.10.13 +C2.10.28 C3.10.13 C3.11.15 +C2.10.29 C3.09.14 C3.10.14 C3.10.15 +C2.10.30 C3.10.14 C3.10.15 +C2.10.31 C3.10.15 +C2.11.02 C3.11.02 +C2.11.03 C3.11.02 C3.11.03 +C2.11.04 C3.11.00 C3.11.03 C3.11.04 +C2.11.05 C3.11.00 C3.11.01 C3.11.04 +C2.11.06 C3.10.01 C3.11.02 C3.11.05 +C2.11.07 C3.11.02 C3.11.05 +C2.11.08 C3.11.02 C3.11.03 C3.11.05 C3.11.06 +C2.11.09 C3.11.03 C3.11.04 C3.11.06 C3.11.07 +C2.11.10 C3.11.04 C3.11.07 +C2.11.11 C3.10.06 C3.11.05 +C2.11.12 C3.10.06 C3.11.05 C3.11.06 C3.11.08 +C2.11.13 C3.11.06 C3.11.07 C3.11.08 C3.11.09 +C2.11.14 C3.11.07 C3.11.09 +C2.11.15 C3.10.06 C3.10.08 +C2.11.16 C3.10.06 C3.10.08 C3.11.08 C3.11.10 +C2.11.17 C3.11.08 C3.11.09 C3.11.10 C3.11.11 +C2.11.18 C3.11.09 C3.11.11 +C2.11.19 C3.10.08 C3.10.10 C3.11.10 C3.11.12 +C2.11.20 C3.11.10 C3.11.11 C3.11.12 C3.11.13 +C2.11.21 C3.11.11 C3.11.13 +C2.11.22 C3.10.10 C3.11.12 +C2.11.23 C3.11.12 C3.11.13 +C2.11.24 C3.11.13 +C2.11.25 C3.10.12 C3.11.14 +C2.11.26 C3.11.14 +C2.11.27 C3.11.15 +C2.11.28 C3.11.15 +C2.11.29 C3.11.15 +C2.11.30 C3.11.15 +C2.12.02 C3.12.02 +C2.12.03 C3.12.02 C3.12.03 +C2.12.04 C3.12.00 C3.12.03 C3.12.04 +C2.12.05 C3.11.01 C3.11.04 C3.12.00 C3.12.01 C3.12.04 +C2.12.06 C3.12.02 C3.12.05 C3.13.02 +C2.12.07 C3.12.02 C3.12.03 C3.12.05 C3.12.06 +C2.12.08 C3.12.02 C3.12.03 C3.12.06 +C2.12.09 C3.12.03 C3.12.04 C3.12.06 C3.12.07 +C2.12.10 C3.11.04 C3.11.07 C3.12.04 C3.12.07 +C2.12.11 C3.12.05 C3.12.06 C3.12.08 C3.13.06 +C2.12.12 C3.12.06 C3.12.08 +C2.12.13 C3.12.06 C3.12.07 C3.12.08 C3.12.09 +C2.12.14 C3.11.07 C3.11.09 C3.12.07 C3.12.09 +C2.12.15 C3.12.08 C3.12.10 C3.13.06 C3.13.08 +C2.12.16 C3.12.08 C3.12.10 +C2.12.17 C3.12.08 C3.12.09 C3.12.10 C3.12.11 +C2.12.18 C3.11.09 C3.11.11 C3.12.09 C3.12.11 +C2.12.19 C3.12.10 C3.12.12 +C2.12.20 C3.12.10 C3.12.11 C3.12.12 C3.12.13 +C2.12.21 C3.11.11 C3.11.13 C3.12.11 C3.12.13 +C2.12.22 C3.12.12 +C2.12.23 C3.12.12 C3.12.13 +C2.12.24 C3.11.13 C3.12.13 +C2.12.25 C3.12.14 C3.13.12 +C2.12.26 C3.11.14 C3.12.14 +C2.12.27 C3.12.15 +C2.12.28 C3.11.15 C3.12.15 +C2.12.29 C3.12.15 +C2.12.30 C3.11.15 C3.12.15 +C2.13.06 C3.13.00 +C2.13.07 C3.13.01 +C2.13.08 C3.13.01 C3.13.02 +C2.13.09 C3.13.00 C3.13.01 C3.13.03 +C2.13.10 C3.13.01 C3.13.02 C3.13.03 C3.13.04 +C2.13.11 C3.13.00 C3.13.03 C3.13.05 C3.14.02 +C2.13.12 C3.13.01 C3.13.02 C3.13.04 +C2.13.13 C3.12.05 C3.13.02 C3.13.04 C3.13.06 +C2.13.14 C3.13.03 C3.13.04 C3.13.05 C3.13.07 +C2.13.15 C3.13.04 C3.13.07 +C2.13.16 C3.13.05 C3.13.07 C3.13.09 C3.14.06 +C2.13.17 C3.13.04 C3.13.06 C3.13.07 C3.13.08 +C2.13.18 C3.13.07 C3.13.09 +C2.13.19 C3.13.07 C3.13.08 C3.13.09 C3.13.10 +C2.13.20 C3.13.09 +C2.13.21 C3.12.10 C3.12.12 C3.13.08 C3.13.10 +C2.13.22 C3.13.09 C3.13.10 +C2.13.23 C3.12.12 C3.13.10 +C2.13.24 C3.13.11 C3.14.09 +C2.13.25 C3.13.11 C3.13.12 +C2.13.26 C3.13.12 +C2.13.27 C3.13.13 +C2.13.28 C3.12.15 C3.13.13 +C2.13.29 C3.13.14 C3.14.13 +C2.13.30 C3.13.14 C3.14.15 +C2.13.31 C3.13.14 +C2.14.04 C3.14.01 +C2.14.05 C3.13.00 C3.14.00 C3.14.02 +C2.14.06 C3.14.00 +C2.14.07 C3.14.00 C3.14.01 +C2.14.08 C3.13.00 C3.14.00 C3.14.02 +C2.14.09 C3.14.00 C3.14.02 C3.14.04 +C2.14.10 C3.14.01 C3.14.03 C3.15.01 +C2.14.11 C3.14.00 C3.14.01 C3.14.04 +C2.14.12 C3.14.02 C3.14.04 +C2.14.13 C3.14.03 C3.14.05 +C2.14.14 C3.13.05 C3.14.02 C3.14.04 C3.14.06 +C2.14.15 C3.14.04 +C2.14.16 C3.14.05 +C2.14.17 C3.14.04 C3.14.06 +C2.14.18 C3.14.05 C3.14.07 +C2.14.19 C3.13.09 C3.14.06 +C2.14.20 C3.14.08 C3.15.07 +C2.14.21 C3.14.07 C3.14.09 +C2.14.22 C3.14.08 C3.14.10 +C2.14.23 C3.14.09 +C2.14.24 C3.14.10 +C2.14.25 C3.14.10 C3.14.11 +C2.14.26 C3.14.12 C3.15.12 +C2.14.27 C3.13.13 C3.14.11 +C2.14.28 C3.14.12 C3.14.13 C3.14.14 +C2.14.29 C3.14.13 C3.14.14 C3.14.15 +C2.14.30 C3.14.14 C3.14.15 +C2.14.31 C3.14.14 C3.14.15 +C2.15.05 C3.15.02 +C2.15.06 C3.15.00 +C2.15.07 C3.14.01 C3.15.01 +C2.15.08 C3.15.01 C3.15.02 +C2.15.09 C3.15.02 +C2.15.10 C3.15.03 +C2.15.11 C3.15.01 C3.15.04 +C2.15.12 C3.15.02 C3.15.05 +C2.15.13 C3.15.03 C3.15.06 +C2.15.14 C3.15.04 C3.15.07 +C2.15.15 C3.15.05 C3.15.08 +C2.15.16 C3.15.06 C3.15.09 +C2.15.17 C3.15.07 +C2.15.18 C3.15.08 +C2.15.19 C3.15.09 +C2.15.20 C3.15.08 C3.15.10 +C2.15.21 C3.15.09 C3.15.11 +C2.15.22 C3.15.10 C3.15.12 +C2.15.23 C3.15.11 C3.15.13 +C2.15.24 C3.15.12 +C2.15.25 C3.15.13 +C2.15.26 C3.15.13 C3.15.14 +C2.15.27 C3.14.14 C3.15.14 C3.15.15 +C2.15.28 C3.14.14 C3.15.15 +C2.15.29 C3.15.15 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext.txt new file mode 100755 index 0000000000000000000000000000000000000000..8526b47881f25cd595b372a15f14cdc7d2c2a070 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext.txt @@ -0,0 +1,2483 @@ +# 3D FCal Neighbors Next in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Mar 10 11:15:50 2004 +# +# 3d neighbors next in sampling are all cells touching the same +# eta phi area in the next sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without next sampling neighbors are not listed. +# +A1.00.15 A2.00.00 +A1.00.16 A2.00.01 A2.00.00 +A1.00.17 A2.00.02 A2.00.01 +A1.00.18 A2.00.03 +A1.00.19 A2.00.04 A2.00.03 +A1.00.20 A2.00.04 +A1.00.21 A2.00.05 +A1.00.22 A2.00.06 A2.00.05 +A1.00.23 A2.00.06 +A1.00.24 A2.00.08 A2.00.07 +A1.00.25 A2.00.08 +A1.00.26 A2.00.09 +A1.00.27 A2.00.10 A2.00.09 +A1.00.28 A2.00.10 +A1.00.29 A2.00.11 A2.01.10 +A1.00.30 A2.00.11 +A1.00.31 A2.00.12 +A1.00.32 A2.00.13 A2.00.12 +A1.00.33 A2.00.13 +A1.00.34 A2.00.14 +A1.00.35 A2.00.15 +A1.00.36 A2.00.16 A2.00.15 +A1.00.37 A2.00.16 +A1.00.38 A2.00.17 +A1.00.39 A2.00.18 +A1.00.40 A2.00.19 A2.00.18 +A1.00.41 A2.00.19 +A1.00.42 A2.01.20 +A1.00.43 A2.00.20 +A1.00.44 A2.00.21 A2.00.20 +A1.00.45 A2.00.21 +A1.00.46 A2.00.22 +A1.00.47 A2.00.23 A2.00.22 +A1.00.48 A2.00.23 +A1.00.49 A2.00.24 +A1.00.50 A2.00.25 A2.00.24 +A1.00.51 A2.00.25 +A1.00.52 A2.00.26 A2.01.26 +A1.00.53 A2.00.26 +A1.00.54 A2.00.27 +A1.00.55 A2.00.27 +A1.00.56 A2.00.27 +A1.00.57 A2.00.27 +A1.00.58 A2.00.27 +A1.00.59 A2.00.27 +A1.00.60 A2.00.28 +A1.00.61 A2.00.29 A2.00.28 +A1.00.62 A2.00.29 +A1.01.12 A2.01.01 +A1.01.13 A2.00.03 +A1.01.14 A2.01.06 +A1.01.15 A2.01.03 A2.01.01 +A1.01.16 A2.01.04 A2.01.02 +A1.01.17 A2.01.05 A2.02.06 A2.01.00 +A1.01.18 A2.01.06 +A1.01.19 A2.01.04 +A1.01.20 A2.01.05 +A1.01.21 A2.00.07 +A1.01.22 A2.01.07 A2.01.06 +A1.01.23 A2.01.09 +A1.01.24 A2.01.07 +A1.01.25 A2.01.08 +A1.01.26 A2.01.10 +A1.01.27 A2.01.11 A2.01.09 +A1.01.28 A2.01.12 +A1.01.29 A2.01.11 +A1.01.30 A2.01.15 A2.01.12 +A1.01.31 A2.01.13 +A1.01.32 A2.01.14 +A1.01.33 A2.00.14 A2.01.13 +A1.01.34 A2.01.15 +A1.01.35 A2.01.17 A2.01.14 +A1.01.36 A2.01.16 +A1.01.37 A2.01.17 +A1.01.38 A2.00.17 A2.01.16 +A1.01.39 A2.01.18 +A1.01.40 A2.01.19 +A1.01.41 A2.01.20 A2.01.18 +A1.01.42 A2.01.21 +A1.01.43 A2.01.22 A2.01.21 +A1.01.44 A2.01.23 +A1.01.45 A2.01.22 +A1.01.46 A2.01.24 A2.01.23 +A1.01.47 A2.01.24 +A1.01.48 A2.01.25 A2.02.24 +A1.01.49 A2.01.25 +A1.01.50 A2.01.26 +A1.01.51 A2.01.27 +A1.01.52 A2.01.28 +A1.01.53 A2.01.28 +A1.01.54 A2.01.28 +A1.01.55 A2.01.28 +A1.01.56 A2.01.28 +A1.01.57 A2.01.29 +A1.01.58 A2.01.28 +A1.01.59 A2.01.30 A2.01.29 +A1.01.60 A2.01.30 +A1.01.61 A2.01.31 A2.02.29 +A1.01.62 A2.01.31 +A1.02.11 A2.02.06 A2.01.00 A2.02.00 +A1.02.12 A2.02.03 +A1.02.13 A2.03.01 A2.02.04 A2.02.02 +A1.02.14 A2.02.07 A2.02.01 +A1.02.15 A2.02.07 A2.02.05 A2.02.03 +A1.02.16 A2.02.06 A2.02.00 +A1.02.17 A2.02.08 A2.02.04 A2.02.02 +A1.02.18 A2.02.07 +A1.02.19 A2.02.09 +A1.02.20 A2.01.08 A2.02.06 +A1.02.21 A2.02.08 +A1.02.22 A2.02.10 +A1.02.23 A2.02.11 A2.02.09 +A1.02.24 A2.03.06 +A1.02.25 A2.02.12 +A1.02.26 A2.02.14 A2.02.10 +A1.02.27 A2.02.11 +A1.02.28 A2.02.13 +A1.02.29 A2.02.15 A2.02.12 +A1.02.30 A2.02.14 +A1.02.31 A2.02.17 A2.02.13 +A1.02.32 A2.02.15 +A1.02.33 A2.02.16 +A1.02.34 A2.02.17 +A1.02.35 A2.01.19 A2.02.16 +A1.02.36 A2.02.18 +A1.02.37 A2.03.15 +A1.02.38 A2.02.19 +A1.02.39 A2.02.20 A2.02.18 +A1.02.40 A2.02.21 +A1.02.41 A2.02.22 A2.02.19 +A1.02.42 A2.02.20 +A1.02.43 A2.02.23 A2.02.21 +A1.02.44 A2.02.22 +A1.02.45 A2.02.23 +A1.02.46 A2.02.24 +A1.02.47 A2.03.22 +A1.02.48 A2.02.25 +A1.02.49 A2.02.26 +A1.02.50 A2.01.27 A2.02.25 +A1.02.51 A2.02.27 A2.02.26 +A1.02.52 A2.02.27 +A1.02.53 A2.02.27 +A1.02.54 A2.02.27 +A1.02.55 A2.02.28 +A1.02.56 A2.02.27 +A1.02.57 A2.02.28 +A1.02.58 A2.02.29 +A1.02.59 A2.02.28 +A1.02.60 A2.02.30 A2.02.31 +A1.02.61 A2.02.30 A2.02.31 +A1.02.62 A2.02.31 +A1.03.12 A2.03.00 +A1.03.13 A2.03.00 +A1.03.14 A2.03.00 +A1.03.15 A2.03.01 +A1.03.16 A2.03.02 +A1.03.17 A2.03.03 +A1.03.18 A2.03.04 +A1.03.19 A2.03.05 +A1.03.20 A2.03.06 A2.03.01 +A1.03.21 A2.03.07 A2.03.02 +A1.03.22 A2.03.08 A2.03.03 +A1.03.23 A2.03.09 A2.03.04 +A1.03.24 A2.03.10 A2.03.05 +A1.03.25 A2.03.07 +A1.03.26 A2.03.08 +A1.03.27 A2.03.09 +A1.03.28 A2.03.10 +A1.03.29 A2.03.11 +A1.03.30 A2.03.12 +A1.03.31 A2.03.13 +A1.03.32 A2.03.14 +A1.03.33 A2.03.15 A2.03.11 +A1.03.34 A2.03.16 A2.03.12 +A1.03.35 A2.03.17 A2.03.13 +A1.03.36 A2.03.18 A2.03.14 +A1.03.37 A2.03.16 +A1.03.38 A2.03.17 +A1.03.39 A2.03.18 +A1.03.40 A2.03.19 +A1.03.41 A2.03.20 +A1.03.42 A2.03.21 +A1.03.43 A2.03.22 A2.03.19 +A1.03.44 A2.03.23 A2.03.20 +A1.03.45 A2.03.24 A2.03.21 +A1.03.46 A2.03.23 +A1.03.47 A2.03.24 +A1.03.48 A2.03.25 +A1.03.49 A2.03.26 +A1.03.50 A2.03.25 +A1.03.51 A2.03.25 +A1.03.52 A2.03.26 +A1.03.53 A2.03.26 +A1.03.54 A2.02.28 +A1.03.55 A2.02.28 +A1.03.56 A2.03.27 +A1.03.57 A2.03.28 +A1.03.58 A2.02.28 +A1.03.59 A2.03.29 A2.03.27 +A1.03.60 A2.03.30 A2.03.28 +A1.03.61 A2.03.29 +A1.03.62 A2.03.30 +A1.04.12 A2.04.00 +A1.04.13 A2.04.00 +A1.04.14 A2.04.00 +A1.04.15 A2.04.01 +A1.04.16 A2.04.02 +A1.04.17 A2.04.03 +A1.04.18 A2.04.04 +A1.04.19 A2.04.05 +A1.04.20 A2.04.06 A2.04.01 +A1.04.21 A2.04.07 A2.04.02 +A1.04.22 A2.04.08 A2.04.03 +A1.04.23 A2.04.09 A2.04.04 +A1.04.24 A2.04.10 A2.04.05 +A1.04.25 A2.04.07 +A1.04.26 A2.04.08 +A1.04.27 A2.04.09 +A1.04.28 A2.04.10 +A1.04.29 A2.04.11 +A1.04.30 A2.04.12 +A1.04.31 A2.04.13 +A1.04.32 A2.04.14 +A1.04.33 A2.04.15 A2.04.11 +A1.04.34 A2.04.16 A2.04.12 +A1.04.35 A2.04.17 A2.04.13 +A1.04.36 A2.04.18 A2.04.14 +A1.04.37 A2.04.16 +A1.04.38 A2.04.17 +A1.04.39 A2.04.18 +A1.04.40 A2.04.19 +A1.04.41 A2.04.20 +A1.04.42 A2.04.21 +A1.04.43 A2.04.22 A2.04.19 +A1.04.44 A2.04.23 A2.04.20 +A1.04.45 A2.04.24 A2.04.21 +A1.04.46 A2.04.23 +A1.04.47 A2.04.24 +A1.04.48 A2.04.25 +A1.04.49 A2.04.26 +A1.04.50 A2.04.25 +A1.04.51 A2.04.25 +A1.04.52 A2.04.26 +A1.04.53 A2.04.26 +A1.04.54 A2.05.28 +A1.04.55 A2.05.28 +A1.04.56 A2.04.27 +A1.04.57 A2.04.28 +A1.04.58 A2.05.28 +A1.04.59 A2.04.29 A2.04.27 +A1.04.60 A2.04.30 A2.04.28 +A1.04.61 A2.04.29 +A1.04.62 A2.04.30 +A1.05.12 A2.05.03 +A1.05.13 A2.05.01 +A1.05.14 A2.05.02 A2.05.04 A2.04.01 +A1.05.15 A2.05.07 A2.05.00 +A1.05.16 A2.05.03 A2.05.05 A2.05.07 +A1.05.17 A2.05.06 +A1.05.18 A2.05.08 A2.05.02 A2.05.04 +A1.05.19 A2.05.07 +A1.05.20 A2.05.09 +A1.05.21 A2.06.08 A2.05.06 +A1.05.22 A2.05.08 +A1.05.23 A2.05.10 +A1.05.24 A2.05.11 A2.05.09 +A1.05.25 A2.04.06 +A1.05.26 A2.05.12 +A1.05.27 A2.05.14 A2.05.10 +A1.05.28 A2.05.11 +A1.05.29 A2.05.13 +A1.05.30 A2.05.15 A2.05.12 +A1.05.31 A2.05.14 +A1.05.32 A2.05.17 A2.05.13 +A1.05.33 A2.05.15 +A1.05.34 A2.05.16 +A1.05.35 A2.05.17 +A1.05.36 A2.05.18 +A1.05.37 A2.06.19 A2.05.16 +A1.05.38 A2.04.15 +A1.05.39 A2.05.19 +A1.05.40 A2.05.20 A2.05.18 +A1.05.41 A2.05.21 +A1.05.42 A2.05.22 A2.05.19 +A1.05.43 A2.05.20 +A1.05.44 A2.05.23 A2.05.21 +A1.05.45 A2.05.22 +A1.05.46 A2.05.23 +A1.05.47 A2.05.24 +A1.05.48 A2.04.22 +A1.05.49 A2.05.25 +A1.05.50 A2.05.26 +A1.05.51 A2.06.27 A2.05.25 +A1.05.52 A2.05.27 A2.05.26 +A1.05.53 A2.05.27 +A1.05.54 A2.05.27 +A1.05.55 A2.05.27 +A1.05.56 A2.05.28 +A1.05.57 A2.05.27 +A1.05.58 A2.05.28 +A1.05.59 A2.05.30 A2.05.29 +A1.05.60 A2.05.28 +A1.05.61 A2.05.30 A2.05.31 +A1.05.62 A2.05.31 +A1.06.12 A2.06.05 +A1.06.13 A2.07.03 +A1.06.14 A2.06.02 +A1.06.15 A2.06.01 A2.06.05 +A1.06.16 A2.06.04 A2.06.02 +A1.06.17 A2.06.05 A2.06.03 A2.06.00 A2.05.01 +A1.06.18 A2.06.06 +A1.06.19 A2.06.04 +A1.06.20 A2.06.05 +A1.06.21 A2.07.07 +A1.06.22 A2.06.07 A2.06.06 +A1.06.23 A2.06.09 +A1.06.24 A2.06.07 +A1.06.25 A2.06.08 +A1.06.26 A2.06.10 +A1.06.27 A2.06.11 A2.06.09 +A1.06.28 A2.06.12 +A1.06.29 A2.06.11 +A1.06.30 A2.06.15 A2.06.12 +A1.06.31 A2.06.13 +A1.06.32 A2.06.14 +A1.06.33 A2.07.14 A2.06.13 +A1.06.34 A2.06.15 +A1.06.35 A2.06.17 A2.06.14 +A1.06.36 A2.06.16 +A1.06.37 A2.06.17 +A1.06.38 A2.07.17 A2.06.16 +A1.06.39 A2.06.18 +A1.06.40 A2.06.19 +A1.06.41 A2.06.20 A2.06.18 +A1.06.42 A2.06.21 +A1.06.43 A2.06.22 A2.06.21 +A1.06.44 A2.06.23 +A1.06.45 A2.06.22 +A1.06.46 A2.06.24 A2.06.23 +A1.06.47 A2.06.24 +A1.06.48 A2.06.25 A2.05.24 +A1.06.49 A2.06.25 +A1.06.50 A2.06.26 +A1.06.51 A2.06.27 +A1.06.52 A2.06.28 +A1.06.53 A2.06.28 +A1.06.54 A2.06.28 +A1.06.55 A2.06.28 +A1.06.56 A2.05.29 +A1.06.57 A2.06.28 +A1.06.58 A2.06.29 +A1.06.59 A2.06.30 +A1.06.60 A2.06.31 A2.06.29 +A1.06.61 A2.06.31 A2.06.30 A2.05.30 +A1.06.62 A2.06.31 A2.06.30 +A1.07.14 A2.07.00 +A1.07.15 A2.07.02 A2.07.00 +A1.07.16 A2.07.01 A2.07.02 +A1.07.17 A2.07.03 +A1.07.18 A2.07.04 A2.07.03 +A1.07.19 A2.07.04 +A1.07.20 A2.07.05 +A1.07.21 A2.07.06 A2.07.05 +A1.07.22 A2.07.06 +A1.07.23 A2.07.08 A2.07.07 +A1.07.24 A2.07.08 +A1.07.25 A2.07.09 +A1.07.26 A2.07.10 A2.07.09 +A1.07.27 A2.07.10 +A1.07.28 A2.07.11 A2.06.10 +A1.07.29 A2.07.11 +A1.07.30 A2.07.12 +A1.07.31 A2.07.13 A2.07.12 +A1.07.32 A2.07.13 +A1.07.33 A2.07.14 +A1.07.34 A2.07.15 +A1.07.35 A2.07.16 A2.07.15 +A1.07.36 A2.07.16 +A1.07.37 A2.07.17 +A1.07.38 A2.07.18 +A1.07.39 A2.07.19 A2.07.18 +A1.07.40 A2.07.19 +A1.07.41 A2.06.20 +A1.07.42 A2.07.20 +A1.07.43 A2.07.21 A2.07.20 +A1.07.44 A2.07.21 +A1.07.45 A2.07.22 +A1.07.46 A2.07.23 A2.07.22 +A1.07.47 A2.07.23 +A1.07.48 A2.07.24 +A1.07.49 A2.07.25 A2.07.24 +A1.07.50 A2.07.25 +A1.07.51 A2.07.26 A2.06.26 +A1.07.52 A2.07.26 +A1.07.53 A2.06.28 +A1.07.54 A2.07.27 +A1.07.55 A2.07.27 +A1.07.56 A2.07.27 +A1.07.57 A2.07.27 +A1.07.58 A2.07.27 +A1.07.59 A2.07.27 +A1.07.60 A2.07.28 +A1.07.61 A2.07.29 A2.07.28 +A1.07.62 A2.07.29 +A1.08.15 A2.08.02 +A1.08.16 A2.08.02 A2.08.01 +A1.08.17 A2.08.01 A2.08.00 +A1.08.18 A2.08.03 +A1.08.19 A2.08.03 A2.08.04 +A1.08.20 A2.08.04 +A1.08.21 A2.08.05 +A1.08.22 A2.08.05 A2.08.06 +A1.08.23 A2.08.06 +A1.08.24 A2.08.07 A2.08.08 +A1.08.25 A2.08.08 +A1.08.26 A2.08.09 +A1.08.27 A2.08.09 A2.08.10 +A1.08.28 A2.08.10 +A1.08.29 A2.09.10 A2.08.11 +A1.08.30 A2.08.11 +A1.08.31 A2.08.12 +A1.08.32 A2.08.12 A2.08.13 +A1.08.33 A2.08.13 +A1.08.34 A2.08.14 +A1.08.35 A2.08.15 +A1.08.36 A2.08.15 A2.08.16 +A1.08.37 A2.08.16 +A1.08.38 A2.08.17 +A1.08.39 A2.08.18 +A1.08.40 A2.08.18 A2.08.19 +A1.08.41 A2.08.19 +A1.08.42 A2.09.20 +A1.08.43 A2.08.20 +A1.08.44 A2.08.20 A2.08.21 +A1.08.45 A2.08.21 +A1.08.46 A2.08.22 +A1.08.47 A2.08.22 A2.08.23 +A1.08.48 A2.08.23 +A1.08.49 A2.08.24 +A1.08.50 A2.08.24 A2.08.25 +A1.08.51 A2.08.25 +A1.08.52 A2.09.26 A2.08.26 +A1.08.53 A2.08.26 +A1.08.54 A2.08.27 +A1.08.55 A2.08.27 +A1.08.56 A2.08.27 +A1.08.57 A2.08.27 +A1.08.58 A2.08.27 +A1.08.59 A2.08.27 +A1.08.60 A2.08.28 +A1.08.61 A2.08.28 A2.08.29 +A1.08.62 A2.08.29 +A1.09.12 A2.09.01 +A1.09.13 A2.08.03 +A1.09.14 A2.09.06 +A1.09.15 A2.09.01 A2.09.03 +A1.09.16 A2.09.02 A2.09.04 +A1.09.17 A2.10.06 A2.09.00 A2.09.05 +A1.09.18 A2.09.06 +A1.09.19 A2.09.04 +A1.09.20 A2.09.05 +A1.09.21 A2.08.07 +A1.09.22 A2.09.06 A2.09.07 +A1.09.23 A2.09.09 +A1.09.24 A2.09.07 +A1.09.25 A2.09.08 +A1.09.26 A2.09.10 +A1.09.27 A2.09.09 A2.09.11 +A1.09.28 A2.09.12 +A1.09.29 A2.09.11 +A1.09.30 A2.09.12 A2.09.15 +A1.09.31 A2.09.13 +A1.09.32 A2.09.14 +A1.09.33 A2.09.13 A2.08.14 +A1.09.34 A2.09.15 +A1.09.35 A2.09.14 A2.09.17 +A1.09.36 A2.09.16 +A1.09.37 A2.09.17 +A1.09.38 A2.09.16 A2.08.17 +A1.09.39 A2.09.18 +A1.09.40 A2.09.19 +A1.09.41 A2.09.18 A2.09.20 +A1.09.42 A2.09.21 +A1.09.43 A2.09.21 A2.09.22 +A1.09.44 A2.09.23 +A1.09.45 A2.09.22 +A1.09.46 A2.09.23 A2.09.24 +A1.09.47 A2.09.24 +A1.09.48 A2.10.24 A2.09.25 +A1.09.49 A2.09.25 +A1.09.50 A2.09.26 +A1.09.51 A2.09.27 +A1.09.52 A2.09.28 +A1.09.53 A2.09.28 +A1.09.54 A2.09.28 +A1.09.55 A2.09.28 +A1.09.56 A2.09.28 +A1.09.57 A2.09.29 +A1.09.58 A2.09.28 +A1.09.59 A2.09.29 A2.09.30 +A1.09.60 A2.09.30 +A1.09.61 A2.10.29 A2.09.31 +A1.09.62 A2.09.31 +A1.10.11 A2.10.03 +A1.10.12 A2.10.00 A2.10.06 A2.09.00 +A1.10.13 A2.11.01 A2.10.02 A2.10.04 +A1.10.14 A2.10.01 A2.10.07 +A1.10.15 A2.10.07 A2.10.05 A2.10.03 +A1.10.16 A2.10.00 A2.10.06 +A1.10.17 A2.10.02 A2.10.04 A2.10.08 +A1.10.18 A2.10.07 +A1.10.19 A2.10.09 +A1.10.20 A2.10.06 A2.09.08 +A1.10.21 A2.10.08 +A1.10.22 A2.10.10 +A1.10.23 A2.10.09 A2.10.11 +A1.10.24 A2.11.06 +A1.10.25 A2.10.12 +A1.10.26 A2.10.10 A2.10.14 +A1.10.27 A2.10.11 +A1.10.28 A2.10.13 +A1.10.29 A2.10.12 A2.10.15 +A1.10.30 A2.10.14 +A1.10.31 A2.10.13 A2.10.17 +A1.10.32 A2.10.15 +A1.10.33 A2.10.16 +A1.10.34 A2.10.17 +A1.10.35 A2.10.16 A2.09.19 +A1.10.36 A2.10.18 +A1.10.37 A2.11.15 +A1.10.38 A2.10.19 +A1.10.39 A2.10.18 A2.10.20 +A1.10.40 A2.10.21 +A1.10.41 A2.10.19 A2.10.22 +A1.10.42 A2.10.20 +A1.10.43 A2.10.21 A2.10.23 +A1.10.44 A2.10.22 +A1.10.45 A2.10.23 +A1.10.46 A2.10.24 +A1.10.47 A2.11.22 +A1.10.48 A2.10.25 +A1.10.49 A2.10.26 +A1.10.50 A2.10.25 A2.09.27 +A1.10.51 A2.10.26 A2.10.27 +A1.10.52 A2.10.27 +A1.10.53 A2.10.27 +A1.10.54 A2.10.27 +A1.10.55 A2.10.28 +A1.10.56 A2.10.27 +A1.10.57 A2.10.28 +A1.10.58 A2.10.29 +A1.10.59 A2.10.28 +A1.10.60 A2.10.30 A2.10.31 +A1.10.61 A2.10.30 A2.10.31 +A1.10.62 A2.10.31 +A1.11.12 A2.11.00 +A1.11.13 A2.11.00 +A1.11.14 A2.11.00 +A1.11.15 A2.11.01 +A1.11.16 A2.11.02 +A1.11.17 A2.11.03 +A1.11.18 A2.11.04 +A1.11.19 A2.11.05 +A1.11.20 A2.11.01 A2.11.06 +A1.11.21 A2.11.02 A2.11.07 +A1.11.22 A2.11.03 A2.11.08 +A1.11.23 A2.11.04 A2.11.09 +A1.11.24 A2.11.05 A2.11.10 +A1.11.25 A2.11.07 +A1.11.26 A2.11.08 +A1.11.27 A2.11.09 +A1.11.28 A2.11.10 +A1.11.29 A2.11.11 +A1.11.30 A2.11.12 +A1.11.31 A2.11.13 +A1.11.32 A2.11.14 +A1.11.33 A2.11.11 A2.11.15 +A1.11.34 A2.11.12 A2.11.16 +A1.11.35 A2.11.13 A2.11.17 +A1.11.36 A2.11.14 A2.11.18 +A1.11.37 A2.11.16 +A1.11.38 A2.11.17 +A1.11.39 A2.11.18 +A1.11.40 A2.11.19 +A1.11.41 A2.11.20 +A1.11.42 A2.11.21 +A1.11.43 A2.11.19 A2.11.22 +A1.11.44 A2.11.20 A2.11.23 +A1.11.45 A2.11.21 A2.11.24 +A1.11.46 A2.11.23 +A1.11.47 A2.11.24 +A1.11.48 A2.11.25 +A1.11.49 A2.11.26 +A1.11.50 A2.11.25 +A1.11.51 A2.11.25 +A1.11.52 A2.11.26 +A1.11.53 A2.11.26 +A1.11.54 A2.10.28 +A1.11.55 A2.10.28 +A1.11.56 A2.11.27 +A1.11.57 A2.11.28 +A1.11.58 A2.10.28 +A1.11.59 A2.11.27 A2.11.29 +A1.11.60 A2.11.28 A2.11.30 +A1.11.61 A2.11.29 +A1.11.62 A2.11.30 +A1.12.12 A2.12.00 +A1.12.13 A2.12.00 +A1.12.14 A2.12.00 +A1.12.15 A2.12.01 +A1.12.16 A2.12.02 +A1.12.17 A2.12.03 +A1.12.18 A2.12.04 +A1.12.19 A2.12.05 +A1.12.20 A2.12.01 A2.12.06 +A1.12.21 A2.12.02 A2.12.07 +A1.12.22 A2.12.03 A2.12.08 +A1.12.23 A2.12.04 A2.12.09 +A1.12.24 A2.12.05 A2.12.10 +A1.12.25 A2.12.07 +A1.12.26 A2.12.08 +A1.12.27 A2.12.09 +A1.12.28 A2.12.10 +A1.12.29 A2.12.11 +A1.12.30 A2.12.12 +A1.12.31 A2.12.13 +A1.12.32 A2.12.14 +A1.12.33 A2.12.11 A2.12.15 +A1.12.34 A2.12.12 A2.12.16 +A1.12.35 A2.12.13 A2.12.17 +A1.12.36 A2.12.14 A2.12.18 +A1.12.37 A2.12.16 +A1.12.38 A2.12.17 +A1.12.39 A2.12.18 +A1.12.40 A2.12.19 +A1.12.41 A2.12.20 +A1.12.42 A2.12.21 +A1.12.43 A2.12.19 A2.12.22 +A1.12.44 A2.12.20 A2.12.23 +A1.12.45 A2.12.21 A2.12.24 +A1.12.46 A2.12.23 +A1.12.47 A2.12.24 +A1.12.48 A2.12.25 +A1.12.49 A2.12.26 +A1.12.50 A2.12.25 +A1.12.51 A2.12.25 +A1.12.52 A2.12.26 +A1.12.53 A2.12.26 +A1.12.54 A2.13.28 +A1.12.55 A2.13.28 +A1.12.56 A2.12.27 +A1.12.57 A2.12.28 +A1.12.58 A2.13.28 +A1.12.59 A2.12.27 A2.12.29 +A1.12.60 A2.12.28 A2.12.30 +A1.12.61 A2.12.29 +A1.12.62 A2.12.30 +A1.13.12 A2.13.01 +A1.13.13 A2.13.03 +A1.13.14 A2.12.01 A2.13.04 A2.13.02 +A1.13.15 A2.13.00 A2.13.07 +A1.13.16 A2.13.07 A2.13.05 A2.13.03 +A1.13.17 A2.13.06 +A1.13.18 A2.13.04 A2.13.02 A2.13.08 +A1.13.19 A2.13.07 +A1.13.20 A2.13.09 +A1.13.21 A2.13.06 A2.14.08 +A1.13.22 A2.13.08 +A1.13.23 A2.13.10 +A1.13.24 A2.13.09 A2.13.11 +A1.13.25 A2.12.06 +A1.13.26 A2.13.12 +A1.13.27 A2.13.10 A2.13.14 +A1.13.28 A2.13.11 +A1.13.29 A2.13.13 +A1.13.30 A2.13.12 A2.13.15 +A1.13.31 A2.13.14 +A1.13.32 A2.13.13 A2.13.17 +A1.13.33 A2.13.15 +A1.13.34 A2.13.16 +A1.13.35 A2.13.17 +A1.13.36 A2.13.16 A2.14.19 +A1.13.37 A2.13.18 +A1.13.38 A2.12.15 +A1.13.39 A2.13.19 +A1.13.40 A2.13.18 A2.13.20 +A1.13.41 A2.13.21 +A1.13.42 A2.13.19 A2.13.22 +A1.13.43 A2.13.20 +A1.13.44 A2.13.21 A2.13.23 +A1.13.45 A2.13.22 +A1.13.46 A2.13.23 +A1.13.47 A2.13.24 +A1.13.48 A2.12.22 +A1.13.49 A2.13.25 +A1.13.50 A2.13.26 +A1.13.51 A2.13.25 A2.14.27 +A1.13.52 A2.13.26 A2.13.27 +A1.13.53 A2.13.27 +A1.13.54 A2.13.27 +A1.13.55 A2.13.27 +A1.13.56 A2.13.28 +A1.13.57 A2.13.27 +A1.13.58 A2.13.28 +A1.13.59 A2.13.30 A2.13.29 +A1.13.60 A2.13.28 +A1.13.61 A2.13.31 A2.13.30 +A1.13.62 A2.13.31 +A1.14.12 A2.14.05 +A1.14.13 A2.15.03 +A1.14.14 A2.14.02 +A1.14.15 A2.14.05 A2.14.01 +A1.14.16 A2.14.02 A2.14.04 +A1.14.17 A2.13.01 A2.14.00 A2.14.03 A2.14.05 +A1.14.18 A2.14.06 +A1.14.19 A2.14.04 +A1.14.20 A2.14.05 +A1.14.21 A2.15.07 +A1.14.22 A2.14.06 A2.14.07 +A1.14.23 A2.14.09 +A1.14.24 A2.14.07 +A1.14.25 A2.14.08 +A1.14.26 A2.14.10 +A1.14.27 A2.14.09 A2.14.11 +A1.14.28 A2.14.12 +A1.14.29 A2.14.11 +A1.14.30 A2.14.12 A2.14.15 +A1.14.31 A2.14.13 +A1.14.32 A2.14.14 +A1.14.33 A2.14.13 A2.15.14 +A1.14.34 A2.14.15 +A1.14.35 A2.14.14 A2.14.17 +A1.14.36 A2.14.16 +A1.14.37 A2.14.17 +A1.14.38 A2.14.16 A2.15.17 +A1.14.39 A2.14.18 +A1.14.40 A2.14.19 +A1.14.41 A2.14.18 A2.14.20 +A1.14.42 A2.14.21 +A1.14.43 A2.14.21 A2.14.22 +A1.14.44 A2.14.23 +A1.14.45 A2.14.22 +A1.14.46 A2.14.23 A2.14.24 +A1.14.47 A2.14.24 +A1.14.48 A2.13.24 A2.14.25 +A1.14.49 A2.14.25 +A1.14.50 A2.14.26 +A1.14.51 A2.14.27 +A1.14.52 A2.14.28 +A1.14.53 A2.14.28 +A1.14.54 A2.14.28 +A1.14.55 A2.14.28 +A1.14.56 A2.13.29 +A1.14.57 A2.14.28 +A1.14.58 A2.14.29 +A1.14.59 A2.14.30 +A1.14.60 A2.14.31 A2.14.29 +A1.14.61 A2.13.30 A2.14.31 A2.14.30 +A1.14.62 A2.14.31 A2.14.30 +A1.15.14 A2.15.00 +A1.15.15 A2.15.00 A2.15.02 +A1.15.16 A2.15.02 A2.15.01 +A1.15.17 A2.15.03 +A1.15.18 A2.15.03 A2.15.04 +A1.15.19 A2.15.04 +A1.15.20 A2.15.05 +A1.15.21 A2.15.05 A2.15.06 +A1.15.22 A2.15.06 +A1.15.23 A2.15.07 A2.15.08 +A1.15.24 A2.15.08 +A1.15.25 A2.15.09 +A1.15.26 A2.15.09 A2.15.10 +A1.15.27 A2.15.10 +A1.15.28 A2.14.10 A2.15.11 +A1.15.29 A2.15.11 +A1.15.30 A2.15.12 +A1.15.31 A2.15.12 A2.15.13 +A1.15.32 A2.15.13 +A1.15.33 A2.15.14 +A1.15.34 A2.15.15 +A1.15.35 A2.15.15 A2.15.16 +A1.15.36 A2.15.16 +A1.15.37 A2.15.17 +A1.15.38 A2.15.18 +A1.15.39 A2.15.18 A2.15.19 +A1.15.40 A2.15.19 +A1.15.41 A2.14.20 +A1.15.42 A2.15.20 +A1.15.43 A2.15.20 A2.15.21 +A1.15.44 A2.15.21 +A1.15.45 A2.15.22 +A1.15.46 A2.15.22 A2.15.23 +A1.15.47 A2.15.23 +A1.15.48 A2.15.24 +A1.15.49 A2.15.24 A2.15.25 +A1.15.50 A2.15.25 +A1.15.51 A2.14.26 A2.15.26 +A1.15.52 A2.15.26 +A1.15.53 A2.14.28 +A1.15.54 A2.15.27 +A1.15.55 A2.15.27 +A1.15.56 A2.15.27 +A1.15.57 A2.15.27 +A1.15.58 A2.15.27 +A1.15.59 A2.15.27 +A1.15.60 A2.15.28 +A1.15.61 A2.15.28 A2.15.29 +A1.15.62 A2.15.29 +A2.00.05 A3.00.02 +A2.00.06 A3.00.00 +A2.00.07 A3.00.01 +A2.00.08 A3.00.02 A3.00.01 +A2.00.09 A3.00.02 +A2.00.10 A3.00.03 +A2.00.11 A3.00.04 A3.00.01 +A2.00.12 A3.00.05 A3.00.02 +A2.00.13 A3.00.06 A3.00.03 +A2.00.14 A3.00.04 +A2.00.15 A3.00.05 +A2.00.16 A3.00.06 +A2.00.17 A3.00.07 +A2.00.18 A3.00.08 +A2.00.19 A3.00.09 +A2.00.20 A3.00.10 A3.00.08 +A2.00.21 A3.00.11 A3.00.09 +A2.00.22 A3.00.10 +A2.00.23 A3.00.11 +A2.00.24 A3.00.12 +A2.00.25 A3.00.13 +A2.00.26 A3.00.14 A3.00.13 +A2.00.27 A3.00.14 +A2.00.28 A3.00.15 A3.01.14 +A2.00.29 A3.00.15 +A2.01.05 A3.01.00 +A2.01.06 A3.01.00 +A2.01.07 A3.01.01 A3.01.00 +A2.01.08 A3.01.00 A3.01.02 A3.02.00 +A2.01.09 A3.01.00 +A2.01.10 A3.00.01 A3.01.03 A3.01.01 +A2.01.11 A3.01.01 A3.01.00 +A2.01.12 A3.01.04 A3.01.02 +A2.01.13 A3.01.03 +A2.01.14 A3.01.06 A3.01.04 A3.02.05 A3.01.02 +A2.01.15 A3.01.04 +A2.01.16 A3.01.05 +A2.01.17 A3.01.06 A3.01.04 +A2.01.18 A3.01.07 A3.01.05 +A2.01.19 A3.01.06 +A2.01.20 A3.01.08 A3.00.07 +A2.01.21 A3.01.07 +A2.01.22 A3.01.08 +A2.01.23 A3.01.09 +A2.01.24 A3.01.10 +A2.01.25 A3.01.11 A3.01.10 +A2.01.26 A3.01.12 A3.00.12 +A2.01.27 A3.01.11 +A2.01.28 A3.01.12 +A2.01.29 A3.01.13 +A2.01.30 A3.01.14 A3.01.15 +A2.01.31 A3.01.14 A3.01.15 +A2.02.06 A3.02.00 +A2.02.07 A3.02.01 +A2.02.08 A3.02.02 A3.02.01 +A2.02.09 A3.02.03 A3.02.00 A3.02.01 +A2.02.10 A3.02.03 A3.02.01 +A2.02.11 A3.02.05 A3.01.02 A3.02.03 A3.02.00 +A2.02.12 A3.02.04 A3.02.02 A3.02.01 +A2.02.13 A3.02.06 A3.02.04 A3.03.05 A3.02.02 +A2.02.14 A3.02.05 A3.02.03 +A2.02.15 A3.02.07 A3.02.04 +A2.02.16 A3.01.06 A3.02.05 +A2.02.17 A3.02.08 A3.02.07 A3.02.06 A3.02.04 +A2.02.18 A3.02.09 A3.02.07 +A2.02.19 A3.02.10 A3.02.09 A3.02.08 A3.02.07 +A2.02.20 A3.02.09 +A2.02.21 A3.02.10 A3.02.08 +A2.02.22 A3.02.10 A3.02.09 +A2.02.23 A3.02.10 +A2.02.24 A3.02.11 A3.01.09 +A2.02.25 A3.02.11 +A2.02.26 A3.02.12 +A2.02.27 A3.02.13 +A2.02.28 A3.03.15 A3.02.13 +A2.02.29 A3.01.15 A3.01.13 A3.02.14 +A2.02.30 A3.01.15 A3.02.14 +A2.02.31 A3.02.14 +A2.03.02 A3.03.02 +A2.03.03 A3.03.03 A3.03.02 +A2.03.04 A3.03.04 A3.03.03 A3.03.00 +A2.03.05 A3.03.04 A3.03.01 A3.03.00 +A2.03.06 A3.03.05 A3.02.02 A3.03.02 +A2.03.07 A3.03.05 A3.03.02 +A2.03.08 A3.03.06 A3.03.03 A3.03.02 +A2.03.09 A3.03.07 A3.03.06 A3.03.04 A3.03.03 +A2.03.10 A3.03.07 A3.03.04 +A2.03.11 A3.02.06 A3.03.05 +A2.03.12 A3.03.08 A3.03.06 +A2.03.13 A3.03.09 A3.03.08 A3.03.07 A3.03.06 +A2.03.14 A3.03.09 A3.03.07 +A2.03.15 A3.02.08 A3.02.06 +A2.03.16 A3.03.10 A3.03.08 +A2.03.17 A3.03.11 A3.03.10 A3.03.09 A3.03.08 +A2.03.18 A3.03.11 A3.03.09 +A2.03.19 A3.03.12 A3.03.10 +A2.03.20 A3.03.13 A3.03.12 A3.03.11 A3.03.10 +A2.03.21 A3.03.13 A3.03.11 +A2.03.22 A3.03.12 +A2.03.23 A3.03.13 A3.03.12 +A2.03.24 A3.03.13 +A2.03.25 A3.03.14 A3.02.12 +A2.03.26 A3.03.14 +A2.03.27 A3.03.15 +A2.03.28 A3.03.15 +A2.03.29 A3.03.15 +A2.03.30 A3.03.15 +A2.04.02 A3.04.02 +A2.04.03 A3.04.02 A3.04.03 +A2.04.04 A3.04.03 A3.04.04 A3.04.00 +A2.04.05 A3.04.04 A3.04.00 A3.04.01 +A2.04.06 A3.04.05 A3.05.01 A3.04.02 +A2.04.07 A3.04.05 A3.04.02 +A2.04.08 A3.04.06 A3.04.02 A3.04.03 +A2.04.09 A3.04.06 A3.04.07 A3.04.03 A3.04.04 +A2.04.10 A3.04.07 A3.04.04 +A2.04.11 A3.05.06 A3.04.05 +A2.04.12 A3.04.08 A3.04.06 +A2.04.13 A3.04.08 A3.04.09 A3.04.06 A3.04.07 +A2.04.14 A3.04.09 A3.04.07 +A2.04.15 A3.05.08 A3.05.06 +A2.04.16 A3.04.10 A3.04.08 +A2.04.17 A3.04.10 A3.04.11 A3.04.08 A3.04.09 +A2.04.18 A3.04.11 A3.04.09 +A2.04.19 A3.04.12 A3.04.10 +A2.04.20 A3.04.12 A3.04.13 A3.04.10 A3.04.11 +A2.04.21 A3.04.13 A3.04.11 +A2.04.22 A3.04.12 +A2.04.23 A3.04.12 A3.04.13 +A2.04.24 A3.04.13 +A2.04.25 A3.05.12 A3.04.14 +A2.04.26 A3.04.14 +A2.04.27 A3.04.15 +A2.04.28 A3.04.15 +A2.04.29 A3.04.15 +A2.04.30 A3.04.15 +A2.05.06 A3.05.00 +A2.05.07 A3.05.02 A3.05.01 +A2.05.08 A3.05.01 +A2.05.09 A3.05.00 A3.05.03 +A2.05.10 A3.05.00 A3.05.03 A3.05.02 +A2.05.11 A3.06.03 A3.05.05 A3.05.00 A3.05.03 +A2.05.12 A3.05.04 A3.05.02 A3.05.01 +A2.05.13 A3.05.04 A3.05.06 A3.05.02 A3.04.05 A3.05.01 +A2.05.14 A3.05.05 A3.05.03 +A2.05.15 A3.05.07 A3.05.04 +A2.05.16 A3.06.07 A3.05.05 +A2.05.17 A3.05.07 A3.05.08 A3.05.04 A3.05.06 +A2.05.18 A3.05.09 A3.05.07 +A2.05.19 A3.05.09 A3.05.10 A3.05.07 A3.05.08 +A2.05.20 A3.05.09 +A2.05.21 A3.05.10 A3.05.08 +A2.05.22 A3.05.09 A3.05.10 +A2.05.23 A3.05.10 +A2.05.24 A3.06.10 A3.05.11 +A2.05.25 A3.05.11 +A2.05.26 A3.05.12 +A2.05.27 A3.05.13 +A2.05.28 A3.05.13 A3.04.15 +A2.05.29 A3.06.14 A3.05.14 +A2.05.30 A3.05.14 A3.05.15 +A2.05.31 A3.05.15 +A2.06.05 A3.06.01 +A2.06.06 A3.06.02 +A2.06.07 A3.06.02 +A2.06.08 A3.06.01 A3.06.03 A3.05.00 +A2.06.09 A3.06.02 A3.06.01 +A2.06.10 A3.07.01 A3.06.04 A3.06.00 A3.06.02 +A2.06.11 A3.06.02 A3.06.01 +A2.06.12 A3.06.05 A3.06.03 +A2.06.13 A3.06.04 +A2.06.14 A3.06.05 A3.06.07 A3.06.03 A3.05.05 +A2.06.15 A3.06.05 +A2.06.16 A3.06.06 +A2.06.17 A3.06.05 A3.06.07 +A2.06.18 A3.06.06 A3.06.08 +A2.06.19 A3.06.07 +A2.06.20 A3.07.07 A3.06.09 +A2.06.21 A3.06.08 +A2.06.22 A3.06.09 +A2.06.23 A3.06.10 +A2.06.24 A3.06.11 +A2.06.25 A3.06.11 A3.06.12 +A2.06.26 A3.07.12 A3.06.13 +A2.06.27 A3.06.12 +A2.06.28 A3.06.13 +A2.06.29 A3.06.14 A3.05.14 +A2.06.30 A3.06.15 A3.06.14 +A2.06.31 A3.06.15 A3.05.14 +A2.07.05 A3.07.02 +A2.07.06 A3.07.00 +A2.07.07 A3.07.01 A3.06.00 +A2.07.08 A3.07.01 +A2.07.09 A3.07.02 +A2.07.10 A3.07.03 +A2.07.11 A3.07.01 A3.07.04 +A2.07.12 A3.07.02 A3.07.05 +A2.07.13 A3.07.03 A3.07.06 +A2.07.14 A3.07.04 +A2.07.15 A3.07.05 +A2.07.16 A3.07.06 +A2.07.17 A3.07.07 +A2.07.18 A3.07.08 +A2.07.19 A3.07.09 +A2.07.20 A3.07.08 A3.07.10 +A2.07.21 A3.07.09 A3.07.11 +A2.07.22 A3.07.10 +A2.07.23 A3.07.11 +A2.07.24 A3.07.12 +A2.07.25 A3.07.13 +A2.07.26 A3.07.13 A3.07.14 +A2.07.27 A3.07.14 +A2.07.28 A3.07.15 A3.06.15 +A2.07.29 A3.07.15 +A2.08.05 A3.08.02 +A2.08.06 A3.08.00 +A2.08.07 A3.08.01 +A2.08.08 A3.08.01 A3.08.02 +A2.08.09 A3.08.02 +A2.08.10 A3.08.03 +A2.08.11 A3.08.01 A3.08.04 +A2.08.12 A3.08.02 A3.08.05 +A2.08.13 A3.08.03 A3.08.06 +A2.08.14 A3.08.04 +A2.08.15 A3.08.05 +A2.08.16 A3.08.06 +A2.08.17 A3.08.07 +A2.08.18 A3.08.08 +A2.08.19 A3.08.09 +A2.08.20 A3.08.08 A3.08.10 +A2.08.21 A3.08.09 A3.08.11 +A2.08.22 A3.08.10 +A2.08.23 A3.08.11 +A2.08.24 A3.08.12 +A2.08.25 A3.08.13 +A2.08.26 A3.08.13 A3.08.14 +A2.08.27 A3.08.14 +A2.08.28 A3.09.14 A3.08.15 +A2.08.29 A3.08.15 +A2.09.05 A3.09.00 +A2.09.06 A3.09.00 +A2.09.07 A3.09.00 A3.09.01 +A2.09.08 A3.10.00 A3.09.00 A3.09.02 +A2.09.09 A3.09.00 +A2.09.10 A3.09.01 A3.09.03 A3.08.01 +A2.09.11 A3.09.00 A3.09.01 +A2.09.12 A3.09.02 A3.09.04 +A2.09.13 A3.09.03 +A2.09.14 A3.09.02 A3.10.05 A3.09.04 A3.09.06 +A2.09.15 A3.09.04 +A2.09.16 A3.09.05 +A2.09.17 A3.09.04 A3.09.06 +A2.09.18 A3.09.05 A3.09.07 +A2.09.19 A3.09.06 +A2.09.20 A3.08.07 A3.09.08 +A2.09.21 A3.09.07 +A2.09.22 A3.09.08 +A2.09.23 A3.09.09 +A2.09.24 A3.09.10 +A2.09.25 A3.09.10 A3.09.11 +A2.09.26 A3.08.12 A3.09.12 +A2.09.27 A3.09.11 +A2.09.28 A3.09.12 +A2.09.29 A3.09.13 +A2.09.30 A3.09.15 A3.09.14 +A2.09.31 A3.09.15 A3.09.14 +A2.10.06 A3.10.00 +A2.10.07 A3.10.01 +A2.10.08 A3.10.02 A3.10.01 +A2.10.09 A3.10.01 A3.10.00 A3.10.03 +A2.10.10 A3.10.01 A3.10.03 +A2.10.11 A3.10.00 A3.10.03 A3.09.02 A3.10.05 +A2.10.12 A3.10.02 A3.10.01 A3.10.04 +A2.10.13 A3.10.02 A3.11.05 A3.10.04 A3.10.06 +A2.10.14 A3.10.03 A3.10.05 +A2.10.15 A3.10.04 A3.10.07 +A2.10.16 A3.10.05 A3.09.06 +A2.10.17 A3.10.04 A3.10.06 A3.10.07 A3.10.08 +A2.10.18 A3.10.07 A3.10.09 +A2.10.19 A3.10.07 A3.10.08 A3.10.09 A3.10.10 +A2.10.20 A3.10.09 +A2.10.21 A3.10.08 A3.10.10 +A2.10.22 A3.10.09 A3.10.10 +A2.10.23 A3.10.10 +A2.10.24 A3.09.09 A3.10.11 +A2.10.25 A3.10.11 +A2.10.26 A3.10.12 +A2.10.27 A3.10.13 +A2.10.28 A3.10.13 A3.11.15 +A2.10.29 A3.09.13 A3.10.14 A3.09.15 +A2.10.30 A3.10.14 A3.09.15 +A2.10.31 A3.10.14 +A2.11.02 A3.11.02 +A2.11.03 A3.11.03 A3.11.02 +A2.11.04 A3.11.00 A3.11.03 A3.11.04 +A2.11.05 A3.11.00 A3.11.01 A3.11.04 +A2.11.06 A3.11.02 A3.10.02 A3.11.05 +A2.11.07 A3.11.02 A3.11.05 +A2.11.08 A3.11.03 A3.11.02 A3.11.06 +A2.11.09 A3.11.03 A3.11.04 A3.11.06 A3.11.07 +A2.11.10 A3.11.04 A3.11.07 +A2.11.11 A3.11.05 A3.10.06 +A2.11.12 A3.11.06 A3.11.08 +A2.11.13 A3.11.06 A3.11.07 A3.11.08 A3.11.09 +A2.11.14 A3.11.07 A3.11.09 +A2.11.15 A3.10.06 A3.10.08 +A2.11.16 A3.11.08 A3.11.10 +A2.11.17 A3.11.08 A3.11.09 A3.11.10 A3.11.11 +A2.11.18 A3.11.09 A3.11.11 +A2.11.19 A3.11.10 A3.11.12 +A2.11.20 A3.11.10 A3.11.11 A3.11.12 A3.11.13 +A2.11.21 A3.11.11 A3.11.13 +A2.11.22 A3.11.12 +A2.11.23 A3.11.12 A3.11.13 +A2.11.24 A3.11.13 +A2.11.25 A3.10.12 A3.11.14 +A2.11.26 A3.11.14 +A2.11.27 A3.11.15 +A2.11.28 A3.11.15 +A2.11.29 A3.11.15 +A2.11.30 A3.11.15 +A2.12.02 A3.12.02 +A2.12.03 A3.12.03 A3.12.02 +A2.12.04 A3.12.00 A3.12.03 A3.12.04 +A2.12.05 A3.12.01 A3.12.00 A3.12.04 +A2.12.06 A3.12.02 A3.13.01 A3.12.05 +A2.12.07 A3.12.02 A3.12.05 +A2.12.08 A3.12.03 A3.12.02 A3.12.06 +A2.12.09 A3.12.03 A3.12.04 A3.12.07 A3.12.06 +A2.12.10 A3.12.04 A3.12.07 +A2.12.11 A3.12.05 A3.13.06 +A2.12.12 A3.12.06 A3.12.08 +A2.12.13 A3.12.07 A3.12.06 A3.12.09 A3.12.08 +A2.12.14 A3.12.07 A3.12.09 +A2.12.15 A3.13.06 A3.13.08 +A2.12.16 A3.12.08 A3.12.10 +A2.12.17 A3.12.09 A3.12.08 A3.12.11 A3.12.10 +A2.12.18 A3.12.09 A3.12.11 +A2.12.19 A3.12.10 A3.12.12 +A2.12.20 A3.12.11 A3.12.10 A3.12.13 A3.12.12 +A2.12.21 A3.12.11 A3.12.13 +A2.12.22 A3.12.12 +A2.12.23 A3.12.13 A3.12.12 +A2.12.24 A3.12.13 +A2.12.25 A3.12.14 A3.13.12 +A2.12.26 A3.12.14 +A2.12.27 A3.12.15 +A2.12.28 A3.12.15 +A2.12.29 A3.12.15 +A2.12.30 A3.12.15 +A2.13.06 A3.13.00 +A2.13.07 A3.13.01 A3.13.02 +A2.13.08 A3.13.01 +A2.13.09 A3.13.00 A3.13.03 +A2.13.10 A3.13.02 A3.13.00 A3.13.03 +A2.13.11 A3.13.00 A3.13.03 A3.13.05 A3.14.03 +A2.13.12 A3.13.01 A3.13.02 A3.13.04 +A2.13.13 A3.13.01 A3.12.05 A3.13.02 A3.13.06 A3.13.04 +A2.13.14 A3.13.03 A3.13.05 +A2.13.15 A3.13.04 A3.13.07 +A2.13.16 A3.13.05 A3.14.07 +A2.13.17 A3.13.06 A3.13.04 A3.13.08 A3.13.07 +A2.13.18 A3.13.07 A3.13.09 +A2.13.19 A3.13.08 A3.13.07 A3.13.10 A3.13.09 +A2.13.20 A3.13.09 +A2.13.21 A3.13.08 A3.13.10 +A2.13.22 A3.13.10 A3.13.09 +A2.13.23 A3.13.10 +A2.13.24 A3.13.11 A3.14.10 +A2.13.25 A3.13.11 +A2.13.26 A3.13.12 +A2.13.27 A3.13.13 +A2.13.28 A3.12.15 A3.13.13 +A2.13.29 A3.13.14 A3.14.14 +A2.13.30 A3.13.15 A3.13.14 +A2.13.31 A3.13.15 +A2.14.05 A3.14.01 +A2.14.06 A3.14.02 +A2.14.07 A3.14.02 +A2.14.08 A3.13.00 A3.14.01 A3.14.03 +A2.14.09 A3.14.01 A3.14.02 +A2.14.10 A3.14.02 A3.14.04 A3.14.00 A3.15.01 +A2.14.11 A3.14.01 A3.14.02 +A2.14.12 A3.14.03 A3.14.05 +A2.14.13 A3.14.04 +A2.14.14 A3.13.05 A3.14.03 A3.14.07 A3.14.05 +A2.14.15 A3.14.05 +A2.14.16 A3.14.06 +A2.14.17 A3.14.07 A3.14.05 +A2.14.18 A3.14.08 A3.14.06 +A2.14.19 A3.14.07 +A2.14.20 A3.14.09 A3.15.07 +A2.14.21 A3.14.08 +A2.14.22 A3.14.09 +A2.14.23 A3.14.10 +A2.14.24 A3.14.11 +A2.14.25 A3.14.12 A3.14.11 +A2.14.26 A3.14.13 A3.15.12 +A2.14.27 A3.14.12 +A2.14.28 A3.14.13 +A2.14.29 A3.13.14 A3.14.14 +A2.14.30 A3.14.14 A3.14.15 +A2.14.31 A3.13.14 A3.14.15 +A2.15.05 A3.15.02 +A2.15.06 A3.15.00 +A2.15.07 A3.14.00 A3.15.01 +A2.15.08 A3.15.01 +A2.15.09 A3.15.02 +A2.15.10 A3.15.03 +A2.15.11 A3.15.01 A3.15.04 +A2.15.12 A3.15.05 A3.15.02 +A2.15.13 A3.15.06 A3.15.03 +A2.15.14 A3.15.04 +A2.15.15 A3.15.05 +A2.15.16 A3.15.06 +A2.15.17 A3.15.07 +A2.15.18 A3.15.08 +A2.15.19 A3.15.09 +A2.15.20 A3.15.10 A3.15.08 +A2.15.21 A3.15.11 A3.15.09 +A2.15.22 A3.15.10 +A2.15.23 A3.15.11 +A2.15.24 A3.15.12 +A2.15.25 A3.15.13 +A2.15.26 A3.15.14 A3.15.13 +A2.15.27 A3.15.14 +A2.15.28 A3.14.15 A3.15.15 +A2.15.29 A3.15.15 +C1.00.15 C2.00.00 +C1.00.16 C2.00.01 C2.00.00 +C1.00.17 C2.00.02 C2.00.01 +C1.00.18 C2.00.03 +C1.00.19 C2.00.04 C2.00.03 +C1.00.20 C2.00.04 +C1.00.21 C2.00.05 +C1.00.22 C2.00.06 C2.00.05 +C1.00.23 C2.00.06 +C1.00.24 C2.00.08 C2.00.07 +C1.00.25 C2.00.08 +C1.00.26 C2.00.09 +C1.00.27 C2.00.10 C2.00.09 +C1.00.28 C2.00.10 +C1.00.29 C2.00.11 C2.01.10 +C1.00.30 C2.00.11 +C1.00.31 C2.00.12 +C1.00.32 C2.00.13 C2.00.12 +C1.00.33 C2.00.13 +C1.00.34 C2.00.14 +C1.00.35 C2.00.15 +C1.00.36 C2.00.16 C2.00.15 +C1.00.37 C2.00.16 +C1.00.38 C2.00.17 +C1.00.39 C2.00.18 +C1.00.40 C2.00.19 C2.00.18 +C1.00.41 C2.00.19 +C1.00.42 C2.01.20 +C1.00.43 C2.00.20 +C1.00.44 C2.00.21 C2.00.20 +C1.00.45 C2.00.21 +C1.00.46 C2.00.22 +C1.00.47 C2.00.23 C2.00.22 +C1.00.48 C2.00.23 +C1.00.49 C2.00.24 +C1.00.50 C2.00.25 C2.00.24 +C1.00.51 C2.00.25 +C1.00.52 C2.00.26 C2.01.26 +C1.00.53 C2.00.26 +C1.00.54 C2.00.27 +C1.00.55 C2.00.27 +C1.00.56 C2.00.27 +C1.00.57 C2.00.27 +C1.00.58 C2.00.27 +C1.00.59 C2.00.27 +C1.00.60 C2.00.28 +C1.00.61 C2.00.29 C2.00.28 +C1.00.62 C2.00.29 +C1.01.12 C2.01.01 +C1.01.13 C2.00.03 +C1.01.14 C2.01.06 +C1.01.15 C2.01.03 C2.01.01 +C1.01.16 C2.01.04 C2.01.02 +C1.01.17 C2.01.05 C2.02.06 C2.01.00 +C1.01.18 C2.01.06 +C1.01.19 C2.01.04 +C1.01.20 C2.01.05 +C1.01.21 C2.00.07 +C1.01.22 C2.01.07 C2.01.06 +C1.01.23 C2.01.09 +C1.01.24 C2.01.07 +C1.01.25 C2.01.08 +C1.01.26 C2.01.10 +C1.01.27 C2.01.11 C2.01.09 +C1.01.28 C2.01.12 +C1.01.29 C2.01.11 +C1.01.30 C2.01.15 C2.01.12 +C1.01.31 C2.01.13 +C1.01.32 C2.01.14 +C1.01.33 C2.00.14 C2.01.13 +C1.01.34 C2.01.15 +C1.01.35 C2.01.17 C2.01.14 +C1.01.36 C2.01.16 +C1.01.37 C2.01.17 +C1.01.38 C2.00.17 C2.01.16 +C1.01.39 C2.01.18 +C1.01.40 C2.01.19 +C1.01.41 C2.01.20 C2.01.18 +C1.01.42 C2.01.21 +C1.01.43 C2.01.22 C2.01.21 +C1.01.44 C2.01.23 +C1.01.45 C2.01.22 +C1.01.46 C2.01.24 C2.01.23 +C1.01.47 C2.01.24 +C1.01.48 C2.01.25 C2.02.24 +C1.01.49 C2.01.25 +C1.01.50 C2.01.26 +C1.01.51 C2.01.27 +C1.01.52 C2.01.28 +C1.01.53 C2.01.28 +C1.01.54 C2.01.28 +C1.01.55 C2.01.28 +C1.01.56 C2.01.28 +C1.01.57 C2.01.29 +C1.01.58 C2.01.28 +C1.01.59 C2.01.30 C2.01.29 +C1.01.60 C2.01.30 +C1.01.61 C2.01.31 C2.02.29 +C1.01.62 C2.01.31 +C1.02.11 C2.02.06 C2.01.00 C2.02.00 +C1.02.12 C2.02.03 +C1.02.13 C2.03.01 C2.02.04 C2.02.02 +C1.02.14 C2.02.07 C2.02.01 +C1.02.15 C2.02.07 C2.02.05 C2.02.03 +C1.02.16 C2.02.06 C2.02.00 +C1.02.17 C2.02.08 C2.02.04 C2.02.02 +C1.02.18 C2.02.07 +C1.02.19 C2.02.09 +C1.02.20 C2.01.08 C2.02.06 +C1.02.21 C2.02.08 +C1.02.22 C2.02.10 +C1.02.23 C2.02.11 C2.02.09 +C1.02.24 C2.03.06 +C1.02.25 C2.02.12 +C1.02.26 C2.02.14 C2.02.10 +C1.02.27 C2.02.11 +C1.02.28 C2.02.13 +C1.02.29 C2.02.15 C2.02.12 +C1.02.30 C2.02.14 +C1.02.31 C2.02.17 C2.02.13 +C1.02.32 C2.02.15 +C1.02.33 C2.02.16 +C1.02.34 C2.02.17 +C1.02.35 C2.01.19 C2.02.16 +C1.02.36 C2.02.18 +C1.02.37 C2.03.15 +C1.02.38 C2.02.19 +C1.02.39 C2.02.20 C2.02.18 +C1.02.40 C2.02.21 +C1.02.41 C2.02.22 C2.02.19 +C1.02.42 C2.02.20 +C1.02.43 C2.02.23 C2.02.21 +C1.02.44 C2.02.22 +C1.02.45 C2.02.23 +C1.02.46 C2.02.24 +C1.02.47 C2.03.22 +C1.02.48 C2.02.25 +C1.02.49 C2.02.26 +C1.02.50 C2.01.27 C2.02.25 +C1.02.51 C2.02.27 C2.02.26 +C1.02.52 C2.02.27 +C1.02.53 C2.02.27 +C1.02.54 C2.02.27 +C1.02.55 C2.02.28 +C1.02.56 C2.02.27 +C1.02.57 C2.02.28 +C1.02.58 C2.02.29 +C1.02.59 C2.02.28 +C1.02.60 C2.02.30 C2.02.31 +C1.02.61 C2.02.30 C2.02.31 +C1.02.62 C2.02.31 +C1.03.12 C2.03.00 +C1.03.13 C2.03.00 +C1.03.14 C2.03.00 +C1.03.15 C2.03.01 +C1.03.16 C2.03.02 +C1.03.17 C2.03.03 +C1.03.18 C2.03.04 +C1.03.19 C2.03.05 +C1.03.20 C2.03.06 C2.03.01 +C1.03.21 C2.03.07 C2.03.02 +C1.03.22 C2.03.08 C2.03.03 +C1.03.23 C2.03.09 C2.03.04 +C1.03.24 C2.03.10 C2.03.05 +C1.03.25 C2.03.07 +C1.03.26 C2.03.08 +C1.03.27 C2.03.09 +C1.03.28 C2.03.10 +C1.03.29 C2.03.11 +C1.03.30 C2.03.12 +C1.03.31 C2.03.13 +C1.03.32 C2.03.14 +C1.03.33 C2.03.15 C2.03.11 +C1.03.34 C2.03.16 C2.03.12 +C1.03.35 C2.03.17 C2.03.13 +C1.03.36 C2.03.18 C2.03.14 +C1.03.37 C2.03.16 +C1.03.38 C2.03.17 +C1.03.39 C2.03.18 +C1.03.40 C2.03.19 +C1.03.41 C2.03.20 +C1.03.42 C2.03.21 +C1.03.43 C2.03.22 C2.03.19 +C1.03.44 C2.03.23 C2.03.20 +C1.03.45 C2.03.24 C2.03.21 +C1.03.46 C2.03.23 +C1.03.47 C2.03.24 +C1.03.48 C2.03.25 +C1.03.49 C2.03.26 +C1.03.50 C2.03.25 +C1.03.51 C2.03.25 +C1.03.52 C2.03.26 +C1.03.53 C2.03.26 +C1.03.54 C2.02.28 +C1.03.55 C2.02.28 +C1.03.56 C2.03.27 +C1.03.57 C2.03.28 +C1.03.58 C2.02.28 +C1.03.59 C2.03.29 C2.03.27 +C1.03.60 C2.03.30 C2.03.28 +C1.03.61 C2.03.29 +C1.03.62 C2.03.30 +C1.04.12 C2.04.00 +C1.04.13 C2.04.00 +C1.04.14 C2.04.00 +C1.04.15 C2.04.01 +C1.04.16 C2.04.02 +C1.04.17 C2.04.03 +C1.04.18 C2.04.04 +C1.04.19 C2.04.05 +C1.04.20 C2.04.06 C2.04.01 +C1.04.21 C2.04.07 C2.04.02 +C1.04.22 C2.04.08 C2.04.03 +C1.04.23 C2.04.09 C2.04.04 +C1.04.24 C2.04.10 C2.04.05 +C1.04.25 C2.04.07 +C1.04.26 C2.04.08 +C1.04.27 C2.04.09 +C1.04.28 C2.04.10 +C1.04.29 C2.04.11 +C1.04.30 C2.04.12 +C1.04.31 C2.04.13 +C1.04.32 C2.04.14 +C1.04.33 C2.04.15 C2.04.11 +C1.04.34 C2.04.16 C2.04.12 +C1.04.35 C2.04.17 C2.04.13 +C1.04.36 C2.04.18 C2.04.14 +C1.04.37 C2.04.16 +C1.04.38 C2.04.17 +C1.04.39 C2.04.18 +C1.04.40 C2.04.19 +C1.04.41 C2.04.20 +C1.04.42 C2.04.21 +C1.04.43 C2.04.22 C2.04.19 +C1.04.44 C2.04.23 C2.04.20 +C1.04.45 C2.04.24 C2.04.21 +C1.04.46 C2.04.23 +C1.04.47 C2.04.24 +C1.04.48 C2.04.25 +C1.04.49 C2.04.26 +C1.04.50 C2.04.25 +C1.04.51 C2.04.25 +C1.04.52 C2.04.26 +C1.04.53 C2.04.26 +C1.04.54 C2.05.28 +C1.04.55 C2.05.28 +C1.04.56 C2.04.27 +C1.04.57 C2.04.28 +C1.04.58 C2.05.28 +C1.04.59 C2.04.29 C2.04.27 +C1.04.60 C2.04.30 C2.04.28 +C1.04.61 C2.04.29 +C1.04.62 C2.04.30 +C1.05.12 C2.05.03 +C1.05.13 C2.05.01 +C1.05.14 C2.05.02 C2.05.04 C2.04.01 +C1.05.15 C2.05.07 C2.05.00 +C1.05.16 C2.05.03 C2.05.05 C2.05.07 +C1.05.17 C2.05.06 +C1.05.18 C2.05.08 C2.05.02 C2.05.04 +C1.05.19 C2.05.07 +C1.05.20 C2.05.09 +C1.05.21 C2.06.08 C2.05.06 +C1.05.22 C2.05.08 +C1.05.23 C2.05.10 +C1.05.24 C2.05.11 C2.05.09 +C1.05.25 C2.04.06 +C1.05.26 C2.05.12 +C1.05.27 C2.05.14 C2.05.10 +C1.05.28 C2.05.11 +C1.05.29 C2.05.13 +C1.05.30 C2.05.15 C2.05.12 +C1.05.31 C2.05.14 +C1.05.32 C2.05.17 C2.05.13 +C1.05.33 C2.05.15 +C1.05.34 C2.05.16 +C1.05.35 C2.05.17 +C1.05.36 C2.05.18 +C1.05.37 C2.06.19 C2.05.16 +C1.05.38 C2.04.15 +C1.05.39 C2.05.19 +C1.05.40 C2.05.20 C2.05.18 +C1.05.41 C2.05.21 +C1.05.42 C2.05.22 C2.05.19 +C1.05.43 C2.05.20 +C1.05.44 C2.05.23 C2.05.21 +C1.05.45 C2.05.22 +C1.05.46 C2.05.23 +C1.05.47 C2.05.24 +C1.05.48 C2.04.22 +C1.05.49 C2.05.25 +C1.05.50 C2.05.26 +C1.05.51 C2.06.27 C2.05.25 +C1.05.52 C2.05.27 C2.05.26 +C1.05.53 C2.05.27 +C1.05.54 C2.05.27 +C1.05.55 C2.05.27 +C1.05.56 C2.05.28 +C1.05.57 C2.05.27 +C1.05.58 C2.05.28 +C1.05.59 C2.05.30 C2.05.29 +C1.05.60 C2.05.28 +C1.05.61 C2.05.30 C2.05.31 +C1.05.62 C2.05.31 +C1.06.12 C2.06.05 +C1.06.13 C2.07.03 +C1.06.14 C2.06.02 +C1.06.15 C2.06.01 C2.06.05 +C1.06.16 C2.06.04 C2.06.02 +C1.06.17 C2.06.05 C2.06.03 C2.06.00 C2.05.01 +C1.06.18 C2.06.06 +C1.06.19 C2.06.04 +C1.06.20 C2.06.05 +C1.06.21 C2.07.07 +C1.06.22 C2.06.07 C2.06.06 +C1.06.23 C2.06.09 +C1.06.24 C2.06.07 +C1.06.25 C2.06.08 +C1.06.26 C2.06.10 +C1.06.27 C2.06.11 C2.06.09 +C1.06.28 C2.06.12 +C1.06.29 C2.06.11 +C1.06.30 C2.06.15 C2.06.12 +C1.06.31 C2.06.13 +C1.06.32 C2.06.14 +C1.06.33 C2.07.14 C2.06.13 +C1.06.34 C2.06.15 +C1.06.35 C2.06.17 C2.06.14 +C1.06.36 C2.06.16 +C1.06.37 C2.06.17 +C1.06.38 C2.07.17 C2.06.16 +C1.06.39 C2.06.18 +C1.06.40 C2.06.19 +C1.06.41 C2.06.20 C2.06.18 +C1.06.42 C2.06.21 +C1.06.43 C2.06.22 C2.06.21 +C1.06.44 C2.06.23 +C1.06.45 C2.06.22 +C1.06.46 C2.06.24 C2.06.23 +C1.06.47 C2.06.24 +C1.06.48 C2.06.25 C2.05.24 +C1.06.49 C2.06.25 +C1.06.50 C2.06.26 +C1.06.51 C2.06.27 +C1.06.52 C2.06.28 +C1.06.53 C2.06.28 +C1.06.54 C2.06.28 +C1.06.55 C2.06.28 +C1.06.56 C2.05.29 +C1.06.57 C2.06.28 +C1.06.58 C2.06.29 +C1.06.59 C2.06.30 +C1.06.60 C2.06.31 C2.06.29 +C1.06.61 C2.06.31 C2.06.30 C2.05.30 +C1.06.62 C2.06.31 C2.06.30 +C1.07.14 C2.07.00 +C1.07.15 C2.07.02 C2.07.00 +C1.07.16 C2.07.01 C2.07.02 +C1.07.17 C2.07.03 +C1.07.18 C2.07.04 C2.07.03 +C1.07.19 C2.07.04 +C1.07.20 C2.07.05 +C1.07.21 C2.07.06 C2.07.05 +C1.07.22 C2.07.06 +C1.07.23 C2.07.08 C2.07.07 +C1.07.24 C2.07.08 +C1.07.25 C2.07.09 +C1.07.26 C2.07.10 C2.07.09 +C1.07.27 C2.07.10 +C1.07.28 C2.07.11 C2.06.10 +C1.07.29 C2.07.11 +C1.07.30 C2.07.12 +C1.07.31 C2.07.13 C2.07.12 +C1.07.32 C2.07.13 +C1.07.33 C2.07.14 +C1.07.34 C2.07.15 +C1.07.35 C2.07.16 C2.07.15 +C1.07.36 C2.07.16 +C1.07.37 C2.07.17 +C1.07.38 C2.07.18 +C1.07.39 C2.07.19 C2.07.18 +C1.07.40 C2.07.19 +C1.07.41 C2.06.20 +C1.07.42 C2.07.20 +C1.07.43 C2.07.21 C2.07.20 +C1.07.44 C2.07.21 +C1.07.45 C2.07.22 +C1.07.46 C2.07.23 C2.07.22 +C1.07.47 C2.07.23 +C1.07.48 C2.07.24 +C1.07.49 C2.07.25 C2.07.24 +C1.07.50 C2.07.25 +C1.07.51 C2.07.26 C2.06.26 +C1.07.52 C2.07.26 +C1.07.53 C2.06.28 +C1.07.54 C2.07.27 +C1.07.55 C2.07.27 +C1.07.56 C2.07.27 +C1.07.57 C2.07.27 +C1.07.58 C2.07.27 +C1.07.59 C2.07.27 +C1.07.60 C2.07.28 +C1.07.61 C2.07.29 C2.07.28 +C1.07.62 C2.07.29 +C1.08.15 C2.08.02 +C1.08.16 C2.08.02 C2.08.01 +C1.08.17 C2.08.01 C2.08.00 +C1.08.18 C2.08.03 +C1.08.19 C2.08.03 C2.08.04 +C1.08.20 C2.08.04 +C1.08.21 C2.08.05 +C1.08.22 C2.08.05 C2.08.06 +C1.08.23 C2.08.06 +C1.08.24 C2.08.07 C2.08.08 +C1.08.25 C2.08.08 +C1.08.26 C2.08.09 +C1.08.27 C2.08.09 C2.08.10 +C1.08.28 C2.08.10 +C1.08.29 C2.09.10 C2.08.11 +C1.08.30 C2.08.11 +C1.08.31 C2.08.12 +C1.08.32 C2.08.12 C2.08.13 +C1.08.33 C2.08.13 +C1.08.34 C2.08.14 +C1.08.35 C2.08.15 +C1.08.36 C2.08.15 C2.08.16 +C1.08.37 C2.08.16 +C1.08.38 C2.08.17 +C1.08.39 C2.08.18 +C1.08.40 C2.08.18 C2.08.19 +C1.08.41 C2.08.19 +C1.08.42 C2.09.20 +C1.08.43 C2.08.20 +C1.08.44 C2.08.20 C2.08.21 +C1.08.45 C2.08.21 +C1.08.46 C2.08.22 +C1.08.47 C2.08.22 C2.08.23 +C1.08.48 C2.08.23 +C1.08.49 C2.08.24 +C1.08.50 C2.08.24 C2.08.25 +C1.08.51 C2.08.25 +C1.08.52 C2.09.26 C2.08.26 +C1.08.53 C2.08.26 +C1.08.54 C2.08.27 +C1.08.55 C2.08.27 +C1.08.56 C2.08.27 +C1.08.57 C2.08.27 +C1.08.58 C2.08.27 +C1.08.59 C2.08.27 +C1.08.60 C2.08.28 +C1.08.61 C2.08.28 C2.08.29 +C1.08.62 C2.08.29 +C1.09.12 C2.09.01 +C1.09.13 C2.08.03 +C1.09.14 C2.09.06 +C1.09.15 C2.09.01 C2.09.03 +C1.09.16 C2.09.02 C2.09.04 +C1.09.17 C2.10.06 C2.09.00 C2.09.05 +C1.09.18 C2.09.06 +C1.09.19 C2.09.04 +C1.09.20 C2.09.05 +C1.09.21 C2.08.07 +C1.09.22 C2.09.06 C2.09.07 +C1.09.23 C2.09.09 +C1.09.24 C2.09.07 +C1.09.25 C2.09.08 +C1.09.26 C2.09.10 +C1.09.27 C2.09.09 C2.09.11 +C1.09.28 C2.09.12 +C1.09.29 C2.09.11 +C1.09.30 C2.09.12 C2.09.15 +C1.09.31 C2.09.13 +C1.09.32 C2.09.14 +C1.09.33 C2.09.13 C2.08.14 +C1.09.34 C2.09.15 +C1.09.35 C2.09.14 C2.09.17 +C1.09.36 C2.09.16 +C1.09.37 C2.09.17 +C1.09.38 C2.09.16 C2.08.17 +C1.09.39 C2.09.18 +C1.09.40 C2.09.19 +C1.09.41 C2.09.18 C2.09.20 +C1.09.42 C2.09.21 +C1.09.43 C2.09.21 C2.09.22 +C1.09.44 C2.09.23 +C1.09.45 C2.09.22 +C1.09.46 C2.09.23 C2.09.24 +C1.09.47 C2.09.24 +C1.09.48 C2.10.24 C2.09.25 +C1.09.49 C2.09.25 +C1.09.50 C2.09.26 +C1.09.51 C2.09.27 +C1.09.52 C2.09.28 +C1.09.53 C2.09.28 +C1.09.54 C2.09.28 +C1.09.55 C2.09.28 +C1.09.56 C2.09.28 +C1.09.57 C2.09.29 +C1.09.58 C2.09.28 +C1.09.59 C2.09.29 C2.09.30 +C1.09.60 C2.09.30 +C1.09.61 C2.10.29 C2.09.31 +C1.09.62 C2.09.31 +C1.10.11 C2.10.03 +C1.10.12 C2.10.00 C2.10.06 C2.09.00 +C1.10.13 C2.11.01 C2.10.02 C2.10.04 +C1.10.14 C2.10.01 C2.10.07 +C1.10.15 C2.10.07 C2.10.05 C2.10.03 +C1.10.16 C2.10.00 C2.10.06 +C1.10.17 C2.10.02 C2.10.04 C2.10.08 +C1.10.18 C2.10.07 +C1.10.19 C2.10.09 +C1.10.20 C2.10.06 C2.09.08 +C1.10.21 C2.10.08 +C1.10.22 C2.10.10 +C1.10.23 C2.10.09 C2.10.11 +C1.10.24 C2.11.06 +C1.10.25 C2.10.12 +C1.10.26 C2.10.10 C2.10.14 +C1.10.27 C2.10.11 +C1.10.28 C2.10.13 +C1.10.29 C2.10.12 C2.10.15 +C1.10.30 C2.10.14 +C1.10.31 C2.10.13 C2.10.17 +C1.10.32 C2.10.15 +C1.10.33 C2.10.16 +C1.10.34 C2.10.17 +C1.10.35 C2.10.16 C2.09.19 +C1.10.36 C2.10.18 +C1.10.37 C2.11.15 +C1.10.38 C2.10.19 +C1.10.39 C2.10.18 C2.10.20 +C1.10.40 C2.10.21 +C1.10.41 C2.10.19 C2.10.22 +C1.10.42 C2.10.20 +C1.10.43 C2.10.21 C2.10.23 +C1.10.44 C2.10.22 +C1.10.45 C2.10.23 +C1.10.46 C2.10.24 +C1.10.47 C2.11.22 +C1.10.48 C2.10.25 +C1.10.49 C2.10.26 +C1.10.50 C2.10.25 C2.09.27 +C1.10.51 C2.10.26 C2.10.27 +C1.10.52 C2.10.27 +C1.10.53 C2.10.27 +C1.10.54 C2.10.27 +C1.10.55 C2.10.28 +C1.10.56 C2.10.27 +C1.10.57 C2.10.28 +C1.10.58 C2.10.29 +C1.10.59 C2.10.28 +C1.10.60 C2.10.30 C2.10.31 +C1.10.61 C2.10.30 C2.10.31 +C1.10.62 C2.10.31 +C1.11.12 C2.11.00 +C1.11.13 C2.11.00 +C1.11.14 C2.11.00 +C1.11.15 C2.11.01 +C1.11.16 C2.11.02 +C1.11.17 C2.11.03 +C1.11.18 C2.11.04 +C1.11.19 C2.11.05 +C1.11.20 C2.11.01 C2.11.06 +C1.11.21 C2.11.02 C2.11.07 +C1.11.22 C2.11.03 C2.11.08 +C1.11.23 C2.11.04 C2.11.09 +C1.11.24 C2.11.05 C2.11.10 +C1.11.25 C2.11.07 +C1.11.26 C2.11.08 +C1.11.27 C2.11.09 +C1.11.28 C2.11.10 +C1.11.29 C2.11.11 +C1.11.30 C2.11.12 +C1.11.31 C2.11.13 +C1.11.32 C2.11.14 +C1.11.33 C2.11.11 C2.11.15 +C1.11.34 C2.11.12 C2.11.16 +C1.11.35 C2.11.13 C2.11.17 +C1.11.36 C2.11.14 C2.11.18 +C1.11.37 C2.11.16 +C1.11.38 C2.11.17 +C1.11.39 C2.11.18 +C1.11.40 C2.11.19 +C1.11.41 C2.11.20 +C1.11.42 C2.11.21 +C1.11.43 C2.11.19 C2.11.22 +C1.11.44 C2.11.20 C2.11.23 +C1.11.45 C2.11.21 C2.11.24 +C1.11.46 C2.11.23 +C1.11.47 C2.11.24 +C1.11.48 C2.11.25 +C1.11.49 C2.11.26 +C1.11.50 C2.11.25 +C1.11.51 C2.11.25 +C1.11.52 C2.11.26 +C1.11.53 C2.11.26 +C1.11.54 C2.10.28 +C1.11.55 C2.10.28 +C1.11.56 C2.11.27 +C1.11.57 C2.11.28 +C1.11.58 C2.10.28 +C1.11.59 C2.11.27 C2.11.29 +C1.11.60 C2.11.28 C2.11.30 +C1.11.61 C2.11.29 +C1.11.62 C2.11.30 +C1.12.12 C2.12.00 +C1.12.13 C2.12.00 +C1.12.14 C2.12.00 +C1.12.15 C2.12.01 +C1.12.16 C2.12.02 +C1.12.17 C2.12.03 +C1.12.18 C2.12.04 +C1.12.19 C2.12.05 +C1.12.20 C2.12.01 C2.12.06 +C1.12.21 C2.12.02 C2.12.07 +C1.12.22 C2.12.03 C2.12.08 +C1.12.23 C2.12.04 C2.12.09 +C1.12.24 C2.12.05 C2.12.10 +C1.12.25 C2.12.07 +C1.12.26 C2.12.08 +C1.12.27 C2.12.09 +C1.12.28 C2.12.10 +C1.12.29 C2.12.11 +C1.12.30 C2.12.12 +C1.12.31 C2.12.13 +C1.12.32 C2.12.14 +C1.12.33 C2.12.11 C2.12.15 +C1.12.34 C2.12.12 C2.12.16 +C1.12.35 C2.12.13 C2.12.17 +C1.12.36 C2.12.14 C2.12.18 +C1.12.37 C2.12.16 +C1.12.38 C2.12.17 +C1.12.39 C2.12.18 +C1.12.40 C2.12.19 +C1.12.41 C2.12.20 +C1.12.42 C2.12.21 +C1.12.43 C2.12.19 C2.12.22 +C1.12.44 C2.12.20 C2.12.23 +C1.12.45 C2.12.21 C2.12.24 +C1.12.46 C2.12.23 +C1.12.47 C2.12.24 +C1.12.48 C2.12.25 +C1.12.49 C2.12.26 +C1.12.50 C2.12.25 +C1.12.51 C2.12.25 +C1.12.52 C2.12.26 +C1.12.53 C2.12.26 +C1.12.54 C2.13.28 +C1.12.55 C2.13.28 +C1.12.56 C2.12.27 +C1.12.57 C2.12.28 +C1.12.58 C2.13.28 +C1.12.59 C2.12.27 C2.12.29 +C1.12.60 C2.12.28 C2.12.30 +C1.12.61 C2.12.29 +C1.12.62 C2.12.30 +C1.13.12 C2.13.01 +C1.13.13 C2.13.03 +C1.13.14 C2.12.01 C2.13.04 C2.13.02 +C1.13.15 C2.13.00 C2.13.07 +C1.13.16 C2.13.07 C2.13.05 C2.13.03 +C1.13.17 C2.13.06 +C1.13.18 C2.13.04 C2.13.02 C2.13.08 +C1.13.19 C2.13.07 +C1.13.20 C2.13.09 +C1.13.21 C2.13.06 C2.14.08 +C1.13.22 C2.13.08 +C1.13.23 C2.13.10 +C1.13.24 C2.13.09 C2.13.11 +C1.13.25 C2.12.06 +C1.13.26 C2.13.12 +C1.13.27 C2.13.10 C2.13.14 +C1.13.28 C2.13.11 +C1.13.29 C2.13.13 +C1.13.30 C2.13.12 C2.13.15 +C1.13.31 C2.13.14 +C1.13.32 C2.13.13 C2.13.17 +C1.13.33 C2.13.15 +C1.13.34 C2.13.16 +C1.13.35 C2.13.17 +C1.13.36 C2.13.16 C2.14.19 +C1.13.37 C2.13.18 +C1.13.38 C2.12.15 +C1.13.39 C2.13.19 +C1.13.40 C2.13.18 C2.13.20 +C1.13.41 C2.13.21 +C1.13.42 C2.13.19 C2.13.22 +C1.13.43 C2.13.20 +C1.13.44 C2.13.21 C2.13.23 +C1.13.45 C2.13.22 +C1.13.46 C2.13.23 +C1.13.47 C2.13.24 +C1.13.48 C2.12.22 +C1.13.49 C2.13.25 +C1.13.50 C2.13.26 +C1.13.51 C2.13.25 C2.14.27 +C1.13.52 C2.13.26 C2.13.27 +C1.13.53 C2.13.27 +C1.13.54 C2.13.27 +C1.13.55 C2.13.27 +C1.13.56 C2.13.28 +C1.13.57 C2.13.27 +C1.13.58 C2.13.28 +C1.13.59 C2.13.30 C2.13.29 +C1.13.60 C2.13.28 +C1.13.61 C2.13.31 C2.13.30 +C1.13.62 C2.13.31 +C1.14.12 C2.14.05 +C1.14.13 C2.15.03 +C1.14.14 C2.14.02 +C1.14.15 C2.14.05 C2.14.01 +C1.14.16 C2.14.02 C2.14.04 +C1.14.17 C2.13.01 C2.14.00 C2.14.03 C2.14.05 +C1.14.18 C2.14.06 +C1.14.19 C2.14.04 +C1.14.20 C2.14.05 +C1.14.21 C2.15.07 +C1.14.22 C2.14.06 C2.14.07 +C1.14.23 C2.14.09 +C1.14.24 C2.14.07 +C1.14.25 C2.14.08 +C1.14.26 C2.14.10 +C1.14.27 C2.14.09 C2.14.11 +C1.14.28 C2.14.12 +C1.14.29 C2.14.11 +C1.14.30 C2.14.12 C2.14.15 +C1.14.31 C2.14.13 +C1.14.32 C2.14.14 +C1.14.33 C2.14.13 C2.15.14 +C1.14.34 C2.14.15 +C1.14.35 C2.14.14 C2.14.17 +C1.14.36 C2.14.16 +C1.14.37 C2.14.17 +C1.14.38 C2.14.16 C2.15.17 +C1.14.39 C2.14.18 +C1.14.40 C2.14.19 +C1.14.41 C2.14.18 C2.14.20 +C1.14.42 C2.14.21 +C1.14.43 C2.14.21 C2.14.22 +C1.14.44 C2.14.23 +C1.14.45 C2.14.22 +C1.14.46 C2.14.23 C2.14.24 +C1.14.47 C2.14.24 +C1.14.48 C2.13.24 C2.14.25 +C1.14.49 C2.14.25 +C1.14.50 C2.14.26 +C1.14.51 C2.14.27 +C1.14.52 C2.14.28 +C1.14.53 C2.14.28 +C1.14.54 C2.14.28 +C1.14.55 C2.14.28 +C1.14.56 C2.13.29 +C1.14.57 C2.14.28 +C1.14.58 C2.14.29 +C1.14.59 C2.14.30 +C1.14.60 C2.14.31 C2.14.29 +C1.14.61 C2.13.30 C2.14.31 C2.14.30 +C1.14.62 C2.14.31 C2.14.30 +C1.15.14 C2.15.00 +C1.15.15 C2.15.00 C2.15.02 +C1.15.16 C2.15.02 C2.15.01 +C1.15.17 C2.15.03 +C1.15.18 C2.15.03 C2.15.04 +C1.15.19 C2.15.04 +C1.15.20 C2.15.05 +C1.15.21 C2.15.05 C2.15.06 +C1.15.22 C2.15.06 +C1.15.23 C2.15.07 C2.15.08 +C1.15.24 C2.15.08 +C1.15.25 C2.15.09 +C1.15.26 C2.15.09 C2.15.10 +C1.15.27 C2.15.10 +C1.15.28 C2.14.10 C2.15.11 +C1.15.29 C2.15.11 +C1.15.30 C2.15.12 +C1.15.31 C2.15.12 C2.15.13 +C1.15.32 C2.15.13 +C1.15.33 C2.15.14 +C1.15.34 C2.15.15 +C1.15.35 C2.15.15 C2.15.16 +C1.15.36 C2.15.16 +C1.15.37 C2.15.17 +C1.15.38 C2.15.18 +C1.15.39 C2.15.18 C2.15.19 +C1.15.40 C2.15.19 +C1.15.41 C2.14.20 +C1.15.42 C2.15.20 +C1.15.43 C2.15.20 C2.15.21 +C1.15.44 C2.15.21 +C1.15.45 C2.15.22 +C1.15.46 C2.15.22 C2.15.23 +C1.15.47 C2.15.23 +C1.15.48 C2.15.24 +C1.15.49 C2.15.24 C2.15.25 +C1.15.50 C2.15.25 +C1.15.51 C2.14.26 C2.15.26 +C1.15.52 C2.15.26 +C1.15.53 C2.14.28 +C1.15.54 C2.15.27 +C1.15.55 C2.15.27 +C1.15.56 C2.15.27 +C1.15.57 C2.15.27 +C1.15.58 C2.15.27 +C1.15.59 C2.15.27 +C1.15.60 C2.15.28 +C1.15.61 C2.15.28 C2.15.29 +C1.15.62 C2.15.29 +C2.00.05 C3.00.02 +C2.00.06 C3.00.00 +C2.00.07 C3.00.01 +C2.00.08 C3.00.02 C3.00.01 +C2.00.09 C3.00.02 +C2.00.10 C3.00.03 +C2.00.11 C3.00.04 C3.00.01 +C2.00.12 C3.00.05 C3.00.02 +C2.00.13 C3.00.06 C3.00.03 +C2.00.14 C3.00.04 +C2.00.15 C3.00.05 +C2.00.16 C3.00.06 +C2.00.17 C3.00.07 +C2.00.18 C3.00.08 +C2.00.19 C3.00.09 +C2.00.20 C3.00.10 C3.00.08 +C2.00.21 C3.00.11 C3.00.09 +C2.00.22 C3.00.10 +C2.00.23 C3.00.11 +C2.00.24 C3.00.12 +C2.00.25 C3.00.13 +C2.00.26 C3.00.14 C3.00.13 +C2.00.27 C3.00.14 +C2.00.28 C3.00.15 C3.01.14 +C2.00.29 C3.00.15 +C2.01.05 C3.01.00 +C2.01.06 C3.01.00 +C2.01.07 C3.01.01 C3.01.00 +C2.01.08 C3.01.00 C3.01.02 C3.02.00 +C2.01.09 C3.01.00 +C2.01.10 C3.00.01 C3.01.03 C3.01.01 +C2.01.11 C3.01.01 C3.01.00 +C2.01.12 C3.01.04 C3.01.02 +C2.01.13 C3.01.03 +C2.01.14 C3.01.06 C3.01.04 C3.02.05 C3.01.02 +C2.01.15 C3.01.04 +C2.01.16 C3.01.05 +C2.01.17 C3.01.06 C3.01.04 +C2.01.18 C3.01.07 C3.01.05 +C2.01.19 C3.01.06 +C2.01.20 C3.01.08 C3.00.07 +C2.01.21 C3.01.07 +C2.01.22 C3.01.08 +C2.01.23 C3.01.09 +C2.01.24 C3.01.10 +C2.01.25 C3.01.11 C3.01.10 +C2.01.26 C3.01.12 C3.00.12 +C2.01.27 C3.01.11 +C2.01.28 C3.01.12 +C2.01.29 C3.01.13 +C2.01.30 C3.01.14 C3.01.15 +C2.01.31 C3.01.14 C3.01.15 +C2.02.06 C3.02.00 +C2.02.07 C3.02.01 +C2.02.08 C3.02.02 C3.02.01 +C2.02.09 C3.02.03 C3.02.00 C3.02.01 +C2.02.10 C3.02.03 C3.02.01 +C2.02.11 C3.02.05 C3.01.02 C3.02.03 C3.02.00 +C2.02.12 C3.02.04 C3.02.02 C3.02.01 +C2.02.13 C3.02.06 C3.02.04 C3.03.05 C3.02.02 +C2.02.14 C3.02.05 C3.02.03 +C2.02.15 C3.02.07 C3.02.04 +C2.02.16 C3.01.06 C3.02.05 +C2.02.17 C3.02.08 C3.02.07 C3.02.06 C3.02.04 +C2.02.18 C3.02.09 C3.02.07 +C2.02.19 C3.02.10 C3.02.09 C3.02.08 C3.02.07 +C2.02.20 C3.02.09 +C2.02.21 C3.02.10 C3.02.08 +C2.02.22 C3.02.10 C3.02.09 +C2.02.23 C3.02.10 +C2.02.24 C3.02.11 C3.01.09 +C2.02.25 C3.02.11 +C2.02.26 C3.02.12 +C2.02.27 C3.02.13 +C2.02.28 C3.03.15 C3.02.13 +C2.02.29 C3.01.15 C3.01.13 C3.02.14 +C2.02.30 C3.01.15 C3.02.14 +C2.02.31 C3.02.14 +C2.03.02 C3.03.02 +C2.03.03 C3.03.03 C3.03.02 +C2.03.04 C3.03.04 C3.03.03 C3.03.00 +C2.03.05 C3.03.04 C3.03.01 C3.03.00 +C2.03.06 C3.03.05 C3.02.02 C3.03.02 +C2.03.07 C3.03.05 C3.03.02 +C2.03.08 C3.03.06 C3.03.03 C3.03.02 +C2.03.09 C3.03.07 C3.03.06 C3.03.04 C3.03.03 +C2.03.10 C3.03.07 C3.03.04 +C2.03.11 C3.02.06 C3.03.05 +C2.03.12 C3.03.08 C3.03.06 +C2.03.13 C3.03.09 C3.03.08 C3.03.07 C3.03.06 +C2.03.14 C3.03.09 C3.03.07 +C2.03.15 C3.02.08 C3.02.06 +C2.03.16 C3.03.10 C3.03.08 +C2.03.17 C3.03.11 C3.03.10 C3.03.09 C3.03.08 +C2.03.18 C3.03.11 C3.03.09 +C2.03.19 C3.03.12 C3.03.10 +C2.03.20 C3.03.13 C3.03.12 C3.03.11 C3.03.10 +C2.03.21 C3.03.13 C3.03.11 +C2.03.22 C3.03.12 +C2.03.23 C3.03.13 C3.03.12 +C2.03.24 C3.03.13 +C2.03.25 C3.03.14 C3.02.12 +C2.03.26 C3.03.14 +C2.03.27 C3.03.15 +C2.03.28 C3.03.15 +C2.03.29 C3.03.15 +C2.03.30 C3.03.15 +C2.04.02 C3.04.02 +C2.04.03 C3.04.02 C3.04.03 +C2.04.04 C3.04.03 C3.04.04 C3.04.00 +C2.04.05 C3.04.04 C3.04.00 C3.04.01 +C2.04.06 C3.04.05 C3.05.01 C3.04.02 +C2.04.07 C3.04.05 C3.04.02 +C2.04.08 C3.04.06 C3.04.02 C3.04.03 +C2.04.09 C3.04.06 C3.04.07 C3.04.03 C3.04.04 +C2.04.10 C3.04.07 C3.04.04 +C2.04.11 C3.05.06 C3.04.05 +C2.04.12 C3.04.08 C3.04.06 +C2.04.13 C3.04.08 C3.04.09 C3.04.06 C3.04.07 +C2.04.14 C3.04.09 C3.04.07 +C2.04.15 C3.05.08 C3.05.06 +C2.04.16 C3.04.10 C3.04.08 +C2.04.17 C3.04.10 C3.04.11 C3.04.08 C3.04.09 +C2.04.18 C3.04.11 C3.04.09 +C2.04.19 C3.04.12 C3.04.10 +C2.04.20 C3.04.12 C3.04.13 C3.04.10 C3.04.11 +C2.04.21 C3.04.13 C3.04.11 +C2.04.22 C3.04.12 +C2.04.23 C3.04.12 C3.04.13 +C2.04.24 C3.04.13 +C2.04.25 C3.05.12 C3.04.14 +C2.04.26 C3.04.14 +C2.04.27 C3.04.15 +C2.04.28 C3.04.15 +C2.04.29 C3.04.15 +C2.04.30 C3.04.15 +C2.05.06 C3.05.00 +C2.05.07 C3.05.02 C3.05.01 +C2.05.08 C3.05.01 +C2.05.09 C3.05.00 C3.05.03 +C2.05.10 C3.05.00 C3.05.03 C3.05.02 +C2.05.11 C3.06.03 C3.05.05 C3.05.00 C3.05.03 +C2.05.12 C3.05.04 C3.05.02 C3.05.01 +C2.05.13 C3.05.04 C3.05.06 C3.05.02 C3.04.05 C3.05.01 +C2.05.14 C3.05.05 C3.05.03 +C2.05.15 C3.05.07 C3.05.04 +C2.05.16 C3.06.07 C3.05.05 +C2.05.17 C3.05.07 C3.05.08 C3.05.04 C3.05.06 +C2.05.18 C3.05.09 C3.05.07 +C2.05.19 C3.05.09 C3.05.10 C3.05.07 C3.05.08 +C2.05.20 C3.05.09 +C2.05.21 C3.05.10 C3.05.08 +C2.05.22 C3.05.09 C3.05.10 +C2.05.23 C3.05.10 +C2.05.24 C3.06.10 C3.05.11 +C2.05.25 C3.05.11 +C2.05.26 C3.05.12 +C2.05.27 C3.05.13 +C2.05.28 C3.05.13 C3.04.15 +C2.05.29 C3.06.14 C3.05.14 +C2.05.30 C3.05.14 C3.05.15 +C2.05.31 C3.05.15 +C2.06.05 C3.06.01 +C2.06.06 C3.06.02 +C2.06.07 C3.06.02 +C2.06.08 C3.06.01 C3.06.03 C3.05.00 +C2.06.09 C3.06.02 C3.06.01 +C2.06.10 C3.07.01 C3.06.04 C3.06.00 C3.06.02 +C2.06.11 C3.06.02 C3.06.01 +C2.06.12 C3.06.05 C3.06.03 +C2.06.13 C3.06.04 +C2.06.14 C3.06.05 C3.06.07 C3.06.03 C3.05.05 +C2.06.15 C3.06.05 +C2.06.16 C3.06.06 +C2.06.17 C3.06.05 C3.06.07 +C2.06.18 C3.06.06 C3.06.08 +C2.06.19 C3.06.07 +C2.06.20 C3.07.07 C3.06.09 +C2.06.21 C3.06.08 +C2.06.22 C3.06.09 +C2.06.23 C3.06.10 +C2.06.24 C3.06.11 +C2.06.25 C3.06.11 C3.06.12 +C2.06.26 C3.07.12 C3.06.13 +C2.06.27 C3.06.12 +C2.06.28 C3.06.13 +C2.06.29 C3.06.14 C3.05.14 +C2.06.30 C3.06.15 C3.06.14 +C2.06.31 C3.06.15 C3.05.14 +C2.07.05 C3.07.02 +C2.07.06 C3.07.00 +C2.07.07 C3.07.01 C3.06.00 +C2.07.08 C3.07.01 +C2.07.09 C3.07.02 +C2.07.10 C3.07.03 +C2.07.11 C3.07.01 C3.07.04 +C2.07.12 C3.07.02 C3.07.05 +C2.07.13 C3.07.03 C3.07.06 +C2.07.14 C3.07.04 +C2.07.15 C3.07.05 +C2.07.16 C3.07.06 +C2.07.17 C3.07.07 +C2.07.18 C3.07.08 +C2.07.19 C3.07.09 +C2.07.20 C3.07.08 C3.07.10 +C2.07.21 C3.07.09 C3.07.11 +C2.07.22 C3.07.10 +C2.07.23 C3.07.11 +C2.07.24 C3.07.12 +C2.07.25 C3.07.13 +C2.07.26 C3.07.13 C3.07.14 +C2.07.27 C3.07.14 +C2.07.28 C3.07.15 C3.06.15 +C2.07.29 C3.07.15 +C2.08.05 C3.08.02 +C2.08.06 C3.08.00 +C2.08.07 C3.08.01 +C2.08.08 C3.08.01 C3.08.02 +C2.08.09 C3.08.02 +C2.08.10 C3.08.03 +C2.08.11 C3.08.01 C3.08.04 +C2.08.12 C3.08.02 C3.08.05 +C2.08.13 C3.08.03 C3.08.06 +C2.08.14 C3.08.04 +C2.08.15 C3.08.05 +C2.08.16 C3.08.06 +C2.08.17 C3.08.07 +C2.08.18 C3.08.08 +C2.08.19 C3.08.09 +C2.08.20 C3.08.08 C3.08.10 +C2.08.21 C3.08.09 C3.08.11 +C2.08.22 C3.08.10 +C2.08.23 C3.08.11 +C2.08.24 C3.08.12 +C2.08.25 C3.08.13 +C2.08.26 C3.08.13 C3.08.14 +C2.08.27 C3.08.14 +C2.08.28 C3.09.14 C3.08.15 +C2.08.29 C3.08.15 +C2.09.05 C3.09.00 +C2.09.06 C3.09.00 +C2.09.07 C3.09.00 C3.09.01 +C2.09.08 C3.10.00 C3.09.00 C3.09.02 +C2.09.09 C3.09.00 +C2.09.10 C3.09.01 C3.09.03 C3.08.01 +C2.09.11 C3.09.00 C3.09.01 +C2.09.12 C3.09.02 C3.09.04 +C2.09.13 C3.09.03 +C2.09.14 C3.09.02 C3.10.05 C3.09.04 C3.09.06 +C2.09.15 C3.09.04 +C2.09.16 C3.09.05 +C2.09.17 C3.09.04 C3.09.06 +C2.09.18 C3.09.05 C3.09.07 +C2.09.19 C3.09.06 +C2.09.20 C3.08.07 C3.09.08 +C2.09.21 C3.09.07 +C2.09.22 C3.09.08 +C2.09.23 C3.09.09 +C2.09.24 C3.09.10 +C2.09.25 C3.09.10 C3.09.11 +C2.09.26 C3.08.12 C3.09.12 +C2.09.27 C3.09.11 +C2.09.28 C3.09.12 +C2.09.29 C3.09.13 +C2.09.30 C3.09.15 C3.09.14 +C2.09.31 C3.09.15 C3.09.14 +C2.10.06 C3.10.00 +C2.10.07 C3.10.01 +C2.10.08 C3.10.02 C3.10.01 +C2.10.09 C3.10.01 C3.10.00 C3.10.03 +C2.10.10 C3.10.01 C3.10.03 +C2.10.11 C3.10.00 C3.10.03 C3.09.02 C3.10.05 +C2.10.12 C3.10.02 C3.10.01 C3.10.04 +C2.10.13 C3.10.02 C3.11.05 C3.10.04 C3.10.06 +C2.10.14 C3.10.03 C3.10.05 +C2.10.15 C3.10.04 C3.10.07 +C2.10.16 C3.10.05 C3.09.06 +C2.10.17 C3.10.04 C3.10.06 C3.10.07 C3.10.08 +C2.10.18 C3.10.07 C3.10.09 +C2.10.19 C3.10.07 C3.10.08 C3.10.09 C3.10.10 +C2.10.20 C3.10.09 +C2.10.21 C3.10.08 C3.10.10 +C2.10.22 C3.10.09 C3.10.10 +C2.10.23 C3.10.10 +C2.10.24 C3.09.09 C3.10.11 +C2.10.25 C3.10.11 +C2.10.26 C3.10.12 +C2.10.27 C3.10.13 +C2.10.28 C3.10.13 C3.11.15 +C2.10.29 C3.09.13 C3.10.14 C3.09.15 +C2.10.30 C3.10.14 C3.09.15 +C2.10.31 C3.10.14 +C2.11.02 C3.11.02 +C2.11.03 C3.11.03 C3.11.02 +C2.11.04 C3.11.00 C3.11.03 C3.11.04 +C2.11.05 C3.11.00 C3.11.01 C3.11.04 +C2.11.06 C3.11.02 C3.10.02 C3.11.05 +C2.11.07 C3.11.02 C3.11.05 +C2.11.08 C3.11.03 C3.11.02 C3.11.06 +C2.11.09 C3.11.03 C3.11.04 C3.11.06 C3.11.07 +C2.11.10 C3.11.04 C3.11.07 +C2.11.11 C3.11.05 C3.10.06 +C2.11.12 C3.11.06 C3.11.08 +C2.11.13 C3.11.06 C3.11.07 C3.11.08 C3.11.09 +C2.11.14 C3.11.07 C3.11.09 +C2.11.15 C3.10.06 C3.10.08 +C2.11.16 C3.11.08 C3.11.10 +C2.11.17 C3.11.08 C3.11.09 C3.11.10 C3.11.11 +C2.11.18 C3.11.09 C3.11.11 +C2.11.19 C3.11.10 C3.11.12 +C2.11.20 C3.11.10 C3.11.11 C3.11.12 C3.11.13 +C2.11.21 C3.11.11 C3.11.13 +C2.11.22 C3.11.12 +C2.11.23 C3.11.12 C3.11.13 +C2.11.24 C3.11.13 +C2.11.25 C3.10.12 C3.11.14 +C2.11.26 C3.11.14 +C2.11.27 C3.11.15 +C2.11.28 C3.11.15 +C2.11.29 C3.11.15 +C2.11.30 C3.11.15 +C2.12.02 C3.12.02 +C2.12.03 C3.12.03 C3.12.02 +C2.12.04 C3.12.00 C3.12.03 C3.12.04 +C2.12.05 C3.12.01 C3.12.00 C3.12.04 +C2.12.06 C3.12.02 C3.13.01 C3.12.05 +C2.12.07 C3.12.02 C3.12.05 +C2.12.08 C3.12.03 C3.12.02 C3.12.06 +C2.12.09 C3.12.03 C3.12.04 C3.12.07 C3.12.06 +C2.12.10 C3.12.04 C3.12.07 +C2.12.11 C3.12.05 C3.13.06 +C2.12.12 C3.12.06 C3.12.08 +C2.12.13 C3.12.07 C3.12.06 C3.12.09 C3.12.08 +C2.12.14 C3.12.07 C3.12.09 +C2.12.15 C3.13.06 C3.13.08 +C2.12.16 C3.12.08 C3.12.10 +C2.12.17 C3.12.09 C3.12.08 C3.12.11 C3.12.10 +C2.12.18 C3.12.09 C3.12.11 +C2.12.19 C3.12.10 C3.12.12 +C2.12.20 C3.12.11 C3.12.10 C3.12.13 C3.12.12 +C2.12.21 C3.12.11 C3.12.13 +C2.12.22 C3.12.12 +C2.12.23 C3.12.13 C3.12.12 +C2.12.24 C3.12.13 +C2.12.25 C3.12.14 C3.13.12 +C2.12.26 C3.12.14 +C2.12.27 C3.12.15 +C2.12.28 C3.12.15 +C2.12.29 C3.12.15 +C2.12.30 C3.12.15 +C2.13.06 C3.13.00 +C2.13.07 C3.13.01 C3.13.02 +C2.13.08 C3.13.01 +C2.13.09 C3.13.00 C3.13.03 +C2.13.10 C3.13.02 C3.13.00 C3.13.03 +C2.13.11 C3.13.00 C3.13.03 C3.13.05 C3.14.03 +C2.13.12 C3.13.01 C3.13.02 C3.13.04 +C2.13.13 C3.13.01 C3.12.05 C3.13.02 C3.13.06 C3.13.04 +C2.13.14 C3.13.03 C3.13.05 +C2.13.15 C3.13.04 C3.13.07 +C2.13.16 C3.13.05 C3.14.07 +C2.13.17 C3.13.06 C3.13.04 C3.13.08 C3.13.07 +C2.13.18 C3.13.07 C3.13.09 +C2.13.19 C3.13.08 C3.13.07 C3.13.10 C3.13.09 +C2.13.20 C3.13.09 +C2.13.21 C3.13.08 C3.13.10 +C2.13.22 C3.13.10 C3.13.09 +C2.13.23 C3.13.10 +C2.13.24 C3.13.11 C3.14.10 +C2.13.25 C3.13.11 +C2.13.26 C3.13.12 +C2.13.27 C3.13.13 +C2.13.28 C3.12.15 C3.13.13 +C2.13.29 C3.13.14 C3.14.14 +C2.13.30 C3.13.15 C3.13.14 +C2.13.31 C3.13.15 +C2.14.05 C3.14.01 +C2.14.06 C3.14.02 +C2.14.07 C3.14.02 +C2.14.08 C3.13.00 C3.14.01 C3.14.03 +C2.14.09 C3.14.01 C3.14.02 +C2.14.10 C3.14.02 C3.14.04 C3.14.00 C3.15.01 +C2.14.11 C3.14.01 C3.14.02 +C2.14.12 C3.14.03 C3.14.05 +C2.14.13 C3.14.04 +C2.14.14 C3.13.05 C3.14.03 C3.14.07 C3.14.05 +C2.14.15 C3.14.05 +C2.14.16 C3.14.06 +C2.14.17 C3.14.07 C3.14.05 +C2.14.18 C3.14.08 C3.14.06 +C2.14.19 C3.14.07 +C2.14.20 C3.14.09 C3.15.07 +C2.14.21 C3.14.08 +C2.14.22 C3.14.09 +C2.14.23 C3.14.10 +C2.14.24 C3.14.11 +C2.14.25 C3.14.12 C3.14.11 +C2.14.26 C3.14.13 C3.15.12 +C2.14.27 C3.14.12 +C2.14.28 C3.14.13 +C2.14.29 C3.13.14 C3.14.14 +C2.14.30 C3.14.14 C3.14.15 +C2.14.31 C3.13.14 C3.14.15 +C2.15.05 C3.15.02 +C2.15.06 C3.15.00 +C2.15.07 C3.14.00 C3.15.01 +C2.15.08 C3.15.01 +C2.15.09 C3.15.02 +C2.15.10 C3.15.03 +C2.15.11 C3.15.01 C3.15.04 +C2.15.12 C3.15.05 C3.15.02 +C2.15.13 C3.15.06 C3.15.03 +C2.15.14 C3.15.04 +C2.15.15 C3.15.05 +C2.15.16 C3.15.06 +C2.15.17 C3.15.07 +C2.15.18 C3.15.08 +C2.15.19 C3.15.09 +C2.15.20 C3.15.10 C3.15.08 +C2.15.21 C3.15.11 C3.15.09 +C2.15.22 C3.15.10 +C2.15.23 C3.15.11 +C2.15.24 C3.15.12 +C2.15.25 C3.15.13 +C2.15.26 C3.15.14 C3.15.13 +C2.15.27 C3.15.14 +C2.15.28 C3.14.15 C3.15.15 +C2.15.29 C3.15.15 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext_H6.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext_H6.txt new file mode 100755 index 0000000000000000000000000000000000000000..cbba3509981ad946ed8a3cbda2c6c177a643a973 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsNext_H6.txt @@ -0,0 +1,165 @@ +# 3D FCal Neighbors Next in Sampling for the H6 Beam Test 2004 +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Mar 10 11:16:32 2004 +# +# 3d neighbors next in sampling are all cells touching the same +# eta phi area in the next sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without next sampling neighbors are not listed. +# +A1.04.07 A2.04.01 A2.04.02 +A1.04.08 A2.04.09 +A1.04.09 A2.04.00 A2.04.08 +A1.04.10 A2.04.03 A2.04.04 A2.04.14 +A1.04.11 A2.04.09 A2.04.13 +A1.04.12 A2.04.08 A2.04.12 +A1.04.13 A2.04.13 +A1.04.14 A2.04.12 +A1.04.15 A2.04.13 A2.04.18 +A1.04.16 A2.04.12 A2.04.17 +A1.04.17 A2.04.18 A2.04.22 +A1.04.18 A2.04.17 A2.04.21 +A1.04.19 A2.04.21 +A1.04.20 A2.04.25 +A1.04.21 A2.04.24 +A1.04.22 A2.04.25 A2.04.28 +A1.04.23 A2.04.24 A2.04.27 +A1.04.24 A2.04.27 +A1.04.25 A2.04.30 +A1.04.26 A2.05.28 A2.04.30 +A1.04.27 A2.05.28 +A1.04.28 A2.04.31 +A1.04.29 A2.04.31 +A1.05.13 A2.04.02 +A1.05.14 A2.06.00 +A1.05.15 A2.05.01 A2.05.02 A2.05.03 +A1.05.16 A2.05.03 A2.05.06 A2.05.07 +A1.05.17 A2.05.07 A2.05.13 +A1.05.18 A2.05.00 A2.04.05 A2.05.08 +A1.05.19 A2.05.02 A2.05.03 A2.05.04 A2.05.05 +A1.05.20 A2.05.06 A2.05.07 A2.05.12 +A1.05.21 A2.06.05 A2.05.13 +A1.05.22 A2.05.08 +A1.05.23 A2.05.04 A2.05.05 A2.05.11 +A1.05.24 A2.05.12 A2.05.15 +A1.05.25 A2.04.14 +A1.05.26 A2.05.08 A2.05.10 +A1.05.27 A2.05.11 A2.05.14 +A1.05.28 A2.05.15 +A1.05.29 A2.05.09 A2.04.14 +A1.05.30 A2.05.10 A2.05.17 +A1.05.31 A2.05.14 +A1.05.32 A2.05.09 A2.05.16 +A1.05.33 A2.05.17 +A1.05.34 A2.05.21 +A1.05.35 A2.05.16 +A1.05.36 A2.06.16 A2.05.21 +A1.05.37 A2.05.20 +A1.05.38 A2.04.22 +A1.05.39 A2.05.19 +A1.05.40 A2.05.20 A2.05.24 +A1.05.41 A2.05.18 +A1.05.42 A2.05.19 A2.05.23 +A1.05.43 A2.05.24 +A1.05.44 A2.05.18 A2.05.22 +A1.05.45 A2.05.23 +A1.05.46 A2.05.22 +A1.05.47 A2.05.27 +A1.05.48 A2.04.28 +A1.05.49 A2.05.26 +A1.05.50 A2.05.25 +A1.05.51 A2.06.23 A2.05.26 +A1.05.52 A2.05.25 A2.05.29 +A1.05.53 A2.05.29 +A1.05.54 A2.05.29 +A1.05.55 A2.05.29 +A1.05.56 A2.05.28 +A1.05.57 A2.05.29 +A1.05.58 A2.05.28 +A1.05.59 A2.06.28 +A1.05.60 A2.05.28 +A1.05.61 A2.05.30 A2.05.31 +A1.05.62 A2.05.30 A2.05.31 +A1.05.63 A2.05.30 +A1.06.11 A2.06.04 A2.06.14 +A1.06.12 A2.06.02 +A1.06.13 A2.07.03 A2.06.14 +A1.06.14 A2.06.10 +A1.06.15 A2.06.02 A2.06.03 +A1.06.16 A2.06.04 A2.06.14 +A1.06.17 A2.06.01 A2.06.06 +A1.06.18 A2.06.10 +A1.06.19 A2.06.14 +A1.06.20 A2.06.06 +A1.06.21 A2.07.07 +A1.06.22 A2.06.10 A2.06.13 +A1.06.23 A2.06.09 +A1.06.24 A2.06.13 +A1.06.25 A2.06.05 +A1.06.26 A2.06.15 +A1.06.27 A2.06.09 A2.06.12 +A1.06.28 A2.06.08 +A1.06.29 A2.06.12 +A1.06.30 A2.06.08 A2.06.11 +A1.06.31 A2.06.22 +A1.06.32 A2.06.07 +A1.06.33 A2.07.14 A2.06.22 +A1.06.34 A2.06.11 +A1.06.35 A2.06.07 A2.06.17 +A1.06.36 A2.06.21 +A1.06.37 A2.06.17 +A1.06.38 A2.07.17 A2.06.21 +A1.06.39 A2.06.20 +A1.06.40 A2.06.16 +A1.06.41 A2.06.20 A2.06.27 +A1.06.42 A2.06.19 +A1.06.43 A2.06.19 A2.06.26 +A1.06.44 A2.06.18 +A1.06.45 A2.06.26 +A1.06.46 A2.06.18 A2.06.25 +A1.06.47 A2.06.25 +A1.06.48 A2.06.24 A2.05.27 +A1.06.49 A2.06.24 +A1.06.50 A2.06.30 +A1.06.51 A2.06.23 +A1.06.52 A2.06.29 +A1.06.53 A2.06.29 +A1.06.54 A2.06.29 +A1.06.55 A2.06.29 +A1.06.56 A2.06.29 +A1.06.57 A2.06.28 +A1.06.58 A2.06.29 +A1.06.59 A2.06.28 +A1.06.60 A2.06.28 +A1.06.61 A2.06.28 +A1.06.62 A2.06.28 +A1.07.04 A2.07.03 +A1.07.05 A2.07.03 A2.07.04 +A1.07.06 A2.07.04 +A1.07.07 A2.07.03 A2.07.07 +A1.07.08 A2.07.03 A2.07.04 A2.07.07 A2.07.08 +A1.07.09 A2.07.04 A2.07.08 +A1.07.10 A2.07.07 A2.07.08 +A1.07.11 A2.07.08 +A1.07.12 A2.07.09 +A1.07.13 A2.07.11 A2.06.15 +A1.07.14 A2.07.11 +A1.07.15 A2.07.12 +A1.07.16 A2.07.14 +A1.07.17 A2.07.15 +A1.07.18 A2.07.17 +A1.07.19 A2.07.18 +A1.07.20 A2.06.27 +A1.07.21 A2.07.20 +A1.07.22 A2.07.22 +A1.07.23 A2.07.22 A2.07.23 +A1.07.24 A2.07.24 +A1.07.25 A2.07.24 A2.07.25 +A1.07.26 A2.07.26 A2.06.30 +A1.07.27 A2.07.27 +A1.07.28 A2.07.27 +A1.07.29 A2.07.27 +A1.07.30 A2.07.28 +A1.07.31 A2.07.28 A2.07.29 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev-April2011.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev-April2011.txt new file mode 100644 index 0000000000000000000000000000000000000000..2ba4c397e4fa89c5506e7336d0e741a84ce047e1 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev-April2011.txt @@ -0,0 +1,1519 @@ +# 3D FCal Neighbors Prev in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Apr 20 10:35:58 2011 +# +# 3d neighbors prev in sampling are all cells touching the same +# eta phi area in the prev sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without prev sampling neighbors are not listed. +# +A2.00.00 A1.00.14 A1.00.15 +A2.00.01 A1.00.16 +A2.00.02 A1.00.15 A1.00.16 +A2.00.03 A1.00.17 A1.00.18 A1.01.13 +A2.00.04 A1.00.18 A1.00.19 +A2.00.05 A1.00.20 A1.00.21 +A2.00.06 A1.00.21 A1.00.22 +A2.00.07 A1.00.23 A1.01.21 +A2.00.08 A1.00.23 A1.00.24 +A2.00.09 A1.00.25 A1.00.26 +A2.00.10 A1.00.26 A1.00.27 +A2.00.11 A1.00.28 A1.00.29 +A2.00.12 A1.00.30 A1.00.31 +A2.00.13 A1.00.31 A1.00.32 +A2.00.14 A1.00.33 A1.01.33 +A2.00.15 A1.00.34 A1.00.35 +A2.00.16 A1.00.35 A1.00.36 +A2.00.17 A1.00.37 A1.01.38 +A2.00.18 A1.00.38 A1.00.39 +A2.00.19 A1.00.39 A1.00.40 +A2.00.20 A1.00.42 A1.00.43 +A2.00.21 A1.00.43 A1.00.44 +A2.00.22 A1.00.45 A1.00.46 +A2.00.23 A1.00.46 A1.00.47 +A2.00.24 A1.00.48 A1.00.49 A1.00.51 A1.01.50 +A2.00.25 A1.00.49 A1.00.50 A1.00.51 A1.00.52 +A2.00.26 A1.00.51 A1.00.52 A1.00.54 A1.00.55 A1.00.56 +A2.00.27 A1.00.54 A1.00.55 A1.00.56 A1.00.57 A1.00.58 A1.00.59 A1.00.60 A1.00.61 A1.00.62 +A2.00.28 A1.00.60 A1.00.61 A1.01.62 +A2.00.29 A1.00.61 A1.00.62 +A2.01.00 A1.01.17 +A2.01.01 A1.01.15 +A2.01.02 A1.01.14 A1.01.16 +A2.01.03 A1.01.17 +A2.01.04 A1.01.16 A1.01.19 +A2.01.05 A1.01.12 A1.01.15 A1.01.17 A1.01.20 +A2.01.06 A1.01.18 A1.01.22 +A2.01.07 A1.01.22 A1.01.24 +A2.01.08 A1.01.25 A1.02.21 +A2.01.09 A1.01.23 A1.01.27 +A2.01.10 A1.00.28 A1.01.26 +A2.01.11 A1.01.27 A1.01.29 +A2.01.12 A1.01.28 A1.01.30 +A2.01.13 A1.01.31 A1.01.33 +A2.01.14 A1.01.32 A1.01.35 +A2.01.15 A1.01.30 A1.01.34 +A2.01.16 A1.01.36 A1.01.38 +A2.01.17 A1.01.35 A1.01.37 +A2.01.18 A1.01.39 A1.01.41 +A2.01.19 A1.01.40 A1.02.37 +A2.01.20 A1.00.41 A1.01.41 +A2.01.21 A1.01.42 A1.01.43 +A2.01.22 A1.01.43 A1.01.45 +A2.01.23 A1.01.44 A1.01.46 A1.01.48 A1.02.47 +A2.01.24 A1.01.46 A1.01.47 A1.01.48 A1.01.49 +A2.01.25 A1.01.48 A1.01.49 A1.01.51 A1.02.51 +A2.01.26 A1.00.51 A1.00.53 A1.01.50 A1.01.52 A1.01.53 +A2.01.27 A1.01.51 A1.02.51 A1.02.52 A1.02.53 A1.02.55 +A2.01.28 A1.00.53 A1.01.52 A1.01.53 A1.01.54 A1.01.55 A1.01.56 A1.01.57 A1.01.58 A1.01.59 +A2.01.29 A1.01.58 A1.01.60 +A2.01.30 A1.01.59 A1.01.61 A1.01.62 +A2.01.31 A1.01.60 A1.01.61 A1.01.62 +A2.02.00 A1.02.15 +A2.02.01 A1.01.17 A1.02.13 +A2.02.02 A1.02.14 A1.02.18 +A2.02.03 A1.02.12 A1.02.16 +A2.02.04 A1.02.14 A1.02.18 A1.03.15 A1.03.20 +A2.02.05 A1.02.16 +A2.02.06 A1.02.17 A1.02.21 +A2.02.07 A1.02.15 A1.02.16 A1.02.19 +A2.02.08 A1.02.18 A1.02.22 A1.02.25 A1.03.20 +A2.02.09 A1.02.20 A1.02.24 +A2.02.10 A1.02.23 A1.02.27 +A2.02.11 A1.02.24 A1.02.28 +A2.02.12 A1.02.26 A1.02.29 A1.02.30 A1.02.32 +A2.02.13 A1.02.29 A1.02.32 A1.03.29 A1.03.33 +A2.02.14 A1.02.27 A1.02.31 +A2.02.15 A1.02.30 A1.02.32 A1.02.33 A1.02.35 +A2.02.16 A1.02.34 A1.02.37 +A2.02.17 A1.02.32 A1.02.35 A1.02.38 A1.03.33 +A2.02.18 A1.02.36 A1.02.39 A1.02.40 A1.02.42 +A2.02.19 A1.02.39 A1.02.41 A1.02.42 A1.02.44 +A2.02.20 A1.02.40 A1.02.42 A1.02.43 A1.02.45 +A2.02.21 A1.02.41 A1.02.44 A1.03.40 A1.03.43 +A2.02.22 A1.02.42 A1.02.44 A1.02.45 A1.02.46 +A2.02.23 A1.02.44 A1.02.46 A1.02.48 A1.03.43 +A2.02.24 A1.01.48 A1.02.47 A1.02.49 A1.02.51 +A2.02.25 A1.02.49 A1.02.50 A1.02.51 A1.02.52 +A2.02.26 A1.02.50 A1.02.52 A1.03.48 A1.03.50 +A2.02.27 A1.02.52 A1.02.53 A1.02.54 A1.02.55 A1.02.56 A1.02.57 A1.02.58 A1.03.54 +A2.02.28 A1.02.56 A1.02.58 A1.02.60 A1.03.54 A1.03.55 A1.03.56 A1.03.58 A1.03.59 A1.03.61 +A2.02.29 A1.01.56 A1.02.59 +A2.02.30 A1.01.61 A1.02.59 A1.02.61 A1.02.62 +A2.02.31 A1.02.61 A1.02.62 +A2.03.00 A1.03.12 A1.03.13 A1.03.14 A1.04.14 +A2.03.01 A1.02.14 A1.03.15 A1.03.16 A1.03.20 A1.03.21 +A2.03.02 A1.03.16 A1.03.17 A1.03.21 A1.03.22 +A2.03.03 A1.03.17 A1.03.18 A1.03.22 A1.03.23 +A2.03.04 A1.03.18 A1.03.19 A1.03.23 A1.03.24 +A2.03.05 A1.03.19 A1.03.24 A1.04.19 A1.04.24 +A2.03.06 A1.02.25 A1.03.20 A1.03.21 A1.03.25 +A2.03.07 A1.03.21 A1.03.22 A1.03.25 A1.03.26 +A2.03.08 A1.03.22 A1.03.23 A1.03.26 A1.03.27 +A2.03.09 A1.03.23 A1.03.24 A1.03.27 A1.03.28 +A2.03.10 A1.03.24 A1.03.28 A1.04.24 A1.04.28 +A2.03.11 A1.03.29 A1.03.30 A1.03.33 A1.03.34 +A2.03.12 A1.03.30 A1.03.31 A1.03.34 A1.03.35 +A2.03.13 A1.03.31 A1.03.32 A1.03.35 A1.03.36 +A2.03.14 A1.03.32 A1.03.36 A1.04.32 A1.04.36 +A2.03.15 A1.02.38 A1.03.33 A1.03.34 A1.03.37 +A2.03.16 A1.03.34 A1.03.35 A1.03.37 A1.03.38 +A2.03.17 A1.03.35 A1.03.36 A1.03.38 A1.03.39 +A2.03.18 A1.03.36 A1.03.39 A1.04.36 A1.04.39 +A2.03.19 A1.03.40 A1.03.41 A1.03.43 A1.03.44 +A2.03.20 A1.03.41 A1.03.42 A1.03.44 A1.03.45 +A2.03.21 A1.03.42 A1.03.45 A1.04.42 A1.04.45 +A2.03.22 A1.02.48 A1.03.43 A1.03.44 A1.03.46 +A2.03.23 A1.03.44 A1.03.45 A1.03.46 A1.03.47 +A2.03.24 A1.03.45 A1.03.47 A1.04.45 A1.04.47 +A2.03.25 A1.03.48 A1.03.49 A1.03.50 A1.03.51 A1.03.52 +A2.03.26 A1.03.49 A1.03.52 A1.03.53 A1.04.49 A1.04.53 +A2.03.27 A1.03.56 A1.03.57 A1.03.59 A1.03.60 +A2.03.28 A1.03.57 A1.03.60 A1.04.57 A1.04.60 +A2.03.29 A1.03.59 A1.03.60 A1.03.61 A1.03.62 +A2.03.30 A1.03.60 A1.03.62 A1.04.60 A1.04.62 +A2.04.00 A1.04.12 A1.04.13 A1.04.14 +A2.04.01 A1.04.15 A1.04.20 A1.05.13 A1.05.17 +A2.04.02 A1.04.15 A1.04.16 A1.04.20 A1.04.21 +A2.04.03 A1.04.16 A1.04.17 A1.04.21 A1.04.22 +A2.04.04 A1.04.17 A1.04.18 A1.04.22 A1.04.23 +A2.04.05 A1.04.18 A1.04.19 A1.04.23 A1.04.24 +A2.04.06 A1.04.20 A1.05.17 A1.05.21 A1.05.24 +A2.04.07 A1.04.20 A1.04.21 A1.04.25 A1.05.24 +A2.04.08 A1.04.21 A1.04.22 A1.04.25 A1.04.26 +A2.04.09 A1.04.22 A1.04.23 A1.04.26 A1.04.27 +A2.04.10 A1.04.23 A1.04.24 A1.04.27 A1.04.28 +A2.04.11 A1.04.29 A1.04.33 A1.05.28 A1.05.31 +A2.04.12 A1.04.29 A1.04.30 A1.04.33 A1.04.34 +A2.04.13 A1.04.30 A1.04.31 A1.04.34 A1.04.35 +A2.04.14 A1.04.31 A1.04.32 A1.04.35 A1.04.36 +A2.04.15 A1.04.33 A1.05.31 A1.05.34 A1.05.37 +A2.04.16 A1.04.33 A1.04.34 A1.04.37 A1.05.37 +A2.04.17 A1.04.34 A1.04.35 A1.04.37 A1.04.38 +A2.04.18 A1.04.35 A1.04.36 A1.04.38 A1.04.39 +A2.04.19 A1.04.40 A1.04.43 A1.05.40 A1.05.43 +A2.04.20 A1.04.40 A1.04.41 A1.04.43 A1.04.44 +A2.04.21 A1.04.41 A1.04.42 A1.04.44 A1.04.45 +A2.04.22 A1.04.43 A1.05.43 A1.05.45 A1.05.47 +A2.04.23 A1.04.43 A1.04.44 A1.04.46 A1.05.47 +A2.04.24 A1.04.44 A1.04.45 A1.04.46 A1.04.47 +A2.04.25 A1.04.48 A1.04.50 A1.04.51 A1.05.49 A1.05.51 +A2.04.26 A1.04.48 A1.04.49 A1.04.51 A1.04.52 A1.04.53 +A2.04.27 A1.04.55 A1.04.56 A1.04.58 A1.04.59 +A2.04.28 A1.04.56 A1.04.57 A1.04.59 A1.04.60 +A2.04.29 A1.04.58 A1.04.59 A1.04.61 A1.05.59 +A2.04.30 A1.04.59 A1.04.60 A1.04.61 A1.04.62 +A2.05.00 A1.05.11 +A2.05.01 A1.05.14 +A2.05.02 A1.05.09 A1.05.13 A1.05.14 A1.05.17 +A2.05.03 A1.05.12 A1.05.15 +A2.05.04 A1.05.13 A1.05.17 +A2.05.05 A1.05.15 +A2.05.06 A1.05.11 A1.05.16 A1.05.20 A1.06.17 +A2.05.07 A1.05.10 A1.05.14 A1.05.15 A1.05.18 +A2.05.08 A1.05.14 A1.05.17 A1.05.18 A1.05.21 +A2.05.09 A1.05.16 A1.05.19 A1.05.20 A1.05.23 +A2.05.10 A1.05.19 A1.05.22 A1.05.23 A1.05.26 +A2.05.11 A1.05.20 A1.05.23 A1.05.27 A1.06.25 +A2.05.12 A1.05.22 A1.05.25 A1.05.26 A1.05.29 +A2.05.13 A1.05.25 A1.05.28 A1.05.29 A1.05.31 +A2.05.14 A1.05.23 A1.05.26 A1.05.27 A1.05.30 +A2.05.15 A1.05.26 A1.05.29 A1.05.30 A1.05.32 +A2.05.16 A1.05.33 A1.05.35 A1.06.32 A1.06.35 +A2.05.17 A1.05.29 A1.05.31 A1.05.32 A1.05.34 +A2.05.18 A1.05.33 A1.05.35 A1.05.36 A1.05.39 +A2.05.19 A1.05.36 A1.05.38 A1.05.39 A1.05.41 +A2.05.20 A1.05.35 A1.05.39 A1.05.42 A1.06.40 +A2.05.21 A1.05.38 A1.05.40 A1.05.41 A1.05.43 +A2.05.22 A1.05.39 A1.05.41 A1.05.42 A1.05.44 +A2.05.23 A1.05.41 A1.05.43 A1.05.44 A1.05.45 +A2.05.24 A1.05.46 A1.06.44 A1.06.46 A1.06.48 +A2.05.25 A1.05.46 A1.05.48 A1.05.50 A1.06.48 +A2.05.26 A1.05.48 A1.05.49 A1.05.50 A1.05.51 +A2.05.27 A1.05.50 A1.05.51 A1.05.52 A1.05.53 A1.05.54 A1.05.56 A1.06.51 +A2.05.28 A1.04.54 A1.04.55 A1.04.58 A1.05.51 A1.05.53 A1.05.55 A1.05.56 A1.05.57 A1.05.59 +A2.05.29 A1.05.58 A1.06.57 A1.06.59 A1.06.61 +A2.05.30 A1.05.58 A1.05.60 A1.05.61 A1.06.61 +A2.05.31 A1.05.60 A1.05.61 A1.05.62 +A2.06.00 A1.05.11 A1.06.12 A1.06.17 +A2.06.01 A1.06.12 A1.06.15 +A2.06.02 A1.06.11 A1.06.16 +A2.06.03 A1.06.15 +A2.06.04 A1.06.11 A1.06.13 A1.06.16 A1.06.19 +A2.06.05 A1.06.12 A1.06.15 A1.06.17 A1.06.20 +A2.06.06 A1.06.14 A1.06.16 A1.06.18 A1.06.22 +A2.06.07 A1.06.16 A1.06.19 A1.06.22 A1.06.24 +A2.06.08 A1.05.20 A1.06.17 A1.06.20 A1.06.25 +A2.06.09 A1.06.18 A1.06.22 A1.06.23 A1.06.27 +A2.06.10 A1.06.21 A1.06.26 A1.07.24 A1.07.29 +A2.06.11 A1.06.22 A1.06.24 A1.06.27 A1.06.29 +A2.06.12 A1.06.23 A1.06.27 A1.06.28 A1.06.30 +A2.06.13 A1.06.26 A1.06.31 A1.06.33 A1.07.29 +A2.06.14 A1.06.28 A1.06.30 A1.06.32 A1.06.35 +A2.06.15 A1.06.27 A1.06.29 A1.06.30 A1.06.34 +A2.06.16 A1.06.31 A1.06.33 A1.06.36 A1.06.38 +A2.06.17 A1.06.30 A1.06.34 A1.06.35 A1.06.37 +A2.06.18 A1.06.36 A1.06.38 A1.06.39 A1.06.41 +A2.06.19 A1.05.35 A1.06.35 A1.06.37 A1.06.40 +A2.06.20 A1.06.38 A1.06.41 A1.07.38 A1.07.42 +A2.06.21 A1.06.39 A1.06.41 A1.06.42 A1.06.43 +A2.06.22 A1.06.41 A1.06.43 A1.06.45 A1.07.42 +A2.06.23 A1.06.42 A1.06.43 A1.06.44 A1.06.46 +A2.06.24 A1.06.43 A1.06.45 A1.06.46 A1.06.47 +A2.06.25 A1.06.46 A1.06.47 A1.06.48 A1.06.49 +A2.06.26 A1.06.50 A1.07.49 A1.07.50 A1.07.52 +A2.06.27 A1.05.50 A1.06.48 A1.06.49 A1.06.51 +A2.06.28 A1.06.50 A1.06.52 A1.06.53 A1.06.54 A1.06.55 A1.06.56 A1.06.58 A1.07.52 +A2.06.29 A1.06.55 A1.06.56 A1.06.57 A1.06.59 +A2.06.30 A1.06.56 A1.06.58 A1.06.59 A1.06.60 +A2.06.31 A1.06.59 A1.06.60 A1.06.61 A1.06.62 A1.07.60 +A2.07.00 A1.07.15 A1.07.16 +A2.07.01 A1.07.16 A1.07.17 +A2.07.02 A1.07.17 +A2.07.03 A1.06.13 A1.07.07 A1.07.13 A1.07.18 A1.07.19 +A2.07.04 A1.07.13 A1.07.14 A1.07.19 A1.07.20 +A2.07.05 A1.07.15 A1.07.16 A1.07.21 A1.07.22 +A2.07.06 A1.07.16 A1.07.17 A1.07.22 A1.07.23 +A2.07.07 A1.06.21 A1.07.18 A1.07.19 A1.07.24 +A2.07.08 A1.07.19 A1.07.20 A1.07.24 A1.07.25 +A2.07.09 A1.07.21 A1.07.22 A1.07.26 A1.07.27 +A2.07.10 A1.07.22 A1.07.23 A1.07.27 A1.07.28 +A2.07.11 A1.07.24 A1.07.25 A1.07.29 A1.07.30 +A2.07.12 A1.07.26 A1.07.27 A1.07.31 A1.07.32 +A2.07.13 A1.07.27 A1.07.28 A1.07.32 A1.07.33 +A2.07.14 A1.06.33 A1.07.29 A1.07.30 A1.07.34 +A2.07.15 A1.07.31 A1.07.32 A1.07.35 A1.07.36 +A2.07.16 A1.07.32 A1.07.33 A1.07.36 A1.07.37 +A2.07.17 A1.06.33 A1.06.38 A1.07.34 A1.07.38 +A2.07.18 A1.07.35 A1.07.36 A1.07.39 A1.07.40 +A2.07.19 A1.07.36 A1.07.37 A1.07.40 A1.07.41 +A2.07.20 A1.07.39 A1.07.40 A1.07.43 A1.07.44 +A2.07.21 A1.07.40 A1.07.41 A1.07.44 A1.07.45 +A2.07.22 A1.07.43 A1.07.44 A1.07.46 A1.07.47 +A2.07.23 A1.07.44 A1.07.45 A1.07.47 A1.07.48 +A2.07.24 A1.07.46 A1.07.47 A1.07.49 A1.07.50 +A2.07.25 A1.07.47 A1.07.48 A1.07.50 A1.07.51 +A2.07.26 A1.07.50 A1.07.51 A1.07.52 A1.07.53 +A2.07.27 A1.07.52 A1.07.53 A1.07.54 A1.07.55 A1.07.56 A1.07.57 A1.07.58 A1.07.59 +A2.07.28 A1.07.57 A1.07.58 A1.07.60 A1.07.61 +A2.07.29 A1.07.58 A1.07.59 A1.07.61 A1.07.62 +A2.08.00 A1.08.14 A1.08.15 +A2.08.01 A1.08.16 +A2.08.02 A1.08.15 A1.08.16 +A2.08.03 A1.08.12 A1.08.17 A1.08.18 A1.09.13 +A2.08.04 A1.08.12 A1.08.13 A1.08.18 A1.08.19 +A2.08.05 A1.08.14 A1.08.15 A1.08.20 A1.08.21 +A2.08.06 A1.08.15 A1.08.16 A1.08.21 A1.08.22 +A2.08.07 A1.08.17 A1.08.18 A1.08.23 A1.09.21 +A2.08.08 A1.08.18 A1.08.19 A1.08.23 A1.08.24 +A2.08.09 A1.08.20 A1.08.21 A1.08.25 A1.08.26 +A2.08.10 A1.08.21 A1.08.22 A1.08.26 A1.08.27 +A2.08.11 A1.08.23 A1.08.24 A1.08.28 A1.08.29 +A2.08.12 A1.08.25 A1.08.26 A1.08.30 A1.08.31 +A2.08.13 A1.08.26 A1.08.27 A1.08.31 A1.08.32 +A2.08.14 A1.08.28 A1.08.29 A1.08.33 A1.09.33 +A2.08.15 A1.08.30 A1.08.31 A1.08.34 A1.08.35 +A2.08.16 A1.08.31 A1.08.32 A1.08.35 A1.08.36 +A2.08.17 A1.08.33 A1.08.37 A1.09.33 A1.09.38 +A2.08.18 A1.08.34 A1.08.35 A1.08.38 A1.08.39 +A2.08.19 A1.08.35 A1.08.36 A1.08.39 A1.08.40 +A2.08.20 A1.08.38 A1.08.39 A1.08.42 A1.08.43 +A2.08.21 A1.08.39 A1.08.40 A1.08.43 A1.08.44 +A2.08.22 A1.08.42 A1.08.43 A1.08.45 A1.08.46 +A2.08.23 A1.08.43 A1.08.44 A1.08.46 A1.08.47 +A2.08.24 A1.08.45 A1.08.46 A1.08.48 A1.08.49 +A2.08.25 A1.08.46 A1.08.47 A1.08.49 A1.08.50 +A2.08.26 A1.08.49 A1.08.50 A1.08.51 A1.08.52 +A2.08.27 A1.08.51 A1.08.52 A1.08.54 A1.08.55 A1.08.56 A1.08.57 A1.08.58 A1.08.59 +A2.08.28 A1.08.57 A1.08.58 A1.08.60 A1.08.61 +A2.08.29 A1.08.58 A1.08.59 A1.08.61 A1.08.62 +A2.09.00 A1.09.12 A1.09.17 +A2.09.01 A1.09.15 +A2.09.02 A1.09.14 A1.09.16 +A2.09.03 A1.09.17 +A2.09.04 A1.09.11 A1.09.13 A1.09.16 A1.09.19 +A2.09.05 A1.09.12 A1.09.15 A1.09.17 A1.09.20 +A2.09.06 A1.09.14 A1.09.16 A1.09.18 A1.09.22 +A2.09.07 A1.09.16 A1.09.19 A1.09.22 A1.09.24 +A2.09.08 A1.09.17 A1.09.20 A1.09.25 A1.10.21 +A2.09.09 A1.09.18 A1.09.22 A1.09.23 A1.09.27 +A2.09.10 A1.08.23 A1.08.28 A1.09.21 A1.09.26 +A2.09.11 A1.09.22 A1.09.24 A1.09.27 A1.09.29 +A2.09.12 A1.09.23 A1.09.27 A1.09.28 A1.09.30 +A2.09.13 A1.08.28 A1.09.26 A1.09.31 A1.09.33 +A2.09.14 A1.09.28 A1.09.30 A1.09.32 A1.09.35 +A2.09.15 A1.09.27 A1.09.29 A1.09.30 A1.09.34 +A2.09.16 A1.09.31 A1.09.33 A1.09.36 A1.09.38 +A2.09.17 A1.09.30 A1.09.34 A1.09.35 A1.09.37 +A2.09.18 A1.09.36 A1.09.38 A1.09.39 A1.09.41 +A2.09.19 A1.09.35 A1.09.37 A1.09.40 A1.10.36 +A2.09.20 A1.08.37 A1.08.41 A1.09.38 A1.09.41 +A2.09.21 A1.09.39 A1.09.41 A1.09.42 A1.09.43 +A2.09.22 A1.08.41 A1.09.41 A1.09.43 A1.09.45 +A2.09.23 A1.09.42 A1.09.43 A1.09.44 A1.09.46 +A2.09.24 A1.09.43 A1.09.45 A1.09.46 A1.09.47 +A2.09.25 A1.09.46 A1.09.47 A1.09.48 A1.09.49 +A2.09.26 A1.08.48 A1.08.49 A1.08.51 A1.09.50 +A2.09.27 A1.09.48 A1.09.49 A1.09.51 A1.10.51 +A2.09.28 A1.08.51 A1.08.53 A1.09.50 A1.09.52 A1.09.53 A1.09.54 A1.09.55 A1.09.57 +A2.09.29 A1.09.55 A1.09.58 A1.09.60 +A2.09.30 A1.09.57 A1.09.59 A1.09.61 A1.09.62 +A2.09.31 A1.08.60 A1.09.60 A1.09.61 A1.09.62 +A2.10.00 A1.10.15 +A2.10.01 A1.09.17 A1.10.12 +A2.10.02 A1.10.10 A1.10.14 A1.10.15 A1.10.18 +A2.10.03 A1.10.13 A1.10.16 +A2.10.04 A1.10.14 A1.10.18 +A2.10.05 A1.10.16 +A2.10.06 A1.09.17 A1.10.12 A1.10.17 A1.10.21 +A2.10.07 A1.10.11 A1.10.15 A1.10.16 A1.10.19 +A2.10.08 A1.10.15 A1.10.18 A1.10.19 A1.10.22 +A2.10.09 A1.10.17 A1.10.20 A1.10.21 A1.10.24 +A2.10.10 A1.10.20 A1.10.23 A1.10.24 A1.10.27 +A2.10.11 A1.09.25 A1.10.21 A1.10.24 A1.10.28 +A2.10.12 A1.10.23 A1.10.26 A1.10.27 A1.10.30 +A2.10.13 A1.10.26 A1.10.29 A1.10.30 A1.10.32 +A2.10.14 A1.10.24 A1.10.27 A1.10.28 A1.10.31 +A2.10.15 A1.10.27 A1.10.30 A1.10.31 A1.10.33 +A2.10.16 A1.09.32 A1.09.35 A1.10.34 A1.10.36 +A2.10.17 A1.10.30 A1.10.32 A1.10.33 A1.10.35 +A2.10.18 A1.10.34 A1.10.36 A1.10.37 A1.10.40 +A2.10.19 A1.10.37 A1.10.39 A1.10.40 A1.10.42 +A2.10.20 A1.09.40 A1.10.36 A1.10.40 A1.10.43 +A2.10.21 A1.10.39 A1.10.41 A1.10.42 A1.10.44 +A2.10.22 A1.10.40 A1.10.42 A1.10.43 A1.10.45 +A2.10.23 A1.10.42 A1.10.44 A1.10.45 A1.10.46 +A2.10.24 A1.09.44 A1.09.46 A1.09.48 A1.10.47 +A2.10.25 A1.09.48 A1.10.47 A1.10.49 A1.10.51 +A2.10.26 A1.10.49 A1.10.50 A1.10.51 A1.10.52 +A2.10.27 A1.09.51 A1.10.51 A1.10.52 A1.10.53 A1.10.54 A1.10.55 A1.10.57 +A2.10.28 A1.10.52 A1.10.54 A1.10.56 A1.10.57 A1.10.58 A1.10.60 A1.11.54 A1.11.55 A1.11.58 +A2.10.29 A1.09.54 A1.09.56 A1.10.59 +A2.10.30 A1.09.60 A1.09.61 A1.10.59 A1.10.61 +A2.10.31 A1.10.61 A1.10.62 +A2.11.00 A1.11.12 A1.11.13 A1.11.14 +A2.11.01 A1.10.14 A1.10.18 A1.11.15 A1.11.20 +A2.11.02 A1.11.15 A1.11.16 A1.11.20 A1.11.21 +A2.11.03 A1.11.16 A1.11.17 A1.11.21 A1.11.22 +A2.11.04 A1.11.17 A1.11.18 A1.11.22 A1.11.23 +A2.11.05 A1.11.18 A1.11.19 A1.11.23 A1.11.24 +A2.11.06 A1.10.18 A1.10.22 A1.10.25 A1.11.20 +A2.11.07 A1.10.25 A1.11.20 A1.11.21 A1.11.25 +A2.11.08 A1.11.21 A1.11.22 A1.11.25 A1.11.26 +A2.11.09 A1.11.22 A1.11.23 A1.11.26 A1.11.27 +A2.11.10 A1.11.23 A1.11.24 A1.11.27 A1.11.28 +A2.11.11 A1.10.29 A1.10.32 A1.11.29 A1.11.33 +A2.11.12 A1.11.29 A1.11.30 A1.11.33 A1.11.34 +A2.11.13 A1.11.30 A1.11.31 A1.11.34 A1.11.35 +A2.11.14 A1.11.31 A1.11.32 A1.11.35 A1.11.36 +A2.11.15 A1.10.32 A1.10.35 A1.10.38 A1.11.33 +A2.11.16 A1.10.38 A1.11.33 A1.11.34 A1.11.37 +A2.11.17 A1.11.34 A1.11.35 A1.11.37 A1.11.38 +A2.11.18 A1.11.35 A1.11.36 A1.11.38 A1.11.39 +A2.11.19 A1.10.41 A1.10.44 A1.11.40 A1.11.43 +A2.11.20 A1.11.40 A1.11.41 A1.11.43 A1.11.44 +A2.11.21 A1.11.41 A1.11.42 A1.11.44 A1.11.45 +A2.11.22 A1.10.44 A1.10.46 A1.10.48 A1.11.43 +A2.11.23 A1.10.48 A1.11.43 A1.11.44 A1.11.46 +A2.11.24 A1.11.44 A1.11.45 A1.11.46 A1.11.47 +A2.11.25 A1.10.50 A1.10.52 A1.11.48 A1.11.50 A1.11.51 +A2.11.26 A1.11.48 A1.11.49 A1.11.51 A1.11.52 A1.11.53 +A2.11.27 A1.11.55 A1.11.56 A1.11.58 A1.11.59 +A2.11.28 A1.11.56 A1.11.57 A1.11.59 A1.11.60 +A2.11.29 A1.10.60 A1.11.58 A1.11.59 A1.11.61 +A2.11.30 A1.11.59 A1.11.60 A1.11.61 A1.11.62 +A2.12.00 A1.11.14 A1.12.12 A1.12.13 A1.12.14 +A2.12.01 A1.12.15 A1.12.16 A1.12.20 A1.12.21 A1.13.13 +A2.12.02 A1.12.16 A1.12.17 A1.12.21 A1.12.22 +A2.12.03 A1.12.17 A1.12.18 A1.12.22 A1.12.23 +A2.12.04 A1.12.18 A1.12.19 A1.12.23 A1.12.24 +A2.12.05 A1.11.19 A1.11.24 A1.12.19 A1.12.24 +A2.12.06 A1.12.20 A1.12.21 A1.12.25 A1.13.24 +A2.12.07 A1.12.21 A1.12.22 A1.12.25 A1.12.26 +A2.12.08 A1.12.22 A1.12.23 A1.12.26 A1.12.27 +A2.12.09 A1.12.23 A1.12.24 A1.12.27 A1.12.28 +A2.12.10 A1.11.24 A1.11.28 A1.12.24 A1.12.28 +A2.12.11 A1.12.29 A1.12.30 A1.12.33 A1.12.34 +A2.12.12 A1.12.30 A1.12.31 A1.12.34 A1.12.35 +A2.12.13 A1.12.31 A1.12.32 A1.12.35 A1.12.36 +A2.12.14 A1.11.32 A1.11.36 A1.12.32 A1.12.36 +A2.12.15 A1.12.33 A1.12.34 A1.12.37 A1.13.37 +A2.12.16 A1.12.34 A1.12.35 A1.12.37 A1.12.38 +A2.12.17 A1.12.35 A1.12.36 A1.12.38 A1.12.39 +A2.12.18 A1.11.36 A1.11.39 A1.12.36 A1.12.39 +A2.12.19 A1.12.40 A1.12.41 A1.12.43 A1.12.44 +A2.12.20 A1.12.41 A1.12.42 A1.12.44 A1.12.45 +A2.12.21 A1.11.42 A1.11.45 A1.12.42 A1.12.45 +A2.12.22 A1.12.43 A1.12.44 A1.12.46 A1.13.47 +A2.12.23 A1.12.44 A1.12.45 A1.12.46 A1.12.47 +A2.12.24 A1.11.45 A1.11.47 A1.12.45 A1.12.47 +A2.12.25 A1.12.48 A1.12.49 A1.12.50 A1.12.51 A1.12.52 +A2.12.26 A1.11.49 A1.11.53 A1.12.49 A1.12.52 A1.12.53 +A2.12.27 A1.12.56 A1.12.57 A1.12.59 A1.12.60 +A2.12.28 A1.11.57 A1.11.60 A1.12.57 A1.12.60 +A2.12.29 A1.12.59 A1.12.60 A1.12.61 A1.12.62 +A2.12.30 A1.11.60 A1.11.62 A1.12.60 A1.12.62 +A2.13.00 A1.13.12 A1.13.16 +A2.13.01 A1.13.14 +A2.13.02 A1.13.13 A1.13.17 +A2.13.03 A1.13.11 A1.13.15 +A2.13.04 A1.12.20 A1.13.13 A1.13.17 +A2.13.05 A1.13.15 +A2.13.06 A1.13.12 A1.13.16 A1.13.20 A1.14.17 +A2.13.07 A1.13.14 A1.13.15 A1.13.18 +A2.13.08 A1.12.20 A1.13.17 A1.13.21 A1.13.24 +A2.13.09 A1.13.19 A1.13.23 +A2.13.10 A1.13.22 A1.13.26 +A2.13.11 A1.13.23 A1.13.27 +A2.13.12 A1.13.25 A1.13.28 A1.13.29 A1.13.31 +A2.13.13 A1.12.29 A1.12.33 A1.13.28 A1.13.31 +A2.13.14 A1.13.26 A1.13.30 +A2.13.15 A1.13.29 A1.13.31 A1.13.32 A1.13.34 +A2.13.16 A1.13.33 A1.13.35 +A2.13.17 A1.12.33 A1.13.31 A1.13.34 A1.13.37 +A2.13.18 A1.13.36 A1.13.38 A1.13.39 A1.13.41 +A2.13.19 A1.13.38 A1.13.40 A1.13.41 A1.13.43 +A2.13.20 A1.13.39 A1.13.41 A1.13.42 A1.13.44 +A2.13.21 A1.12.40 A1.12.43 A1.13.40 A1.13.43 +A2.13.22 A1.13.41 A1.13.43 A1.13.44 A1.13.45 +A2.13.23 A1.12.43 A1.13.43 A1.13.45 A1.13.47 +A2.13.24 A1.13.46 A1.13.48 A1.13.50 A1.14.48 +A2.13.25 A1.13.48 A1.13.49 A1.13.50 A1.13.51 +A2.13.26 A1.12.48 A1.12.50 A1.13.49 A1.13.51 +A2.13.27 A1.12.54 A1.13.51 A1.13.52 A1.13.53 A1.13.54 A1.13.55 A1.13.56 A1.13.57 +A2.13.28 A1.12.54 A1.12.55 A1.12.56 A1.12.58 A1.12.59 A1.12.61 A1.13.55 A1.13.57 A1.13.59 +A2.13.29 A1.13.58 A1.13.60 A1.13.61 A1.14.61 +A2.13.30 A1.13.60 A1.13.61 +A2.13.31 A1.13.60 A1.13.61 A1.13.62 +A2.14.00 A1.13.12 A1.14.17 +A2.14.01 A1.14.12 A1.14.15 +A2.14.02 A1.14.16 +A2.14.03 A1.14.15 +A2.14.04 A1.14.16 A1.14.19 +A2.14.05 A1.14.17 A1.14.20 +A2.14.06 A1.14.14 A1.14.18 A1.14.22 +A2.14.07 A1.14.22 A1.14.24 +A2.14.08 A1.13.20 A1.14.25 +A2.14.09 A1.14.23 A1.14.27 +A2.14.10 A1.14.26 A1.15.29 +A2.14.11 A1.14.27 A1.14.29 +A2.14.12 A1.14.28 A1.14.30 +A2.14.13 A1.14.31 A1.14.33 +A2.14.14 A1.14.32 A1.14.35 +A2.14.15 A1.14.30 A1.14.34 +A2.14.16 A1.14.36 A1.14.38 +A2.14.17 A1.14.35 A1.14.37 +A2.14.18 A1.14.39 A1.14.41 +A2.14.19 A1.13.35 A1.14.40 +A2.14.20 A1.14.41 A1.15.42 +A2.14.21 A1.14.42 A1.14.43 +A2.14.22 A1.14.43 A1.14.45 +A2.14.23 A1.13.46 A1.14.44 A1.14.46 A1.14.48 +A2.14.24 A1.14.46 A1.14.47 A1.14.48 A1.14.49 +A2.14.25 A1.13.50 A1.14.48 A1.14.49 A1.14.51 +A2.14.26 A1.14.50 A1.14.52 A1.14.53 A1.14.54 A1.15.52 +A2.14.27 A1.13.50 A1.13.51 A1.13.52 A1.13.54 A1.14.51 +A2.14.28 A1.14.52 A1.14.53 A1.14.54 A1.14.55 A1.14.56 A1.14.57 A1.14.58 A1.14.59 A1.14.60 +A2.14.29 A1.13.58 A1.14.57 A1.14.59 A1.14.61 +A2.14.30 A1.14.59 A1.14.60 A1.14.61 A1.14.62 +A2.14.31 A1.13.61 A1.14.61 A1.14.62 +A2.15.00 A1.15.17 +A2.15.01 A1.15.16 A1.15.17 +A2.15.02 A1.15.15 A1.15.16 +A2.15.03 A1.14.13 A1.15.18 A1.15.19 +A2.15.04 A1.15.19 A1.15.20 +A2.15.05 A1.15.21 A1.15.22 +A2.15.06 A1.15.22 A1.15.23 +A2.15.07 A1.14.21 A1.15.24 +A2.15.08 A1.15.24 A1.15.25 +A2.15.09 A1.15.26 A1.15.27 +A2.15.10 A1.15.27 A1.15.28 +A2.15.11 A1.15.29 A1.15.30 +A2.15.12 A1.15.31 A1.15.32 +A2.15.13 A1.15.32 A1.15.33 +A2.15.14 A1.14.33 A1.15.34 +A2.15.15 A1.15.35 A1.15.36 +A2.15.16 A1.15.36 A1.15.37 +A2.15.17 A1.14.38 A1.15.38 +A2.15.18 A1.15.39 A1.15.40 +A2.15.19 A1.15.40 A1.15.41 +A2.15.20 A1.15.43 A1.15.44 +A2.15.21 A1.15.44 A1.15.45 +A2.15.22 A1.15.46 A1.15.47 +A2.15.23 A1.15.47 A1.15.48 +A2.15.24 A1.14.50 A1.15.49 A1.15.50 A1.15.52 +A2.15.25 A1.15.50 A1.15.51 A1.15.52 A1.15.53 +A2.15.26 A1.15.52 A1.15.53 A1.15.54 A1.15.55 A1.15.56 +A2.15.27 A1.15.54 A1.15.55 A1.15.56 A1.15.57 A1.15.58 A1.15.59 A1.15.60 A1.15.61 A1.15.62 +A2.15.28 A1.14.62 A1.15.60 A1.15.61 +A2.15.29 A1.15.61 A1.15.62 +A3.00.00 A2.00.06 +A3.00.01 A2.00.07 A2.00.08 A2.00.11 A2.01.10 +A3.00.02 A2.00.05 A2.00.09 A2.00.12 +A3.00.03 A2.00.10 A2.00.13 +A3.00.04 A2.00.11 A2.00.14 +A3.00.05 A2.00.12 A2.00.15 +A3.00.06 A2.00.13 A2.00.16 +A3.00.07 A2.00.14 A2.00.17 A2.01.20 +A3.00.08 A2.00.15 A2.00.18 A2.00.20 +A3.00.09 A2.00.16 A2.00.19 A2.00.21 +A3.00.10 A2.00.20 A2.00.22 +A3.00.11 A2.00.21 A2.00.23 +A3.00.12 A2.00.22 A2.00.24 A2.01.26 +A3.00.13 A2.00.23 A2.00.25 A2.00.26 +A3.00.14 A2.00.26 A2.00.27 +A3.00.15 A2.00.27 A2.00.28 A2.00.29 +A3.01.00 A2.00.07 A2.01.10 +A3.01.01 A2.01.05 A2.01.06 A2.01.08 A2.01.09 A2.01.11 +A3.01.02 A2.00.07 A2.01.04 A2.01.06 A2.01.07 A2.01.09 A2.01.10 A2.01.11 +A3.01.03 A2.01.05 A2.01.08 A2.01.09 A2.01.12 A2.01.14 A2.02.11 +A3.01.04 A2.01.10 A2.01.13 +A3.01.05 A2.01.09 A2.01.11 A2.01.12 A2.01.14 A2.01.15 A2.01.17 +A3.01.06 A2.01.13 A2.01.16 A2.01.18 +A3.01.07 A2.01.14 A2.01.17 A2.01.19 A2.02.16 +A3.01.08 A2.01.18 A2.01.21 +A3.01.09 A2.01.20 A2.01.22 +A3.01.10 A2.01.21 A2.01.23 A2.02.24 +A3.01.11 A2.01.22 A2.01.24 A2.01.25 +A3.01.12 A2.01.25 A2.01.27 +A3.01.13 A2.01.26 A2.01.28 +A3.01.14 A2.01.28 A2.01.29 A2.01.30 A2.02.29 +A3.01.15 A2.00.27 A2.00.28 A2.01.28 A2.01.30 A2.01.31 +A3.02.00 A2.01.03 A2.01.08 A2.02.06 A2.02.09 A2.02.10 A2.02.11 +A3.02.01 A2.02.07 A2.02.08 A2.02.10 A2.02.12 A2.02.13 A2.03.06 +A3.02.02 A2.02.07 A2.02.09 A2.02.10 A2.02.12 A2.02.13 +A3.02.03 A2.02.09 A2.02.10 A2.02.11 A2.02.14 +A3.02.04 A2.02.10 A2.02.12 A2.02.13 A2.02.14 A2.02.15 A2.02.17 +A3.02.05 A2.01.14 A2.02.11 A2.02.14 A2.02.16 +A3.02.06 A2.02.13 A2.02.17 A2.03.11 A2.03.15 +A3.02.07 A2.02.14 A2.02.15 A2.02.16 A2.02.17 A2.02.18 A2.02.19 +A3.02.08 A2.02.17 A2.02.19 A2.02.21 A2.03.15 +A3.02.09 A2.01.19 A2.02.16 A2.02.18 A2.02.19 A2.02.20 A2.02.22 +A3.02.10 A2.02.19 A2.02.21 A2.02.22 A2.02.23 +A3.02.11 A2.02.24 A2.02.25 +A3.02.12 A2.02.25 A2.02.26 A2.03.25 +A3.02.13 A2.01.27 A2.02.27 A2.02.28 +A3.02.14 A2.01.29 A2.01.31 A2.02.29 A2.02.30 +A3.02.15 A2.02.29 A2.02.30 A2.02.31 +A3.03.00 A2.03.04 A2.03.05 +A3.03.01 A2.03.05 +A3.03.02 A2.03.01 A2.03.02 A2.03.03 A2.03.06 A2.03.07 A2.03.08 +A3.03.03 A2.03.03 A2.03.04 A2.03.07 A2.03.08 A2.03.09 +A3.03.04 A2.03.04 A2.03.05 A2.03.09 A2.03.10 +A3.03.05 A2.02.13 A2.03.06 A2.03.07 A2.03.11 +A3.03.06 A2.03.07 A2.03.08 A2.03.09 A2.03.11 A2.03.12 A2.03.13 +A3.03.07 A2.03.09 A2.03.10 A2.03.13 A2.03.14 +A3.03.08 A2.03.11 A2.03.12 A2.03.13 A2.03.15 A2.03.16 A2.03.17 +A3.03.09 A2.03.13 A2.03.14 A2.03.17 A2.03.18 +A3.03.10 A2.02.21 A2.03.15 A2.03.16 A2.03.17 A2.03.19 A2.03.20 +A3.03.11 A2.03.17 A2.03.18 A2.03.20 A2.03.21 +A3.03.12 A2.02.21 A2.02.23 A2.03.19 A2.03.20 A2.03.22 A2.03.23 +A3.03.13 A2.03.20 A2.03.21 A2.03.23 A2.03.24 +A3.03.14 A2.03.25 A2.03.26 +A3.03.15 A2.02.28 A2.03.27 A2.03.28 A2.03.29 A2.03.30 +A3.04.00 A2.04.04 A2.04.05 +A3.04.01 A2.03.05 A2.04.05 +A3.04.02 A2.04.02 A2.04.03 A2.04.06 A2.04.07 A2.04.08 +A3.04.03 A2.04.03 A2.04.04 A2.04.08 A2.04.09 +A3.04.04 A2.03.05 A2.03.10 A2.04.04 A2.04.05 A2.04.09 A2.04.10 +A3.04.05 A2.04.06 A2.04.07 A2.04.08 A2.04.11 A2.04.12 A2.05.13 +A3.04.06 A2.04.08 A2.04.09 A2.04.12 A2.04.13 +A3.04.07 A2.03.10 A2.03.14 A2.04.09 A2.04.10 A2.04.13 A2.04.14 +A3.04.08 A2.04.12 A2.04.13 A2.04.16 A2.04.17 +A3.04.09 A2.03.14 A2.03.18 A2.04.13 A2.04.14 A2.04.17 A2.04.18 +A3.04.10 A2.04.16 A2.04.17 A2.04.19 A2.04.20 +A3.04.11 A2.03.18 A2.03.21 A2.04.17 A2.04.18 A2.04.20 A2.04.21 +A3.04.12 A2.04.19 A2.04.20 A2.04.22 A2.04.23 +A3.04.13 A2.03.21 A2.03.24 A2.04.20 A2.04.21 A2.04.23 A2.04.24 +A3.04.14 A2.03.26 A2.04.25 A2.04.26 +A3.04.15 A2.03.28 A2.03.30 A2.04.27 A2.04.28 A2.04.29 A2.04.30 A2.05.28 +A3.05.00 A2.05.06 A2.05.09 A2.05.11 A2.06.08 +A3.05.01 A2.05.07 A2.05.08 A2.05.09 A2.05.10 A2.05.12 +A3.05.02 A2.04.06 A2.05.08 A2.05.12 A2.05.13 +A3.05.03 A2.05.09 A2.05.10 A2.05.11 A2.05.12 A2.05.14 A2.05.15 +A3.05.04 A2.05.12 A2.05.13 A2.05.15 A2.05.17 +A3.05.05 A2.05.11 A2.05.14 A2.05.15 A2.05.16 A2.05.18 A2.06.14 +A3.05.06 A2.04.11 A2.04.12 A2.04.15 A2.04.16 A2.05.13 A2.05.17 +A3.05.07 A2.05.15 A2.05.17 A2.05.18 A2.05.19 +A3.05.08 A2.04.15 A2.04.16 A2.04.19 A2.05.17 A2.05.19 A2.05.21 +A3.05.09 A2.05.18 A2.05.19 A2.05.20 A2.05.22 +A3.05.10 A2.04.19 A2.04.22 A2.05.19 A2.05.21 A2.05.22 A2.05.23 +A3.05.11 A2.05.24 A2.05.25 A2.05.26 +A3.05.12 A2.04.25 A2.05.26 +A3.05.13 A2.05.27 A2.05.28 +A3.05.14 A2.05.29 A2.05.30 A2.05.31 +A3.06.00 A2.06.05 A2.06.06 A2.06.07 A2.06.08 A2.06.09 A2.06.11 A2.06.12 A2.06.15 +A3.06.01 A2.06.07 A2.06.10 A2.06.11 A2.06.15 +A3.06.02 A2.05.11 A2.06.08 A2.06.12 A2.06.14 +A3.06.03 A2.06.10 A2.06.13 A2.06.16 +A3.06.04 A2.06.12 A2.06.14 A2.06.15 A2.06.17 +A3.06.05 A2.06.16 A2.06.18 +A3.06.06 A2.05.16 A2.05.18 A2.05.20 A2.06.14 A2.06.17 A2.06.19 +A3.06.07 A2.06.18 A2.06.21 A2.06.23 +A3.06.08 A2.06.20 A2.06.22 A2.06.24 +A3.06.09 A2.05.24 A2.06.23 +A3.06.10 A2.06.24 A2.06.25 +A3.06.11 A2.05.27 A2.06.25 A2.06.27 +A3.06.12 A2.06.26 A2.06.28 A2.06.29 A2.06.30 +A3.06.13 A2.05.29 A2.06.29 +A3.06.14 A2.06.30 A2.06.31 A2.07.28 +A3.06.15 A2.05.29 A2.05.30 A2.06.30 A2.06.31 +A3.07.00 A2.07.06 A2.07.10 +A3.07.01 A2.06.10 A2.07.07 A2.07.08 A2.07.11 +A3.07.02 A2.07.08 A2.07.09 A2.07.12 +A3.07.03 A2.07.10 A2.07.13 +A3.07.04 A2.07.11 A2.07.14 A2.07.17 +A3.07.05 A2.07.12 A2.07.15 A2.07.18 +A3.07.06 A2.07.13 A2.07.16 A2.07.19 +A3.07.07 A2.06.20 A2.07.17 +A3.07.08 A2.07.18 A2.07.20 +A3.07.09 A2.07.19 A2.07.21 +A3.07.10 A2.07.20 A2.07.22 A2.07.24 +A3.07.11 A2.07.21 A2.07.23 A2.07.25 +A3.07.12 A2.06.26 A2.07.24 +A3.07.13 A2.07.25 A2.07.26 +A3.07.14 A2.07.26 A2.07.27 A2.07.28 A2.07.29 +A3.07.15 A2.07.28 A2.07.29 +A3.08.00 A2.08.06 A2.08.10 +A3.08.01 A2.08.07 A2.08.08 A2.08.11 A2.09.10 +A3.08.02 A2.08.09 A2.08.12 +A3.08.03 A2.08.10 A2.08.13 +A3.08.04 A2.08.11 A2.08.14 A2.08.17 +A3.08.05 A2.08.12 A2.08.15 A2.08.18 +A3.08.06 A2.08.13 A2.08.16 A2.08.19 +A3.08.07 A2.08.17 A2.09.20 +A3.08.08 A2.08.18 A2.08.20 +A3.08.09 A2.08.19 A2.08.21 +A3.08.10 A2.08.20 A2.08.22 A2.08.24 +A3.08.11 A2.08.21 A2.08.23 A2.08.25 +A3.08.12 A2.08.24 A2.09.26 +A3.08.13 A2.08.25 A2.08.26 +A3.08.14 A2.08.26 A2.08.27 A2.08.28 A2.08.29 +A3.08.15 A2.08.28 A2.08.29 +A3.09.00 A2.08.07 A2.09.10 +A3.09.01 A2.09.05 A2.09.08 A2.09.09 A2.09.11 A2.09.12 A2.09.15 +A3.09.02 A2.09.06 A2.09.07 A2.09.09 A2.09.10 A2.09.11 A2.09.15 +A3.09.03 A2.09.08 A2.09.12 A2.09.14 A2.10.11 +A3.09.04 A2.09.10 A2.09.13 A2.09.16 +A3.09.05 A2.09.12 A2.09.14 A2.09.15 A2.09.17 +A3.09.06 A2.09.16 A2.09.18 +A3.09.07 A2.09.14 A2.09.17 A2.09.19 A2.10.16 A2.10.18 A2.10.20 +A3.09.08 A2.09.18 A2.09.21 A2.09.23 +A3.09.09 A2.09.20 A2.09.22 A2.09.24 +A3.09.10 A2.09.23 A2.10.24 +A3.09.11 A2.09.24 A2.09.25 +A3.09.12 A2.09.25 A2.09.27 A2.10.27 +A3.09.13 A2.09.26 A2.09.28 A2.09.29 A2.09.30 A2.10.29 +A3.09.14 A2.09.29 A2.09.30 A2.09.31 A2.10.29 +A3.09.15 A2.08.28 A2.09.30 A2.09.31 +A3.10.00 A2.09.08 A2.10.06 A2.10.09 A2.10.10 A2.10.11 +A3.10.01 A2.10.07 A2.10.08 A2.10.12 A2.10.13 A2.11.06 +A3.10.02 A2.10.07 A2.10.08 A2.10.10 A2.10.12 A2.10.13 +A3.10.03 A2.10.09 A2.10.10 A2.10.11 A2.10.12 A2.10.14 A2.10.15 +A3.10.04 A2.10.12 A2.10.13 A2.10.15 A2.10.17 +A3.10.05 A2.09.14 A2.10.11 A2.10.14 A2.10.15 A2.10.16 A2.10.18 +A3.10.06 A2.10.13 A2.10.17 A2.11.11 A2.11.12 A2.11.15 A2.11.16 +A3.10.07 A2.10.15 A2.10.17 A2.10.18 A2.10.19 +A3.10.08 A2.10.17 A2.10.19 A2.10.21 A2.11.15 A2.11.16 A2.11.19 +A3.10.09 A2.10.18 A2.10.19 A2.10.20 A2.10.22 +A3.10.10 A2.10.19 A2.10.21 A2.10.22 A2.10.23 A2.11.19 A2.11.22 +A3.10.11 A2.10.24 A2.10.25 A2.10.26 +A3.10.12 A2.10.26 A2.11.25 +A3.10.13 A2.10.27 A2.10.28 +A3.10.14 A2.09.29 A2.09.31 A2.10.29 A2.10.30 +A3.10.15 A2.10.30 A2.10.31 +A3.11.00 A2.11.04 A2.11.05 +A3.11.01 A2.11.05 A2.12.05 +A3.11.02 A2.11.02 A2.11.03 A2.11.06 A2.11.07 A2.11.08 +A3.11.03 A2.11.03 A2.11.04 A2.11.08 A2.11.09 +A3.11.04 A2.11.04 A2.11.05 A2.11.09 A2.11.10 A2.12.05 A2.12.10 +A3.11.05 A2.10.13 A2.11.06 A2.11.07 A2.11.08 A2.11.11 A2.11.12 +A3.11.06 A2.11.08 A2.11.09 A2.11.12 A2.11.13 +A3.11.07 A2.11.09 A2.11.10 A2.11.13 A2.11.14 A2.12.10 A2.12.14 +A3.11.08 A2.11.12 A2.11.13 A2.11.16 A2.11.17 +A3.11.09 A2.11.13 A2.11.14 A2.11.17 A2.11.18 A2.12.14 A2.12.18 +A3.11.10 A2.11.16 A2.11.17 A2.11.19 A2.11.20 +A3.11.11 A2.11.17 A2.11.18 A2.11.20 A2.11.21 A2.12.18 A2.12.21 +A3.11.12 A2.11.19 A2.11.20 A2.11.22 A2.11.23 +A3.11.13 A2.11.20 A2.11.21 A2.11.23 A2.11.24 A2.12.21 A2.12.24 +A3.11.14 A2.11.25 A2.11.26 A2.12.26 +A3.11.15 A2.10.28 A2.11.27 A2.11.28 A2.11.29 A2.11.30 A2.12.28 A2.12.30 +A3.12.00 A2.12.04 A2.12.05 +A3.12.01 A2.12.05 +A3.12.02 A2.12.02 A2.12.03 A2.12.06 A2.12.07 A2.12.08 +A3.12.03 A2.12.03 A2.12.04 A2.12.07 A2.12.08 A2.12.09 +A3.12.04 A2.12.04 A2.12.05 A2.12.09 A2.12.10 +A3.12.05 A2.12.06 A2.12.07 A2.12.11 A2.13.13 +A3.12.06 A2.12.07 A2.12.08 A2.12.09 A2.12.11 A2.12.12 A2.12.13 +A3.12.07 A2.12.09 A2.12.10 A2.12.13 A2.12.14 +A3.12.08 A2.12.11 A2.12.12 A2.12.13 A2.12.15 A2.12.16 A2.12.17 +A3.12.09 A2.12.13 A2.12.14 A2.12.17 A2.12.18 +A3.12.10 A2.12.15 A2.12.16 A2.12.17 A2.12.19 A2.12.20 A2.13.21 +A3.12.11 A2.12.17 A2.12.18 A2.12.20 A2.12.21 +A3.12.12 A2.12.19 A2.12.20 A2.12.22 A2.12.23 A2.13.21 A2.13.23 +A3.12.13 A2.12.20 A2.12.21 A2.12.23 A2.12.24 +A3.12.14 A2.12.25 A2.12.26 +A3.12.15 A2.12.27 A2.12.28 A2.12.29 A2.12.30 A2.13.28 +A3.13.00 A2.13.06 A2.13.09 A2.13.11 A2.14.05 A2.14.08 +A3.13.01 A2.13.07 A2.13.08 A2.13.09 A2.13.10 A2.13.12 +A3.13.02 A2.12.06 A2.13.08 A2.13.10 A2.13.12 A2.13.13 +A3.13.03 A2.13.09 A2.13.10 A2.13.11 A2.13.14 +A3.13.04 A2.13.10 A2.13.12 A2.13.13 A2.13.14 A2.13.15 A2.13.17 +A3.13.05 A2.13.11 A2.13.14 A2.13.16 A2.14.14 +A3.13.06 A2.12.11 A2.12.15 A2.13.13 A2.13.17 +A3.13.07 A2.13.14 A2.13.15 A2.13.16 A2.13.17 A2.13.18 A2.13.19 +A3.13.08 A2.12.15 A2.13.17 A2.13.19 A2.13.21 +A3.13.09 A2.13.16 A2.13.18 A2.13.19 A2.13.20 A2.13.22 A2.14.19 +A3.13.10 A2.13.19 A2.13.21 A2.13.22 A2.13.23 +A3.13.11 A2.13.24 A2.13.25 +A3.13.12 A2.12.25 A2.13.25 A2.13.26 +A3.13.13 A2.13.27 A2.13.28 A2.14.27 +A3.13.14 A2.13.29 A2.13.30 A2.13.31 +A3.14.00 A2.14.05 A2.14.06 A2.14.07 A2.14.08 A2.14.09 A2.14.11 +A3.14.01 A2.14.04 A2.14.07 A2.14.10 A2.14.11 A2.15.07 +A3.14.02 A2.13.11 A2.14.05 A2.14.08 A2.14.09 A2.14.12 A2.14.14 +A3.14.03 A2.14.10 A2.14.13 +A3.14.04 A2.14.09 A2.14.11 A2.14.12 A2.14.14 A2.14.15 A2.14.17 +A3.14.05 A2.14.13 A2.14.16 A2.14.18 +A3.14.06 A2.13.16 A2.14.14 A2.14.17 A2.14.19 +A3.14.07 A2.14.18 A2.14.21 +A3.14.08 A2.14.20 A2.14.22 +A3.14.09 A2.13.24 A2.14.21 A2.14.23 +A3.14.10 A2.14.22 A2.14.24 A2.14.25 +A3.14.11 A2.14.25 A2.14.27 +A3.14.12 A2.14.26 A2.14.28 +A3.14.13 A2.13.29 A2.14.28 A2.14.29 +A3.14.14 A2.14.28 A2.14.30 A2.14.31 A2.15.27 A2.15.28 +A3.14.15 A2.13.29 A2.13.30 A2.14.30 A2.14.31 +A3.15.00 A2.15.06 +A3.15.01 A2.14.10 A2.15.07 A2.15.08 A2.15.11 +A3.15.02 A2.15.05 A2.15.08 A2.15.09 A2.15.12 +A3.15.03 A2.15.10 A2.15.13 +A3.15.04 A2.15.11 A2.15.14 +A3.15.05 A2.15.12 A2.15.15 +A3.15.06 A2.15.13 A2.15.16 +A3.15.07 A2.14.20 A2.15.14 A2.15.17 +A3.15.08 A2.15.15 A2.15.18 A2.15.20 +A3.15.09 A2.15.16 A2.15.19 A2.15.21 +A3.15.10 A2.15.20 A2.15.22 +A3.15.11 A2.15.21 A2.15.23 +A3.15.12 A2.14.26 A2.15.22 A2.15.24 +A3.15.13 A2.15.23 A2.15.25 A2.15.26 +A3.15.14 A2.15.26 A2.15.27 +A3.15.15 A2.15.27 A2.15.28 A2.15.29 +C2.00.00 C1.00.14 C1.00.15 +C2.00.01 C1.00.16 +C2.00.02 C1.00.15 C1.00.16 +C2.00.03 C1.00.17 C1.00.18 C1.01.13 +C2.00.04 C1.00.18 C1.00.19 +C2.00.05 C1.00.20 C1.00.21 +C2.00.06 C1.00.21 C1.00.22 +C2.00.07 C1.00.23 C1.01.21 +C2.00.08 C1.00.23 C1.00.24 +C2.00.09 C1.00.25 C1.00.26 +C2.00.10 C1.00.26 C1.00.27 +C2.00.11 C1.00.28 C1.00.29 +C2.00.12 C1.00.30 C1.00.31 +C2.00.13 C1.00.31 C1.00.32 +C2.00.14 C1.00.33 C1.01.33 +C2.00.15 C1.00.34 C1.00.35 +C2.00.16 C1.00.35 C1.00.36 +C2.00.17 C1.00.37 C1.01.38 +C2.00.18 C1.00.38 C1.00.39 +C2.00.19 C1.00.39 C1.00.40 +C2.00.20 C1.00.42 C1.00.43 +C2.00.21 C1.00.43 C1.00.44 +C2.00.22 C1.00.45 C1.00.46 +C2.00.23 C1.00.46 C1.00.47 +C2.00.24 C1.00.48 C1.00.49 C1.00.51 C1.01.50 +C2.00.25 C1.00.49 C1.00.50 C1.00.51 C1.00.52 +C2.00.26 C1.00.51 C1.00.52 C1.00.54 C1.00.55 C1.00.56 +C2.00.27 C1.00.54 C1.00.55 C1.00.56 C1.00.57 C1.00.58 C1.00.59 C1.00.60 C1.00.61 C1.00.62 +C2.00.28 C1.00.60 C1.00.61 C1.01.62 +C2.00.29 C1.00.61 C1.00.62 +C2.01.00 C1.01.17 +C2.01.01 C1.01.15 +C2.01.02 C1.01.14 C1.01.16 +C2.01.03 C1.01.17 +C2.01.04 C1.01.16 C1.01.19 +C2.01.05 C1.01.12 C1.01.15 C1.01.17 C1.01.20 +C2.01.06 C1.01.18 C1.01.22 +C2.01.07 C1.01.22 C1.01.24 +C2.01.08 C1.01.25 C1.02.21 +C2.01.09 C1.01.23 C1.01.27 +C2.01.10 C1.00.28 C1.01.26 +C2.01.11 C1.01.27 C1.01.29 +C2.01.12 C1.01.28 C1.01.30 +C2.01.13 C1.01.31 C1.01.33 +C2.01.14 C1.01.32 C1.01.35 +C2.01.15 C1.01.30 C1.01.34 +C2.01.16 C1.01.36 C1.01.38 +C2.01.17 C1.01.35 C1.01.37 +C2.01.18 C1.01.39 C1.01.41 +C2.01.19 C1.01.40 C1.02.37 +C2.01.20 C1.00.41 C1.01.41 +C2.01.21 C1.01.42 C1.01.43 +C2.01.22 C1.01.43 C1.01.45 +C2.01.23 C1.01.44 C1.01.46 C1.01.48 C1.02.47 +C2.01.24 C1.01.46 C1.01.47 C1.01.48 C1.01.49 +C2.01.25 C1.01.48 C1.01.49 C1.01.51 C1.02.51 +C2.01.26 C1.00.51 C1.00.53 C1.01.50 C1.01.52 C1.01.53 +C2.01.27 C1.01.51 C1.02.51 C1.02.52 C1.02.53 C1.02.55 +C2.01.28 C1.00.53 C1.01.52 C1.01.53 C1.01.54 C1.01.55 C1.01.56 C1.01.57 C1.01.58 C1.01.59 +C2.01.29 C1.01.58 C1.01.60 +C2.01.30 C1.01.59 C1.01.61 C1.01.62 +C2.01.31 C1.01.60 C1.01.61 C1.01.62 +C2.02.00 C1.02.15 +C2.02.01 C1.01.17 C1.02.13 +C2.02.02 C1.02.14 C1.02.18 +C2.02.03 C1.02.12 C1.02.16 +C2.02.04 C1.02.14 C1.02.18 C1.03.15 C1.03.20 +C2.02.05 C1.02.16 +C2.02.06 C1.02.17 C1.02.21 +C2.02.07 C1.02.15 C1.02.16 C1.02.19 +C2.02.08 C1.02.18 C1.02.22 C1.02.25 C1.03.20 +C2.02.09 C1.02.20 C1.02.24 +C2.02.10 C1.02.23 C1.02.27 +C2.02.11 C1.02.24 C1.02.28 +C2.02.12 C1.02.26 C1.02.29 C1.02.30 C1.02.32 +C2.02.13 C1.02.29 C1.02.32 C1.03.29 C1.03.33 +C2.02.14 C1.02.27 C1.02.31 +C2.02.15 C1.02.30 C1.02.32 C1.02.33 C1.02.35 +C2.02.16 C1.02.34 C1.02.37 +C2.02.17 C1.02.32 C1.02.35 C1.02.38 C1.03.33 +C2.02.18 C1.02.36 C1.02.39 C1.02.40 C1.02.42 +C2.02.19 C1.02.39 C1.02.41 C1.02.42 C1.02.44 +C2.02.20 C1.02.40 C1.02.42 C1.02.43 C1.02.45 +C2.02.21 C1.02.41 C1.02.44 C1.03.40 C1.03.43 +C2.02.22 C1.02.42 C1.02.44 C1.02.45 C1.02.46 +C2.02.23 C1.02.44 C1.02.46 C1.02.48 C1.03.43 +C2.02.24 C1.01.48 C1.02.47 C1.02.49 C1.02.51 +C2.02.25 C1.02.49 C1.02.50 C1.02.51 C1.02.52 +C2.02.26 C1.02.50 C1.02.52 C1.03.48 C1.03.50 +C2.02.27 C1.02.52 C1.02.53 C1.02.54 C1.02.55 C1.02.56 C1.02.57 C1.02.58 C1.03.54 +C2.02.28 C1.02.56 C1.02.58 C1.02.60 C1.03.54 C1.03.55 C1.03.56 C1.03.58 C1.03.59 C1.03.61 +C2.02.29 C1.01.56 C1.02.59 +C2.02.30 C1.01.61 C1.02.59 C1.02.61 C1.02.62 +C2.02.31 C1.02.61 C1.02.62 +C2.03.00 C1.03.12 C1.03.13 C1.03.14 C1.04.14 +C2.03.01 C1.02.14 C1.03.15 C1.03.16 C1.03.20 C1.03.21 +C2.03.02 C1.03.16 C1.03.17 C1.03.21 C1.03.22 +C2.03.03 C1.03.17 C1.03.18 C1.03.22 C1.03.23 +C2.03.04 C1.03.18 C1.03.19 C1.03.23 C1.03.24 +C2.03.05 C1.03.19 C1.03.24 C1.04.19 C1.04.24 +C2.03.06 C1.02.25 C1.03.20 C1.03.21 C1.03.25 +C2.03.07 C1.03.21 C1.03.22 C1.03.25 C1.03.26 +C2.03.08 C1.03.22 C1.03.23 C1.03.26 C1.03.27 +C2.03.09 C1.03.23 C1.03.24 C1.03.27 C1.03.28 +C2.03.10 C1.03.24 C1.03.28 C1.04.24 C1.04.28 +C2.03.11 C1.03.29 C1.03.30 C1.03.33 C1.03.34 +C2.03.12 C1.03.30 C1.03.31 C1.03.34 C1.03.35 +C2.03.13 C1.03.31 C1.03.32 C1.03.35 C1.03.36 +C2.03.14 C1.03.32 C1.03.36 C1.04.32 C1.04.36 +C2.03.15 C1.02.38 C1.03.33 C1.03.34 C1.03.37 +C2.03.16 C1.03.34 C1.03.35 C1.03.37 C1.03.38 +C2.03.17 C1.03.35 C1.03.36 C1.03.38 C1.03.39 +C2.03.18 C1.03.36 C1.03.39 C1.04.36 C1.04.39 +C2.03.19 C1.03.40 C1.03.41 C1.03.43 C1.03.44 +C2.03.20 C1.03.41 C1.03.42 C1.03.44 C1.03.45 +C2.03.21 C1.03.42 C1.03.45 C1.04.42 C1.04.45 +C2.03.22 C1.02.48 C1.03.43 C1.03.44 C1.03.46 +C2.03.23 C1.03.44 C1.03.45 C1.03.46 C1.03.47 +C2.03.24 C1.03.45 C1.03.47 C1.04.45 C1.04.47 +C2.03.25 C1.03.48 C1.03.49 C1.03.50 C1.03.51 C1.03.52 +C2.03.26 C1.03.49 C1.03.52 C1.03.53 C1.04.49 C1.04.53 +C2.03.27 C1.03.56 C1.03.57 C1.03.59 C1.03.60 +C2.03.28 C1.03.57 C1.03.60 C1.04.57 C1.04.60 +C2.03.29 C1.03.59 C1.03.60 C1.03.61 C1.03.62 +C2.03.30 C1.03.60 C1.03.62 C1.04.60 C1.04.62 +C2.04.00 C1.04.12 C1.04.13 C1.04.14 +C2.04.01 C1.04.15 C1.04.20 C1.05.13 C1.05.17 +C2.04.02 C1.04.15 C1.04.16 C1.04.20 C1.04.21 +C2.04.03 C1.04.16 C1.04.17 C1.04.21 C1.04.22 +C2.04.04 C1.04.17 C1.04.18 C1.04.22 C1.04.23 +C2.04.05 C1.04.18 C1.04.19 C1.04.23 C1.04.24 +C2.04.06 C1.04.20 C1.05.17 C1.05.21 C1.05.24 +C2.04.07 C1.04.20 C1.04.21 C1.04.25 C1.05.24 +C2.04.08 C1.04.21 C1.04.22 C1.04.25 C1.04.26 +C2.04.09 C1.04.22 C1.04.23 C1.04.26 C1.04.27 +C2.04.10 C1.04.23 C1.04.24 C1.04.27 C1.04.28 +C2.04.11 C1.04.29 C1.04.33 C1.05.28 C1.05.31 +C2.04.12 C1.04.29 C1.04.30 C1.04.33 C1.04.34 +C2.04.13 C1.04.30 C1.04.31 C1.04.34 C1.04.35 +C2.04.14 C1.04.31 C1.04.32 C1.04.35 C1.04.36 +C2.04.15 C1.04.33 C1.05.31 C1.05.34 C1.05.37 +C2.04.16 C1.04.33 C1.04.34 C1.04.37 C1.05.37 +C2.04.17 C1.04.34 C1.04.35 C1.04.37 C1.04.38 +C2.04.18 C1.04.35 C1.04.36 C1.04.38 C1.04.39 +C2.04.19 C1.04.40 C1.04.43 C1.05.40 C1.05.43 +C2.04.20 C1.04.40 C1.04.41 C1.04.43 C1.04.44 +C2.04.21 C1.04.41 C1.04.42 C1.04.44 C1.04.45 +C2.04.22 C1.04.43 C1.05.43 C1.05.45 C1.05.47 +C2.04.23 C1.04.43 C1.04.44 C1.04.46 C1.05.47 +C2.04.24 C1.04.44 C1.04.45 C1.04.46 C1.04.47 +C2.04.25 C1.04.48 C1.04.50 C1.04.51 C1.05.49 C1.05.51 +C2.04.26 C1.04.48 C1.04.49 C1.04.51 C1.04.52 C1.04.53 +C2.04.27 C1.04.55 C1.04.56 C1.04.58 C1.04.59 +C2.04.28 C1.04.56 C1.04.57 C1.04.59 C1.04.60 +C2.04.29 C1.04.58 C1.04.59 C1.04.61 C1.05.59 +C2.04.30 C1.04.59 C1.04.60 C1.04.61 C1.04.62 +C2.05.00 C1.05.11 +C2.05.01 C1.05.14 +C2.05.02 C1.05.09 C1.05.13 C1.05.14 C1.05.17 +C2.05.03 C1.05.12 C1.05.15 +C2.05.04 C1.05.13 C1.05.17 +C2.05.05 C1.05.15 +C2.05.06 C1.05.11 C1.05.16 C1.05.20 C1.06.17 +C2.05.07 C1.05.10 C1.05.14 C1.05.15 C1.05.18 +C2.05.08 C1.05.14 C1.05.17 C1.05.18 C1.05.21 +C2.05.09 C1.05.16 C1.05.19 C1.05.20 C1.05.23 +C2.05.10 C1.05.19 C1.05.22 C1.05.23 C1.05.26 +C2.05.11 C1.05.20 C1.05.23 C1.05.27 C1.06.25 +C2.05.12 C1.05.22 C1.05.25 C1.05.26 C1.05.29 +C2.05.13 C1.05.25 C1.05.28 C1.05.29 C1.05.31 +C2.05.14 C1.05.23 C1.05.26 C1.05.27 C1.05.30 +C2.05.15 C1.05.26 C1.05.29 C1.05.30 C1.05.32 +C2.05.16 C1.05.33 C1.05.35 C1.06.32 C1.06.35 +C2.05.17 C1.05.29 C1.05.31 C1.05.32 C1.05.34 +C2.05.18 C1.05.33 C1.05.35 C1.05.36 C1.05.39 +C2.05.19 C1.05.36 C1.05.38 C1.05.39 C1.05.41 +C2.05.20 C1.05.35 C1.05.39 C1.05.42 C1.06.40 +C2.05.21 C1.05.38 C1.05.40 C1.05.41 C1.05.43 +C2.05.22 C1.05.39 C1.05.41 C1.05.42 C1.05.44 +C2.05.23 C1.05.41 C1.05.43 C1.05.44 C1.05.45 +C2.05.24 C1.05.46 C1.06.44 C1.06.46 C1.06.48 +C2.05.25 C1.05.46 C1.05.48 C1.05.50 C1.06.48 +C2.05.26 C1.05.48 C1.05.49 C1.05.50 C1.05.51 +C2.05.27 C1.05.50 C1.05.51 C1.05.52 C1.05.53 C1.05.54 C1.05.56 C1.06.51 +C2.05.28 C1.04.54 C1.04.55 C1.04.58 C1.05.51 C1.05.53 C1.05.55 C1.05.56 C1.05.57 C1.05.59 +C2.05.29 C1.05.58 C1.06.57 C1.06.59 C1.06.61 +C2.05.30 C1.05.58 C1.05.60 C1.05.61 C1.06.61 +C2.05.31 C1.05.60 C1.05.61 C1.05.62 +C2.06.00 C1.05.11 C1.06.12 C1.06.17 +C2.06.01 C1.06.12 C1.06.15 +C2.06.02 C1.06.11 C1.06.16 +C2.06.03 C1.06.15 +C2.06.04 C1.06.11 C1.06.13 C1.06.16 C1.06.19 +C2.06.05 C1.06.12 C1.06.15 C1.06.17 C1.06.20 +C2.06.06 C1.06.14 C1.06.16 C1.06.18 C1.06.22 +C2.06.07 C1.06.16 C1.06.19 C1.06.22 C1.06.24 +C2.06.08 C1.05.20 C1.06.17 C1.06.20 C1.06.25 +C2.06.09 C1.06.18 C1.06.22 C1.06.23 C1.06.27 +C2.06.10 C1.06.21 C1.06.26 C1.07.24 C1.07.29 +C2.06.11 C1.06.22 C1.06.24 C1.06.27 C1.06.29 +C2.06.12 C1.06.23 C1.06.27 C1.06.28 C1.06.30 +C2.06.13 C1.06.26 C1.06.31 C1.06.33 C1.07.29 +C2.06.14 C1.06.28 C1.06.30 C1.06.32 C1.06.35 +C2.06.15 C1.06.27 C1.06.29 C1.06.30 C1.06.34 +C2.06.16 C1.06.31 C1.06.33 C1.06.36 C1.06.38 +C2.06.17 C1.06.30 C1.06.34 C1.06.35 C1.06.37 +C2.06.18 C1.06.36 C1.06.38 C1.06.39 C1.06.41 +C2.06.19 C1.05.35 C1.06.35 C1.06.37 C1.06.40 +C2.06.20 C1.06.38 C1.06.41 C1.07.38 C1.07.42 +C2.06.21 C1.06.39 C1.06.41 C1.06.42 C1.06.43 +C2.06.22 C1.06.41 C1.06.43 C1.06.45 C1.07.42 +C2.06.23 C1.06.42 C1.06.43 C1.06.44 C1.06.46 +C2.06.24 C1.06.43 C1.06.45 C1.06.46 C1.06.47 +C2.06.25 C1.06.46 C1.06.47 C1.06.48 C1.06.49 +C2.06.26 C1.06.50 C1.07.49 C1.07.50 C1.07.52 +C2.06.27 C1.05.50 C1.06.48 C1.06.49 C1.06.51 +C2.06.28 C1.06.50 C1.06.52 C1.06.53 C1.06.54 C1.06.55 C1.06.56 C1.06.58 C1.07.52 +C2.06.29 C1.06.55 C1.06.56 C1.06.57 C1.06.59 +C2.06.30 C1.06.56 C1.06.58 C1.06.59 C1.06.60 +C2.06.31 C1.06.59 C1.06.60 C1.06.61 C1.06.62 C1.07.60 +C2.07.00 C1.07.15 C1.07.16 +C2.07.01 C1.07.16 C1.07.17 +C2.07.02 C1.07.17 +C2.07.03 C1.06.13 C1.07.07 C1.07.13 C1.07.18 C1.07.19 +C2.07.04 C1.07.13 C1.07.14 C1.07.19 C1.07.20 +C2.07.05 C1.07.15 C1.07.16 C1.07.21 C1.07.22 +C2.07.06 C1.07.16 C1.07.17 C1.07.22 C1.07.23 +C2.07.07 C1.06.21 C1.07.18 C1.07.19 C1.07.24 +C2.07.08 C1.07.19 C1.07.20 C1.07.24 C1.07.25 +C2.07.09 C1.07.21 C1.07.22 C1.07.26 C1.07.27 +C2.07.10 C1.07.22 C1.07.23 C1.07.27 C1.07.28 +C2.07.11 C1.07.24 C1.07.25 C1.07.29 C1.07.30 +C2.07.12 C1.07.26 C1.07.27 C1.07.31 C1.07.32 +C2.07.13 C1.07.27 C1.07.28 C1.07.32 C1.07.33 +C2.07.14 C1.06.33 C1.07.29 C1.07.30 C1.07.34 +C2.07.15 C1.07.31 C1.07.32 C1.07.35 C1.07.36 +C2.07.16 C1.07.32 C1.07.33 C1.07.36 C1.07.37 +C2.07.17 C1.06.33 C1.06.38 C1.07.34 C1.07.38 +C2.07.18 C1.07.35 C1.07.36 C1.07.39 C1.07.40 +C2.07.19 C1.07.36 C1.07.37 C1.07.40 C1.07.41 +C2.07.20 C1.07.39 C1.07.40 C1.07.43 C1.07.44 +C2.07.21 C1.07.40 C1.07.41 C1.07.44 C1.07.45 +C2.07.22 C1.07.43 C1.07.44 C1.07.46 C1.07.47 +C2.07.23 C1.07.44 C1.07.45 C1.07.47 C1.07.48 +C2.07.24 C1.07.46 C1.07.47 C1.07.49 C1.07.50 +C2.07.25 C1.07.47 C1.07.48 C1.07.50 C1.07.51 +C2.07.26 C1.07.50 C1.07.51 C1.07.52 C1.07.53 +C2.07.27 C1.07.52 C1.07.53 C1.07.54 C1.07.55 C1.07.56 C1.07.57 C1.07.58 C1.07.59 +C2.07.28 C1.07.57 C1.07.58 C1.07.60 C1.07.61 +C2.07.29 C1.07.58 C1.07.59 C1.07.61 C1.07.62 +C2.08.00 C1.08.14 C1.08.15 +C2.08.01 C1.08.16 +C2.08.02 C1.08.15 C1.08.16 +C2.08.03 C1.08.12 C1.08.17 C1.08.18 C1.09.13 +C2.08.04 C1.08.12 C1.08.13 C1.08.18 C1.08.19 +C2.08.05 C1.08.14 C1.08.15 C1.08.20 C1.08.21 +C2.08.06 C1.08.15 C1.08.16 C1.08.21 C1.08.22 +C2.08.07 C1.08.17 C1.08.18 C1.08.23 C1.09.21 +C2.08.08 C1.08.18 C1.08.19 C1.08.23 C1.08.24 +C2.08.09 C1.08.20 C1.08.21 C1.08.25 C1.08.26 +C2.08.10 C1.08.21 C1.08.22 C1.08.26 C1.08.27 +C2.08.11 C1.08.23 C1.08.24 C1.08.28 C1.08.29 +C2.08.12 C1.08.25 C1.08.26 C1.08.30 C1.08.31 +C2.08.13 C1.08.26 C1.08.27 C1.08.31 C1.08.32 +C2.08.14 C1.08.28 C1.08.29 C1.08.33 C1.09.33 +C2.08.15 C1.08.30 C1.08.31 C1.08.34 C1.08.35 +C2.08.16 C1.08.31 C1.08.32 C1.08.35 C1.08.36 +C2.08.17 C1.08.33 C1.08.37 C1.09.33 C1.09.38 +C2.08.18 C1.08.34 C1.08.35 C1.08.38 C1.08.39 +C2.08.19 C1.08.35 C1.08.36 C1.08.39 C1.08.40 +C2.08.20 C1.08.38 C1.08.39 C1.08.42 C1.08.43 +C2.08.21 C1.08.39 C1.08.40 C1.08.43 C1.08.44 +C2.08.22 C1.08.42 C1.08.43 C1.08.45 C1.08.46 +C2.08.23 C1.08.43 C1.08.44 C1.08.46 C1.08.47 +C2.08.24 C1.08.45 C1.08.46 C1.08.48 C1.08.49 +C2.08.25 C1.08.46 C1.08.47 C1.08.49 C1.08.50 +C2.08.26 C1.08.49 C1.08.50 C1.08.51 C1.08.52 +C2.08.27 C1.08.51 C1.08.52 C1.08.54 C1.08.55 C1.08.56 C1.08.57 C1.08.58 C1.08.59 +C2.08.28 C1.08.57 C1.08.58 C1.08.60 C1.08.61 +C2.08.29 C1.08.58 C1.08.59 C1.08.61 C1.08.62 +C2.09.00 C1.09.12 C1.09.17 +C2.09.01 C1.09.15 +C2.09.02 C1.09.14 C1.09.16 +C2.09.03 C1.09.17 +C2.09.04 C1.09.11 C1.09.13 C1.09.16 C1.09.19 +C2.09.05 C1.09.12 C1.09.15 C1.09.17 C1.09.20 +C2.09.06 C1.09.14 C1.09.16 C1.09.18 C1.09.22 +C2.09.07 C1.09.16 C1.09.19 C1.09.22 C1.09.24 +C2.09.08 C1.09.17 C1.09.20 C1.09.25 C1.10.21 +C2.09.09 C1.09.18 C1.09.22 C1.09.23 C1.09.27 +C2.09.10 C1.08.23 C1.08.28 C1.09.21 C1.09.26 +C2.09.11 C1.09.22 C1.09.24 C1.09.27 C1.09.29 +C2.09.12 C1.09.23 C1.09.27 C1.09.28 C1.09.30 +C2.09.13 C1.08.28 C1.09.26 C1.09.31 C1.09.33 +C2.09.14 C1.09.28 C1.09.30 C1.09.32 C1.09.35 +C2.09.15 C1.09.27 C1.09.29 C1.09.30 C1.09.34 +C2.09.16 C1.09.31 C1.09.33 C1.09.36 C1.09.38 +C2.09.17 C1.09.30 C1.09.34 C1.09.35 C1.09.37 +C2.09.18 C1.09.36 C1.09.38 C1.09.39 C1.09.41 +C2.09.19 C1.09.35 C1.09.37 C1.09.40 C1.10.36 +C2.09.20 C1.08.37 C1.08.41 C1.09.38 C1.09.41 +C2.09.21 C1.09.39 C1.09.41 C1.09.42 C1.09.43 +C2.09.22 C1.08.41 C1.09.41 C1.09.43 C1.09.45 +C2.09.23 C1.09.42 C1.09.43 C1.09.44 C1.09.46 +C2.09.24 C1.09.43 C1.09.45 C1.09.46 C1.09.47 +C2.09.25 C1.09.46 C1.09.47 C1.09.48 C1.09.49 +C2.09.26 C1.08.48 C1.08.49 C1.08.51 C1.09.50 +C2.09.27 C1.09.48 C1.09.49 C1.09.51 C1.10.51 +C2.09.28 C1.08.51 C1.08.53 C1.09.50 C1.09.52 C1.09.53 C1.09.54 C1.09.55 C1.09.57 +C2.09.29 C1.09.55 C1.09.58 C1.09.60 +C2.09.30 C1.09.57 C1.09.59 C1.09.61 C1.09.62 +C2.09.31 C1.08.60 C1.09.60 C1.09.61 C1.09.62 +C2.10.00 C1.10.15 +C2.10.01 C1.09.17 C1.10.12 +C2.10.02 C1.10.10 C1.10.14 C1.10.15 C1.10.18 +C2.10.03 C1.10.13 C1.10.16 +C2.10.04 C1.10.14 C1.10.18 +C2.10.05 C1.10.16 +C2.10.06 C1.09.17 C1.10.12 C1.10.17 C1.10.21 +C2.10.07 C1.10.11 C1.10.15 C1.10.16 C1.10.19 +C2.10.08 C1.10.15 C1.10.18 C1.10.19 C1.10.22 +C2.10.09 C1.10.17 C1.10.20 C1.10.21 C1.10.24 +C2.10.10 C1.10.20 C1.10.23 C1.10.24 C1.10.27 +C2.10.11 C1.09.25 C1.10.21 C1.10.24 C1.10.28 +C2.10.12 C1.10.23 C1.10.26 C1.10.27 C1.10.30 +C2.10.13 C1.10.26 C1.10.29 C1.10.30 C1.10.32 +C2.10.14 C1.10.24 C1.10.27 C1.10.28 C1.10.31 +C2.10.15 C1.10.27 C1.10.30 C1.10.31 C1.10.33 +C2.10.16 C1.09.32 C1.09.35 C1.10.34 C1.10.36 +C2.10.17 C1.10.30 C1.10.32 C1.10.33 C1.10.35 +C2.10.18 C1.10.34 C1.10.36 C1.10.37 C1.10.40 +C2.10.19 C1.10.37 C1.10.39 C1.10.40 C1.10.42 +C2.10.20 C1.09.40 C1.10.36 C1.10.40 C1.10.43 +C2.10.21 C1.10.39 C1.10.41 C1.10.42 C1.10.44 +C2.10.22 C1.10.40 C1.10.42 C1.10.43 C1.10.45 +C2.10.23 C1.10.42 C1.10.44 C1.10.45 C1.10.46 +C2.10.24 C1.09.44 C1.09.46 C1.09.48 C1.10.47 +C2.10.25 C1.09.48 C1.10.47 C1.10.49 C1.10.51 +C2.10.26 C1.10.49 C1.10.50 C1.10.51 C1.10.52 +C2.10.27 C1.09.51 C1.10.51 C1.10.52 C1.10.53 C1.10.54 C1.10.55 C1.10.57 +C2.10.28 C1.10.52 C1.10.54 C1.10.56 C1.10.57 C1.10.58 C1.10.60 C1.11.54 C1.11.55 C1.11.58 +C2.10.29 C1.09.54 C1.09.56 C1.10.59 +C2.10.30 C1.09.60 C1.09.61 C1.10.59 C1.10.61 +C2.10.31 C1.10.61 C1.10.62 +C2.11.00 C1.11.12 C1.11.13 C1.11.14 +C2.11.01 C1.10.14 C1.10.18 C1.11.15 C1.11.20 +C2.11.02 C1.11.15 C1.11.16 C1.11.20 C1.11.21 +C2.11.03 C1.11.16 C1.11.17 C1.11.21 C1.11.22 +C2.11.04 C1.11.17 C1.11.18 C1.11.22 C1.11.23 +C2.11.05 C1.11.18 C1.11.19 C1.11.23 C1.11.24 +C2.11.06 C1.10.18 C1.10.22 C1.10.25 C1.11.20 +C2.11.07 C1.10.25 C1.11.20 C1.11.21 C1.11.25 +C2.11.08 C1.11.21 C1.11.22 C1.11.25 C1.11.26 +C2.11.09 C1.11.22 C1.11.23 C1.11.26 C1.11.27 +C2.11.10 C1.11.23 C1.11.24 C1.11.27 C1.11.28 +C2.11.11 C1.10.29 C1.10.32 C1.11.29 C1.11.33 +C2.11.12 C1.11.29 C1.11.30 C1.11.33 C1.11.34 +C2.11.13 C1.11.30 C1.11.31 C1.11.34 C1.11.35 +C2.11.14 C1.11.31 C1.11.32 C1.11.35 C1.11.36 +C2.11.15 C1.10.32 C1.10.35 C1.10.38 C1.11.33 +C2.11.16 C1.10.38 C1.11.33 C1.11.34 C1.11.37 +C2.11.17 C1.11.34 C1.11.35 C1.11.37 C1.11.38 +C2.11.18 C1.11.35 C1.11.36 C1.11.38 C1.11.39 +C2.11.19 C1.10.41 C1.10.44 C1.11.40 C1.11.43 +C2.11.20 C1.11.40 C1.11.41 C1.11.43 C1.11.44 +C2.11.21 C1.11.41 C1.11.42 C1.11.44 C1.11.45 +C2.11.22 C1.10.44 C1.10.46 C1.10.48 C1.11.43 +C2.11.23 C1.10.48 C1.11.43 C1.11.44 C1.11.46 +C2.11.24 C1.11.44 C1.11.45 C1.11.46 C1.11.47 +C2.11.25 C1.10.50 C1.10.52 C1.11.48 C1.11.50 C1.11.51 +C2.11.26 C1.11.48 C1.11.49 C1.11.51 C1.11.52 C1.11.53 +C2.11.27 C1.11.55 C1.11.56 C1.11.58 C1.11.59 +C2.11.28 C1.11.56 C1.11.57 C1.11.59 C1.11.60 +C2.11.29 C1.10.60 C1.11.58 C1.11.59 C1.11.61 +C2.11.30 C1.11.59 C1.11.60 C1.11.61 C1.11.62 +C2.12.00 C1.11.14 C1.12.12 C1.12.13 C1.12.14 +C2.12.01 C1.12.15 C1.12.16 C1.12.20 C1.12.21 C1.13.13 +C2.12.02 C1.12.16 C1.12.17 C1.12.21 C1.12.22 +C2.12.03 C1.12.17 C1.12.18 C1.12.22 C1.12.23 +C2.12.04 C1.12.18 C1.12.19 C1.12.23 C1.12.24 +C2.12.05 C1.11.19 C1.11.24 C1.12.19 C1.12.24 +C2.12.06 C1.12.20 C1.12.21 C1.12.25 C1.13.24 +C2.12.07 C1.12.21 C1.12.22 C1.12.25 C1.12.26 +C2.12.08 C1.12.22 C1.12.23 C1.12.26 C1.12.27 +C2.12.09 C1.12.23 C1.12.24 C1.12.27 C1.12.28 +C2.12.10 C1.11.24 C1.11.28 C1.12.24 C1.12.28 +C2.12.11 C1.12.29 C1.12.30 C1.12.33 C1.12.34 +C2.12.12 C1.12.30 C1.12.31 C1.12.34 C1.12.35 +C2.12.13 C1.12.31 C1.12.32 C1.12.35 C1.12.36 +C2.12.14 C1.11.32 C1.11.36 C1.12.32 C1.12.36 +C2.12.15 C1.12.33 C1.12.34 C1.12.37 C1.13.37 +C2.12.16 C1.12.34 C1.12.35 C1.12.37 C1.12.38 +C2.12.17 C1.12.35 C1.12.36 C1.12.38 C1.12.39 +C2.12.18 C1.11.36 C1.11.39 C1.12.36 C1.12.39 +C2.12.19 C1.12.40 C1.12.41 C1.12.43 C1.12.44 +C2.12.20 C1.12.41 C1.12.42 C1.12.44 C1.12.45 +C2.12.21 C1.11.42 C1.11.45 C1.12.42 C1.12.45 +C2.12.22 C1.12.43 C1.12.44 C1.12.46 C1.13.47 +C2.12.23 C1.12.44 C1.12.45 C1.12.46 C1.12.47 +C2.12.24 C1.11.45 C1.11.47 C1.12.45 C1.12.47 +C2.12.25 C1.12.48 C1.12.49 C1.12.50 C1.12.51 C1.12.52 +C2.12.26 C1.11.49 C1.11.53 C1.12.49 C1.12.52 C1.12.53 +C2.12.27 C1.12.56 C1.12.57 C1.12.59 C1.12.60 +C2.12.28 C1.11.57 C1.11.60 C1.12.57 C1.12.60 +C2.12.29 C1.12.59 C1.12.60 C1.12.61 C1.12.62 +C2.12.30 C1.11.60 C1.11.62 C1.12.60 C1.12.62 +C2.13.00 C1.13.12 C1.13.16 +C2.13.01 C1.13.14 +C2.13.02 C1.13.13 C1.13.17 +C2.13.03 C1.13.11 C1.13.15 +C2.13.04 C1.12.20 C1.13.13 C1.13.17 +C2.13.05 C1.13.15 +C2.13.06 C1.13.12 C1.13.16 C1.13.20 C1.14.17 +C2.13.07 C1.13.14 C1.13.15 C1.13.18 +C2.13.08 C1.12.20 C1.13.17 C1.13.21 C1.13.24 +C2.13.09 C1.13.19 C1.13.23 +C2.13.10 C1.13.22 C1.13.26 +C2.13.11 C1.13.23 C1.13.27 +C2.13.12 C1.13.25 C1.13.28 C1.13.29 C1.13.31 +C2.13.13 C1.12.29 C1.12.33 C1.13.28 C1.13.31 +C2.13.14 C1.13.26 C1.13.30 +C2.13.15 C1.13.29 C1.13.31 C1.13.32 C1.13.34 +C2.13.16 C1.13.33 C1.13.35 +C2.13.17 C1.12.33 C1.13.31 C1.13.34 C1.13.37 +C2.13.18 C1.13.36 C1.13.38 C1.13.39 C1.13.41 +C2.13.19 C1.13.38 C1.13.40 C1.13.41 C1.13.43 +C2.13.20 C1.13.39 C1.13.41 C1.13.42 C1.13.44 +C2.13.21 C1.12.40 C1.12.43 C1.13.40 C1.13.43 +C2.13.22 C1.13.41 C1.13.43 C1.13.44 C1.13.45 +C2.13.23 C1.12.43 C1.13.43 C1.13.45 C1.13.47 +C2.13.24 C1.13.46 C1.13.48 C1.13.50 C1.14.48 +C2.13.25 C1.13.48 C1.13.49 C1.13.50 C1.13.51 +C2.13.26 C1.12.48 C1.12.50 C1.13.49 C1.13.51 +C2.13.27 C1.12.54 C1.13.51 C1.13.52 C1.13.53 C1.13.54 C1.13.55 C1.13.56 C1.13.57 +C2.13.28 C1.12.54 C1.12.55 C1.12.56 C1.12.58 C1.12.59 C1.12.61 C1.13.55 C1.13.57 C1.13.59 +C2.13.29 C1.13.58 C1.13.60 C1.13.61 C1.14.61 +C2.13.30 C1.13.60 C1.13.61 +C2.13.31 C1.13.60 C1.13.61 C1.13.62 +C2.14.00 C1.13.12 C1.14.17 +C2.14.01 C1.14.12 C1.14.15 +C2.14.02 C1.14.16 +C2.14.03 C1.14.15 +C2.14.04 C1.14.16 C1.14.19 +C2.14.05 C1.14.17 C1.14.20 +C2.14.06 C1.14.14 C1.14.18 C1.14.22 +C2.14.07 C1.14.22 C1.14.24 +C2.14.08 C1.13.20 C1.14.25 +C2.14.09 C1.14.23 C1.14.27 +C2.14.10 C1.14.26 C1.15.29 +C2.14.11 C1.14.27 C1.14.29 +C2.14.12 C1.14.28 C1.14.30 +C2.14.13 C1.14.31 C1.14.33 +C2.14.14 C1.14.32 C1.14.35 +C2.14.15 C1.14.30 C1.14.34 +C2.14.16 C1.14.36 C1.14.38 +C2.14.17 C1.14.35 C1.14.37 +C2.14.18 C1.14.39 C1.14.41 +C2.14.19 C1.13.35 C1.14.40 +C2.14.20 C1.14.41 C1.15.42 +C2.14.21 C1.14.42 C1.14.43 +C2.14.22 C1.14.43 C1.14.45 +C2.14.23 C1.13.46 C1.14.44 C1.14.46 C1.14.48 +C2.14.24 C1.14.46 C1.14.47 C1.14.48 C1.14.49 +C2.14.25 C1.13.50 C1.14.48 C1.14.49 C1.14.51 +C2.14.26 C1.14.50 C1.14.52 C1.14.53 C1.14.54 C1.15.52 +C2.14.27 C1.13.50 C1.13.51 C1.13.52 C1.13.54 C1.14.51 +C2.14.28 C1.14.52 C1.14.53 C1.14.54 C1.14.55 C1.14.56 C1.14.57 C1.14.58 C1.14.59 C1.14.60 +C2.14.29 C1.13.58 C1.14.57 C1.14.59 C1.14.61 +C2.14.30 C1.14.59 C1.14.60 C1.14.61 C1.14.62 +C2.14.31 C1.13.61 C1.14.61 C1.14.62 +C2.15.00 C1.15.17 +C2.15.01 C1.15.16 C1.15.17 +C2.15.02 C1.15.15 C1.15.16 +C2.15.03 C1.14.13 C1.15.18 C1.15.19 +C2.15.04 C1.15.19 C1.15.20 +C2.15.05 C1.15.21 C1.15.22 +C2.15.06 C1.15.22 C1.15.23 +C2.15.07 C1.14.21 C1.15.24 +C2.15.08 C1.15.24 C1.15.25 +C2.15.09 C1.15.26 C1.15.27 +C2.15.10 C1.15.27 C1.15.28 +C2.15.11 C1.15.29 C1.15.30 +C2.15.12 C1.15.31 C1.15.32 +C2.15.13 C1.15.32 C1.15.33 +C2.15.14 C1.14.33 C1.15.34 +C2.15.15 C1.15.35 C1.15.36 +C2.15.16 C1.15.36 C1.15.37 +C2.15.17 C1.14.38 C1.15.38 +C2.15.18 C1.15.39 C1.15.40 +C2.15.19 C1.15.40 C1.15.41 +C2.15.20 C1.15.43 C1.15.44 +C2.15.21 C1.15.44 C1.15.45 +C2.15.22 C1.15.46 C1.15.47 +C2.15.23 C1.15.47 C1.15.48 +C2.15.24 C1.14.50 C1.15.49 C1.15.50 C1.15.52 +C2.15.25 C1.15.50 C1.15.51 C1.15.52 C1.15.53 +C2.15.26 C1.15.52 C1.15.53 C1.15.54 C1.15.55 C1.15.56 +C2.15.27 C1.15.54 C1.15.55 C1.15.56 C1.15.57 C1.15.58 C1.15.59 C1.15.60 C1.15.61 C1.15.62 +C2.15.28 C1.14.62 C1.15.60 C1.15.61 +C2.15.29 C1.15.61 C1.15.62 +C3.00.00 C2.00.06 +C3.00.01 C2.00.07 C2.00.08 C2.00.11 C2.01.10 +C3.00.02 C2.00.05 C2.00.09 C2.00.12 +C3.00.03 C2.00.10 C2.00.13 +C3.00.04 C2.00.11 C2.00.14 +C3.00.05 C2.00.12 C2.00.15 +C3.00.06 C2.00.13 C2.00.16 +C3.00.07 C2.00.14 C2.00.17 C2.01.20 +C3.00.08 C2.00.15 C2.00.18 C2.00.20 +C3.00.09 C2.00.16 C2.00.19 C2.00.21 +C3.00.10 C2.00.20 C2.00.22 +C3.00.11 C2.00.21 C2.00.23 +C3.00.12 C2.00.22 C2.00.24 C2.01.26 +C3.00.13 C2.00.23 C2.00.25 C2.00.26 +C3.00.14 C2.00.26 C2.00.27 +C3.00.15 C2.00.27 C2.00.28 C2.00.29 +C3.01.00 C2.00.07 C2.01.10 +C3.01.01 C2.01.05 C2.01.06 C2.01.08 C2.01.09 C2.01.11 +C3.01.02 C2.00.07 C2.01.04 C2.01.06 C2.01.07 C2.01.09 C2.01.10 C2.01.11 +C3.01.03 C2.01.05 C2.01.08 C2.01.09 C2.01.12 C2.01.14 C2.02.11 +C3.01.04 C2.01.10 C2.01.13 +C3.01.05 C2.01.09 C2.01.11 C2.01.12 C2.01.14 C2.01.15 C2.01.17 +C3.01.06 C2.01.13 C2.01.16 C2.01.18 +C3.01.07 C2.01.14 C2.01.17 C2.01.19 C2.02.16 +C3.01.08 C2.01.18 C2.01.21 +C3.01.09 C2.01.20 C2.01.22 +C3.01.10 C2.01.21 C2.01.23 C2.02.24 +C3.01.11 C2.01.22 C2.01.24 C2.01.25 +C3.01.12 C2.01.25 C2.01.27 +C3.01.13 C2.01.26 C2.01.28 +C3.01.14 C2.01.28 C2.01.29 C2.01.30 C2.02.29 +C3.01.15 C2.00.27 C2.00.28 C2.01.28 C2.01.30 C2.01.31 +C3.02.00 C2.01.03 C2.01.08 C2.02.06 C2.02.09 C2.02.10 C2.02.11 +C3.02.01 C2.02.07 C2.02.08 C2.02.10 C2.02.12 C2.02.13 C2.03.06 +C3.02.02 C2.02.07 C2.02.09 C2.02.10 C2.02.12 C2.02.13 +C3.02.03 C2.02.09 C2.02.10 C2.02.11 C2.02.14 +C3.02.04 C2.02.10 C2.02.12 C2.02.13 C2.02.14 C2.02.15 C2.02.17 +C3.02.05 C2.01.14 C2.02.11 C2.02.14 C2.02.16 +C3.02.06 C2.02.13 C2.02.17 C2.03.11 C2.03.15 +C3.02.07 C2.02.14 C2.02.15 C2.02.16 C2.02.17 C2.02.18 C2.02.19 +C3.02.08 C2.02.17 C2.02.19 C2.02.21 C2.03.15 +C3.02.09 C2.01.19 C2.02.16 C2.02.18 C2.02.19 C2.02.20 C2.02.22 +C3.02.10 C2.02.19 C2.02.21 C2.02.22 C2.02.23 +C3.02.11 C2.02.24 C2.02.25 +C3.02.12 C2.02.25 C2.02.26 C2.03.25 +C3.02.13 C2.01.27 C2.02.27 C2.02.28 +C3.02.14 C2.01.29 C2.01.31 C2.02.29 C2.02.30 +C3.02.15 C2.02.29 C2.02.30 C2.02.31 +C3.03.00 C2.03.04 C2.03.05 +C3.03.01 C2.03.05 +C3.03.02 C2.03.01 C2.03.02 C2.03.03 C2.03.06 C2.03.07 C2.03.08 +C3.03.03 C2.03.03 C2.03.04 C2.03.07 C2.03.08 C2.03.09 +C3.03.04 C2.03.04 C2.03.05 C2.03.09 C2.03.10 +C3.03.05 C2.02.13 C2.03.06 C2.03.07 C2.03.11 +C3.03.06 C2.03.07 C2.03.08 C2.03.09 C2.03.11 C2.03.12 C2.03.13 +C3.03.07 C2.03.09 C2.03.10 C2.03.13 C2.03.14 +C3.03.08 C2.03.11 C2.03.12 C2.03.13 C2.03.15 C2.03.16 C2.03.17 +C3.03.09 C2.03.13 C2.03.14 C2.03.17 C2.03.18 +C3.03.10 C2.02.21 C2.03.15 C2.03.16 C2.03.17 C2.03.19 C2.03.20 +C3.03.11 C2.03.17 C2.03.18 C2.03.20 C2.03.21 +C3.03.12 C2.02.21 C2.02.23 C2.03.19 C2.03.20 C2.03.22 C2.03.23 +C3.03.13 C2.03.20 C2.03.21 C2.03.23 C2.03.24 +C3.03.14 C2.03.25 C2.03.26 +C3.03.15 C2.02.28 C2.03.27 C2.03.28 C2.03.29 C2.03.30 +C3.04.00 C2.04.04 C2.04.05 +C3.04.01 C2.03.05 C2.04.05 +C3.04.02 C2.04.02 C2.04.03 C2.04.06 C2.04.07 C2.04.08 +C3.04.03 C2.04.03 C2.04.04 C2.04.08 C2.04.09 +C3.04.04 C2.03.05 C2.03.10 C2.04.04 C2.04.05 C2.04.09 C2.04.10 +C3.04.05 C2.04.06 C2.04.07 C2.04.08 C2.04.11 C2.04.12 C2.05.13 +C3.04.06 C2.04.08 C2.04.09 C2.04.12 C2.04.13 +C3.04.07 C2.03.10 C2.03.14 C2.04.09 C2.04.10 C2.04.13 C2.04.14 +C3.04.08 C2.04.12 C2.04.13 C2.04.16 C2.04.17 +C3.04.09 C2.03.14 C2.03.18 C2.04.13 C2.04.14 C2.04.17 C2.04.18 +C3.04.10 C2.04.16 C2.04.17 C2.04.19 C2.04.20 +C3.04.11 C2.03.18 C2.03.21 C2.04.17 C2.04.18 C2.04.20 C2.04.21 +C3.04.12 C2.04.19 C2.04.20 C2.04.22 C2.04.23 +C3.04.13 C2.03.21 C2.03.24 C2.04.20 C2.04.21 C2.04.23 C2.04.24 +C3.04.14 C2.03.26 C2.04.25 C2.04.26 +C3.04.15 C2.03.28 C2.03.30 C2.04.27 C2.04.28 C2.04.29 C2.04.30 C2.05.28 +C3.05.00 C2.05.06 C2.05.09 C2.05.11 C2.06.08 +C3.05.01 C2.05.07 C2.05.08 C2.05.09 C2.05.10 C2.05.12 +C3.05.02 C2.04.06 C2.05.08 C2.05.12 C2.05.13 +C3.05.03 C2.05.09 C2.05.10 C2.05.11 C2.05.12 C2.05.14 C2.05.15 +C3.05.04 C2.05.12 C2.05.13 C2.05.15 C2.05.17 +C3.05.05 C2.05.11 C2.05.14 C2.05.15 C2.05.16 C2.05.18 C2.06.14 +C3.05.06 C2.04.11 C2.04.12 C2.04.15 C2.04.16 C2.05.13 C2.05.17 +C3.05.07 C2.05.15 C2.05.17 C2.05.18 C2.05.19 +C3.05.08 C2.04.15 C2.04.16 C2.04.19 C2.05.17 C2.05.19 C2.05.21 +C3.05.09 C2.05.18 C2.05.19 C2.05.20 C2.05.22 +C3.05.10 C2.04.19 C2.04.22 C2.05.19 C2.05.21 C2.05.22 C2.05.23 +C3.05.11 C2.05.24 C2.05.25 C2.05.26 +C3.05.12 C2.04.25 C2.05.26 +C3.05.13 C2.05.27 C2.05.28 +C3.05.14 C2.05.29 C2.05.30 C2.05.31 +C3.06.00 C2.06.05 C2.06.06 C2.06.07 C2.06.08 C2.06.09 C2.06.11 C2.06.12 C2.06.15 +C3.06.01 C2.06.07 C2.06.10 C2.06.11 C2.06.15 +C3.06.02 C2.05.11 C2.06.08 C2.06.12 C2.06.14 +C3.06.03 C2.06.10 C2.06.13 C2.06.16 +C3.06.04 C2.06.12 C2.06.14 C2.06.15 C2.06.17 +C3.06.05 C2.06.16 C2.06.18 +C3.06.06 C2.05.16 C2.05.18 C2.05.20 C2.06.14 C2.06.17 C2.06.19 +C3.06.07 C2.06.18 C2.06.21 C2.06.23 +C3.06.08 C2.06.20 C2.06.22 C2.06.24 +C3.06.09 C2.05.24 C2.06.23 +C3.06.10 C2.06.24 C2.06.25 +C3.06.11 C2.05.27 C2.06.25 C2.06.27 +C3.06.12 C2.06.26 C2.06.28 C2.06.29 C2.06.30 +C3.06.13 C2.05.29 C2.06.29 +C3.06.14 C2.06.30 C2.06.31 C2.07.28 +C3.06.15 C2.05.29 C2.05.30 C2.06.30 C2.06.31 +C3.07.00 C2.07.06 C2.07.10 +C3.07.01 C2.06.10 C2.07.07 C2.07.08 C2.07.11 +C3.07.02 C2.07.08 C2.07.09 C2.07.12 +C3.07.03 C2.07.10 C2.07.13 +C3.07.04 C2.07.11 C2.07.14 C2.07.17 +C3.07.05 C2.07.12 C2.07.15 C2.07.18 +C3.07.06 C2.07.13 C2.07.16 C2.07.19 +C3.07.07 C2.06.20 C2.07.17 +C3.07.08 C2.07.18 C2.07.20 +C3.07.09 C2.07.19 C2.07.21 +C3.07.10 C2.07.20 C2.07.22 C2.07.24 +C3.07.11 C2.07.21 C2.07.23 C2.07.25 +C3.07.12 C2.06.26 C2.07.24 +C3.07.13 C2.07.25 C2.07.26 +C3.07.14 C2.07.26 C2.07.27 C2.07.28 C2.07.29 +C3.07.15 C2.07.28 C2.07.29 +C3.08.00 C2.08.06 C2.08.10 +C3.08.01 C2.08.07 C2.08.08 C2.08.11 C2.09.10 +C3.08.02 C2.08.09 C2.08.12 +C3.08.03 C2.08.10 C2.08.13 +C3.08.04 C2.08.11 C2.08.14 C2.08.17 +C3.08.05 C2.08.12 C2.08.15 C2.08.18 +C3.08.06 C2.08.13 C2.08.16 C2.08.19 +C3.08.07 C2.08.17 C2.09.20 +C3.08.08 C2.08.18 C2.08.20 +C3.08.09 C2.08.19 C2.08.21 +C3.08.10 C2.08.20 C2.08.22 C2.08.24 +C3.08.11 C2.08.21 C2.08.23 C2.08.25 +C3.08.12 C2.08.24 C2.09.26 +C3.08.13 C2.08.25 C2.08.26 +C3.08.14 C2.08.26 C2.08.27 C2.08.28 C2.08.29 +C3.08.15 C2.08.28 C2.08.29 +C3.09.00 C2.08.07 C2.09.10 +C3.09.01 C2.09.05 C2.09.08 C2.09.09 C2.09.11 C2.09.12 C2.09.15 +C3.09.02 C2.09.06 C2.09.07 C2.09.09 C2.09.10 C2.09.11 C2.09.15 +C3.09.03 C2.09.08 C2.09.12 C2.09.14 C2.10.11 +C3.09.04 C2.09.10 C2.09.13 C2.09.16 +C3.09.05 C2.09.12 C2.09.14 C2.09.15 C2.09.17 +C3.09.06 C2.09.16 C2.09.18 +C3.09.07 C2.09.14 C2.09.17 C2.09.19 C2.10.16 C2.10.18 C2.10.20 +C3.09.08 C2.09.18 C2.09.21 C2.09.23 +C3.09.09 C2.09.20 C2.09.22 C2.09.24 +C3.09.10 C2.09.23 C2.10.24 +C3.09.11 C2.09.24 C2.09.25 +C3.09.12 C2.09.25 C2.09.27 C2.10.27 +C3.09.13 C2.09.26 C2.09.28 C2.09.29 C2.09.30 C2.10.29 +C3.09.14 C2.09.29 C2.09.30 C2.09.31 C2.10.29 +C3.09.15 C2.08.28 C2.09.30 C2.09.31 +C3.10.00 C2.09.08 C2.10.06 C2.10.09 C2.10.10 C2.10.11 +C3.10.01 C2.10.07 C2.10.08 C2.10.12 C2.10.13 C2.11.06 +C3.10.02 C2.10.07 C2.10.08 C2.10.10 C2.10.12 C2.10.13 +C3.10.03 C2.10.09 C2.10.10 C2.10.11 C2.10.12 C2.10.14 C2.10.15 +C3.10.04 C2.10.12 C2.10.13 C2.10.15 C2.10.17 +C3.10.05 C2.09.14 C2.10.11 C2.10.14 C2.10.15 C2.10.16 C2.10.18 +C3.10.06 C2.10.13 C2.10.17 C2.11.11 C2.11.12 C2.11.15 C2.11.16 +C3.10.07 C2.10.15 C2.10.17 C2.10.18 C2.10.19 +C3.10.08 C2.10.17 C2.10.19 C2.10.21 C2.11.15 C2.11.16 C2.11.19 +C3.10.09 C2.10.18 C2.10.19 C2.10.20 C2.10.22 +C3.10.10 C2.10.19 C2.10.21 C2.10.22 C2.10.23 C2.11.19 C2.11.22 +C3.10.11 C2.10.24 C2.10.25 C2.10.26 +C3.10.12 C2.10.26 C2.11.25 +C3.10.13 C2.10.27 C2.10.28 +C3.10.14 C2.09.29 C2.09.31 C2.10.29 C2.10.30 +C3.10.15 C2.10.30 C2.10.31 +C3.11.00 C2.11.04 C2.11.05 +C3.11.01 C2.11.05 C2.12.05 +C3.11.02 C2.11.02 C2.11.03 C2.11.06 C2.11.07 C2.11.08 +C3.11.03 C2.11.03 C2.11.04 C2.11.08 C2.11.09 +C3.11.04 C2.11.04 C2.11.05 C2.11.09 C2.11.10 C2.12.05 C2.12.10 +C3.11.05 C2.10.13 C2.11.06 C2.11.07 C2.11.08 C2.11.11 C2.11.12 +C3.11.06 C2.11.08 C2.11.09 C2.11.12 C2.11.13 +C3.11.07 C2.11.09 C2.11.10 C2.11.13 C2.11.14 C2.12.10 C2.12.14 +C3.11.08 C2.11.12 C2.11.13 C2.11.16 C2.11.17 +C3.11.09 C2.11.13 C2.11.14 C2.11.17 C2.11.18 C2.12.14 C2.12.18 +C3.11.10 C2.11.16 C2.11.17 C2.11.19 C2.11.20 +C3.11.11 C2.11.17 C2.11.18 C2.11.20 C2.11.21 C2.12.18 C2.12.21 +C3.11.12 C2.11.19 C2.11.20 C2.11.22 C2.11.23 +C3.11.13 C2.11.20 C2.11.21 C2.11.23 C2.11.24 C2.12.21 C2.12.24 +C3.11.14 C2.11.25 C2.11.26 C2.12.26 +C3.11.15 C2.10.28 C2.11.27 C2.11.28 C2.11.29 C2.11.30 C2.12.28 C2.12.30 +C3.12.00 C2.12.04 C2.12.05 +C3.12.01 C2.12.05 +C3.12.02 C2.12.02 C2.12.03 C2.12.06 C2.12.07 C2.12.08 +C3.12.03 C2.12.03 C2.12.04 C2.12.07 C2.12.08 C2.12.09 +C3.12.04 C2.12.04 C2.12.05 C2.12.09 C2.12.10 +C3.12.05 C2.12.06 C2.12.07 C2.12.11 C2.13.13 +C3.12.06 C2.12.07 C2.12.08 C2.12.09 C2.12.11 C2.12.12 C2.12.13 +C3.12.07 C2.12.09 C2.12.10 C2.12.13 C2.12.14 +C3.12.08 C2.12.11 C2.12.12 C2.12.13 C2.12.15 C2.12.16 C2.12.17 +C3.12.09 C2.12.13 C2.12.14 C2.12.17 C2.12.18 +C3.12.10 C2.12.15 C2.12.16 C2.12.17 C2.12.19 C2.12.20 C2.13.21 +C3.12.11 C2.12.17 C2.12.18 C2.12.20 C2.12.21 +C3.12.12 C2.12.19 C2.12.20 C2.12.22 C2.12.23 C2.13.21 C2.13.23 +C3.12.13 C2.12.20 C2.12.21 C2.12.23 C2.12.24 +C3.12.14 C2.12.25 C2.12.26 +C3.12.15 C2.12.27 C2.12.28 C2.12.29 C2.12.30 C2.13.28 +C3.13.00 C2.13.06 C2.13.09 C2.13.11 C2.14.05 C2.14.08 +C3.13.01 C2.13.07 C2.13.08 C2.13.09 C2.13.10 C2.13.12 +C3.13.02 C2.12.06 C2.13.08 C2.13.10 C2.13.12 C2.13.13 +C3.13.03 C2.13.09 C2.13.10 C2.13.11 C2.13.14 +C3.13.04 C2.13.10 C2.13.12 C2.13.13 C2.13.14 C2.13.15 C2.13.17 +C3.13.05 C2.13.11 C2.13.14 C2.13.16 C2.14.14 +C3.13.06 C2.12.11 C2.12.15 C2.13.13 C2.13.17 +C3.13.07 C2.13.14 C2.13.15 C2.13.16 C2.13.17 C2.13.18 C2.13.19 +C3.13.08 C2.12.15 C2.13.17 C2.13.19 C2.13.21 +C3.13.09 C2.13.16 C2.13.18 C2.13.19 C2.13.20 C2.13.22 C2.14.19 +C3.13.10 C2.13.19 C2.13.21 C2.13.22 C2.13.23 +C3.13.11 C2.13.24 C2.13.25 +C3.13.12 C2.12.25 C2.13.25 C2.13.26 +C3.13.13 C2.13.27 C2.13.28 C2.14.27 +C3.13.14 C2.13.29 C2.13.30 C2.13.31 +C3.14.00 C2.14.05 C2.14.06 C2.14.07 C2.14.08 C2.14.09 C2.14.11 +C3.14.01 C2.14.04 C2.14.07 C2.14.10 C2.14.11 C2.15.07 +C3.14.02 C2.13.11 C2.14.05 C2.14.08 C2.14.09 C2.14.12 C2.14.14 +C3.14.03 C2.14.10 C2.14.13 +C3.14.04 C2.14.09 C2.14.11 C2.14.12 C2.14.14 C2.14.15 C2.14.17 +C3.14.05 C2.14.13 C2.14.16 C2.14.18 +C3.14.06 C2.13.16 C2.14.14 C2.14.17 C2.14.19 +C3.14.07 C2.14.18 C2.14.21 +C3.14.08 C2.14.20 C2.14.22 +C3.14.09 C2.13.24 C2.14.21 C2.14.23 +C3.14.10 C2.14.22 C2.14.24 C2.14.25 +C3.14.11 C2.14.25 C2.14.27 +C3.14.12 C2.14.26 C2.14.28 +C3.14.13 C2.13.29 C2.14.28 C2.14.29 +C3.14.14 C2.14.28 C2.14.30 C2.14.31 C2.15.27 C2.15.28 +C3.14.15 C2.13.29 C2.13.30 C2.14.30 C2.14.31 +C3.15.00 C2.15.06 +C3.15.01 C2.14.10 C2.15.07 C2.15.08 C2.15.11 +C3.15.02 C2.15.05 C2.15.08 C2.15.09 C2.15.12 +C3.15.03 C2.15.10 C2.15.13 +C3.15.04 C2.15.11 C2.15.14 +C3.15.05 C2.15.12 C2.15.15 +C3.15.06 C2.15.13 C2.15.16 +C3.15.07 C2.14.20 C2.15.14 C2.15.17 +C3.15.08 C2.15.15 C2.15.18 C2.15.20 +C3.15.09 C2.15.16 C2.15.19 C2.15.21 +C3.15.10 C2.15.20 C2.15.22 +C3.15.11 C2.15.21 C2.15.23 +C3.15.12 C2.14.26 C2.15.22 C2.15.24 +C3.15.13 C2.15.23 C2.15.25 C2.15.26 +C3.15.14 C2.15.26 C2.15.27 +C3.15.15 C2.15.27 C2.15.28 C2.15.29 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev-DC3-05-Comm-01.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev-DC3-05-Comm-01.txt new file mode 100755 index 0000000000000000000000000000000000000000..217e2f7d4091e34c829916dede9444d314a6a6ca --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev-DC3-05-Comm-01.txt @@ -0,0 +1,1519 @@ +# 3D FCal Neighbors Prev in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Thu Nov 30 16:09:58 2006 +# +# 3d neighbors prev in sampling are all cells touching the same +# eta phi area in the prev sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without prev sampling neighbors are not listed. +# +A2.00.00 A1.00.14 A1.00.15 +A2.00.01 A1.00.15 A1.00.16 +A2.00.02 A1.00.16 +A2.00.03 A1.00.17 A1.00.18 A1.01.13 +A2.00.04 A1.00.18 A1.00.19 +A2.00.05 A1.00.20 A1.00.21 +A2.00.06 A1.00.21 A1.00.22 +A2.00.07 A1.00.23 A1.01.21 +A2.00.08 A1.00.23 A1.00.24 +A2.00.09 A1.00.25 A1.00.26 +A2.00.10 A1.00.26 A1.00.27 +A2.00.11 A1.00.28 A1.00.29 +A2.00.12 A1.00.30 A1.00.31 +A2.00.13 A1.00.31 A1.00.32 +A2.00.14 A1.00.33 A1.01.33 +A2.00.15 A1.00.34 A1.00.35 +A2.00.16 A1.00.35 A1.00.36 +A2.00.17 A1.00.37 A1.01.38 +A2.00.18 A1.00.38 A1.00.39 +A2.00.19 A1.00.39 A1.00.40 +A2.00.20 A1.00.42 A1.00.43 +A2.00.21 A1.00.43 A1.00.44 +A2.00.22 A1.00.45 A1.00.46 +A2.00.23 A1.00.46 A1.00.47 +A2.00.24 A1.00.48 A1.00.49 A1.00.51 A1.01.50 +A2.00.25 A1.00.49 A1.00.50 A1.00.51 A1.00.52 +A2.00.26 A1.00.51 A1.00.52 A1.00.54 A1.00.55 A1.00.56 +A2.00.27 A1.00.54 A1.00.55 A1.00.56 A1.00.57 A1.00.58 A1.00.59 A1.00.60 A1.00.61 A1.00.62 +A2.00.28 A1.00.60 A1.00.61 A1.01.62 +A2.00.29 A1.00.61 A1.00.62 +A2.01.00 A1.01.17 A1.02.13 +A2.01.01 A1.01.12 A1.01.15 +A2.01.02 A1.01.16 +A2.01.03 A1.01.15 +A2.01.04 A1.01.16 A1.01.19 +A2.01.05 A1.01.17 A1.01.20 +A2.01.06 A1.01.14 A1.01.18 A1.01.22 +A2.01.07 A1.01.22 A1.01.24 +A2.01.08 A1.01.25 A1.02.21 +A2.01.09 A1.01.23 A1.01.27 +A2.01.10 A1.00.28 A1.01.26 +A2.01.11 A1.01.27 A1.01.29 +A2.01.12 A1.01.28 A1.01.30 +A2.01.13 A1.01.31 A1.01.33 +A2.01.14 A1.01.32 A1.01.35 +A2.01.15 A1.01.30 A1.01.34 +A2.01.16 A1.01.36 A1.01.38 +A2.01.17 A1.01.35 A1.01.37 +A2.01.18 A1.01.39 A1.01.41 +A2.01.19 A1.01.40 A1.02.37 +A2.01.20 A1.00.41 A1.01.41 +A2.01.21 A1.01.42 A1.01.43 +A2.01.22 A1.01.43 A1.01.45 +A2.01.23 A1.01.44 A1.01.46 A1.01.48 A1.02.47 +A2.01.24 A1.01.46 A1.01.47 A1.01.48 A1.01.49 +A2.01.25 A1.01.48 A1.01.49 A1.01.51 A1.02.51 +A2.01.26 A1.00.51 A1.00.53 A1.01.50 A1.01.52 A1.01.53 +A2.01.27 A1.01.51 A1.02.51 A1.02.52 A1.02.53 A1.02.55 +A2.01.28 A1.00.53 A1.01.52 A1.01.53 A1.01.54 A1.01.55 A1.01.56 A1.01.57 A1.01.58 A1.01.59 +A2.01.29 A1.01.56 A1.01.58 A1.01.60 A1.02.59 +A2.01.30 A1.01.58 A1.01.59 A1.01.60 A1.01.61 A1.01.62 +A2.01.31 A1.01.60 A1.01.61 A1.01.62 +A2.02.00 A1.02.13 A1.02.17 +A2.02.01 A1.02.15 +A2.02.02 A1.02.14 A1.02.18 +A2.02.03 A1.02.12 A1.02.16 +A2.02.04 A1.02.14 A1.02.18 A1.03.20 +A2.02.05 A1.02.16 +A2.02.06 A1.01.17 A1.02.13 A1.02.17 A1.02.21 +A2.02.07 A1.02.15 A1.02.16 A1.02.19 +A2.02.08 A1.02.18 A1.02.22 A1.02.25 A1.03.20 +A2.02.09 A1.02.20 A1.02.24 +A2.02.10 A1.02.23 A1.02.27 +A2.02.11 A1.02.24 A1.02.28 +A2.02.12 A1.02.26 A1.02.29 A1.02.30 A1.02.32 +A2.02.13 A1.02.29 A1.02.32 A1.03.29 A1.03.33 +A2.02.14 A1.02.27 A1.02.31 +A2.02.15 A1.02.30 A1.02.32 A1.02.33 A1.02.35 +A2.02.16 A1.02.34 A1.02.37 +A2.02.17 A1.02.32 A1.02.35 A1.02.38 A1.03.33 +A2.02.18 A1.02.36 A1.02.39 A1.02.40 A1.02.42 +A2.02.19 A1.02.39 A1.02.41 A1.02.42 A1.02.44 +A2.02.20 A1.02.40 A1.02.42 A1.02.43 A1.02.45 +A2.02.21 A1.02.41 A1.02.44 A1.03.40 A1.03.43 +A2.02.22 A1.02.42 A1.02.44 A1.02.45 A1.02.46 +A2.02.23 A1.02.44 A1.02.46 A1.02.48 A1.03.43 +A2.02.24 A1.01.48 A1.02.47 A1.02.49 A1.02.51 +A2.02.25 A1.02.49 A1.02.50 A1.02.51 A1.02.52 +A2.02.26 A1.02.50 A1.02.52 A1.03.48 A1.03.50 +A2.02.27 A1.02.52 A1.02.53 A1.02.54 A1.02.55 A1.02.56 A1.02.57 A1.02.58 A1.03.54 +A2.02.28 A1.02.56 A1.02.58 A1.02.60 A1.03.54 A1.03.55 A1.03.56 A1.03.58 A1.03.59 A1.03.61 +A2.02.29 A1.01.60 A1.01.61 A1.02.59 A1.02.61 +A2.02.30 A1.01.61 A1.02.61 A1.02.62 +A2.02.31 A1.02.61 A1.02.62 +A2.03.00 A1.03.12 A1.03.13 A1.03.14 A1.04.14 +A2.03.01 A1.02.14 A1.03.15 A1.03.16 A1.03.20 A1.03.21 +A2.03.02 A1.03.16 A1.03.17 A1.03.21 A1.03.22 +A2.03.03 A1.03.17 A1.03.18 A1.03.22 A1.03.23 +A2.03.04 A1.03.18 A1.03.19 A1.03.23 A1.03.24 +A2.03.05 A1.03.19 A1.03.24 A1.04.19 A1.04.24 +A2.03.06 A1.02.25 A1.03.20 A1.03.21 A1.03.25 +A2.03.07 A1.03.21 A1.03.22 A1.03.25 A1.03.26 +A2.03.08 A1.03.22 A1.03.23 A1.03.26 A1.03.27 +A2.03.09 A1.03.23 A1.03.24 A1.03.27 A1.03.28 +A2.03.10 A1.03.24 A1.03.28 A1.04.24 A1.04.28 +A2.03.11 A1.03.29 A1.03.30 A1.03.33 A1.03.34 +A2.03.12 A1.03.30 A1.03.31 A1.03.34 A1.03.35 +A2.03.13 A1.03.31 A1.03.32 A1.03.35 A1.03.36 +A2.03.14 A1.03.32 A1.03.36 A1.04.32 A1.04.36 +A2.03.15 A1.02.38 A1.03.33 A1.03.34 A1.03.37 +A2.03.16 A1.03.34 A1.03.35 A1.03.37 A1.03.38 +A2.03.17 A1.03.35 A1.03.36 A1.03.38 A1.03.39 +A2.03.18 A1.03.36 A1.03.39 A1.04.36 A1.04.39 +A2.03.19 A1.03.40 A1.03.41 A1.03.43 A1.03.44 +A2.03.20 A1.03.41 A1.03.42 A1.03.44 A1.03.45 +A2.03.21 A1.03.42 A1.03.45 A1.04.42 A1.04.45 +A2.03.22 A1.02.48 A1.03.43 A1.03.44 A1.03.46 +A2.03.23 A1.03.44 A1.03.45 A1.03.46 A1.03.47 +A2.03.24 A1.03.45 A1.03.47 A1.04.45 A1.04.47 +A2.03.25 A1.03.48 A1.03.49 A1.03.50 A1.03.51 A1.03.52 +A2.03.26 A1.03.49 A1.03.52 A1.03.53 A1.04.49 A1.04.53 +A2.03.27 A1.03.56 A1.03.57 A1.03.59 A1.03.60 +A2.03.28 A1.03.57 A1.03.60 A1.04.57 A1.04.60 +A2.03.29 A1.03.59 A1.03.60 A1.03.61 A1.03.62 +A2.03.30 A1.03.60 A1.03.62 A1.04.60 A1.04.62 +A2.04.00 A1.04.12 A1.04.13 A1.04.14 +A2.04.01 A1.04.15 A1.04.20 A1.05.13 A1.05.17 +A2.04.02 A1.04.15 A1.04.16 A1.04.20 A1.04.21 +A2.04.03 A1.04.16 A1.04.17 A1.04.21 A1.04.22 +A2.04.04 A1.04.17 A1.04.18 A1.04.22 A1.04.23 +A2.04.05 A1.04.18 A1.04.19 A1.04.23 A1.04.24 +A2.04.06 A1.04.20 A1.05.17 A1.05.21 A1.05.24 +A2.04.07 A1.04.20 A1.04.21 A1.04.25 A1.05.24 +A2.04.08 A1.04.21 A1.04.22 A1.04.25 A1.04.26 +A2.04.09 A1.04.22 A1.04.23 A1.04.26 A1.04.27 +A2.04.10 A1.04.23 A1.04.24 A1.04.27 A1.04.28 +A2.04.11 A1.04.29 A1.04.33 A1.05.28 A1.05.31 +A2.04.12 A1.04.29 A1.04.30 A1.04.33 A1.04.34 +A2.04.13 A1.04.30 A1.04.31 A1.04.34 A1.04.35 +A2.04.14 A1.04.31 A1.04.32 A1.04.35 A1.04.36 +A2.04.15 A1.04.33 A1.05.31 A1.05.34 A1.05.37 +A2.04.16 A1.04.33 A1.04.34 A1.04.37 A1.05.37 +A2.04.17 A1.04.34 A1.04.35 A1.04.37 A1.04.38 +A2.04.18 A1.04.35 A1.04.36 A1.04.38 A1.04.39 +A2.04.19 A1.04.40 A1.04.43 A1.05.40 A1.05.43 +A2.04.20 A1.04.40 A1.04.41 A1.04.43 A1.04.44 +A2.04.21 A1.04.41 A1.04.42 A1.04.44 A1.04.45 +A2.04.22 A1.04.43 A1.05.43 A1.05.45 A1.05.47 +A2.04.23 A1.04.43 A1.04.44 A1.04.46 A1.05.47 +A2.04.24 A1.04.44 A1.04.45 A1.04.46 A1.04.47 +A2.04.25 A1.04.48 A1.04.50 A1.04.51 A1.05.49 A1.05.51 +A2.04.26 A1.04.48 A1.04.49 A1.04.51 A1.04.52 A1.04.53 +A2.04.27 A1.04.55 A1.04.56 A1.04.58 A1.04.59 +A2.04.28 A1.04.56 A1.04.57 A1.04.59 A1.04.60 +A2.04.29 A1.04.58 A1.04.59 A1.04.61 A1.05.59 +A2.04.30 A1.04.59 A1.04.60 A1.04.61 A1.04.62 +A2.05.00 A1.05.14 +A2.05.01 A1.05.11 A1.06.17 +A2.05.02 A1.05.09 A1.05.13 A1.05.14 A1.05.17 +A2.05.03 A1.05.12 A1.05.15 +A2.05.04 A1.05.13 A1.05.17 +A2.05.05 A1.05.15 +A2.05.06 A1.05.11 A1.05.16 A1.05.20 A1.06.17 +A2.05.07 A1.05.10 A1.05.14 A1.05.15 A1.05.18 +A2.05.08 A1.05.14 A1.05.17 A1.05.18 A1.05.21 +A2.05.09 A1.05.16 A1.05.19 A1.05.20 A1.05.23 +A2.05.10 A1.05.19 A1.05.22 A1.05.23 A1.05.26 +A2.05.11 A1.05.20 A1.05.23 A1.05.27 A1.06.25 +A2.05.12 A1.05.22 A1.05.25 A1.05.26 A1.05.29 +A2.05.13 A1.05.25 A1.05.28 A1.05.29 A1.05.31 +A2.05.14 A1.05.23 A1.05.26 A1.05.27 A1.05.30 +A2.05.15 A1.05.26 A1.05.29 A1.05.30 A1.05.32 +A2.05.16 A1.05.33 A1.05.35 A1.06.32 A1.06.35 +A2.05.17 A1.05.29 A1.05.31 A1.05.32 A1.05.34 +A2.05.18 A1.05.33 A1.05.35 A1.05.36 A1.05.39 +A2.05.19 A1.05.36 A1.05.38 A1.05.39 A1.05.41 +A2.05.20 A1.05.35 A1.05.39 A1.05.42 A1.06.40 +A2.05.21 A1.05.38 A1.05.40 A1.05.41 A1.05.43 +A2.05.22 A1.05.39 A1.05.41 A1.05.42 A1.05.44 +A2.05.23 A1.05.41 A1.05.43 A1.05.44 A1.05.45 +A2.05.24 A1.05.46 A1.06.44 A1.06.46 A1.06.48 +A2.05.25 A1.05.46 A1.05.48 A1.05.50 A1.06.48 +A2.05.26 A1.05.48 A1.05.49 A1.05.50 A1.05.51 +A2.05.27 A1.05.50 A1.05.51 A1.05.52 A1.05.53 A1.05.54 A1.05.56 A1.06.51 +A2.05.28 A1.04.54 A1.04.55 A1.04.58 A1.05.51 A1.05.53 A1.05.55 A1.05.56 A1.05.57 A1.05.59 +A2.05.29 A1.05.58 A1.06.55 A1.06.57 +A2.05.30 A1.05.58 A1.05.60 A1.05.61 A1.06.61 +A2.05.31 A1.05.60 A1.05.61 A1.05.62 +A2.06.00 A1.06.12 A1.06.17 +A2.06.01 A1.06.15 +A2.06.02 A1.06.14 A1.06.16 +A2.06.03 A1.06.17 +A2.06.04 A1.06.11 A1.06.13 A1.06.16 A1.06.19 +A2.06.05 A1.06.12 A1.06.15 A1.06.17 A1.06.20 +A2.06.06 A1.06.14 A1.06.16 A1.06.18 A1.06.22 +A2.06.07 A1.06.16 A1.06.19 A1.06.22 A1.06.24 +A2.06.08 A1.05.20 A1.06.17 A1.06.20 A1.06.25 +A2.06.09 A1.06.18 A1.06.22 A1.06.23 A1.06.27 +A2.06.10 A1.06.21 A1.06.26 A1.07.24 A1.07.29 +A2.06.11 A1.06.22 A1.06.24 A1.06.27 A1.06.29 +A2.06.12 A1.06.23 A1.06.27 A1.06.28 A1.06.30 +A2.06.13 A1.06.26 A1.06.31 A1.06.33 A1.07.29 +A2.06.14 A1.06.28 A1.06.30 A1.06.32 A1.06.35 +A2.06.15 A1.06.27 A1.06.29 A1.06.30 A1.06.34 +A2.06.16 A1.06.31 A1.06.33 A1.06.36 A1.06.38 +A2.06.17 A1.06.30 A1.06.34 A1.06.35 A1.06.37 +A2.06.18 A1.06.36 A1.06.38 A1.06.39 A1.06.41 +A2.06.19 A1.05.35 A1.06.35 A1.06.37 A1.06.40 +A2.06.20 A1.06.38 A1.06.41 A1.07.38 A1.07.42 +A2.06.21 A1.06.39 A1.06.41 A1.06.42 A1.06.43 +A2.06.22 A1.06.41 A1.06.43 A1.06.45 A1.07.42 +A2.06.23 A1.06.42 A1.06.43 A1.06.44 A1.06.46 +A2.06.24 A1.06.43 A1.06.45 A1.06.46 A1.06.47 +A2.06.25 A1.06.46 A1.06.47 A1.06.48 A1.06.49 +A2.06.26 A1.06.50 A1.07.49 A1.07.50 A1.07.52 +A2.06.27 A1.05.50 A1.06.48 A1.06.49 A1.06.51 +A2.06.28 A1.06.50 A1.06.52 A1.06.53 A1.06.54 A1.06.55 A1.06.56 A1.06.58 A1.07.52 +A2.06.29 A1.06.56 A1.06.59 A1.06.61 +A2.06.30 A1.06.58 A1.06.60 A1.06.62 +A2.06.31 A1.05.61 A1.06.61 A1.06.62 A1.07.60 +A2.07.00 A1.07.15 A1.07.16 +A2.07.01 A1.07.17 +A2.07.02 A1.07.16 A1.07.17 +A2.07.03 A1.06.13 A1.07.13 A1.07.18 A1.07.19 +A2.07.04 A1.07.13 A1.07.14 A1.07.19 A1.07.20 +A2.07.05 A1.07.15 A1.07.16 A1.07.21 A1.07.22 +A2.07.06 A1.07.16 A1.07.17 A1.07.22 A1.07.23 +A2.07.07 A1.06.21 A1.07.18 A1.07.19 A1.07.24 +A2.07.08 A1.07.19 A1.07.20 A1.07.24 A1.07.25 +A2.07.09 A1.07.21 A1.07.22 A1.07.26 A1.07.27 +A2.07.10 A1.07.22 A1.07.23 A1.07.27 A1.07.28 +A2.07.11 A1.07.24 A1.07.25 A1.07.29 A1.07.30 +A2.07.12 A1.07.26 A1.07.27 A1.07.31 A1.07.32 +A2.07.13 A1.07.27 A1.07.28 A1.07.32 A1.07.33 +A2.07.14 A1.06.33 A1.07.29 A1.07.30 A1.07.34 +A2.07.15 A1.07.31 A1.07.32 A1.07.35 A1.07.36 +A2.07.16 A1.07.32 A1.07.33 A1.07.36 A1.07.37 +A2.07.17 A1.06.33 A1.06.38 A1.07.34 A1.07.38 +A2.07.18 A1.07.35 A1.07.36 A1.07.39 A1.07.40 +A2.07.19 A1.07.36 A1.07.37 A1.07.40 A1.07.41 +A2.07.20 A1.07.39 A1.07.40 A1.07.43 A1.07.44 +A2.07.21 A1.07.40 A1.07.41 A1.07.44 A1.07.45 +A2.07.22 A1.07.43 A1.07.44 A1.07.46 A1.07.47 +A2.07.23 A1.07.44 A1.07.45 A1.07.47 A1.07.48 +A2.07.24 A1.07.46 A1.07.47 A1.07.49 A1.07.50 +A2.07.25 A1.07.47 A1.07.48 A1.07.50 A1.07.51 +A2.07.26 A1.07.50 A1.07.51 A1.07.52 A1.07.53 +A2.07.27 A1.07.52 A1.07.53 A1.07.54 A1.07.55 A1.07.56 A1.07.57 A1.07.58 A1.07.59 +A2.07.28 A1.07.57 A1.07.58 A1.07.60 A1.07.61 +A2.07.29 A1.07.58 A1.07.59 A1.07.61 A1.07.62 +A2.08.00 A1.08.16 +A2.08.01 A1.08.15 A1.08.16 +A2.08.02 A1.08.14 A1.08.15 +A2.08.03 A1.08.07 A1.08.12 A1.08.17 A1.08.18 A1.09.13 +A2.08.04 A1.08.12 A1.08.13 A1.08.18 A1.08.19 +A2.08.05 A1.08.14 A1.08.15 A1.08.20 A1.08.21 +A2.08.06 A1.08.15 A1.08.16 A1.08.21 A1.08.22 +A2.08.07 A1.08.17 A1.08.18 A1.08.23 A1.09.21 +A2.08.08 A1.08.18 A1.08.19 A1.08.23 A1.08.24 +A2.08.09 A1.08.20 A1.08.21 A1.08.25 A1.08.26 +A2.08.10 A1.08.21 A1.08.22 A1.08.26 A1.08.27 +A2.08.11 A1.08.23 A1.08.24 A1.08.28 A1.08.29 +A2.08.12 A1.08.25 A1.08.26 A1.08.30 A1.08.31 +A2.08.13 A1.08.26 A1.08.27 A1.08.31 A1.08.32 +A2.08.14 A1.08.28 A1.08.29 A1.08.33 A1.09.33 +A2.08.15 A1.08.30 A1.08.31 A1.08.34 A1.08.35 +A2.08.16 A1.08.31 A1.08.32 A1.08.35 A1.08.36 +A2.08.17 A1.08.33 A1.08.37 A1.09.33 A1.09.38 +A2.08.18 A1.08.34 A1.08.35 A1.08.38 A1.08.39 +A2.08.19 A1.08.35 A1.08.36 A1.08.39 A1.08.40 +A2.08.20 A1.08.38 A1.08.39 A1.08.42 A1.08.43 +A2.08.21 A1.08.39 A1.08.40 A1.08.43 A1.08.44 +A2.08.22 A1.08.42 A1.08.43 A1.08.45 A1.08.46 +A2.08.23 A1.08.43 A1.08.44 A1.08.46 A1.08.47 +A2.08.24 A1.08.45 A1.08.46 A1.08.48 A1.08.49 +A2.08.25 A1.08.46 A1.08.47 A1.08.49 A1.08.50 +A2.08.26 A1.08.49 A1.08.50 A1.08.51 A1.08.52 +A2.08.27 A1.08.51 A1.08.52 A1.08.54 A1.08.55 A1.08.56 A1.08.57 A1.08.58 A1.08.59 +A2.08.28 A1.08.57 A1.08.58 A1.08.60 A1.08.61 +A2.08.29 A1.08.58 A1.08.59 A1.08.61 A1.08.62 +A2.09.00 A1.09.12 A1.09.17 A1.10.12 +A2.09.01 A1.09.12 A1.09.15 +A2.09.02 A1.09.11 A1.09.16 +A2.09.03 A1.09.15 +A2.09.04 A1.09.11 A1.09.13 A1.09.16 A1.09.19 +A2.09.05 A1.09.12 A1.09.15 A1.09.17 A1.09.20 +A2.09.06 A1.09.14 A1.09.16 A1.09.18 A1.09.22 +A2.09.07 A1.09.16 A1.09.19 A1.09.22 A1.09.24 +A2.09.08 A1.09.17 A1.09.20 A1.09.25 A1.10.21 +A2.09.09 A1.09.18 A1.09.22 A1.09.23 A1.09.27 +A2.09.10 A1.08.23 A1.08.28 A1.09.21 A1.09.26 +A2.09.11 A1.09.22 A1.09.24 A1.09.27 A1.09.29 +A2.09.12 A1.09.23 A1.09.27 A1.09.28 A1.09.30 +A2.09.13 A1.08.28 A1.09.26 A1.09.31 A1.09.33 +A2.09.14 A1.09.28 A1.09.30 A1.09.32 A1.09.35 +A2.09.15 A1.09.27 A1.09.29 A1.09.30 A1.09.34 +A2.09.16 A1.09.31 A1.09.33 A1.09.36 A1.09.38 +A2.09.17 A1.09.30 A1.09.34 A1.09.35 A1.09.37 +A2.09.18 A1.09.36 A1.09.38 A1.09.39 A1.09.41 +A2.09.19 A1.09.35 A1.09.37 A1.09.40 A1.10.36 +A2.09.20 A1.08.37 A1.08.41 A1.09.38 A1.09.41 +A2.09.21 A1.09.39 A1.09.41 A1.09.42 A1.09.43 +A2.09.22 A1.08.41 A1.09.41 A1.09.43 A1.09.45 +A2.09.23 A1.09.42 A1.09.43 A1.09.44 A1.09.46 +A2.09.24 A1.09.43 A1.09.45 A1.09.46 A1.09.47 +A2.09.25 A1.09.46 A1.09.47 A1.09.48 A1.09.49 +A2.09.26 A1.08.48 A1.08.49 A1.08.51 A1.09.50 +A2.09.27 A1.09.48 A1.09.49 A1.09.51 A1.10.51 +A2.09.28 A1.08.51 A1.08.53 A1.09.50 A1.09.52 A1.09.53 A1.09.54 A1.09.55 A1.09.57 +A2.09.29 A1.09.54 A1.09.55 A1.09.56 A1.09.58 +A2.09.30 A1.09.55 A1.09.57 A1.09.58 A1.09.59 +A2.09.31 A1.08.60 A1.09.58 A1.09.59 A1.09.60 A1.09.61 A1.09.62 +A2.10.00 A1.10.12 +A2.10.01 A1.10.15 +A2.10.02 A1.10.10 A1.10.14 A1.10.15 A1.10.18 +A2.10.03 A1.10.13 A1.10.16 +A2.10.04 A1.10.14 A1.10.18 +A2.10.05 A1.10.16 +A2.10.06 A1.09.17 A1.10.12 A1.10.17 A1.10.21 +A2.10.07 A1.10.11 A1.10.15 A1.10.16 A1.10.19 +A2.10.08 A1.10.15 A1.10.18 A1.10.19 A1.10.22 +A2.10.09 A1.10.17 A1.10.20 A1.10.21 A1.10.24 +A2.10.10 A1.10.20 A1.10.23 A1.10.24 A1.10.27 +A2.10.11 A1.09.25 A1.10.21 A1.10.24 A1.10.28 +A2.10.12 A1.10.23 A1.10.26 A1.10.27 A1.10.30 +A2.10.13 A1.10.26 A1.10.29 A1.10.30 A1.10.32 +A2.10.14 A1.10.24 A1.10.27 A1.10.28 A1.10.31 +A2.10.15 A1.10.27 A1.10.30 A1.10.31 A1.10.33 +A2.10.16 A1.09.32 A1.09.35 A1.10.34 A1.10.36 +A2.10.17 A1.10.30 A1.10.32 A1.10.33 A1.10.35 +A2.10.18 A1.10.34 A1.10.36 A1.10.37 A1.10.40 +A2.10.19 A1.10.37 A1.10.39 A1.10.40 A1.10.42 +A2.10.20 A1.09.40 A1.10.36 A1.10.40 A1.10.43 +A2.10.21 A1.10.39 A1.10.41 A1.10.42 A1.10.44 +A2.10.22 A1.10.40 A1.10.42 A1.10.43 A1.10.45 +A2.10.23 A1.10.42 A1.10.44 A1.10.45 A1.10.46 +A2.10.24 A1.09.44 A1.09.46 A1.09.48 A1.10.47 +A2.10.25 A1.09.48 A1.10.47 A1.10.49 A1.10.51 +A2.10.26 A1.10.49 A1.10.50 A1.10.51 A1.10.52 +A2.10.27 A1.09.51 A1.10.51 A1.10.52 A1.10.53 A1.10.54 A1.10.55 A1.10.57 +A2.10.28 A1.10.52 A1.10.54 A1.10.56 A1.10.57 A1.10.58 A1.10.60 A1.11.54 A1.11.55 A1.11.58 +A2.10.29 A1.09.56 A1.09.58 A1.09.60 A1.10.59 +A2.10.30 A1.09.60 A1.09.61 A1.10.59 A1.10.61 +A2.10.31 A1.10.61 A1.10.62 +A2.11.00 A1.11.12 A1.11.13 A1.11.14 +A2.11.01 A1.10.14 A1.10.18 A1.11.15 A1.11.20 +A2.11.02 A1.11.15 A1.11.16 A1.11.20 A1.11.21 +A2.11.03 A1.11.16 A1.11.17 A1.11.21 A1.11.22 +A2.11.04 A1.11.17 A1.11.18 A1.11.22 A1.11.23 +A2.11.05 A1.11.18 A1.11.19 A1.11.23 A1.11.24 +A2.11.06 A1.10.18 A1.10.22 A1.10.25 A1.11.20 +A2.11.07 A1.10.25 A1.11.20 A1.11.21 A1.11.25 +A2.11.08 A1.11.21 A1.11.22 A1.11.25 A1.11.26 +A2.11.09 A1.11.22 A1.11.23 A1.11.26 A1.11.27 +A2.11.10 A1.11.23 A1.11.24 A1.11.27 A1.11.28 +A2.11.11 A1.10.29 A1.10.32 A1.11.29 A1.11.33 +A2.11.12 A1.11.29 A1.11.30 A1.11.33 A1.11.34 +A2.11.13 A1.11.30 A1.11.31 A1.11.34 A1.11.35 +A2.11.14 A1.11.31 A1.11.32 A1.11.35 A1.11.36 +A2.11.15 A1.10.32 A1.10.35 A1.10.38 A1.11.33 +A2.11.16 A1.10.38 A1.11.33 A1.11.34 A1.11.37 +A2.11.17 A1.11.34 A1.11.35 A1.11.37 A1.11.38 +A2.11.18 A1.11.35 A1.11.36 A1.11.38 A1.11.39 +A2.11.19 A1.10.41 A1.10.44 A1.11.40 A1.11.43 +A2.11.20 A1.11.40 A1.11.41 A1.11.43 A1.11.44 +A2.11.21 A1.11.41 A1.11.42 A1.11.44 A1.11.45 +A2.11.22 A1.10.44 A1.10.46 A1.10.48 A1.11.43 +A2.11.23 A1.10.48 A1.11.43 A1.11.44 A1.11.46 +A2.11.24 A1.11.44 A1.11.45 A1.11.46 A1.11.47 +A2.11.25 A1.10.50 A1.10.52 A1.11.48 A1.11.50 A1.11.51 +A2.11.26 A1.11.48 A1.11.49 A1.11.51 A1.11.52 A1.11.53 +A2.11.27 A1.11.55 A1.11.56 A1.11.58 A1.11.59 +A2.11.28 A1.11.56 A1.11.57 A1.11.59 A1.11.60 +A2.11.29 A1.10.60 A1.11.58 A1.11.59 A1.11.61 +A2.11.30 A1.11.59 A1.11.60 A1.11.61 A1.11.62 +A2.12.00 A1.11.14 A1.12.12 A1.12.13 A1.12.14 +A2.12.01 A1.12.15 A1.12.16 A1.12.20 A1.12.21 A1.13.13 +A2.12.02 A1.12.16 A1.12.17 A1.12.21 A1.12.22 +A2.12.03 A1.12.17 A1.12.18 A1.12.22 A1.12.23 +A2.12.04 A1.12.18 A1.12.19 A1.12.23 A1.12.24 +A2.12.05 A1.11.19 A1.11.24 A1.12.19 A1.12.24 +A2.12.06 A1.12.20 A1.12.21 A1.12.25 A1.13.24 +A2.12.07 A1.12.21 A1.12.22 A1.12.25 A1.12.26 +A2.12.08 A1.12.22 A1.12.23 A1.12.26 A1.12.27 +A2.12.09 A1.12.23 A1.12.24 A1.12.27 A1.12.28 +A2.12.10 A1.11.24 A1.11.28 A1.12.24 A1.12.28 +A2.12.11 A1.12.29 A1.12.30 A1.12.33 A1.12.34 +A2.12.12 A1.12.30 A1.12.31 A1.12.34 A1.12.35 +A2.12.13 A1.12.31 A1.12.32 A1.12.35 A1.12.36 +A2.12.14 A1.11.32 A1.11.36 A1.12.32 A1.12.36 +A2.12.15 A1.12.33 A1.12.34 A1.12.37 A1.13.37 +A2.12.16 A1.12.34 A1.12.35 A1.12.37 A1.12.38 +A2.12.17 A1.12.35 A1.12.36 A1.12.38 A1.12.39 +A2.12.18 A1.11.36 A1.11.39 A1.12.36 A1.12.39 +A2.12.19 A1.12.40 A1.12.41 A1.12.43 A1.12.44 +A2.12.20 A1.12.41 A1.12.42 A1.12.44 A1.12.45 +A2.12.21 A1.11.42 A1.11.45 A1.12.42 A1.12.45 +A2.12.22 A1.12.43 A1.12.44 A1.12.46 A1.13.47 +A2.12.23 A1.12.44 A1.12.45 A1.12.46 A1.12.47 +A2.12.24 A1.11.45 A1.11.47 A1.12.45 A1.12.47 +A2.12.25 A1.12.48 A1.12.49 A1.12.50 A1.12.51 A1.12.52 +A2.12.26 A1.11.49 A1.11.53 A1.12.49 A1.12.52 A1.12.53 +A2.12.27 A1.12.56 A1.12.57 A1.12.59 A1.12.60 +A2.12.28 A1.11.57 A1.11.60 A1.12.57 A1.12.60 +A2.12.29 A1.12.59 A1.12.60 A1.12.61 A1.12.62 +A2.12.30 A1.11.60 A1.11.62 A1.12.60 A1.12.62 +A2.13.00 A1.13.14 +A2.13.01 A1.13.12 A1.14.17 +A2.13.02 A1.13.13 A1.13.17 +A2.13.03 A1.13.11 A1.13.15 +A2.13.04 A1.12.15 A1.12.20 A1.13.13 A1.13.17 +A2.13.05 A1.13.15 +A2.13.06 A1.13.16 A1.13.20 +A2.13.07 A1.13.14 A1.13.15 A1.13.18 +A2.13.08 A1.12.20 A1.13.17 A1.13.21 A1.13.24 +A2.13.09 A1.13.19 A1.13.23 +A2.13.10 A1.13.22 A1.13.26 +A2.13.11 A1.13.23 A1.13.27 +A2.13.12 A1.13.25 A1.13.28 A1.13.29 A1.13.31 +A2.13.13 A1.12.29 A1.12.33 A1.13.28 A1.13.31 +A2.13.14 A1.13.26 A1.13.30 +A2.13.15 A1.13.29 A1.13.31 A1.13.32 A1.13.34 +A2.13.16 A1.13.33 A1.13.35 +A2.13.17 A1.12.33 A1.13.31 A1.13.34 A1.13.37 +A2.13.18 A1.13.36 A1.13.38 A1.13.39 A1.13.41 +A2.13.19 A1.13.38 A1.13.40 A1.13.41 A1.13.43 +A2.13.20 A1.13.39 A1.13.41 A1.13.42 A1.13.44 +A2.13.21 A1.12.40 A1.12.43 A1.13.40 A1.13.43 +A2.13.22 A1.13.41 A1.13.43 A1.13.44 A1.13.45 +A2.13.23 A1.12.43 A1.13.43 A1.13.45 A1.13.47 +A2.13.24 A1.13.46 A1.13.48 A1.13.50 A1.14.48 +A2.13.25 A1.13.48 A1.13.49 A1.13.50 A1.13.51 +A2.13.26 A1.12.48 A1.12.50 A1.13.49 A1.13.51 +A2.13.27 A1.12.54 A1.13.51 A1.13.52 A1.13.53 A1.13.54 A1.13.55 A1.13.56 A1.13.57 +A2.13.28 A1.12.54 A1.12.55 A1.12.56 A1.12.58 A1.12.59 A1.12.61 A1.13.55 A1.13.57 A1.13.59 +A2.13.29 A1.13.58 A1.14.57 +A2.13.30 A1.13.58 A1.13.60 A1.13.61 A1.13.62 +A2.13.31 A1.13.60 A1.13.62 +A2.14.00 A1.14.17 +A2.14.01 A1.14.15 +A2.14.02 A1.14.14 A1.14.16 +A2.14.03 A1.14.17 +A2.14.04 A1.14.16 A1.14.19 +A2.14.05 A1.14.12 A1.14.15 A1.14.17 A1.14.20 +A2.14.06 A1.14.18 A1.14.22 +A2.14.07 A1.14.22 A1.14.24 +A2.14.08 A1.13.20 A1.14.25 +A2.14.09 A1.14.23 A1.14.27 +A2.14.10 A1.14.26 A1.15.29 +A2.14.11 A1.14.27 A1.14.29 +A2.14.12 A1.14.28 A1.14.30 +A2.14.13 A1.14.31 A1.14.33 +A2.14.14 A1.14.32 A1.14.35 +A2.14.15 A1.14.30 A1.14.34 +A2.14.16 A1.14.36 A1.14.38 +A2.14.17 A1.14.35 A1.14.37 +A2.14.18 A1.14.39 A1.14.41 +A2.14.19 A1.13.35 A1.14.40 +A2.14.20 A1.14.41 A1.15.42 +A2.14.21 A1.14.42 A1.14.43 +A2.14.22 A1.14.43 A1.14.45 +A2.14.23 A1.13.46 A1.14.44 A1.14.46 A1.14.48 +A2.14.24 A1.14.46 A1.14.47 A1.14.48 A1.14.49 +A2.14.25 A1.13.50 A1.14.48 A1.14.49 A1.14.51 +A2.14.26 A1.14.50 A1.14.52 A1.14.53 A1.14.54 A1.15.52 +A2.14.27 A1.13.50 A1.13.51 A1.13.52 A1.13.54 A1.14.51 +A2.14.28 A1.14.52 A1.14.53 A1.14.54 A1.14.55 A1.14.56 A1.14.57 A1.14.58 A1.14.59 A1.14.60 +A2.14.29 A1.14.59 A1.14.61 +A2.14.30 A1.14.60 A1.14.62 +A2.14.31 A1.13.61 A1.14.61 A1.14.62 +A2.15.00 A1.15.15 A1.15.16 +A2.15.01 A1.15.17 +A2.15.02 A1.15.16 A1.15.17 +A2.15.03 A1.14.13 A1.15.18 A1.15.19 +A2.15.04 A1.15.19 A1.15.20 +A2.15.05 A1.15.21 A1.15.22 +A2.15.06 A1.15.22 A1.15.23 +A2.15.07 A1.14.21 A1.15.24 +A2.15.08 A1.15.24 A1.15.25 +A2.15.09 A1.15.26 A1.15.27 +A2.15.10 A1.15.27 A1.15.28 +A2.15.11 A1.15.29 A1.15.30 +A2.15.12 A1.15.31 A1.15.32 +A2.15.13 A1.15.32 A1.15.33 +A2.15.14 A1.14.33 A1.15.34 +A2.15.15 A1.15.35 A1.15.36 +A2.15.16 A1.15.36 A1.15.37 +A2.15.17 A1.14.38 A1.15.38 +A2.15.18 A1.15.39 A1.15.40 +A2.15.19 A1.15.40 A1.15.41 +A2.15.20 A1.15.43 A1.15.44 +A2.15.21 A1.15.44 A1.15.45 +A2.15.22 A1.15.46 A1.15.47 +A2.15.23 A1.15.47 A1.15.48 +A2.15.24 A1.14.50 A1.15.49 A1.15.50 A1.15.52 +A2.15.25 A1.15.50 A1.15.51 A1.15.52 A1.15.53 +A2.15.26 A1.15.52 A1.15.53 A1.15.54 A1.15.55 A1.15.56 +A2.15.27 A1.15.54 A1.15.55 A1.15.56 A1.15.57 A1.15.58 A1.15.59 A1.15.60 A1.15.61 A1.15.62 +A2.15.28 A1.14.62 A1.15.60 A1.15.61 +A2.15.29 A1.15.61 A1.15.62 +A3.00.00 A2.00.06 +A3.00.01 A2.00.07 A2.00.08 A2.00.11 A2.01.10 +A3.00.02 A2.00.05 A2.00.09 A2.00.12 +A3.00.03 A2.00.10 A2.00.13 +A3.00.04 A2.00.11 A2.00.14 +A3.00.05 A2.00.12 A2.00.15 +A3.00.06 A2.00.13 A2.00.16 +A3.00.07 A2.00.14 A2.00.17 A2.01.20 +A3.00.08 A2.00.15 A2.00.18 A2.00.20 +A3.00.09 A2.00.16 A2.00.19 A2.00.21 +A3.00.10 A2.00.20 A2.00.22 +A3.00.11 A2.00.21 A2.00.23 +A3.00.12 A2.00.22 A2.00.24 A2.01.26 +A3.00.13 A2.00.23 A2.00.25 A2.00.26 +A3.00.14 A2.00.26 A2.00.27 +A3.00.15 A2.00.27 A2.00.28 A2.00.29 +A3.01.00 A2.00.07 A2.01.10 +A3.01.01 A2.01.05 A2.01.06 A2.01.08 A2.01.09 A2.01.11 +A3.01.02 A2.00.07 A2.01.04 A2.01.06 A2.01.07 A2.01.09 A2.01.10 A2.01.11 +A3.01.03 A2.01.05 A2.01.08 A2.01.09 A2.01.12 A2.01.14 A2.02.11 +A3.01.04 A2.01.10 A2.01.13 +A3.01.05 A2.01.09 A2.01.11 A2.01.12 A2.01.14 A2.01.15 A2.01.17 +A3.01.06 A2.01.13 A2.01.16 A2.01.18 +A3.01.07 A2.01.14 A2.01.17 A2.01.19 A2.02.16 +A3.01.08 A2.01.18 A2.01.21 +A3.01.09 A2.01.20 A2.01.22 +A3.01.10 A2.01.21 A2.01.23 A2.02.24 +A3.01.11 A2.01.22 A2.01.24 A2.01.25 +A3.01.12 A2.01.25 A2.01.27 +A3.01.13 A2.01.26 A2.01.28 +A3.01.14 A2.01.28 A2.01.29 A2.01.30 A2.01.31 +A3.01.15 A2.00.27 A2.00.28 A2.01.28 A2.01.30 A2.01.31 +A3.02.00 A2.01.05 A2.01.08 A2.02.06 A2.02.09 A2.02.10 A2.02.11 +A3.02.01 A2.02.07 A2.02.08 A2.02.10 A2.02.12 A2.02.13 A2.03.06 +A3.02.02 A2.02.07 A2.02.09 A2.02.10 A2.02.12 A2.02.13 +A3.02.03 A2.02.09 A2.02.10 A2.02.11 A2.02.14 +A3.02.04 A2.02.10 A2.02.12 A2.02.13 A2.02.14 A2.02.15 A2.02.17 +A3.02.05 A2.01.14 A2.02.11 A2.02.14 A2.02.16 +A3.02.06 A2.02.13 A2.02.17 A2.03.11 A2.03.15 +A3.02.07 A2.02.14 A2.02.15 A2.02.16 A2.02.17 A2.02.18 A2.02.19 +A3.02.08 A2.02.17 A2.02.19 A2.02.21 A2.03.15 +A3.02.09 A2.01.19 A2.02.16 A2.02.18 A2.02.19 A2.02.20 A2.02.22 +A3.02.10 A2.02.19 A2.02.21 A2.02.22 A2.02.23 +A3.02.11 A2.02.24 A2.02.25 +A3.02.12 A2.02.25 A2.02.26 A2.03.25 +A3.02.13 A2.01.27 A2.02.27 A2.02.28 +A3.02.14 A2.01.29 A2.01.31 A2.02.29 A2.02.30 +A3.02.15 A2.02.29 A2.02.30 A2.02.31 +A3.03.00 A2.03.04 A2.03.05 +A3.03.01 A2.03.05 +A3.03.02 A2.03.01 A2.03.02 A2.03.03 A2.03.06 A2.03.07 A2.03.08 +A3.03.03 A2.03.03 A2.03.04 A2.03.07 A2.03.08 A2.03.09 +A3.03.04 A2.03.04 A2.03.05 A2.03.09 A2.03.10 +A3.03.05 A2.02.13 A2.03.06 A2.03.07 A2.03.11 +A3.03.06 A2.03.07 A2.03.08 A2.03.09 A2.03.11 A2.03.12 A2.03.13 +A3.03.07 A2.03.09 A2.03.10 A2.03.13 A2.03.14 +A3.03.08 A2.03.11 A2.03.12 A2.03.13 A2.03.15 A2.03.16 A2.03.17 +A3.03.09 A2.03.13 A2.03.14 A2.03.17 A2.03.18 +A3.03.10 A2.02.21 A2.03.15 A2.03.16 A2.03.17 A2.03.19 A2.03.20 +A3.03.11 A2.03.17 A2.03.18 A2.03.20 A2.03.21 +A3.03.12 A2.02.21 A2.02.23 A2.03.19 A2.03.20 A2.03.22 A2.03.23 +A3.03.13 A2.03.20 A2.03.21 A2.03.23 A2.03.24 +A3.03.14 A2.03.25 A2.03.26 +A3.03.15 A2.02.28 A2.03.27 A2.03.28 A2.03.29 A2.03.30 +A3.04.00 A2.04.04 A2.04.05 +A3.04.01 A2.03.05 A2.04.05 +A3.04.02 A2.04.02 A2.04.03 A2.04.06 A2.04.07 A2.04.08 +A3.04.03 A2.04.03 A2.04.04 A2.04.08 A2.04.09 +A3.04.04 A2.03.05 A2.03.10 A2.04.04 A2.04.05 A2.04.09 A2.04.10 +A3.04.05 A2.04.06 A2.04.07 A2.04.08 A2.04.11 A2.04.12 A2.05.13 +A3.04.06 A2.04.08 A2.04.09 A2.04.12 A2.04.13 +A3.04.07 A2.03.10 A2.03.14 A2.04.09 A2.04.10 A2.04.13 A2.04.14 +A3.04.08 A2.04.12 A2.04.13 A2.04.16 A2.04.17 +A3.04.09 A2.03.14 A2.03.18 A2.04.13 A2.04.14 A2.04.17 A2.04.18 +A3.04.10 A2.04.16 A2.04.17 A2.04.19 A2.04.20 +A3.04.11 A2.03.18 A2.03.21 A2.04.17 A2.04.18 A2.04.20 A2.04.21 +A3.04.12 A2.04.19 A2.04.20 A2.04.22 A2.04.23 +A3.04.13 A2.03.21 A2.03.24 A2.04.20 A2.04.21 A2.04.23 A2.04.24 +A3.04.14 A2.03.26 A2.04.25 A2.04.26 +A3.04.15 A2.03.28 A2.03.30 A2.04.27 A2.04.28 A2.04.29 A2.04.30 A2.05.28 +A3.05.00 A2.05.06 A2.05.09 A2.05.11 A2.06.08 +A3.05.01 A2.05.07 A2.05.08 A2.05.09 A2.05.10 A2.05.12 +A3.05.02 A2.04.06 A2.05.08 A2.05.12 A2.05.13 +A3.05.03 A2.05.09 A2.05.10 A2.05.11 A2.05.12 A2.05.14 A2.05.15 +A3.05.04 A2.05.12 A2.05.13 A2.05.15 A2.05.17 +A3.05.05 A2.05.11 A2.05.14 A2.05.15 A2.05.16 A2.05.18 A2.06.14 +A3.05.06 A2.04.11 A2.04.12 A2.04.15 A2.04.16 A2.05.13 A2.05.17 +A3.05.07 A2.05.15 A2.05.17 A2.05.18 A2.05.19 +A3.05.08 A2.04.15 A2.04.16 A2.04.19 A2.05.17 A2.05.19 A2.05.21 +A3.05.09 A2.05.18 A2.05.19 A2.05.20 A2.05.22 +A3.05.10 A2.04.19 A2.04.22 A2.05.19 A2.05.21 A2.05.22 A2.05.23 +A3.05.11 A2.05.24 A2.05.25 A2.05.26 +A3.05.12 A2.04.25 A2.05.26 +A3.05.13 A2.05.27 A2.05.28 +A3.05.14 A2.05.30 A2.05.31 +A3.06.00 A2.06.05 A2.06.06 A2.06.07 A2.06.08 A2.06.09 A2.06.11 A2.06.12 A2.06.15 +A3.06.01 A2.06.07 A2.06.10 A2.06.11 A2.06.15 +A3.06.02 A2.05.11 A2.06.08 A2.06.12 A2.06.14 +A3.06.03 A2.06.10 A2.06.13 A2.06.16 +A3.06.04 A2.06.12 A2.06.14 A2.06.15 A2.06.17 +A3.06.05 A2.06.16 A2.06.18 +A3.06.06 A2.05.16 A2.05.18 A2.05.20 A2.06.14 A2.06.17 A2.06.19 +A3.06.07 A2.06.18 A2.06.21 A2.06.23 +A3.06.08 A2.06.20 A2.06.22 A2.06.24 +A3.06.09 A2.05.24 A2.06.23 +A3.06.10 A2.06.24 A2.06.25 +A3.06.11 A2.05.27 A2.06.25 A2.06.27 +A3.06.12 A2.05.29 A2.06.26 A2.06.28 A2.06.29 A2.06.30 +A3.06.13 A2.05.29 A2.05.30 A2.06.29 A2.06.31 +A3.06.14 A2.06.29 A2.06.30 A2.06.31 A2.07.28 +A3.06.15 A2.05.30 A2.06.29 A2.06.30 A2.06.31 +A3.07.00 A2.07.06 A2.07.10 +A3.07.01 A2.06.10 A2.07.07 A2.07.08 A2.07.11 +A3.07.02 A2.07.08 A2.07.09 A2.07.12 +A3.07.03 A2.07.10 A2.07.13 +A3.07.04 A2.07.11 A2.07.14 A2.07.17 +A3.07.05 A2.07.12 A2.07.15 A2.07.18 +A3.07.06 A2.07.13 A2.07.16 A2.07.19 +A3.07.07 A2.06.20 A2.07.17 +A3.07.08 A2.07.18 A2.07.20 +A3.07.09 A2.07.19 A2.07.21 +A3.07.10 A2.07.20 A2.07.22 A2.07.24 +A3.07.11 A2.07.21 A2.07.23 A2.07.25 +A3.07.12 A2.06.26 A2.07.24 +A3.07.13 A2.07.25 A2.07.26 +A3.07.14 A2.07.26 A2.07.27 A2.07.28 A2.07.29 +A3.07.15 A2.07.28 A2.07.29 +A3.08.00 A2.08.06 A2.08.10 +A3.08.01 A2.08.07 A2.08.08 A2.08.11 A2.09.10 +A3.08.02 A2.08.09 A2.08.12 +A3.08.03 A2.08.10 A2.08.13 +A3.08.04 A2.08.11 A2.08.14 A2.08.17 +A3.08.05 A2.08.12 A2.08.15 A2.08.18 +A3.08.06 A2.08.13 A2.08.16 A2.08.19 +A3.08.07 A2.08.17 A2.09.20 +A3.08.08 A2.08.18 A2.08.20 +A3.08.09 A2.08.19 A2.08.21 +A3.08.10 A2.08.20 A2.08.22 A2.08.24 +A3.08.11 A2.08.21 A2.08.23 A2.08.25 +A3.08.12 A2.08.24 A2.09.26 +A3.08.13 A2.08.25 A2.08.26 +A3.08.14 A2.08.26 A2.08.27 A2.08.28 A2.08.29 +A3.08.15 A2.08.28 A2.08.29 +A3.09.00 A2.08.07 A2.09.10 +A3.09.01 A2.09.05 A2.09.08 A2.09.09 A2.09.11 A2.09.12 A2.09.15 +A3.09.02 A2.09.06 A2.09.07 A2.09.09 A2.09.10 A2.09.11 A2.09.15 +A3.09.03 A2.09.08 A2.09.12 A2.09.14 A2.10.11 +A3.09.04 A2.09.10 A2.09.13 A2.09.16 +A3.09.05 A2.09.12 A2.09.14 A2.09.15 A2.09.17 +A3.09.06 A2.09.16 A2.09.18 +A3.09.07 A2.09.14 A2.09.17 A2.09.19 A2.10.16 A2.10.18 A2.10.20 +A3.09.08 A2.09.18 A2.09.21 A2.09.23 +A3.09.09 A2.09.20 A2.09.22 A2.09.24 +A3.09.10 A2.09.23 A2.10.24 +A3.09.11 A2.09.24 A2.09.25 +A3.09.12 A2.09.25 A2.09.27 A2.10.27 +A3.09.13 A2.09.26 A2.09.28 A2.09.29 A2.09.30 +A3.09.14 A2.09.29 A2.09.30 A2.09.31 A2.10.29 +A3.09.15 A2.08.28 A2.09.30 A2.09.31 +A3.10.00 A2.09.08 A2.10.06 A2.10.09 A2.10.10 A2.10.11 +A3.10.01 A2.10.07 A2.10.08 A2.10.12 A2.10.13 A2.11.06 +A3.10.02 A2.10.07 A2.10.08 A2.10.10 A2.10.12 A2.10.13 +A3.10.03 A2.10.09 A2.10.10 A2.10.11 A2.10.12 A2.10.14 A2.10.15 +A3.10.04 A2.10.12 A2.10.13 A2.10.15 A2.10.17 +A3.10.05 A2.09.14 A2.10.11 A2.10.14 A2.10.15 A2.10.16 A2.10.18 +A3.10.06 A2.10.13 A2.10.17 A2.11.11 A2.11.12 A2.11.15 A2.11.16 +A3.10.07 A2.10.15 A2.10.17 A2.10.18 A2.10.19 +A3.10.08 A2.10.17 A2.10.19 A2.10.21 A2.11.15 A2.11.16 A2.11.19 +A3.10.09 A2.10.18 A2.10.19 A2.10.20 A2.10.22 +A3.10.10 A2.10.19 A2.10.21 A2.10.22 A2.10.23 A2.11.19 A2.11.22 +A3.10.11 A2.10.24 A2.10.25 A2.10.26 +A3.10.12 A2.10.26 A2.11.25 +A3.10.13 A2.10.27 A2.10.28 +A3.10.14 A2.09.29 A2.09.31 A2.10.29 A2.10.30 +A3.10.15 A2.10.29 A2.10.30 A2.10.31 +A3.11.00 A2.11.04 A2.11.05 +A3.11.01 A2.11.05 A2.12.05 +A3.11.02 A2.11.02 A2.11.03 A2.11.06 A2.11.07 A2.11.08 +A3.11.03 A2.11.03 A2.11.04 A2.11.08 A2.11.09 +A3.11.04 A2.11.04 A2.11.05 A2.11.09 A2.11.10 A2.12.05 A2.12.10 +A3.11.05 A2.10.13 A2.11.06 A2.11.07 A2.11.08 A2.11.11 A2.11.12 +A3.11.06 A2.11.08 A2.11.09 A2.11.12 A2.11.13 +A3.11.07 A2.11.09 A2.11.10 A2.11.13 A2.11.14 A2.12.10 A2.12.14 +A3.11.08 A2.11.12 A2.11.13 A2.11.16 A2.11.17 +A3.11.09 A2.11.13 A2.11.14 A2.11.17 A2.11.18 A2.12.14 A2.12.18 +A3.11.10 A2.11.16 A2.11.17 A2.11.19 A2.11.20 +A3.11.11 A2.11.17 A2.11.18 A2.11.20 A2.11.21 A2.12.18 A2.12.21 +A3.11.12 A2.11.19 A2.11.20 A2.11.22 A2.11.23 +A3.11.13 A2.11.20 A2.11.21 A2.11.23 A2.11.24 A2.12.21 A2.12.24 +A3.11.14 A2.11.25 A2.11.26 A2.12.26 +A3.11.15 A2.10.28 A2.11.27 A2.11.28 A2.11.29 A2.11.30 A2.12.28 A2.12.30 +A3.12.00 A2.12.04 A2.12.05 +A3.12.01 A2.12.05 +A3.12.02 A2.12.02 A2.12.03 A2.12.06 A2.12.07 A2.12.08 +A3.12.03 A2.12.03 A2.12.04 A2.12.07 A2.12.08 A2.12.09 +A3.12.04 A2.12.04 A2.12.05 A2.12.09 A2.12.10 +A3.12.05 A2.12.06 A2.12.07 A2.12.11 A2.13.13 +A3.12.06 A2.12.07 A2.12.08 A2.12.09 A2.12.11 A2.12.12 A2.12.13 +A3.12.07 A2.12.09 A2.12.10 A2.12.13 A2.12.14 +A3.12.08 A2.12.11 A2.12.12 A2.12.13 A2.12.15 A2.12.16 A2.12.17 +A3.12.09 A2.12.13 A2.12.14 A2.12.17 A2.12.18 +A3.12.10 A2.12.15 A2.12.16 A2.12.17 A2.12.19 A2.12.20 A2.13.21 +A3.12.11 A2.12.17 A2.12.18 A2.12.20 A2.12.21 +A3.12.12 A2.12.19 A2.12.20 A2.12.22 A2.12.23 A2.13.21 A2.13.23 +A3.12.13 A2.12.20 A2.12.21 A2.12.23 A2.12.24 +A3.12.14 A2.12.25 A2.12.26 +A3.12.15 A2.12.27 A2.12.28 A2.12.29 A2.12.30 A2.13.28 +A3.13.00 A2.13.06 A2.13.09 A2.13.11 A2.14.05 A2.14.08 +A3.13.01 A2.13.07 A2.13.08 A2.13.09 A2.13.10 A2.13.12 +A3.13.02 A2.12.06 A2.13.08 A2.13.10 A2.13.12 A2.13.13 +A3.13.03 A2.13.09 A2.13.10 A2.13.11 A2.13.14 +A3.13.04 A2.13.10 A2.13.12 A2.13.13 A2.13.14 A2.13.15 A2.13.17 +A3.13.05 A2.13.11 A2.13.14 A2.13.16 A2.14.14 +A3.13.06 A2.12.11 A2.12.15 A2.13.13 A2.13.17 +A3.13.07 A2.13.14 A2.13.15 A2.13.16 A2.13.17 A2.13.18 A2.13.19 +A3.13.08 A2.12.15 A2.13.17 A2.13.19 A2.13.21 +A3.13.09 A2.13.16 A2.13.18 A2.13.19 A2.13.20 A2.13.22 A2.14.19 +A3.13.10 A2.13.19 A2.13.21 A2.13.22 A2.13.23 +A3.13.11 A2.13.24 A2.13.25 +A3.13.12 A2.12.25 A2.13.25 A2.13.26 +A3.13.13 A2.13.27 A2.13.28 A2.14.27 +A3.13.14 A2.13.29 A2.13.30 A2.13.31 +A3.14.00 A2.14.05 A2.14.06 A2.14.07 A2.14.08 A2.14.09 A2.14.11 +A3.14.01 A2.14.04 A2.14.07 A2.14.10 A2.14.11 A2.15.07 +A3.14.02 A2.13.11 A2.14.05 A2.14.08 A2.14.09 A2.14.12 A2.14.14 +A3.14.03 A2.14.10 A2.14.13 +A3.14.04 A2.14.09 A2.14.11 A2.14.12 A2.14.14 A2.14.15 A2.14.17 +A3.14.05 A2.14.13 A2.14.16 A2.14.18 +A3.14.06 A2.13.16 A2.14.14 A2.14.17 A2.14.19 +A3.14.07 A2.14.18 A2.14.21 +A3.14.08 A2.14.20 A2.14.22 +A3.14.09 A2.13.24 A2.14.21 A2.14.23 +A3.14.10 A2.14.22 A2.14.24 A2.14.25 +A3.14.11 A2.14.25 A2.14.27 +A3.14.12 A2.14.26 A2.14.28 +A3.14.13 A2.13.29 A2.14.28 A2.14.29 +A3.14.14 A2.14.28 A2.14.29 A2.14.30 A2.14.31 A2.15.27 A2.15.28 +A3.14.15 A2.13.30 A2.14.29 A2.14.30 A2.14.31 +A3.15.00 A2.15.06 +A3.15.01 A2.14.10 A2.15.07 A2.15.08 A2.15.11 +A3.15.02 A2.15.05 A2.15.08 A2.15.09 A2.15.12 +A3.15.03 A2.15.10 A2.15.13 +A3.15.04 A2.15.11 A2.15.14 +A3.15.05 A2.15.12 A2.15.15 +A3.15.06 A2.15.13 A2.15.16 +A3.15.07 A2.14.20 A2.15.14 A2.15.17 +A3.15.08 A2.15.15 A2.15.18 A2.15.20 +A3.15.09 A2.15.16 A2.15.19 A2.15.21 +A3.15.10 A2.15.20 A2.15.22 +A3.15.11 A2.15.21 A2.15.23 +A3.15.12 A2.14.26 A2.15.22 A2.15.24 +A3.15.13 A2.15.23 A2.15.25 A2.15.26 +A3.15.14 A2.15.26 A2.15.27 +A3.15.15 A2.15.27 A2.15.28 A2.15.29 +C2.00.00 C1.00.14 C1.00.15 +C2.00.01 C1.00.15 C1.00.16 +C2.00.02 C1.00.16 +C2.00.03 C1.00.17 C1.00.18 C1.01.13 +C2.00.04 C1.00.18 C1.00.19 +C2.00.05 C1.00.20 C1.00.21 +C2.00.06 C1.00.21 C1.00.22 +C2.00.07 C1.00.23 C1.01.21 +C2.00.08 C1.00.23 C1.00.24 +C2.00.09 C1.00.25 C1.00.26 +C2.00.10 C1.00.26 C1.00.27 +C2.00.11 C1.00.28 C1.00.29 +C2.00.12 C1.00.30 C1.00.31 +C2.00.13 C1.00.31 C1.00.32 +C2.00.14 C1.00.33 C1.01.33 +C2.00.15 C1.00.34 C1.00.35 +C2.00.16 C1.00.35 C1.00.36 +C2.00.17 C1.00.37 C1.01.38 +C2.00.18 C1.00.38 C1.00.39 +C2.00.19 C1.00.39 C1.00.40 +C2.00.20 C1.00.42 C1.00.43 +C2.00.21 C1.00.43 C1.00.44 +C2.00.22 C1.00.45 C1.00.46 +C2.00.23 C1.00.46 C1.00.47 +C2.00.24 C1.00.48 C1.00.49 C1.00.51 C1.01.50 +C2.00.25 C1.00.49 C1.00.50 C1.00.51 C1.00.52 +C2.00.26 C1.00.51 C1.00.52 C1.00.54 C1.00.55 C1.00.56 +C2.00.27 C1.00.54 C1.00.55 C1.00.56 C1.00.57 C1.00.58 C1.00.59 C1.00.60 C1.00.61 C1.00.62 +C2.00.28 C1.00.60 C1.00.61 C1.01.62 +C2.00.29 C1.00.61 C1.00.62 +C2.01.00 C1.01.17 C1.02.13 +C2.01.01 C1.01.12 C1.01.15 +C2.01.02 C1.01.16 +C2.01.03 C1.01.15 +C2.01.04 C1.01.16 C1.01.19 +C2.01.05 C1.01.17 C1.01.20 +C2.01.06 C1.01.14 C1.01.18 C1.01.22 +C2.01.07 C1.01.22 C1.01.24 +C2.01.08 C1.01.25 C1.02.21 +C2.01.09 C1.01.23 C1.01.27 +C2.01.10 C1.00.28 C1.01.26 +C2.01.11 C1.01.27 C1.01.29 +C2.01.12 C1.01.28 C1.01.30 +C2.01.13 C1.01.31 C1.01.33 +C2.01.14 C1.01.32 C1.01.35 +C2.01.15 C1.01.30 C1.01.34 +C2.01.16 C1.01.36 C1.01.38 +C2.01.17 C1.01.35 C1.01.37 +C2.01.18 C1.01.39 C1.01.41 +C2.01.19 C1.01.40 C1.02.37 +C2.01.20 C1.00.41 C1.01.41 +C2.01.21 C1.01.42 C1.01.43 +C2.01.22 C1.01.43 C1.01.45 +C2.01.23 C1.01.44 C1.01.46 C1.01.48 C1.02.47 +C2.01.24 C1.01.46 C1.01.47 C1.01.48 C1.01.49 +C2.01.25 C1.01.48 C1.01.49 C1.01.51 C1.02.51 +C2.01.26 C1.00.51 C1.00.53 C1.01.50 C1.01.52 C1.01.53 +C2.01.27 C1.01.51 C1.02.51 C1.02.52 C1.02.53 C1.02.55 +C2.01.28 C1.00.53 C1.01.52 C1.01.53 C1.01.54 C1.01.55 C1.01.56 C1.01.57 C1.01.58 C1.01.59 +C2.01.29 C1.01.56 C1.01.58 C1.01.60 C1.02.59 +C2.01.30 C1.01.58 C1.01.59 C1.01.60 C1.01.61 C1.01.62 +C2.01.31 C1.01.60 C1.01.61 C1.01.62 +C2.02.00 C1.02.13 C1.02.17 +C2.02.01 C1.02.15 +C2.02.02 C1.02.14 C1.02.18 +C2.02.03 C1.02.12 C1.02.16 +C2.02.04 C1.02.14 C1.02.18 C1.03.20 +C2.02.05 C1.02.16 +C2.02.06 C1.01.17 C1.02.13 C1.02.17 C1.02.21 +C2.02.07 C1.02.15 C1.02.16 C1.02.19 +C2.02.08 C1.02.18 C1.02.22 C1.02.25 C1.03.20 +C2.02.09 C1.02.20 C1.02.24 +C2.02.10 C1.02.23 C1.02.27 +C2.02.11 C1.02.24 C1.02.28 +C2.02.12 C1.02.26 C1.02.29 C1.02.30 C1.02.32 +C2.02.13 C1.02.29 C1.02.32 C1.03.29 C1.03.33 +C2.02.14 C1.02.27 C1.02.31 +C2.02.15 C1.02.30 C1.02.32 C1.02.33 C1.02.35 +C2.02.16 C1.02.34 C1.02.37 +C2.02.17 C1.02.32 C1.02.35 C1.02.38 C1.03.33 +C2.02.18 C1.02.36 C1.02.39 C1.02.40 C1.02.42 +C2.02.19 C1.02.39 C1.02.41 C1.02.42 C1.02.44 +C2.02.20 C1.02.40 C1.02.42 C1.02.43 C1.02.45 +C2.02.21 C1.02.41 C1.02.44 C1.03.40 C1.03.43 +C2.02.22 C1.02.42 C1.02.44 C1.02.45 C1.02.46 +C2.02.23 C1.02.44 C1.02.46 C1.02.48 C1.03.43 +C2.02.24 C1.01.48 C1.02.47 C1.02.49 C1.02.51 +C2.02.25 C1.02.49 C1.02.50 C1.02.51 C1.02.52 +C2.02.26 C1.02.50 C1.02.52 C1.03.48 C1.03.50 +C2.02.27 C1.02.52 C1.02.53 C1.02.54 C1.02.55 C1.02.56 C1.02.57 C1.02.58 C1.03.54 +C2.02.28 C1.02.56 C1.02.58 C1.02.60 C1.03.54 C1.03.55 C1.03.56 C1.03.58 C1.03.59 C1.03.61 +C2.02.29 C1.01.60 C1.01.61 C1.02.59 C1.02.61 +C2.02.30 C1.01.61 C1.02.61 C1.02.62 +C2.02.31 C1.02.61 C1.02.62 +C2.03.00 C1.03.12 C1.03.13 C1.03.14 C1.04.14 +C2.03.01 C1.02.14 C1.03.15 C1.03.16 C1.03.20 C1.03.21 +C2.03.02 C1.03.16 C1.03.17 C1.03.21 C1.03.22 +C2.03.03 C1.03.17 C1.03.18 C1.03.22 C1.03.23 +C2.03.04 C1.03.18 C1.03.19 C1.03.23 C1.03.24 +C2.03.05 C1.03.19 C1.03.24 C1.04.19 C1.04.24 +C2.03.06 C1.02.25 C1.03.20 C1.03.21 C1.03.25 +C2.03.07 C1.03.21 C1.03.22 C1.03.25 C1.03.26 +C2.03.08 C1.03.22 C1.03.23 C1.03.26 C1.03.27 +C2.03.09 C1.03.23 C1.03.24 C1.03.27 C1.03.28 +C2.03.10 C1.03.24 C1.03.28 C1.04.24 C1.04.28 +C2.03.11 C1.03.29 C1.03.30 C1.03.33 C1.03.34 +C2.03.12 C1.03.30 C1.03.31 C1.03.34 C1.03.35 +C2.03.13 C1.03.31 C1.03.32 C1.03.35 C1.03.36 +C2.03.14 C1.03.32 C1.03.36 C1.04.32 C1.04.36 +C2.03.15 C1.02.38 C1.03.33 C1.03.34 C1.03.37 +C2.03.16 C1.03.34 C1.03.35 C1.03.37 C1.03.38 +C2.03.17 C1.03.35 C1.03.36 C1.03.38 C1.03.39 +C2.03.18 C1.03.36 C1.03.39 C1.04.36 C1.04.39 +C2.03.19 C1.03.40 C1.03.41 C1.03.43 C1.03.44 +C2.03.20 C1.03.41 C1.03.42 C1.03.44 C1.03.45 +C2.03.21 C1.03.42 C1.03.45 C1.04.42 C1.04.45 +C2.03.22 C1.02.48 C1.03.43 C1.03.44 C1.03.46 +C2.03.23 C1.03.44 C1.03.45 C1.03.46 C1.03.47 +C2.03.24 C1.03.45 C1.03.47 C1.04.45 C1.04.47 +C2.03.25 C1.03.48 C1.03.49 C1.03.50 C1.03.51 C1.03.52 +C2.03.26 C1.03.49 C1.03.52 C1.03.53 C1.04.49 C1.04.53 +C2.03.27 C1.03.56 C1.03.57 C1.03.59 C1.03.60 +C2.03.28 C1.03.57 C1.03.60 C1.04.57 C1.04.60 +C2.03.29 C1.03.59 C1.03.60 C1.03.61 C1.03.62 +C2.03.30 C1.03.60 C1.03.62 C1.04.60 C1.04.62 +C2.04.00 C1.04.12 C1.04.13 C1.04.14 +C2.04.01 C1.04.15 C1.04.20 C1.05.13 C1.05.17 +C2.04.02 C1.04.15 C1.04.16 C1.04.20 C1.04.21 +C2.04.03 C1.04.16 C1.04.17 C1.04.21 C1.04.22 +C2.04.04 C1.04.17 C1.04.18 C1.04.22 C1.04.23 +C2.04.05 C1.04.18 C1.04.19 C1.04.23 C1.04.24 +C2.04.06 C1.04.20 C1.05.17 C1.05.21 C1.05.24 +C2.04.07 C1.04.20 C1.04.21 C1.04.25 C1.05.24 +C2.04.08 C1.04.21 C1.04.22 C1.04.25 C1.04.26 +C2.04.09 C1.04.22 C1.04.23 C1.04.26 C1.04.27 +C2.04.10 C1.04.23 C1.04.24 C1.04.27 C1.04.28 +C2.04.11 C1.04.29 C1.04.33 C1.05.28 C1.05.31 +C2.04.12 C1.04.29 C1.04.30 C1.04.33 C1.04.34 +C2.04.13 C1.04.30 C1.04.31 C1.04.34 C1.04.35 +C2.04.14 C1.04.31 C1.04.32 C1.04.35 C1.04.36 +C2.04.15 C1.04.33 C1.05.31 C1.05.34 C1.05.37 +C2.04.16 C1.04.33 C1.04.34 C1.04.37 C1.05.37 +C2.04.17 C1.04.34 C1.04.35 C1.04.37 C1.04.38 +C2.04.18 C1.04.35 C1.04.36 C1.04.38 C1.04.39 +C2.04.19 C1.04.40 C1.04.43 C1.05.40 C1.05.43 +C2.04.20 C1.04.40 C1.04.41 C1.04.43 C1.04.44 +C2.04.21 C1.04.41 C1.04.42 C1.04.44 C1.04.45 +C2.04.22 C1.04.43 C1.05.43 C1.05.45 C1.05.47 +C2.04.23 C1.04.43 C1.04.44 C1.04.46 C1.05.47 +C2.04.24 C1.04.44 C1.04.45 C1.04.46 C1.04.47 +C2.04.25 C1.04.48 C1.04.50 C1.04.51 C1.05.49 C1.05.51 +C2.04.26 C1.04.48 C1.04.49 C1.04.51 C1.04.52 C1.04.53 +C2.04.27 C1.04.55 C1.04.56 C1.04.58 C1.04.59 +C2.04.28 C1.04.56 C1.04.57 C1.04.59 C1.04.60 +C2.04.29 C1.04.58 C1.04.59 C1.04.61 C1.05.59 +C2.04.30 C1.04.59 C1.04.60 C1.04.61 C1.04.62 +C2.05.00 C1.05.14 +C2.05.01 C1.05.11 C1.06.17 +C2.05.02 C1.05.09 C1.05.13 C1.05.14 C1.05.17 +C2.05.03 C1.05.12 C1.05.15 +C2.05.04 C1.05.13 C1.05.17 +C2.05.05 C1.05.15 +C2.05.06 C1.05.11 C1.05.16 C1.05.20 C1.06.17 +C2.05.07 C1.05.10 C1.05.14 C1.05.15 C1.05.18 +C2.05.08 C1.05.14 C1.05.17 C1.05.18 C1.05.21 +C2.05.09 C1.05.16 C1.05.19 C1.05.20 C1.05.23 +C2.05.10 C1.05.19 C1.05.22 C1.05.23 C1.05.26 +C2.05.11 C1.05.20 C1.05.23 C1.05.27 C1.06.25 +C2.05.12 C1.05.22 C1.05.25 C1.05.26 C1.05.29 +C2.05.13 C1.05.25 C1.05.28 C1.05.29 C1.05.31 +C2.05.14 C1.05.23 C1.05.26 C1.05.27 C1.05.30 +C2.05.15 C1.05.26 C1.05.29 C1.05.30 C1.05.32 +C2.05.16 C1.05.33 C1.05.35 C1.06.32 C1.06.35 +C2.05.17 C1.05.29 C1.05.31 C1.05.32 C1.05.34 +C2.05.18 C1.05.33 C1.05.35 C1.05.36 C1.05.39 +C2.05.19 C1.05.36 C1.05.38 C1.05.39 C1.05.41 +C2.05.20 C1.05.35 C1.05.39 C1.05.42 C1.06.40 +C2.05.21 C1.05.38 C1.05.40 C1.05.41 C1.05.43 +C2.05.22 C1.05.39 C1.05.41 C1.05.42 C1.05.44 +C2.05.23 C1.05.41 C1.05.43 C1.05.44 C1.05.45 +C2.05.24 C1.05.46 C1.06.44 C1.06.46 C1.06.48 +C2.05.25 C1.05.46 C1.05.48 C1.05.50 C1.06.48 +C2.05.26 C1.05.48 C1.05.49 C1.05.50 C1.05.51 +C2.05.27 C1.05.50 C1.05.51 C1.05.52 C1.05.53 C1.05.54 C1.05.56 C1.06.51 +C2.05.28 C1.04.54 C1.04.55 C1.04.58 C1.05.51 C1.05.53 C1.05.55 C1.05.56 C1.05.57 C1.05.59 +C2.05.29 C1.05.58 C1.06.55 C1.06.57 +C2.05.30 C1.05.58 C1.05.60 C1.05.61 C1.06.61 +C2.05.31 C1.05.60 C1.05.61 C1.05.62 +C2.06.00 C1.06.12 C1.06.17 +C2.06.01 C1.06.15 +C2.06.02 C1.06.14 C1.06.16 +C2.06.03 C1.06.17 +C2.06.04 C1.06.11 C1.06.13 C1.06.16 C1.06.19 +C2.06.05 C1.06.12 C1.06.15 C1.06.17 C1.06.20 +C2.06.06 C1.06.14 C1.06.16 C1.06.18 C1.06.22 +C2.06.07 C1.06.16 C1.06.19 C1.06.22 C1.06.24 +C2.06.08 C1.05.20 C1.06.17 C1.06.20 C1.06.25 +C2.06.09 C1.06.18 C1.06.22 C1.06.23 C1.06.27 +C2.06.10 C1.06.21 C1.06.26 C1.07.24 C1.07.29 +C2.06.11 C1.06.22 C1.06.24 C1.06.27 C1.06.29 +C2.06.12 C1.06.23 C1.06.27 C1.06.28 C1.06.30 +C2.06.13 C1.06.26 C1.06.31 C1.06.33 C1.07.29 +C2.06.14 C1.06.28 C1.06.30 C1.06.32 C1.06.35 +C2.06.15 C1.06.27 C1.06.29 C1.06.30 C1.06.34 +C2.06.16 C1.06.31 C1.06.33 C1.06.36 C1.06.38 +C2.06.17 C1.06.30 C1.06.34 C1.06.35 C1.06.37 +C2.06.18 C1.06.36 C1.06.38 C1.06.39 C1.06.41 +C2.06.19 C1.05.35 C1.06.35 C1.06.37 C1.06.40 +C2.06.20 C1.06.38 C1.06.41 C1.07.38 C1.07.42 +C2.06.21 C1.06.39 C1.06.41 C1.06.42 C1.06.43 +C2.06.22 C1.06.41 C1.06.43 C1.06.45 C1.07.42 +C2.06.23 C1.06.42 C1.06.43 C1.06.44 C1.06.46 +C2.06.24 C1.06.43 C1.06.45 C1.06.46 C1.06.47 +C2.06.25 C1.06.46 C1.06.47 C1.06.48 C1.06.49 +C2.06.26 C1.06.50 C1.07.49 C1.07.50 C1.07.52 +C2.06.27 C1.05.50 C1.06.48 C1.06.49 C1.06.51 +C2.06.28 C1.06.50 C1.06.52 C1.06.53 C1.06.54 C1.06.55 C1.06.56 C1.06.58 C1.07.52 +C2.06.29 C1.06.56 C1.06.59 C1.06.61 +C2.06.30 C1.06.58 C1.06.60 C1.06.62 +C2.06.31 C1.05.61 C1.06.61 C1.06.62 C1.07.60 +C2.07.00 C1.07.15 C1.07.16 +C2.07.01 C1.07.17 +C2.07.02 C1.07.16 C1.07.17 +C2.07.03 C1.06.13 C1.07.13 C1.07.18 C1.07.19 +C2.07.04 C1.07.13 C1.07.14 C1.07.19 C1.07.20 +C2.07.05 C1.07.15 C1.07.16 C1.07.21 C1.07.22 +C2.07.06 C1.07.16 C1.07.17 C1.07.22 C1.07.23 +C2.07.07 C1.06.21 C1.07.18 C1.07.19 C1.07.24 +C2.07.08 C1.07.19 C1.07.20 C1.07.24 C1.07.25 +C2.07.09 C1.07.21 C1.07.22 C1.07.26 C1.07.27 +C2.07.10 C1.07.22 C1.07.23 C1.07.27 C1.07.28 +C2.07.11 C1.07.24 C1.07.25 C1.07.29 C1.07.30 +C2.07.12 C1.07.26 C1.07.27 C1.07.31 C1.07.32 +C2.07.13 C1.07.27 C1.07.28 C1.07.32 C1.07.33 +C2.07.14 C1.06.33 C1.07.29 C1.07.30 C1.07.34 +C2.07.15 C1.07.31 C1.07.32 C1.07.35 C1.07.36 +C2.07.16 C1.07.32 C1.07.33 C1.07.36 C1.07.37 +C2.07.17 C1.06.33 C1.06.38 C1.07.34 C1.07.38 +C2.07.18 C1.07.35 C1.07.36 C1.07.39 C1.07.40 +C2.07.19 C1.07.36 C1.07.37 C1.07.40 C1.07.41 +C2.07.20 C1.07.39 C1.07.40 C1.07.43 C1.07.44 +C2.07.21 C1.07.40 C1.07.41 C1.07.44 C1.07.45 +C2.07.22 C1.07.43 C1.07.44 C1.07.46 C1.07.47 +C2.07.23 C1.07.44 C1.07.45 C1.07.47 C1.07.48 +C2.07.24 C1.07.46 C1.07.47 C1.07.49 C1.07.50 +C2.07.25 C1.07.47 C1.07.48 C1.07.50 C1.07.51 +C2.07.26 C1.07.50 C1.07.51 C1.07.52 C1.07.53 +C2.07.27 C1.07.52 C1.07.53 C1.07.54 C1.07.55 C1.07.56 C1.07.57 C1.07.58 C1.07.59 +C2.07.28 C1.07.57 C1.07.58 C1.07.60 C1.07.61 +C2.07.29 C1.07.58 C1.07.59 C1.07.61 C1.07.62 +C2.08.00 C1.08.16 +C2.08.01 C1.08.15 C1.08.16 +C2.08.02 C1.08.14 C1.08.15 +C2.08.03 C1.08.07 C1.08.12 C1.08.17 C1.08.18 C1.09.13 +C2.08.04 C1.08.12 C1.08.13 C1.08.18 C1.08.19 +C2.08.05 C1.08.14 C1.08.15 C1.08.20 C1.08.21 +C2.08.06 C1.08.15 C1.08.16 C1.08.21 C1.08.22 +C2.08.07 C1.08.17 C1.08.18 C1.08.23 C1.09.21 +C2.08.08 C1.08.18 C1.08.19 C1.08.23 C1.08.24 +C2.08.09 C1.08.20 C1.08.21 C1.08.25 C1.08.26 +C2.08.10 C1.08.21 C1.08.22 C1.08.26 C1.08.27 +C2.08.11 C1.08.23 C1.08.24 C1.08.28 C1.08.29 +C2.08.12 C1.08.25 C1.08.26 C1.08.30 C1.08.31 +C2.08.13 C1.08.26 C1.08.27 C1.08.31 C1.08.32 +C2.08.14 C1.08.28 C1.08.29 C1.08.33 C1.09.33 +C2.08.15 C1.08.30 C1.08.31 C1.08.34 C1.08.35 +C2.08.16 C1.08.31 C1.08.32 C1.08.35 C1.08.36 +C2.08.17 C1.08.33 C1.08.37 C1.09.33 C1.09.38 +C2.08.18 C1.08.34 C1.08.35 C1.08.38 C1.08.39 +C2.08.19 C1.08.35 C1.08.36 C1.08.39 C1.08.40 +C2.08.20 C1.08.38 C1.08.39 C1.08.42 C1.08.43 +C2.08.21 C1.08.39 C1.08.40 C1.08.43 C1.08.44 +C2.08.22 C1.08.42 C1.08.43 C1.08.45 C1.08.46 +C2.08.23 C1.08.43 C1.08.44 C1.08.46 C1.08.47 +C2.08.24 C1.08.45 C1.08.46 C1.08.48 C1.08.49 +C2.08.25 C1.08.46 C1.08.47 C1.08.49 C1.08.50 +C2.08.26 C1.08.49 C1.08.50 C1.08.51 C1.08.52 +C2.08.27 C1.08.51 C1.08.52 C1.08.54 C1.08.55 C1.08.56 C1.08.57 C1.08.58 C1.08.59 +C2.08.28 C1.08.57 C1.08.58 C1.08.60 C1.08.61 +C2.08.29 C1.08.58 C1.08.59 C1.08.61 C1.08.62 +C2.09.00 C1.09.12 C1.09.17 C1.10.12 +C2.09.01 C1.09.12 C1.09.15 +C2.09.02 C1.09.11 C1.09.16 +C2.09.03 C1.09.15 +C2.09.04 C1.09.11 C1.09.13 C1.09.16 C1.09.19 +C2.09.05 C1.09.12 C1.09.15 C1.09.17 C1.09.20 +C2.09.06 C1.09.14 C1.09.16 C1.09.18 C1.09.22 +C2.09.07 C1.09.16 C1.09.19 C1.09.22 C1.09.24 +C2.09.08 C1.09.17 C1.09.20 C1.09.25 C1.10.21 +C2.09.09 C1.09.18 C1.09.22 C1.09.23 C1.09.27 +C2.09.10 C1.08.23 C1.08.28 C1.09.21 C1.09.26 +C2.09.11 C1.09.22 C1.09.24 C1.09.27 C1.09.29 +C2.09.12 C1.09.23 C1.09.27 C1.09.28 C1.09.30 +C2.09.13 C1.08.28 C1.09.26 C1.09.31 C1.09.33 +C2.09.14 C1.09.28 C1.09.30 C1.09.32 C1.09.35 +C2.09.15 C1.09.27 C1.09.29 C1.09.30 C1.09.34 +C2.09.16 C1.09.31 C1.09.33 C1.09.36 C1.09.38 +C2.09.17 C1.09.30 C1.09.34 C1.09.35 C1.09.37 +C2.09.18 C1.09.36 C1.09.38 C1.09.39 C1.09.41 +C2.09.19 C1.09.35 C1.09.37 C1.09.40 C1.10.36 +C2.09.20 C1.08.37 C1.08.41 C1.09.38 C1.09.41 +C2.09.21 C1.09.39 C1.09.41 C1.09.42 C1.09.43 +C2.09.22 C1.08.41 C1.09.41 C1.09.43 C1.09.45 +C2.09.23 C1.09.42 C1.09.43 C1.09.44 C1.09.46 +C2.09.24 C1.09.43 C1.09.45 C1.09.46 C1.09.47 +C2.09.25 C1.09.46 C1.09.47 C1.09.48 C1.09.49 +C2.09.26 C1.08.48 C1.08.49 C1.08.51 C1.09.50 +C2.09.27 C1.09.48 C1.09.49 C1.09.51 C1.10.51 +C2.09.28 C1.08.51 C1.08.53 C1.09.50 C1.09.52 C1.09.53 C1.09.54 C1.09.55 C1.09.57 +C2.09.29 C1.09.54 C1.09.55 C1.09.56 C1.09.58 +C2.09.30 C1.09.55 C1.09.57 C1.09.58 C1.09.59 +C2.09.31 C1.08.60 C1.09.58 C1.09.59 C1.09.60 C1.09.61 C1.09.62 +C2.10.00 C1.10.12 +C2.10.01 C1.10.15 +C2.10.02 C1.10.10 C1.10.14 C1.10.15 C1.10.18 +C2.10.03 C1.10.13 C1.10.16 +C2.10.04 C1.10.14 C1.10.18 +C2.10.05 C1.10.16 +C2.10.06 C1.09.17 C1.10.12 C1.10.17 C1.10.21 +C2.10.07 C1.10.11 C1.10.15 C1.10.16 C1.10.19 +C2.10.08 C1.10.15 C1.10.18 C1.10.19 C1.10.22 +C2.10.09 C1.10.17 C1.10.20 C1.10.21 C1.10.24 +C2.10.10 C1.10.20 C1.10.23 C1.10.24 C1.10.27 +C2.10.11 C1.09.25 C1.10.21 C1.10.24 C1.10.28 +C2.10.12 C1.10.23 C1.10.26 C1.10.27 C1.10.30 +C2.10.13 C1.10.26 C1.10.29 C1.10.30 C1.10.32 +C2.10.14 C1.10.24 C1.10.27 C1.10.28 C1.10.31 +C2.10.15 C1.10.27 C1.10.30 C1.10.31 C1.10.33 +C2.10.16 C1.09.32 C1.09.35 C1.10.34 C1.10.36 +C2.10.17 C1.10.30 C1.10.32 C1.10.33 C1.10.35 +C2.10.18 C1.10.34 C1.10.36 C1.10.37 C1.10.40 +C2.10.19 C1.10.37 C1.10.39 C1.10.40 C1.10.42 +C2.10.20 C1.09.40 C1.10.36 C1.10.40 C1.10.43 +C2.10.21 C1.10.39 C1.10.41 C1.10.42 C1.10.44 +C2.10.22 C1.10.40 C1.10.42 C1.10.43 C1.10.45 +C2.10.23 C1.10.42 C1.10.44 C1.10.45 C1.10.46 +C2.10.24 C1.09.44 C1.09.46 C1.09.48 C1.10.47 +C2.10.25 C1.09.48 C1.10.47 C1.10.49 C1.10.51 +C2.10.26 C1.10.49 C1.10.50 C1.10.51 C1.10.52 +C2.10.27 C1.09.51 C1.10.51 C1.10.52 C1.10.53 C1.10.54 C1.10.55 C1.10.57 +C2.10.28 C1.10.52 C1.10.54 C1.10.56 C1.10.57 C1.10.58 C1.10.60 C1.11.54 C1.11.55 C1.11.58 +C2.10.29 C1.09.56 C1.09.58 C1.09.60 C1.10.59 +C2.10.30 C1.09.60 C1.09.61 C1.10.59 C1.10.61 +C2.10.31 C1.10.61 C1.10.62 +C2.11.00 C1.11.12 C1.11.13 C1.11.14 +C2.11.01 C1.10.14 C1.10.18 C1.11.15 C1.11.20 +C2.11.02 C1.11.15 C1.11.16 C1.11.20 C1.11.21 +C2.11.03 C1.11.16 C1.11.17 C1.11.21 C1.11.22 +C2.11.04 C1.11.17 C1.11.18 C1.11.22 C1.11.23 +C2.11.05 C1.11.18 C1.11.19 C1.11.23 C1.11.24 +C2.11.06 C1.10.18 C1.10.22 C1.10.25 C1.11.20 +C2.11.07 C1.10.25 C1.11.20 C1.11.21 C1.11.25 +C2.11.08 C1.11.21 C1.11.22 C1.11.25 C1.11.26 +C2.11.09 C1.11.22 C1.11.23 C1.11.26 C1.11.27 +C2.11.10 C1.11.23 C1.11.24 C1.11.27 C1.11.28 +C2.11.11 C1.10.29 C1.10.32 C1.11.29 C1.11.33 +C2.11.12 C1.11.29 C1.11.30 C1.11.33 C1.11.34 +C2.11.13 C1.11.30 C1.11.31 C1.11.34 C1.11.35 +C2.11.14 C1.11.31 C1.11.32 C1.11.35 C1.11.36 +C2.11.15 C1.10.32 C1.10.35 C1.10.38 C1.11.33 +C2.11.16 C1.10.38 C1.11.33 C1.11.34 C1.11.37 +C2.11.17 C1.11.34 C1.11.35 C1.11.37 C1.11.38 +C2.11.18 C1.11.35 C1.11.36 C1.11.38 C1.11.39 +C2.11.19 C1.10.41 C1.10.44 C1.11.40 C1.11.43 +C2.11.20 C1.11.40 C1.11.41 C1.11.43 C1.11.44 +C2.11.21 C1.11.41 C1.11.42 C1.11.44 C1.11.45 +C2.11.22 C1.10.44 C1.10.46 C1.10.48 C1.11.43 +C2.11.23 C1.10.48 C1.11.43 C1.11.44 C1.11.46 +C2.11.24 C1.11.44 C1.11.45 C1.11.46 C1.11.47 +C2.11.25 C1.10.50 C1.10.52 C1.11.48 C1.11.50 C1.11.51 +C2.11.26 C1.11.48 C1.11.49 C1.11.51 C1.11.52 C1.11.53 +C2.11.27 C1.11.55 C1.11.56 C1.11.58 C1.11.59 +C2.11.28 C1.11.56 C1.11.57 C1.11.59 C1.11.60 +C2.11.29 C1.10.60 C1.11.58 C1.11.59 C1.11.61 +C2.11.30 C1.11.59 C1.11.60 C1.11.61 C1.11.62 +C2.12.00 C1.11.14 C1.12.12 C1.12.13 C1.12.14 +C2.12.01 C1.12.15 C1.12.16 C1.12.20 C1.12.21 C1.13.13 +C2.12.02 C1.12.16 C1.12.17 C1.12.21 C1.12.22 +C2.12.03 C1.12.17 C1.12.18 C1.12.22 C1.12.23 +C2.12.04 C1.12.18 C1.12.19 C1.12.23 C1.12.24 +C2.12.05 C1.11.19 C1.11.24 C1.12.19 C1.12.24 +C2.12.06 C1.12.20 C1.12.21 C1.12.25 C1.13.24 +C2.12.07 C1.12.21 C1.12.22 C1.12.25 C1.12.26 +C2.12.08 C1.12.22 C1.12.23 C1.12.26 C1.12.27 +C2.12.09 C1.12.23 C1.12.24 C1.12.27 C1.12.28 +C2.12.10 C1.11.24 C1.11.28 C1.12.24 C1.12.28 +C2.12.11 C1.12.29 C1.12.30 C1.12.33 C1.12.34 +C2.12.12 C1.12.30 C1.12.31 C1.12.34 C1.12.35 +C2.12.13 C1.12.31 C1.12.32 C1.12.35 C1.12.36 +C2.12.14 C1.11.32 C1.11.36 C1.12.32 C1.12.36 +C2.12.15 C1.12.33 C1.12.34 C1.12.37 C1.13.37 +C2.12.16 C1.12.34 C1.12.35 C1.12.37 C1.12.38 +C2.12.17 C1.12.35 C1.12.36 C1.12.38 C1.12.39 +C2.12.18 C1.11.36 C1.11.39 C1.12.36 C1.12.39 +C2.12.19 C1.12.40 C1.12.41 C1.12.43 C1.12.44 +C2.12.20 C1.12.41 C1.12.42 C1.12.44 C1.12.45 +C2.12.21 C1.11.42 C1.11.45 C1.12.42 C1.12.45 +C2.12.22 C1.12.43 C1.12.44 C1.12.46 C1.13.47 +C2.12.23 C1.12.44 C1.12.45 C1.12.46 C1.12.47 +C2.12.24 C1.11.45 C1.11.47 C1.12.45 C1.12.47 +C2.12.25 C1.12.48 C1.12.49 C1.12.50 C1.12.51 C1.12.52 +C2.12.26 C1.11.49 C1.11.53 C1.12.49 C1.12.52 C1.12.53 +C2.12.27 C1.12.56 C1.12.57 C1.12.59 C1.12.60 +C2.12.28 C1.11.57 C1.11.60 C1.12.57 C1.12.60 +C2.12.29 C1.12.59 C1.12.60 C1.12.61 C1.12.62 +C2.12.30 C1.11.60 C1.11.62 C1.12.60 C1.12.62 +C2.13.00 C1.13.14 +C2.13.01 C1.13.12 C1.14.17 +C2.13.02 C1.13.13 C1.13.17 +C2.13.03 C1.13.11 C1.13.15 +C2.13.04 C1.12.15 C1.12.20 C1.13.13 C1.13.17 +C2.13.05 C1.13.15 +C2.13.06 C1.13.16 C1.13.20 +C2.13.07 C1.13.14 C1.13.15 C1.13.18 +C2.13.08 C1.12.20 C1.13.17 C1.13.21 C1.13.24 +C2.13.09 C1.13.19 C1.13.23 +C2.13.10 C1.13.22 C1.13.26 +C2.13.11 C1.13.23 C1.13.27 +C2.13.12 C1.13.25 C1.13.28 C1.13.29 C1.13.31 +C2.13.13 C1.12.29 C1.12.33 C1.13.28 C1.13.31 +C2.13.14 C1.13.26 C1.13.30 +C2.13.15 C1.13.29 C1.13.31 C1.13.32 C1.13.34 +C2.13.16 C1.13.33 C1.13.35 +C2.13.17 C1.12.33 C1.13.31 C1.13.34 C1.13.37 +C2.13.18 C1.13.36 C1.13.38 C1.13.39 C1.13.41 +C2.13.19 C1.13.38 C1.13.40 C1.13.41 C1.13.43 +C2.13.20 C1.13.39 C1.13.41 C1.13.42 C1.13.44 +C2.13.21 C1.12.40 C1.12.43 C1.13.40 C1.13.43 +C2.13.22 C1.13.41 C1.13.43 C1.13.44 C1.13.45 +C2.13.23 C1.12.43 C1.13.43 C1.13.45 C1.13.47 +C2.13.24 C1.13.46 C1.13.48 C1.13.50 C1.14.48 +C2.13.25 C1.13.48 C1.13.49 C1.13.50 C1.13.51 +C2.13.26 C1.12.48 C1.12.50 C1.13.49 C1.13.51 +C2.13.27 C1.12.54 C1.13.51 C1.13.52 C1.13.53 C1.13.54 C1.13.55 C1.13.56 C1.13.57 +C2.13.28 C1.12.54 C1.12.55 C1.12.56 C1.12.58 C1.12.59 C1.12.61 C1.13.55 C1.13.57 C1.13.59 +C2.13.29 C1.13.58 C1.14.57 +C2.13.30 C1.13.58 C1.13.60 C1.13.61 C1.13.62 +C2.13.31 C1.13.60 C1.13.62 +C2.14.00 C1.14.17 +C2.14.01 C1.14.15 +C2.14.02 C1.14.14 C1.14.16 +C2.14.03 C1.14.17 +C2.14.04 C1.14.16 C1.14.19 +C2.14.05 C1.14.12 C1.14.15 C1.14.17 C1.14.20 +C2.14.06 C1.14.18 C1.14.22 +C2.14.07 C1.14.22 C1.14.24 +C2.14.08 C1.13.20 C1.14.25 +C2.14.09 C1.14.23 C1.14.27 +C2.14.10 C1.14.26 C1.15.29 +C2.14.11 C1.14.27 C1.14.29 +C2.14.12 C1.14.28 C1.14.30 +C2.14.13 C1.14.31 C1.14.33 +C2.14.14 C1.14.32 C1.14.35 +C2.14.15 C1.14.30 C1.14.34 +C2.14.16 C1.14.36 C1.14.38 +C2.14.17 C1.14.35 C1.14.37 +C2.14.18 C1.14.39 C1.14.41 +C2.14.19 C1.13.35 C1.14.40 +C2.14.20 C1.14.41 C1.15.42 +C2.14.21 C1.14.42 C1.14.43 +C2.14.22 C1.14.43 C1.14.45 +C2.14.23 C1.13.46 C1.14.44 C1.14.46 C1.14.48 +C2.14.24 C1.14.46 C1.14.47 C1.14.48 C1.14.49 +C2.14.25 C1.13.50 C1.14.48 C1.14.49 C1.14.51 +C2.14.26 C1.14.50 C1.14.52 C1.14.53 C1.14.54 C1.15.52 +C2.14.27 C1.13.50 C1.13.51 C1.13.52 C1.13.54 C1.14.51 +C2.14.28 C1.14.52 C1.14.53 C1.14.54 C1.14.55 C1.14.56 C1.14.57 C1.14.58 C1.14.59 C1.14.60 +C2.14.29 C1.14.59 C1.14.61 +C2.14.30 C1.14.60 C1.14.62 +C2.14.31 C1.13.61 C1.14.61 C1.14.62 +C2.15.00 C1.15.15 C1.15.16 +C2.15.01 C1.15.17 +C2.15.02 C1.15.16 C1.15.17 +C2.15.03 C1.14.13 C1.15.18 C1.15.19 +C2.15.04 C1.15.19 C1.15.20 +C2.15.05 C1.15.21 C1.15.22 +C2.15.06 C1.15.22 C1.15.23 +C2.15.07 C1.14.21 C1.15.24 +C2.15.08 C1.15.24 C1.15.25 +C2.15.09 C1.15.26 C1.15.27 +C2.15.10 C1.15.27 C1.15.28 +C2.15.11 C1.15.29 C1.15.30 +C2.15.12 C1.15.31 C1.15.32 +C2.15.13 C1.15.32 C1.15.33 +C2.15.14 C1.14.33 C1.15.34 +C2.15.15 C1.15.35 C1.15.36 +C2.15.16 C1.15.36 C1.15.37 +C2.15.17 C1.14.38 C1.15.38 +C2.15.18 C1.15.39 C1.15.40 +C2.15.19 C1.15.40 C1.15.41 +C2.15.20 C1.15.43 C1.15.44 +C2.15.21 C1.15.44 C1.15.45 +C2.15.22 C1.15.46 C1.15.47 +C2.15.23 C1.15.47 C1.15.48 +C2.15.24 C1.14.50 C1.15.49 C1.15.50 C1.15.52 +C2.15.25 C1.15.50 C1.15.51 C1.15.52 C1.15.53 +C2.15.26 C1.15.52 C1.15.53 C1.15.54 C1.15.55 C1.15.56 +C2.15.27 C1.15.54 C1.15.55 C1.15.56 C1.15.57 C1.15.58 C1.15.59 C1.15.60 C1.15.61 C1.15.62 +C2.15.28 C1.14.62 C1.15.60 C1.15.61 +C2.15.29 C1.15.61 C1.15.62 +C3.00.00 C2.00.06 +C3.00.01 C2.00.07 C2.00.08 C2.00.11 C2.01.10 +C3.00.02 C2.00.05 C2.00.09 C2.00.12 +C3.00.03 C2.00.10 C2.00.13 +C3.00.04 C2.00.11 C2.00.14 +C3.00.05 C2.00.12 C2.00.15 +C3.00.06 C2.00.13 C2.00.16 +C3.00.07 C2.00.14 C2.00.17 C2.01.20 +C3.00.08 C2.00.15 C2.00.18 C2.00.20 +C3.00.09 C2.00.16 C2.00.19 C2.00.21 +C3.00.10 C2.00.20 C2.00.22 +C3.00.11 C2.00.21 C2.00.23 +C3.00.12 C2.00.22 C2.00.24 C2.01.26 +C3.00.13 C2.00.23 C2.00.25 C2.00.26 +C3.00.14 C2.00.26 C2.00.27 +C3.00.15 C2.00.27 C2.00.28 C2.00.29 +C3.01.00 C2.00.07 C2.01.10 +C3.01.01 C2.01.05 C2.01.06 C2.01.08 C2.01.09 C2.01.11 +C3.01.02 C2.00.07 C2.01.04 C2.01.06 C2.01.07 C2.01.09 C2.01.10 C2.01.11 +C3.01.03 C2.01.05 C2.01.08 C2.01.09 C2.01.12 C2.01.14 C2.02.11 +C3.01.04 C2.01.10 C2.01.13 +C3.01.05 C2.01.09 C2.01.11 C2.01.12 C2.01.14 C2.01.15 C2.01.17 +C3.01.06 C2.01.13 C2.01.16 C2.01.18 +C3.01.07 C2.01.14 C2.01.17 C2.01.19 C2.02.16 +C3.01.08 C2.01.18 C2.01.21 +C3.01.09 C2.01.20 C2.01.22 +C3.01.10 C2.01.21 C2.01.23 C2.02.24 +C3.01.11 C2.01.22 C2.01.24 C2.01.25 +C3.01.12 C2.01.25 C2.01.27 +C3.01.13 C2.01.26 C2.01.28 +C3.01.14 C2.01.28 C2.01.29 C2.01.30 C2.01.31 +C3.01.15 C2.00.27 C2.00.28 C2.01.28 C2.01.30 C2.01.31 +C3.02.00 C2.01.05 C2.01.08 C2.02.06 C2.02.09 C2.02.10 C2.02.11 +C3.02.01 C2.02.07 C2.02.08 C2.02.10 C2.02.12 C2.02.13 C2.03.06 +C3.02.02 C2.02.07 C2.02.09 C2.02.10 C2.02.12 C2.02.13 +C3.02.03 C2.02.09 C2.02.10 C2.02.11 C2.02.14 +C3.02.04 C2.02.10 C2.02.12 C2.02.13 C2.02.14 C2.02.15 C2.02.17 +C3.02.05 C2.01.14 C2.02.11 C2.02.14 C2.02.16 +C3.02.06 C2.02.13 C2.02.17 C2.03.11 C2.03.15 +C3.02.07 C2.02.14 C2.02.15 C2.02.16 C2.02.17 C2.02.18 C2.02.19 +C3.02.08 C2.02.17 C2.02.19 C2.02.21 C2.03.15 +C3.02.09 C2.01.19 C2.02.16 C2.02.18 C2.02.19 C2.02.20 C2.02.22 +C3.02.10 C2.02.19 C2.02.21 C2.02.22 C2.02.23 +C3.02.11 C2.02.24 C2.02.25 +C3.02.12 C2.02.25 C2.02.26 C2.03.25 +C3.02.13 C2.01.27 C2.02.27 C2.02.28 +C3.02.14 C2.01.29 C2.01.31 C2.02.29 C2.02.30 +C3.02.15 C2.02.29 C2.02.30 C2.02.31 +C3.03.00 C2.03.04 C2.03.05 +C3.03.01 C2.03.05 +C3.03.02 C2.03.01 C2.03.02 C2.03.03 C2.03.06 C2.03.07 C2.03.08 +C3.03.03 C2.03.03 C2.03.04 C2.03.07 C2.03.08 C2.03.09 +C3.03.04 C2.03.04 C2.03.05 C2.03.09 C2.03.10 +C3.03.05 C2.02.13 C2.03.06 C2.03.07 C2.03.11 +C3.03.06 C2.03.07 C2.03.08 C2.03.09 C2.03.11 C2.03.12 C2.03.13 +C3.03.07 C2.03.09 C2.03.10 C2.03.13 C2.03.14 +C3.03.08 C2.03.11 C2.03.12 C2.03.13 C2.03.15 C2.03.16 C2.03.17 +C3.03.09 C2.03.13 C2.03.14 C2.03.17 C2.03.18 +C3.03.10 C2.02.21 C2.03.15 C2.03.16 C2.03.17 C2.03.19 C2.03.20 +C3.03.11 C2.03.17 C2.03.18 C2.03.20 C2.03.21 +C3.03.12 C2.02.21 C2.02.23 C2.03.19 C2.03.20 C2.03.22 C2.03.23 +C3.03.13 C2.03.20 C2.03.21 C2.03.23 C2.03.24 +C3.03.14 C2.03.25 C2.03.26 +C3.03.15 C2.02.28 C2.03.27 C2.03.28 C2.03.29 C2.03.30 +C3.04.00 C2.04.04 C2.04.05 +C3.04.01 C2.03.05 C2.04.05 +C3.04.02 C2.04.02 C2.04.03 C2.04.06 C2.04.07 C2.04.08 +C3.04.03 C2.04.03 C2.04.04 C2.04.08 C2.04.09 +C3.04.04 C2.03.05 C2.03.10 C2.04.04 C2.04.05 C2.04.09 C2.04.10 +C3.04.05 C2.04.06 C2.04.07 C2.04.08 C2.04.11 C2.04.12 C2.05.13 +C3.04.06 C2.04.08 C2.04.09 C2.04.12 C2.04.13 +C3.04.07 C2.03.10 C2.03.14 C2.04.09 C2.04.10 C2.04.13 C2.04.14 +C3.04.08 C2.04.12 C2.04.13 C2.04.16 C2.04.17 +C3.04.09 C2.03.14 C2.03.18 C2.04.13 C2.04.14 C2.04.17 C2.04.18 +C3.04.10 C2.04.16 C2.04.17 C2.04.19 C2.04.20 +C3.04.11 C2.03.18 C2.03.21 C2.04.17 C2.04.18 C2.04.20 C2.04.21 +C3.04.12 C2.04.19 C2.04.20 C2.04.22 C2.04.23 +C3.04.13 C2.03.21 C2.03.24 C2.04.20 C2.04.21 C2.04.23 C2.04.24 +C3.04.14 C2.03.26 C2.04.25 C2.04.26 +C3.04.15 C2.03.28 C2.03.30 C2.04.27 C2.04.28 C2.04.29 C2.04.30 C2.05.28 +C3.05.00 C2.05.06 C2.05.09 C2.05.11 C2.06.08 +C3.05.01 C2.05.07 C2.05.08 C2.05.09 C2.05.10 C2.05.12 +C3.05.02 C2.04.06 C2.05.08 C2.05.12 C2.05.13 +C3.05.03 C2.05.09 C2.05.10 C2.05.11 C2.05.12 C2.05.14 C2.05.15 +C3.05.04 C2.05.12 C2.05.13 C2.05.15 C2.05.17 +C3.05.05 C2.05.11 C2.05.14 C2.05.15 C2.05.16 C2.05.18 C2.06.14 +C3.05.06 C2.04.11 C2.04.12 C2.04.15 C2.04.16 C2.05.13 C2.05.17 +C3.05.07 C2.05.15 C2.05.17 C2.05.18 C2.05.19 +C3.05.08 C2.04.15 C2.04.16 C2.04.19 C2.05.17 C2.05.19 C2.05.21 +C3.05.09 C2.05.18 C2.05.19 C2.05.20 C2.05.22 +C3.05.10 C2.04.19 C2.04.22 C2.05.19 C2.05.21 C2.05.22 C2.05.23 +C3.05.11 C2.05.24 C2.05.25 C2.05.26 +C3.05.12 C2.04.25 C2.05.26 +C3.05.13 C2.05.27 C2.05.28 +C3.05.14 C2.05.30 C2.05.31 +C3.06.00 C2.06.05 C2.06.06 C2.06.07 C2.06.08 C2.06.09 C2.06.11 C2.06.12 C2.06.15 +C3.06.01 C2.06.07 C2.06.10 C2.06.11 C2.06.15 +C3.06.02 C2.05.11 C2.06.08 C2.06.12 C2.06.14 +C3.06.03 C2.06.10 C2.06.13 C2.06.16 +C3.06.04 C2.06.12 C2.06.14 C2.06.15 C2.06.17 +C3.06.05 C2.06.16 C2.06.18 +C3.06.06 C2.05.16 C2.05.18 C2.05.20 C2.06.14 C2.06.17 C2.06.19 +C3.06.07 C2.06.18 C2.06.21 C2.06.23 +C3.06.08 C2.06.20 C2.06.22 C2.06.24 +C3.06.09 C2.05.24 C2.06.23 +C3.06.10 C2.06.24 C2.06.25 +C3.06.11 C2.05.27 C2.06.25 C2.06.27 +C3.06.12 C2.05.29 C2.06.26 C2.06.28 C2.06.29 C2.06.30 +C3.06.13 C2.05.29 C2.05.30 C2.06.29 C2.06.31 +C3.06.14 C2.06.29 C2.06.30 C2.06.31 C2.07.28 +C3.06.15 C2.05.30 C2.06.29 C2.06.30 C2.06.31 +C3.07.00 C2.07.06 C2.07.10 +C3.07.01 C2.06.10 C2.07.07 C2.07.08 C2.07.11 +C3.07.02 C2.07.08 C2.07.09 C2.07.12 +C3.07.03 C2.07.10 C2.07.13 +C3.07.04 C2.07.11 C2.07.14 C2.07.17 +C3.07.05 C2.07.12 C2.07.15 C2.07.18 +C3.07.06 C2.07.13 C2.07.16 C2.07.19 +C3.07.07 C2.06.20 C2.07.17 +C3.07.08 C2.07.18 C2.07.20 +C3.07.09 C2.07.19 C2.07.21 +C3.07.10 C2.07.20 C2.07.22 C2.07.24 +C3.07.11 C2.07.21 C2.07.23 C2.07.25 +C3.07.12 C2.06.26 C2.07.24 +C3.07.13 C2.07.25 C2.07.26 +C3.07.14 C2.07.26 C2.07.27 C2.07.28 C2.07.29 +C3.07.15 C2.07.28 C2.07.29 +C3.08.00 C2.08.06 C2.08.10 +C3.08.01 C2.08.07 C2.08.08 C2.08.11 C2.09.10 +C3.08.02 C2.08.09 C2.08.12 +C3.08.03 C2.08.10 C2.08.13 +C3.08.04 C2.08.11 C2.08.14 C2.08.17 +C3.08.05 C2.08.12 C2.08.15 C2.08.18 +C3.08.06 C2.08.13 C2.08.16 C2.08.19 +C3.08.07 C2.08.17 C2.09.20 +C3.08.08 C2.08.18 C2.08.20 +C3.08.09 C2.08.19 C2.08.21 +C3.08.10 C2.08.20 C2.08.22 C2.08.24 +C3.08.11 C2.08.21 C2.08.23 C2.08.25 +C3.08.12 C2.08.24 C2.09.26 +C3.08.13 C2.08.25 C2.08.26 +C3.08.14 C2.08.26 C2.08.27 C2.08.28 C2.08.29 +C3.08.15 C2.08.28 C2.08.29 +C3.09.00 C2.08.07 C2.09.10 +C3.09.01 C2.09.05 C2.09.08 C2.09.09 C2.09.11 C2.09.12 C2.09.15 +C3.09.02 C2.09.06 C2.09.07 C2.09.09 C2.09.10 C2.09.11 C2.09.15 +C3.09.03 C2.09.08 C2.09.12 C2.09.14 C2.10.11 +C3.09.04 C2.09.10 C2.09.13 C2.09.16 +C3.09.05 C2.09.12 C2.09.14 C2.09.15 C2.09.17 +C3.09.06 C2.09.16 C2.09.18 +C3.09.07 C2.09.14 C2.09.17 C2.09.19 C2.10.16 C2.10.18 C2.10.20 +C3.09.08 C2.09.18 C2.09.21 C2.09.23 +C3.09.09 C2.09.20 C2.09.22 C2.09.24 +C3.09.10 C2.09.23 C2.10.24 +C3.09.11 C2.09.24 C2.09.25 +C3.09.12 C2.09.25 C2.09.27 C2.10.27 +C3.09.13 C2.09.26 C2.09.28 C2.09.29 C2.09.30 +C3.09.14 C2.09.29 C2.09.30 C2.09.31 C2.10.29 +C3.09.15 C2.08.28 C2.09.30 C2.09.31 +C3.10.00 C2.09.08 C2.10.06 C2.10.09 C2.10.10 C2.10.11 +C3.10.01 C2.10.07 C2.10.08 C2.10.12 C2.10.13 C2.11.06 +C3.10.02 C2.10.07 C2.10.08 C2.10.10 C2.10.12 C2.10.13 +C3.10.03 C2.10.09 C2.10.10 C2.10.11 C2.10.12 C2.10.14 C2.10.15 +C3.10.04 C2.10.12 C2.10.13 C2.10.15 C2.10.17 +C3.10.05 C2.09.14 C2.10.11 C2.10.14 C2.10.15 C2.10.16 C2.10.18 +C3.10.06 C2.10.13 C2.10.17 C2.11.11 C2.11.12 C2.11.15 C2.11.16 +C3.10.07 C2.10.15 C2.10.17 C2.10.18 C2.10.19 +C3.10.08 C2.10.17 C2.10.19 C2.10.21 C2.11.15 C2.11.16 C2.11.19 +C3.10.09 C2.10.18 C2.10.19 C2.10.20 C2.10.22 +C3.10.10 C2.10.19 C2.10.21 C2.10.22 C2.10.23 C2.11.19 C2.11.22 +C3.10.11 C2.10.24 C2.10.25 C2.10.26 +C3.10.12 C2.10.26 C2.11.25 +C3.10.13 C2.10.27 C2.10.28 +C3.10.14 C2.09.29 C2.09.31 C2.10.29 C2.10.30 +C3.10.15 C2.10.29 C2.10.30 C2.10.31 +C3.11.00 C2.11.04 C2.11.05 +C3.11.01 C2.11.05 C2.12.05 +C3.11.02 C2.11.02 C2.11.03 C2.11.06 C2.11.07 C2.11.08 +C3.11.03 C2.11.03 C2.11.04 C2.11.08 C2.11.09 +C3.11.04 C2.11.04 C2.11.05 C2.11.09 C2.11.10 C2.12.05 C2.12.10 +C3.11.05 C2.10.13 C2.11.06 C2.11.07 C2.11.08 C2.11.11 C2.11.12 +C3.11.06 C2.11.08 C2.11.09 C2.11.12 C2.11.13 +C3.11.07 C2.11.09 C2.11.10 C2.11.13 C2.11.14 C2.12.10 C2.12.14 +C3.11.08 C2.11.12 C2.11.13 C2.11.16 C2.11.17 +C3.11.09 C2.11.13 C2.11.14 C2.11.17 C2.11.18 C2.12.14 C2.12.18 +C3.11.10 C2.11.16 C2.11.17 C2.11.19 C2.11.20 +C3.11.11 C2.11.17 C2.11.18 C2.11.20 C2.11.21 C2.12.18 C2.12.21 +C3.11.12 C2.11.19 C2.11.20 C2.11.22 C2.11.23 +C3.11.13 C2.11.20 C2.11.21 C2.11.23 C2.11.24 C2.12.21 C2.12.24 +C3.11.14 C2.11.25 C2.11.26 C2.12.26 +C3.11.15 C2.10.28 C2.11.27 C2.11.28 C2.11.29 C2.11.30 C2.12.28 C2.12.30 +C3.12.00 C2.12.04 C2.12.05 +C3.12.01 C2.12.05 +C3.12.02 C2.12.02 C2.12.03 C2.12.06 C2.12.07 C2.12.08 +C3.12.03 C2.12.03 C2.12.04 C2.12.07 C2.12.08 C2.12.09 +C3.12.04 C2.12.04 C2.12.05 C2.12.09 C2.12.10 +C3.12.05 C2.12.06 C2.12.07 C2.12.11 C2.13.13 +C3.12.06 C2.12.07 C2.12.08 C2.12.09 C2.12.11 C2.12.12 C2.12.13 +C3.12.07 C2.12.09 C2.12.10 C2.12.13 C2.12.14 +C3.12.08 C2.12.11 C2.12.12 C2.12.13 C2.12.15 C2.12.16 C2.12.17 +C3.12.09 C2.12.13 C2.12.14 C2.12.17 C2.12.18 +C3.12.10 C2.12.15 C2.12.16 C2.12.17 C2.12.19 C2.12.20 C2.13.21 +C3.12.11 C2.12.17 C2.12.18 C2.12.20 C2.12.21 +C3.12.12 C2.12.19 C2.12.20 C2.12.22 C2.12.23 C2.13.21 C2.13.23 +C3.12.13 C2.12.20 C2.12.21 C2.12.23 C2.12.24 +C3.12.14 C2.12.25 C2.12.26 +C3.12.15 C2.12.27 C2.12.28 C2.12.29 C2.12.30 C2.13.28 +C3.13.00 C2.13.06 C2.13.09 C2.13.11 C2.14.05 C2.14.08 +C3.13.01 C2.13.07 C2.13.08 C2.13.09 C2.13.10 C2.13.12 +C3.13.02 C2.12.06 C2.13.08 C2.13.10 C2.13.12 C2.13.13 +C3.13.03 C2.13.09 C2.13.10 C2.13.11 C2.13.14 +C3.13.04 C2.13.10 C2.13.12 C2.13.13 C2.13.14 C2.13.15 C2.13.17 +C3.13.05 C2.13.11 C2.13.14 C2.13.16 C2.14.14 +C3.13.06 C2.12.11 C2.12.15 C2.13.13 C2.13.17 +C3.13.07 C2.13.14 C2.13.15 C2.13.16 C2.13.17 C2.13.18 C2.13.19 +C3.13.08 C2.12.15 C2.13.17 C2.13.19 C2.13.21 +C3.13.09 C2.13.16 C2.13.18 C2.13.19 C2.13.20 C2.13.22 C2.14.19 +C3.13.10 C2.13.19 C2.13.21 C2.13.22 C2.13.23 +C3.13.11 C2.13.24 C2.13.25 +C3.13.12 C2.12.25 C2.13.25 C2.13.26 +C3.13.13 C2.13.27 C2.13.28 C2.14.27 +C3.13.14 C2.13.29 C2.13.30 C2.13.31 +C3.14.00 C2.14.05 C2.14.06 C2.14.07 C2.14.08 C2.14.09 C2.14.11 +C3.14.01 C2.14.04 C2.14.07 C2.14.10 C2.14.11 C2.15.07 +C3.14.02 C2.13.11 C2.14.05 C2.14.08 C2.14.09 C2.14.12 C2.14.14 +C3.14.03 C2.14.10 C2.14.13 +C3.14.04 C2.14.09 C2.14.11 C2.14.12 C2.14.14 C2.14.15 C2.14.17 +C3.14.05 C2.14.13 C2.14.16 C2.14.18 +C3.14.06 C2.13.16 C2.14.14 C2.14.17 C2.14.19 +C3.14.07 C2.14.18 C2.14.21 +C3.14.08 C2.14.20 C2.14.22 +C3.14.09 C2.13.24 C2.14.21 C2.14.23 +C3.14.10 C2.14.22 C2.14.24 C2.14.25 +C3.14.11 C2.14.25 C2.14.27 +C3.14.12 C2.14.26 C2.14.28 +C3.14.13 C2.13.29 C2.14.28 C2.14.29 +C3.14.14 C2.14.28 C2.14.29 C2.14.30 C2.14.31 C2.15.27 C2.15.28 +C3.14.15 C2.13.30 C2.14.29 C2.14.30 C2.14.31 +C3.15.00 C2.15.06 +C3.15.01 C2.14.10 C2.15.07 C2.15.08 C2.15.11 +C3.15.02 C2.15.05 C2.15.08 C2.15.09 C2.15.12 +C3.15.03 C2.15.10 C2.15.13 +C3.15.04 C2.15.11 C2.15.14 +C3.15.05 C2.15.12 C2.15.15 +C3.15.06 C2.15.13 C2.15.16 +C3.15.07 C2.14.20 C2.15.14 C2.15.17 +C3.15.08 C2.15.15 C2.15.18 C2.15.20 +C3.15.09 C2.15.16 C2.15.19 C2.15.21 +C3.15.10 C2.15.20 C2.15.22 +C3.15.11 C2.15.21 C2.15.23 +C3.15.12 C2.14.26 C2.15.22 C2.15.24 +C3.15.13 C2.15.23 C2.15.25 C2.15.26 +C3.15.14 C2.15.26 C2.15.27 +C3.15.15 C2.15.27 C2.15.28 C2.15.29 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev.txt new file mode 100755 index 0000000000000000000000000000000000000000..3cccbd4addb4d766d711b7a0dce5dce2f8128c0e --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev.txt @@ -0,0 +1,1519 @@ +# 3D FCal Neighbors Prev in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Mar 10 11:15:50 2004 +# +# 3d neighbors prev in sampling are all cells touching the same +# eta phi area in the prev sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without prev sampling neighbors are not listed. +# +A2.00.00 A1.00.16 A1.00.15 +A2.00.01 A1.00.17 A1.00.16 +A2.00.02 A1.00.17 +A2.00.03 A1.00.19 A1.00.18 A1.01.13 +A2.00.04 A1.00.20 A1.00.19 +A2.00.05 A1.00.22 A1.00.21 +A2.00.06 A1.00.23 A1.00.22 +A2.00.07 A1.00.24 A1.01.21 +A2.00.08 A1.00.25 A1.00.24 +A2.00.09 A1.00.27 A1.00.26 +A2.00.10 A1.00.28 A1.00.27 +A2.00.11 A1.00.30 A1.00.29 +A2.00.12 A1.00.32 A1.00.31 +A2.00.13 A1.00.33 A1.00.32 +A2.00.14 A1.00.34 A1.01.33 +A2.00.15 A1.00.36 A1.00.35 +A2.00.16 A1.00.37 A1.00.36 +A2.00.17 A1.00.38 A1.01.38 +A2.00.18 A1.00.40 A1.00.39 +A2.00.19 A1.00.41 A1.00.40 +A2.00.20 A1.00.44 A1.00.43 +A2.00.21 A1.00.45 A1.00.44 +A2.00.22 A1.00.47 A1.00.46 +A2.00.23 A1.00.48 A1.00.47 +A2.00.24 A1.00.50 A1.00.49 +A2.00.25 A1.00.51 A1.00.50 +A2.00.26 A1.00.53 A1.00.52 +A2.00.27 A1.00.59 A1.00.56 A1.00.58 A1.00.55 A1.00.57 A1.00.54 +A2.00.28 A1.00.61 A1.00.60 +A2.00.29 A1.00.62 A1.00.61 +A2.01.00 A1.01.17 A1.02.11 +A2.01.01 A1.01.15 A1.01.12 +A2.01.02 A1.01.16 +A2.01.03 A1.01.15 +A2.01.04 A1.01.19 A1.01.16 +A2.01.05 A1.01.20 A1.01.17 +A2.01.06 A1.01.22 A1.01.18 A1.01.14 +A2.01.07 A1.01.24 A1.01.22 +A2.01.08 A1.01.25 A1.02.20 +A2.01.09 A1.01.27 A1.01.23 +A2.01.10 A1.00.29 A1.01.26 +A2.01.11 A1.01.29 A1.01.27 +A2.01.12 A1.01.30 A1.01.28 +A2.01.13 A1.01.33 A1.01.31 +A2.01.14 A1.01.35 A1.01.32 +A2.01.15 A1.01.34 A1.01.30 +A2.01.16 A1.01.38 A1.01.36 +A2.01.17 A1.01.37 A1.01.35 +A2.01.18 A1.01.41 A1.01.39 +A2.01.19 A1.01.40 A1.02.35 +A2.01.20 A1.00.42 A1.01.41 +A2.01.21 A1.01.43 A1.01.42 +A2.01.22 A1.01.45 A1.01.43 +A2.01.23 A1.01.46 A1.01.44 +A2.01.24 A1.01.47 A1.01.46 +A2.01.25 A1.01.49 A1.01.48 +A2.01.26 A1.00.52 A1.01.50 +A2.01.27 A1.01.51 A1.02.50 +A2.01.28 A1.01.58 A1.01.54 A1.01.56 A1.01.53 A1.01.55 A1.01.52 +A2.01.29 A1.01.59 A1.01.57 +A2.01.30 A1.01.60 A1.01.59 +A2.01.31 A1.01.62 A1.01.61 +A2.02.00 A1.02.16 A1.02.11 +A2.02.01 A1.02.14 +A2.02.02 A1.02.17 A1.02.13 +A2.02.03 A1.02.15 A1.02.12 +A2.02.04 A1.02.17 A1.02.13 +A2.02.05 A1.02.15 +A2.02.06 A1.02.20 A1.01.17 A1.02.16 A1.02.11 +A2.02.07 A1.02.18 A1.02.15 A1.02.14 +A2.02.08 A1.02.21 A1.02.17 +A2.02.09 A1.02.23 A1.02.19 +A2.02.10 A1.02.26 A1.02.22 +A2.02.11 A1.02.27 A1.02.23 +A2.02.12 A1.02.29 A1.02.25 +A2.02.13 A1.02.31 A1.02.28 +A2.02.14 A1.02.30 A1.02.26 +A2.02.15 A1.02.32 A1.02.29 +A2.02.16 A1.02.35 A1.02.33 +A2.02.17 A1.02.34 A1.02.31 +A2.02.18 A1.02.39 A1.02.36 +A2.02.19 A1.02.41 A1.02.38 +A2.02.20 A1.02.42 A1.02.39 +A2.02.21 A1.02.43 A1.02.40 +A2.02.22 A1.02.44 A1.02.41 +A2.02.23 A1.02.45 A1.02.43 +A2.02.24 A1.01.48 A1.02.46 +A2.02.25 A1.02.50 A1.02.48 +A2.02.26 A1.02.51 A1.02.49 +A2.02.27 A1.02.56 A1.02.54 A1.02.53 A1.02.52 A1.02.51 +A2.02.28 A1.02.59 A1.02.57 A1.03.58 A1.02.55 A1.03.55 A1.03.54 +A2.02.29 A1.01.61 A1.02.58 +A2.02.30 A1.02.61 A1.02.60 +A2.02.31 A1.02.61 A1.02.62 A1.02.60 +A2.03.00 A1.03.14 A1.03.13 A1.03.12 +A2.03.01 A1.03.20 A1.03.15 A1.02.13 +A2.03.02 A1.03.21 A1.03.16 +A2.03.03 A1.03.22 A1.03.17 +A2.03.04 A1.03.23 A1.03.18 +A2.03.05 A1.03.24 A1.03.19 +A2.03.06 A1.02.24 A1.03.20 +A2.03.07 A1.03.25 A1.03.21 +A2.03.08 A1.03.26 A1.03.22 +A2.03.09 A1.03.27 A1.03.23 +A2.03.10 A1.03.28 A1.03.24 +A2.03.11 A1.03.33 A1.03.29 +A2.03.12 A1.03.34 A1.03.30 +A2.03.13 A1.03.35 A1.03.31 +A2.03.14 A1.03.36 A1.03.32 +A2.03.15 A1.02.37 A1.03.33 +A2.03.16 A1.03.37 A1.03.34 +A2.03.17 A1.03.38 A1.03.35 +A2.03.18 A1.03.39 A1.03.36 +A2.03.19 A1.03.43 A1.03.40 +A2.03.20 A1.03.44 A1.03.41 +A2.03.21 A1.03.45 A1.03.42 +A2.03.22 A1.02.47 A1.03.43 +A2.03.23 A1.03.46 A1.03.44 +A2.03.24 A1.03.47 A1.03.45 +A2.03.25 A1.03.51 A1.03.50 A1.03.48 +A2.03.26 A1.03.53 A1.03.52 A1.03.49 +A2.03.27 A1.03.59 A1.03.56 +A2.03.28 A1.03.60 A1.03.57 +A2.03.29 A1.03.61 A1.03.59 +A2.03.30 A1.03.62 A1.03.60 +A2.04.00 A1.04.12 A1.04.13 A1.04.14 +A2.04.01 A1.04.20 A1.05.14 A1.04.15 +A2.04.02 A1.04.21 A1.04.16 +A2.04.03 A1.04.22 A1.04.17 +A2.04.04 A1.04.23 A1.04.18 +A2.04.05 A1.04.24 A1.04.19 +A2.04.06 A1.05.25 A1.04.20 +A2.04.07 A1.04.25 A1.04.21 +A2.04.08 A1.04.26 A1.04.22 +A2.04.09 A1.04.27 A1.04.23 +A2.04.10 A1.04.28 A1.04.24 +A2.04.11 A1.04.33 A1.04.29 +A2.04.12 A1.04.34 A1.04.30 +A2.04.13 A1.04.35 A1.04.31 +A2.04.14 A1.04.36 A1.04.32 +A2.04.15 A1.05.38 A1.04.33 +A2.04.16 A1.04.37 A1.04.34 +A2.04.17 A1.04.38 A1.04.35 +A2.04.18 A1.04.39 A1.04.36 +A2.04.19 A1.04.43 A1.04.40 +A2.04.20 A1.04.44 A1.04.41 +A2.04.21 A1.04.45 A1.04.42 +A2.04.22 A1.05.48 A1.04.43 +A2.04.23 A1.04.46 A1.04.44 +A2.04.24 A1.04.47 A1.04.45 +A2.04.25 A1.04.50 A1.04.51 A1.04.48 +A2.04.26 A1.04.52 A1.04.53 A1.04.49 +A2.04.27 A1.04.59 A1.04.56 +A2.04.28 A1.04.60 A1.04.57 +A2.04.29 A1.04.61 A1.04.59 +A2.04.30 A1.04.62 A1.04.60 +A2.05.00 A1.05.15 +A2.05.01 A1.06.17 A1.05.13 +A2.05.02 A1.05.18 A1.05.14 +A2.05.03 A1.05.12 A1.05.16 +A2.05.04 A1.05.18 A1.05.14 +A2.05.05 A1.05.16 +A2.05.06 A1.05.21 A1.05.17 +A2.05.07 A1.05.16 A1.05.19 A1.05.15 +A2.05.08 A1.05.22 A1.05.18 +A2.05.09 A1.05.24 A1.05.20 +A2.05.10 A1.05.27 A1.05.23 +A2.05.11 A1.05.28 A1.05.24 +A2.05.12 A1.05.30 A1.05.26 +A2.05.13 A1.05.32 A1.05.29 +A2.05.14 A1.05.31 A1.05.27 +A2.05.15 A1.05.33 A1.05.30 +A2.05.16 A1.05.37 A1.05.34 +A2.05.17 A1.05.35 A1.05.32 +A2.05.18 A1.05.40 A1.05.36 +A2.05.19 A1.05.42 A1.05.39 +A2.05.20 A1.05.43 A1.05.40 +A2.05.21 A1.05.44 A1.05.41 +A2.05.22 A1.05.45 A1.05.42 +A2.05.23 A1.05.46 A1.05.44 +A2.05.24 A1.06.48 A1.05.47 +A2.05.25 A1.05.51 A1.05.49 +A2.05.26 A1.05.52 A1.05.50 +A2.05.27 A1.05.55 A1.05.57 A1.05.53 A1.05.54 A1.05.52 +A2.05.28 A1.05.58 A1.05.60 A1.05.56 A1.04.58 A1.04.54 A1.04.55 +A2.05.29 A1.06.56 A1.05.59 +A2.05.30 A1.06.61 A1.05.59 A1.05.61 +A2.05.31 A1.05.61 A1.05.62 +A2.06.00 A1.06.17 +A2.06.01 A1.06.15 +A2.06.02 A1.06.16 A1.06.14 +A2.06.03 A1.06.17 +A2.06.04 A1.06.19 A1.06.16 +A2.06.05 A1.06.15 A1.06.20 A1.06.12 A1.06.17 +A2.06.06 A1.06.22 A1.06.18 +A2.06.07 A1.06.24 A1.06.22 +A2.06.08 A1.06.25 A1.05.21 +A2.06.09 A1.06.27 A1.06.23 +A2.06.10 A1.07.28 A1.06.26 +A2.06.11 A1.06.29 A1.06.27 +A2.06.12 A1.06.30 A1.06.28 +A2.06.13 A1.06.33 A1.06.31 +A2.06.14 A1.06.35 A1.06.32 +A2.06.15 A1.06.34 A1.06.30 +A2.06.16 A1.06.38 A1.06.36 +A2.06.17 A1.06.37 A1.06.35 +A2.06.18 A1.06.41 A1.06.39 +A2.06.19 A1.06.40 A1.05.37 +A2.06.20 A1.07.41 A1.06.41 +A2.06.21 A1.06.43 A1.06.42 +A2.06.22 A1.06.45 A1.06.43 +A2.06.23 A1.06.46 A1.06.44 +A2.06.24 A1.06.47 A1.06.46 +A2.06.25 A1.06.49 A1.06.48 +A2.06.26 A1.07.51 A1.06.50 +A2.06.27 A1.06.51 A1.05.51 +A2.06.28 A1.07.53 A1.06.57 A1.06.53 A1.06.55 A1.06.52 A1.06.54 +A2.06.29 A1.06.58 A1.06.60 +A2.06.30 A1.06.62 A1.06.59 A1.06.61 +A2.06.31 A1.06.62 A1.06.61 A1.06.60 +A2.07.00 A1.07.15 A1.07.14 +A2.07.01 A1.07.16 +A2.07.02 A1.07.16 A1.07.15 +A2.07.03 A1.07.18 A1.07.17 A1.06.13 +A2.07.04 A1.07.19 A1.07.18 +A2.07.05 A1.07.21 A1.07.20 +A2.07.06 A1.07.22 A1.07.21 +A2.07.07 A1.07.23 A1.06.21 +A2.07.08 A1.07.24 A1.07.23 +A2.07.09 A1.07.26 A1.07.25 +A2.07.10 A1.07.27 A1.07.26 +A2.07.11 A1.07.29 A1.07.28 +A2.07.12 A1.07.31 A1.07.30 +A2.07.13 A1.07.32 A1.07.31 +A2.07.14 A1.07.33 A1.06.33 +A2.07.15 A1.07.35 A1.07.34 +A2.07.16 A1.07.36 A1.07.35 +A2.07.17 A1.07.37 A1.06.38 +A2.07.18 A1.07.39 A1.07.38 +A2.07.19 A1.07.40 A1.07.39 +A2.07.20 A1.07.43 A1.07.42 +A2.07.21 A1.07.44 A1.07.43 +A2.07.22 A1.07.46 A1.07.45 +A2.07.23 A1.07.47 A1.07.46 +A2.07.24 A1.07.49 A1.07.48 +A2.07.25 A1.07.50 A1.07.49 +A2.07.26 A1.07.52 A1.07.51 +A2.07.27 A1.07.56 A1.07.59 A1.07.55 A1.07.58 A1.07.54 A1.07.57 +A2.07.28 A1.07.61 A1.07.60 +A2.07.29 A1.07.62 A1.07.61 +A2.08.00 A1.08.17 +A2.08.01 A1.08.16 A1.08.17 +A2.08.02 A1.08.15 A1.08.16 +A2.08.03 A1.09.13 A1.08.18 A1.08.19 +A2.08.04 A1.08.19 A1.08.20 +A2.08.05 A1.08.21 A1.08.22 +A2.08.06 A1.08.22 A1.08.23 +A2.08.07 A1.09.21 A1.08.24 +A2.08.08 A1.08.24 A1.08.25 +A2.08.09 A1.08.26 A1.08.27 +A2.08.10 A1.08.27 A1.08.28 +A2.08.11 A1.08.29 A1.08.30 +A2.08.12 A1.08.31 A1.08.32 +A2.08.13 A1.08.32 A1.08.33 +A2.08.14 A1.09.33 A1.08.34 +A2.08.15 A1.08.35 A1.08.36 +A2.08.16 A1.08.36 A1.08.37 +A2.08.17 A1.09.38 A1.08.38 +A2.08.18 A1.08.39 A1.08.40 +A2.08.19 A1.08.40 A1.08.41 +A2.08.20 A1.08.43 A1.08.44 +A2.08.21 A1.08.44 A1.08.45 +A2.08.22 A1.08.46 A1.08.47 +A2.08.23 A1.08.47 A1.08.48 +A2.08.24 A1.08.49 A1.08.50 +A2.08.25 A1.08.50 A1.08.51 +A2.08.26 A1.08.52 A1.08.53 +A2.08.27 A1.08.54 A1.08.57 A1.08.55 A1.08.58 A1.08.56 A1.08.59 +A2.08.28 A1.08.60 A1.08.61 +A2.08.29 A1.08.61 A1.08.62 +A2.09.00 A1.10.12 A1.09.17 +A2.09.01 A1.09.12 A1.09.15 +A2.09.02 A1.09.16 +A2.09.03 A1.09.15 +A2.09.04 A1.09.16 A1.09.19 +A2.09.05 A1.09.17 A1.09.20 +A2.09.06 A1.09.14 A1.09.18 A1.09.22 +A2.09.07 A1.09.22 A1.09.24 +A2.09.08 A1.10.20 A1.09.25 +A2.09.09 A1.09.23 A1.09.27 +A2.09.10 A1.09.26 A1.08.29 +A2.09.11 A1.09.27 A1.09.29 +A2.09.12 A1.09.28 A1.09.30 +A2.09.13 A1.09.31 A1.09.33 +A2.09.14 A1.09.32 A1.09.35 +A2.09.15 A1.09.30 A1.09.34 +A2.09.16 A1.09.36 A1.09.38 +A2.09.17 A1.09.35 A1.09.37 +A2.09.18 A1.09.39 A1.09.41 +A2.09.19 A1.10.35 A1.09.40 +A2.09.20 A1.09.41 A1.08.42 +A2.09.21 A1.09.42 A1.09.43 +A2.09.22 A1.09.43 A1.09.45 +A2.09.23 A1.09.44 A1.09.46 +A2.09.24 A1.09.46 A1.09.47 +A2.09.25 A1.09.48 A1.09.49 +A2.09.26 A1.09.50 A1.08.52 +A2.09.27 A1.10.50 A1.09.51 +A2.09.28 A1.09.52 A1.09.55 A1.09.53 A1.09.56 A1.09.54 A1.09.58 +A2.09.29 A1.09.57 A1.09.59 +A2.09.30 A1.09.59 A1.09.60 +A2.09.31 A1.09.61 A1.09.62 +A2.10.00 A1.10.12 A1.10.16 +A2.10.01 A1.10.14 +A2.10.02 A1.10.13 A1.10.17 +A2.10.03 A1.10.11 A1.10.15 +A2.10.04 A1.10.13 A1.10.17 +A2.10.05 A1.10.15 +A2.10.06 A1.10.12 A1.10.16 A1.09.17 A1.10.20 +A2.10.07 A1.10.14 A1.10.15 A1.10.18 +A2.10.08 A1.10.17 A1.10.21 +A2.10.09 A1.10.19 A1.10.23 +A2.10.10 A1.10.22 A1.10.26 +A2.10.11 A1.10.23 A1.10.27 +A2.10.12 A1.10.25 A1.10.29 +A2.10.13 A1.10.28 A1.10.31 +A2.10.14 A1.10.26 A1.10.30 +A2.10.15 A1.10.29 A1.10.32 +A2.10.16 A1.10.33 A1.10.35 +A2.10.17 A1.10.31 A1.10.34 +A2.10.18 A1.10.36 A1.10.39 +A2.10.19 A1.10.38 A1.10.41 +A2.10.20 A1.10.39 A1.10.42 +A2.10.21 A1.10.40 A1.10.43 +A2.10.22 A1.10.41 A1.10.44 +A2.10.23 A1.10.43 A1.10.45 +A2.10.24 A1.10.46 A1.09.48 +A2.10.25 A1.10.48 A1.10.50 +A2.10.26 A1.10.49 A1.10.51 +A2.10.27 A1.10.51 A1.10.52 A1.10.53 A1.10.54 A1.10.56 +A2.10.28 A1.11.54 A1.11.55 A1.10.55 A1.11.58 A1.10.57 A1.10.59 +A2.10.29 A1.10.58 A1.09.61 +A2.10.30 A1.10.60 A1.10.61 +A2.10.31 A1.10.60 A1.10.62 A1.10.61 +A2.11.00 A1.11.12 A1.11.13 A1.11.14 +A2.11.01 A1.10.13 A1.11.15 A1.11.20 +A2.11.02 A1.11.16 A1.11.21 +A2.11.03 A1.11.17 A1.11.22 +A2.11.04 A1.11.18 A1.11.23 +A2.11.05 A1.11.19 A1.11.24 +A2.11.06 A1.11.20 A1.10.24 +A2.11.07 A1.11.21 A1.11.25 +A2.11.08 A1.11.22 A1.11.26 +A2.11.09 A1.11.23 A1.11.27 +A2.11.10 A1.11.24 A1.11.28 +A2.11.11 A1.11.29 A1.11.33 +A2.11.12 A1.11.30 A1.11.34 +A2.11.13 A1.11.31 A1.11.35 +A2.11.14 A1.11.32 A1.11.36 +A2.11.15 A1.11.33 A1.10.37 +A2.11.16 A1.11.34 A1.11.37 +A2.11.17 A1.11.35 A1.11.38 +A2.11.18 A1.11.36 A1.11.39 +A2.11.19 A1.11.40 A1.11.43 +A2.11.20 A1.11.41 A1.11.44 +A2.11.21 A1.11.42 A1.11.45 +A2.11.22 A1.11.43 A1.10.47 +A2.11.23 A1.11.44 A1.11.46 +A2.11.24 A1.11.45 A1.11.47 +A2.11.25 A1.11.48 A1.11.50 A1.11.51 +A2.11.26 A1.11.49 A1.11.52 A1.11.53 +A2.11.27 A1.11.56 A1.11.59 +A2.11.28 A1.11.57 A1.11.60 +A2.11.29 A1.11.59 A1.11.61 +A2.11.30 A1.11.60 A1.11.62 +A2.12.00 A1.12.14 A1.12.13 A1.12.12 +A2.12.01 A1.12.15 A1.13.14 A1.12.20 +A2.12.02 A1.12.16 A1.12.21 +A2.12.03 A1.12.17 A1.12.22 +A2.12.04 A1.12.18 A1.12.23 +A2.12.05 A1.12.19 A1.12.24 +A2.12.06 A1.12.20 A1.13.25 +A2.12.07 A1.12.21 A1.12.25 +A2.12.08 A1.12.22 A1.12.26 +A2.12.09 A1.12.23 A1.12.27 +A2.12.10 A1.12.24 A1.12.28 +A2.12.11 A1.12.29 A1.12.33 +A2.12.12 A1.12.30 A1.12.34 +A2.12.13 A1.12.31 A1.12.35 +A2.12.14 A1.12.32 A1.12.36 +A2.12.15 A1.12.33 A1.13.38 +A2.12.16 A1.12.34 A1.12.37 +A2.12.17 A1.12.35 A1.12.38 +A2.12.18 A1.12.36 A1.12.39 +A2.12.19 A1.12.40 A1.12.43 +A2.12.20 A1.12.41 A1.12.44 +A2.12.21 A1.12.42 A1.12.45 +A2.12.22 A1.12.43 A1.13.48 +A2.12.23 A1.12.44 A1.12.46 +A2.12.24 A1.12.45 A1.12.47 +A2.12.25 A1.12.48 A1.12.51 A1.12.50 +A2.12.26 A1.12.49 A1.12.53 A1.12.52 +A2.12.27 A1.12.56 A1.12.59 +A2.12.28 A1.12.57 A1.12.60 +A2.12.29 A1.12.59 A1.12.61 +A2.12.30 A1.12.60 A1.12.62 +A2.13.00 A1.13.15 +A2.13.01 A1.13.12 A1.14.17 +A2.13.02 A1.13.14 A1.13.18 +A2.13.03 A1.13.16 A1.13.13 +A2.13.04 A1.13.14 A1.13.18 +A2.13.05 A1.13.16 +A2.13.06 A1.13.17 A1.13.21 +A2.13.07 A1.13.15 A1.13.19 A1.13.16 +A2.13.08 A1.13.18 A1.13.22 +A2.13.09 A1.13.20 A1.13.24 +A2.13.10 A1.13.23 A1.13.27 +A2.13.11 A1.13.24 A1.13.28 +A2.13.12 A1.13.26 A1.13.30 +A2.13.13 A1.13.29 A1.13.32 +A2.13.14 A1.13.27 A1.13.31 +A2.13.15 A1.13.30 A1.13.33 +A2.13.16 A1.13.34 A1.13.36 +A2.13.17 A1.13.32 A1.13.35 +A2.13.18 A1.13.37 A1.13.40 +A2.13.19 A1.13.39 A1.13.42 +A2.13.20 A1.13.40 A1.13.43 +A2.13.21 A1.13.41 A1.13.44 +A2.13.22 A1.13.42 A1.13.45 +A2.13.23 A1.13.44 A1.13.46 +A2.13.24 A1.13.47 A1.14.48 +A2.13.25 A1.13.49 A1.13.51 +A2.13.26 A1.13.50 A1.13.52 +A2.13.27 A1.13.52 A1.13.54 A1.13.53 A1.13.57 A1.13.55 +A2.13.28 A1.12.55 A1.12.54 A1.12.58 A1.13.56 A1.13.60 A1.13.58 +A2.13.29 A1.13.59 A1.14.56 +A2.13.30 A1.13.61 A1.13.59 A1.14.61 +A2.13.31 A1.13.62 A1.13.61 +A2.14.00 A1.14.17 +A2.14.01 A1.14.15 +A2.14.02 A1.14.14 A1.14.16 +A2.14.03 A1.14.17 +A2.14.04 A1.14.16 A1.14.19 +A2.14.05 A1.14.17 A1.14.12 A1.14.20 A1.14.15 +A2.14.06 A1.14.18 A1.14.22 +A2.14.07 A1.14.22 A1.14.24 +A2.14.08 A1.13.21 A1.14.25 +A2.14.09 A1.14.23 A1.14.27 +A2.14.10 A1.14.26 A1.15.28 +A2.14.11 A1.14.27 A1.14.29 +A2.14.12 A1.14.28 A1.14.30 +A2.14.13 A1.14.31 A1.14.33 +A2.14.14 A1.14.32 A1.14.35 +A2.14.15 A1.14.30 A1.14.34 +A2.14.16 A1.14.36 A1.14.38 +A2.14.17 A1.14.35 A1.14.37 +A2.14.18 A1.14.39 A1.14.41 +A2.14.19 A1.13.36 A1.14.40 +A2.14.20 A1.14.41 A1.15.41 +A2.14.21 A1.14.42 A1.14.43 +A2.14.22 A1.14.43 A1.14.45 +A2.14.23 A1.14.44 A1.14.46 +A2.14.24 A1.14.46 A1.14.47 +A2.14.25 A1.14.48 A1.14.49 +A2.14.26 A1.14.50 A1.15.51 +A2.14.27 A1.13.51 A1.14.51 +A2.14.28 A1.14.54 A1.14.52 A1.14.55 A1.14.53 A1.14.57 A1.15.53 +A2.14.29 A1.14.60 A1.14.58 +A2.14.30 A1.14.61 A1.14.59 A1.14.62 +A2.14.31 A1.14.61 A1.14.60 A1.14.62 +A2.15.00 A1.15.14 A1.15.15 +A2.15.01 A1.15.16 +A2.15.02 A1.15.15 A1.15.16 +A2.15.03 A1.14.13 A1.15.17 A1.15.18 +A2.15.04 A1.15.18 A1.15.19 +A2.15.05 A1.15.20 A1.15.21 +A2.15.06 A1.15.21 A1.15.22 +A2.15.07 A1.14.21 A1.15.23 +A2.15.08 A1.15.23 A1.15.24 +A2.15.09 A1.15.25 A1.15.26 +A2.15.10 A1.15.26 A1.15.27 +A2.15.11 A1.15.28 A1.15.29 +A2.15.12 A1.15.30 A1.15.31 +A2.15.13 A1.15.31 A1.15.32 +A2.15.14 A1.14.33 A1.15.33 +A2.15.15 A1.15.34 A1.15.35 +A2.15.16 A1.15.35 A1.15.36 +A2.15.17 A1.14.38 A1.15.37 +A2.15.18 A1.15.38 A1.15.39 +A2.15.19 A1.15.39 A1.15.40 +A2.15.20 A1.15.42 A1.15.43 +A2.15.21 A1.15.43 A1.15.44 +A2.15.22 A1.15.45 A1.15.46 +A2.15.23 A1.15.46 A1.15.47 +A2.15.24 A1.15.48 A1.15.49 +A2.15.25 A1.15.49 A1.15.50 +A2.15.26 A1.15.51 A1.15.52 +A2.15.27 A1.15.57 A1.15.54 A1.15.58 A1.15.55 A1.15.59 A1.15.56 +A2.15.28 A1.15.60 A1.15.61 +A2.15.29 A1.15.61 A1.15.62 +A3.00.00 A2.00.06 +A3.00.01 A2.00.11 A2.00.08 A2.01.10 A2.00.07 +A3.00.02 A2.00.12 A2.00.09 A2.00.05 A2.00.08 +A3.00.03 A2.00.13 A2.00.10 +A3.00.04 A2.00.14 A2.00.11 +A3.00.05 A2.00.15 A2.00.12 +A3.00.06 A2.00.16 A2.00.13 +A3.00.07 A2.01.20 A2.00.17 +A3.00.08 A2.00.20 A2.00.18 +A3.00.09 A2.00.21 A2.00.19 +A3.00.10 A2.00.22 A2.00.20 +A3.00.11 A2.00.23 A2.00.21 +A3.00.12 A2.01.26 A2.00.24 +A3.00.13 A2.00.26 A2.00.25 +A3.00.14 A2.00.27 A2.00.26 +A3.00.15 A2.00.29 A2.00.28 +A3.01.00 A2.01.11 A2.01.07 A2.01.09 A2.01.06 A2.01.08 A2.01.05 +A3.01.01 A2.01.10 A2.01.11 A2.01.07 +A3.01.02 A2.01.14 A2.01.12 A2.02.11 A2.01.08 +A3.01.03 A2.01.13 A2.01.10 +A3.01.04 A2.01.17 A2.01.15 A2.01.14 A2.01.12 +A3.01.05 A2.01.18 A2.01.16 +A3.01.06 A2.01.19 A2.01.17 A2.02.16 A2.01.14 +A3.01.07 A2.01.21 A2.01.18 +A3.01.08 A2.01.22 A2.01.20 +A3.01.09 A2.02.24 A2.01.23 +A3.01.10 A2.01.25 A2.01.24 +A3.01.11 A2.01.27 A2.01.25 +A3.01.12 A2.01.28 A2.01.26 +A3.01.13 A2.02.29 A2.01.29 +A3.01.14 A2.00.28 A2.01.31 A2.01.30 +A3.01.15 A2.01.31 A2.01.30 A2.02.30 A2.02.29 +A3.02.00 A2.02.11 A2.01.08 A2.02.09 A2.02.06 +A3.02.01 A2.02.12 A2.02.10 A2.02.09 A2.02.08 A2.02.07 +A3.02.02 A2.02.13 A2.02.12 A2.03.06 A2.02.08 +A3.02.03 A2.02.14 A2.02.11 A2.02.10 A2.02.09 +A3.02.04 A2.02.17 A2.02.15 A2.02.13 A2.02.12 +A3.02.05 A2.02.16 A2.01.14 A2.02.14 A2.02.11 +A3.02.06 A2.03.15 A2.02.17 A2.03.11 A2.02.13 +A3.02.07 A2.02.19 A2.02.18 A2.02.17 A2.02.15 +A3.02.08 A2.02.21 A2.02.19 A2.03.15 A2.02.17 +A3.02.09 A2.02.22 A2.02.20 A2.02.19 A2.02.18 +A3.02.10 A2.02.23 A2.02.22 A2.02.21 A2.02.19 +A3.02.11 A2.02.25 A2.02.24 +A3.02.12 A2.03.25 A2.02.26 +A3.02.13 A2.02.28 A2.02.27 +A3.02.14 A2.02.30 A2.02.29 A2.02.31 +A3.03.00 A2.03.05 A2.03.04 +A3.03.01 A2.03.05 +A3.03.02 A2.03.08 A2.03.07 A2.03.06 A2.03.03 A2.03.02 +A3.03.03 A2.03.09 A2.03.08 A2.03.04 A2.03.03 +A3.03.04 A2.03.10 A2.03.09 A2.03.05 A2.03.04 +A3.03.05 A2.03.11 A2.02.13 A2.03.07 A2.03.06 +A3.03.06 A2.03.13 A2.03.12 A2.03.09 A2.03.08 +A3.03.07 A2.03.14 A2.03.13 A2.03.10 A2.03.09 +A3.03.08 A2.03.17 A2.03.16 A2.03.13 A2.03.12 +A3.03.09 A2.03.18 A2.03.17 A2.03.14 A2.03.13 +A3.03.10 A2.03.20 A2.03.19 A2.03.17 A2.03.16 +A3.03.11 A2.03.21 A2.03.20 A2.03.18 A2.03.17 +A3.03.12 A2.03.23 A2.03.22 A2.03.20 A2.03.19 +A3.03.13 A2.03.24 A2.03.23 A2.03.21 A2.03.20 +A3.03.14 A2.03.26 A2.03.25 +A3.03.15 A2.03.30 A2.03.29 A2.02.28 A2.03.28 A2.03.27 +A3.04.00 A2.04.04 A2.04.05 +A3.04.01 A2.04.05 +A3.04.02 A2.04.06 A2.04.07 A2.04.08 A2.04.02 A2.04.03 +A3.04.03 A2.04.08 A2.04.09 A2.04.03 A2.04.04 +A3.04.04 A2.04.09 A2.04.10 A2.04.04 A2.04.05 +A3.04.05 A2.05.13 A2.04.11 A2.04.06 A2.04.07 +A3.04.06 A2.04.12 A2.04.13 A2.04.08 A2.04.09 +A3.04.07 A2.04.13 A2.04.14 A2.04.09 A2.04.10 +A3.04.08 A2.04.16 A2.04.17 A2.04.12 A2.04.13 +A3.04.09 A2.04.17 A2.04.18 A2.04.13 A2.04.14 +A3.04.10 A2.04.19 A2.04.20 A2.04.16 A2.04.17 +A3.04.11 A2.04.20 A2.04.21 A2.04.17 A2.04.18 +A3.04.12 A2.04.22 A2.04.23 A2.04.19 A2.04.20 +A3.04.13 A2.04.23 A2.04.24 A2.04.20 A2.04.21 +A3.04.14 A2.04.25 A2.04.26 +A3.04.15 A2.05.28 A2.04.29 A2.04.30 A2.04.27 A2.04.28 +A3.05.00 A2.06.08 A2.05.11 A2.05.06 A2.05.09 A2.05.10 +A3.05.01 A2.05.12 A2.05.13 A2.05.07 A2.05.08 A2.04.06 +A3.05.02 A2.05.10 A2.05.12 A2.05.13 A2.05.07 +A3.05.03 A2.05.11 A2.05.14 A2.05.09 A2.05.10 +A3.05.04 A2.05.15 A2.05.17 A2.05.12 A2.05.13 +A3.05.05 A2.06.14 A2.05.16 A2.05.11 A2.05.14 +A3.05.06 A2.05.17 A2.04.15 A2.05.13 A2.04.11 +A3.05.07 A2.05.18 A2.05.19 A2.05.15 A2.05.17 +A3.05.08 A2.05.19 A2.05.21 A2.05.17 A2.04.15 +A3.05.09 A2.05.20 A2.05.22 A2.05.18 A2.05.19 +A3.05.10 A2.05.22 A2.05.23 A2.05.19 A2.05.21 +A3.05.11 A2.05.24 A2.05.25 +A3.05.12 A2.05.26 A2.04.25 +A3.05.13 A2.05.27 A2.05.28 +A3.05.14 A2.06.31 A2.06.29 A2.05.30 A2.05.29 +A3.05.15 A2.05.30 A2.05.31 +A3.06.00 A2.07.07 A2.06.10 +A3.06.01 A2.06.11 A2.06.09 A2.06.05 A2.06.08 +A3.06.02 A2.06.10 A2.06.07 A2.06.11 A2.06.06 A2.06.09 +A3.06.03 A2.06.12 A2.06.14 A2.06.08 A2.05.11 +A3.06.04 A2.06.10 A2.06.13 +A3.06.05 A2.06.15 A2.06.17 A2.06.12 A2.06.14 +A3.06.06 A2.06.16 A2.06.18 +A3.06.07 A2.06.17 A2.06.19 A2.06.14 A2.05.16 +A3.06.08 A2.06.18 A2.06.21 +A3.06.09 A2.06.20 A2.06.22 +A3.06.10 A2.06.23 A2.05.24 +A3.06.11 A2.06.24 A2.06.25 +A3.06.12 A2.06.25 A2.06.27 +A3.06.13 A2.06.26 A2.06.28 +A3.06.14 A2.06.30 A2.06.29 A2.05.29 +A3.06.15 A2.07.28 A2.06.31 A2.06.30 +A3.07.00 A2.07.06 +A3.07.01 A2.07.08 A2.07.11 A2.07.07 A2.06.10 +A3.07.02 A2.07.05 A2.07.09 A2.07.12 +A3.07.03 A2.07.10 A2.07.13 +A3.07.04 A2.07.11 A2.07.14 +A3.07.05 A2.07.12 A2.07.15 +A3.07.06 A2.07.13 A2.07.16 +A3.07.07 A2.07.17 A2.06.20 +A3.07.08 A2.07.18 A2.07.20 +A3.07.09 A2.07.19 A2.07.21 +A3.07.10 A2.07.20 A2.07.22 +A3.07.11 A2.07.21 A2.07.23 +A3.07.12 A2.07.24 A2.06.26 +A3.07.13 A2.07.25 A2.07.26 +A3.07.14 A2.07.26 A2.07.27 +A3.07.15 A2.07.29 A2.07.28 +A3.08.00 A2.08.06 +A3.08.01 A2.08.07 A2.09.10 A2.08.08 A2.08.11 +A3.08.02 A2.08.08 A2.08.05 A2.08.09 A2.08.12 +A3.08.03 A2.08.10 A2.08.13 +A3.08.04 A2.08.11 A2.08.14 +A3.08.05 A2.08.12 A2.08.15 +A3.08.06 A2.08.13 A2.08.16 +A3.08.07 A2.08.17 A2.09.20 +A3.08.08 A2.08.18 A2.08.20 +A3.08.09 A2.08.19 A2.08.21 +A3.08.10 A2.08.20 A2.08.22 +A3.08.11 A2.08.21 A2.08.23 +A3.08.12 A2.08.24 A2.09.26 +A3.08.13 A2.08.25 A2.08.26 +A3.08.14 A2.08.26 A2.08.27 +A3.08.15 A2.08.28 A2.08.29 +A3.09.00 A2.09.05 A2.09.08 A2.09.06 A2.09.09 A2.09.07 A2.09.11 +A3.09.01 A2.09.07 A2.09.11 A2.09.10 +A3.09.02 A2.09.08 A2.10.11 A2.09.12 A2.09.14 +A3.09.03 A2.09.10 A2.09.13 +A3.09.04 A2.09.12 A2.09.14 A2.09.15 A2.09.17 +A3.09.05 A2.09.16 A2.09.18 +A3.09.06 A2.09.14 A2.10.16 A2.09.17 A2.09.19 +A3.09.07 A2.09.18 A2.09.21 +A3.09.08 A2.09.20 A2.09.22 +A3.09.09 A2.09.23 A2.10.24 +A3.09.10 A2.09.24 A2.09.25 +A3.09.11 A2.09.25 A2.09.27 +A3.09.12 A2.09.26 A2.09.28 +A3.09.13 A2.09.29 A2.10.29 +A3.09.14 A2.09.30 A2.09.31 A2.08.28 +A3.09.15 A2.10.29 A2.10.30 A2.09.30 A2.09.31 +A3.10.00 A2.10.06 A2.10.09 A2.09.08 A2.10.11 +A3.10.01 A2.10.07 A2.10.08 A2.10.09 A2.10.10 A2.10.12 +A3.10.02 A2.10.08 A2.11.06 A2.10.12 A2.10.13 +A3.10.03 A2.10.09 A2.10.10 A2.10.11 A2.10.14 +A3.10.04 A2.10.12 A2.10.13 A2.10.15 A2.10.17 +A3.10.05 A2.10.11 A2.10.14 A2.09.14 A2.10.16 +A3.10.06 A2.10.13 A2.11.11 A2.10.17 A2.11.15 +A3.10.07 A2.10.15 A2.10.17 A2.10.18 A2.10.19 +A3.10.08 A2.10.17 A2.11.15 A2.10.19 A2.10.21 +A3.10.09 A2.10.18 A2.10.19 A2.10.20 A2.10.22 +A3.10.10 A2.10.19 A2.10.21 A2.10.22 A2.10.23 +A3.10.11 A2.10.24 A2.10.25 +A3.10.12 A2.10.26 A2.11.25 +A3.10.13 A2.10.27 A2.10.28 +A3.10.14 A2.10.29 A2.10.30 A2.10.31 +A3.11.00 A2.11.04 A2.11.05 +A3.11.01 A2.11.05 +A3.11.02 A2.11.02 A2.11.03 A2.11.06 A2.11.07 A2.11.08 +A3.11.03 A2.11.03 A2.11.04 A2.11.08 A2.11.09 +A3.11.04 A2.11.04 A2.11.05 A2.11.09 A2.11.10 +A3.11.05 A2.11.06 A2.11.07 A2.10.13 A2.11.11 +A3.11.06 A2.11.08 A2.11.09 A2.11.12 A2.11.13 +A3.11.07 A2.11.09 A2.11.10 A2.11.13 A2.11.14 +A3.11.08 A2.11.12 A2.11.13 A2.11.16 A2.11.17 +A3.11.09 A2.11.13 A2.11.14 A2.11.17 A2.11.18 +A3.11.10 A2.11.16 A2.11.17 A2.11.19 A2.11.20 +A3.11.11 A2.11.17 A2.11.18 A2.11.20 A2.11.21 +A3.11.12 A2.11.19 A2.11.20 A2.11.22 A2.11.23 +A3.11.13 A2.11.20 A2.11.21 A2.11.23 A2.11.24 +A3.11.14 A2.11.25 A2.11.26 +A3.11.15 A2.10.28 A2.11.27 A2.11.28 A2.11.29 A2.11.30 +A3.12.00 A2.12.05 A2.12.04 +A3.12.01 A2.12.05 +A3.12.02 A2.12.03 A2.12.02 A2.12.08 A2.12.07 A2.12.06 +A3.12.03 A2.12.04 A2.12.03 A2.12.09 A2.12.08 +A3.12.04 A2.12.05 A2.12.04 A2.12.10 A2.12.09 +A3.12.05 A2.12.07 A2.12.06 A2.12.11 A2.13.13 +A3.12.06 A2.12.09 A2.12.08 A2.12.13 A2.12.12 +A3.12.07 A2.12.10 A2.12.09 A2.12.14 A2.12.13 +A3.12.08 A2.12.13 A2.12.12 A2.12.17 A2.12.16 +A3.12.09 A2.12.14 A2.12.13 A2.12.18 A2.12.17 +A3.12.10 A2.12.17 A2.12.16 A2.12.20 A2.12.19 +A3.12.11 A2.12.18 A2.12.17 A2.12.21 A2.12.20 +A3.12.12 A2.12.20 A2.12.19 A2.12.23 A2.12.22 +A3.12.13 A2.12.21 A2.12.20 A2.12.24 A2.12.23 +A3.12.14 A2.12.26 A2.12.25 +A3.12.15 A2.12.28 A2.12.27 A2.13.28 A2.12.30 A2.12.29 +A3.13.00 A2.13.10 A2.13.09 A2.13.06 A2.13.11 A2.14.08 +A3.13.01 A2.12.06 A2.13.08 A2.13.07 A2.13.13 A2.13.12 +A3.13.02 A2.13.07 A2.13.13 A2.13.12 A2.13.10 +A3.13.03 A2.13.10 A2.13.09 A2.13.14 A2.13.11 +A3.13.04 A2.13.13 A2.13.12 A2.13.17 A2.13.15 +A3.13.05 A2.13.14 A2.13.11 A2.13.16 A2.14.14 +A3.13.06 A2.12.11 A2.13.13 A2.12.15 A2.13.17 +A3.13.07 A2.13.17 A2.13.15 A2.13.19 A2.13.18 +A3.13.08 A2.12.15 A2.13.17 A2.13.21 A2.13.19 +A3.13.09 A2.13.19 A2.13.18 A2.13.22 A2.13.20 +A3.13.10 A2.13.21 A2.13.19 A2.13.23 A2.13.22 +A3.13.11 A2.13.25 A2.13.24 +A3.13.12 A2.12.25 A2.13.26 +A3.13.13 A2.13.28 A2.13.27 +A3.13.14 A2.13.30 A2.13.29 A2.14.31 A2.14.29 +A3.13.15 A2.13.31 A2.13.30 +A3.14.00 A2.14.10 A2.15.07 +A3.14.01 A2.14.08 A2.14.05 A2.14.09 A2.14.11 +A3.14.02 A2.14.09 A2.14.06 A2.14.11 A2.14.07 A2.14.10 +A3.14.03 A2.13.11 A2.14.08 A2.14.14 A2.14.12 +A3.14.04 A2.14.13 A2.14.10 +A3.14.05 A2.14.14 A2.14.12 A2.14.17 A2.14.15 +A3.14.06 A2.14.18 A2.14.16 +A3.14.07 A2.13.16 A2.14.14 A2.14.19 A2.14.17 +A3.14.08 A2.14.21 A2.14.18 +A3.14.09 A2.14.22 A2.14.20 +A3.14.10 A2.13.24 A2.14.23 +A3.14.11 A2.14.25 A2.14.24 +A3.14.12 A2.14.27 A2.14.25 +A3.14.13 A2.14.28 A2.14.26 +A3.14.14 A2.13.29 A2.14.29 A2.14.30 +A3.14.15 A2.14.31 A2.14.30 A2.15.28 +A3.15.00 A2.15.06 +A3.15.01 A2.14.10 A2.15.07 A2.15.11 A2.15.08 +A3.15.02 A2.15.12 A2.15.09 A2.15.05 +A3.15.03 A2.15.13 A2.15.10 +A3.15.04 A2.15.14 A2.15.11 +A3.15.05 A2.15.15 A2.15.12 +A3.15.06 A2.15.16 A2.15.13 +A3.15.07 A2.14.20 A2.15.17 +A3.15.08 A2.15.20 A2.15.18 +A3.15.09 A2.15.21 A2.15.19 +A3.15.10 A2.15.22 A2.15.20 +A3.15.11 A2.15.23 A2.15.21 +A3.15.12 A2.14.26 A2.15.24 +A3.15.13 A2.15.26 A2.15.25 +A3.15.14 A2.15.27 A2.15.26 +A3.15.15 A2.15.28 A2.15.29 +C2.00.00 C1.00.16 C1.00.15 +C2.00.01 C1.00.17 C1.00.16 +C2.00.02 C1.00.17 +C2.00.03 C1.00.19 C1.00.18 C1.01.13 +C2.00.04 C1.00.20 C1.00.19 +C2.00.05 C1.00.22 C1.00.21 +C2.00.06 C1.00.23 C1.00.22 +C2.00.07 C1.00.24 C1.01.21 +C2.00.08 C1.00.25 C1.00.24 +C2.00.09 C1.00.27 C1.00.26 +C2.00.10 C1.00.28 C1.00.27 +C2.00.11 C1.00.30 C1.00.29 +C2.00.12 C1.00.32 C1.00.31 +C2.00.13 C1.00.33 C1.00.32 +C2.00.14 C1.00.34 C1.01.33 +C2.00.15 C1.00.36 C1.00.35 +C2.00.16 C1.00.37 C1.00.36 +C2.00.17 C1.00.38 C1.01.38 +C2.00.18 C1.00.40 C1.00.39 +C2.00.19 C1.00.41 C1.00.40 +C2.00.20 C1.00.44 C1.00.43 +C2.00.21 C1.00.45 C1.00.44 +C2.00.22 C1.00.47 C1.00.46 +C2.00.23 C1.00.48 C1.00.47 +C2.00.24 C1.00.50 C1.00.49 +C2.00.25 C1.00.51 C1.00.50 +C2.00.26 C1.00.53 C1.00.52 +C2.00.27 C1.00.59 C1.00.56 C1.00.58 C1.00.55 C1.00.57 C1.00.54 +C2.00.28 C1.00.61 C1.00.60 +C2.00.29 C1.00.62 C1.00.61 +C2.01.00 C1.01.17 C1.02.11 +C2.01.01 C1.01.15 C1.01.12 +C2.01.02 C1.01.16 +C2.01.03 C1.01.15 +C2.01.04 C1.01.19 C1.01.16 +C2.01.05 C1.01.20 C1.01.17 +C2.01.06 C1.01.22 C1.01.18 C1.01.14 +C2.01.07 C1.01.24 C1.01.22 +C2.01.08 C1.01.25 C1.02.20 +C2.01.09 C1.01.27 C1.01.23 +C2.01.10 C1.00.29 C1.01.26 +C2.01.11 C1.01.29 C1.01.27 +C2.01.12 C1.01.30 C1.01.28 +C2.01.13 C1.01.33 C1.01.31 +C2.01.14 C1.01.35 C1.01.32 +C2.01.15 C1.01.34 C1.01.30 +C2.01.16 C1.01.38 C1.01.36 +C2.01.17 C1.01.37 C1.01.35 +C2.01.18 C1.01.41 C1.01.39 +C2.01.19 C1.01.40 C1.02.35 +C2.01.20 C1.00.42 C1.01.41 +C2.01.21 C1.01.43 C1.01.42 +C2.01.22 C1.01.45 C1.01.43 +C2.01.23 C1.01.46 C1.01.44 +C2.01.24 C1.01.47 C1.01.46 +C2.01.25 C1.01.49 C1.01.48 +C2.01.26 C1.00.52 C1.01.50 +C2.01.27 C1.01.51 C1.02.50 +C2.01.28 C1.01.58 C1.01.54 C1.01.56 C1.01.53 C1.01.55 C1.01.52 +C2.01.29 C1.01.59 C1.01.57 +C2.01.30 C1.01.60 C1.01.59 +C2.01.31 C1.01.62 C1.01.61 +C2.02.00 C1.02.16 C1.02.11 +C2.02.01 C1.02.14 +C2.02.02 C1.02.17 C1.02.13 +C2.02.03 C1.02.15 C1.02.12 +C2.02.04 C1.02.17 C1.02.13 +C2.02.05 C1.02.15 +C2.02.06 C1.02.20 C1.01.17 C1.02.16 C1.02.11 +C2.02.07 C1.02.18 C1.02.15 C1.02.14 +C2.02.08 C1.02.21 C1.02.17 +C2.02.09 C1.02.23 C1.02.19 +C2.02.10 C1.02.26 C1.02.22 +C2.02.11 C1.02.27 C1.02.23 +C2.02.12 C1.02.29 C1.02.25 +C2.02.13 C1.02.31 C1.02.28 +C2.02.14 C1.02.30 C1.02.26 +C2.02.15 C1.02.32 C1.02.29 +C2.02.16 C1.02.35 C1.02.33 +C2.02.17 C1.02.34 C1.02.31 +C2.02.18 C1.02.39 C1.02.36 +C2.02.19 C1.02.41 C1.02.38 +C2.02.20 C1.02.42 C1.02.39 +C2.02.21 C1.02.43 C1.02.40 +C2.02.22 C1.02.44 C1.02.41 +C2.02.23 C1.02.45 C1.02.43 +C2.02.24 C1.01.48 C1.02.46 +C2.02.25 C1.02.50 C1.02.48 +C2.02.26 C1.02.51 C1.02.49 +C2.02.27 C1.02.56 C1.02.54 C1.02.53 C1.02.52 C1.02.51 +C2.02.28 C1.02.59 C1.02.57 C1.03.58 C1.02.55 C1.03.55 C1.03.54 +C2.02.29 C1.01.61 C1.02.58 +C2.02.30 C1.02.61 C1.02.60 +C2.02.31 C1.02.61 C1.02.62 C1.02.60 +C2.03.00 C1.03.14 C1.03.13 C1.03.12 +C2.03.01 C1.03.20 C1.03.15 C1.02.13 +C2.03.02 C1.03.21 C1.03.16 +C2.03.03 C1.03.22 C1.03.17 +C2.03.04 C1.03.23 C1.03.18 +C2.03.05 C1.03.24 C1.03.19 +C2.03.06 C1.02.24 C1.03.20 +C2.03.07 C1.03.25 C1.03.21 +C2.03.08 C1.03.26 C1.03.22 +C2.03.09 C1.03.27 C1.03.23 +C2.03.10 C1.03.28 C1.03.24 +C2.03.11 C1.03.33 C1.03.29 +C2.03.12 C1.03.34 C1.03.30 +C2.03.13 C1.03.35 C1.03.31 +C2.03.14 C1.03.36 C1.03.32 +C2.03.15 C1.02.37 C1.03.33 +C2.03.16 C1.03.37 C1.03.34 +C2.03.17 C1.03.38 C1.03.35 +C2.03.18 C1.03.39 C1.03.36 +C2.03.19 C1.03.43 C1.03.40 +C2.03.20 C1.03.44 C1.03.41 +C2.03.21 C1.03.45 C1.03.42 +C2.03.22 C1.02.47 C1.03.43 +C2.03.23 C1.03.46 C1.03.44 +C2.03.24 C1.03.47 C1.03.45 +C2.03.25 C1.03.51 C1.03.50 C1.03.48 +C2.03.26 C1.03.53 C1.03.52 C1.03.49 +C2.03.27 C1.03.59 C1.03.56 +C2.03.28 C1.03.60 C1.03.57 +C2.03.29 C1.03.61 C1.03.59 +C2.03.30 C1.03.62 C1.03.60 +C2.04.00 C1.04.12 C1.04.13 C1.04.14 +C2.04.01 C1.04.20 C1.05.14 C1.04.15 +C2.04.02 C1.04.21 C1.04.16 +C2.04.03 C1.04.22 C1.04.17 +C2.04.04 C1.04.23 C1.04.18 +C2.04.05 C1.04.24 C1.04.19 +C2.04.06 C1.05.25 C1.04.20 +C2.04.07 C1.04.25 C1.04.21 +C2.04.08 C1.04.26 C1.04.22 +C2.04.09 C1.04.27 C1.04.23 +C2.04.10 C1.04.28 C1.04.24 +C2.04.11 C1.04.33 C1.04.29 +C2.04.12 C1.04.34 C1.04.30 +C2.04.13 C1.04.35 C1.04.31 +C2.04.14 C1.04.36 C1.04.32 +C2.04.15 C1.05.38 C1.04.33 +C2.04.16 C1.04.37 C1.04.34 +C2.04.17 C1.04.38 C1.04.35 +C2.04.18 C1.04.39 C1.04.36 +C2.04.19 C1.04.43 C1.04.40 +C2.04.20 C1.04.44 C1.04.41 +C2.04.21 C1.04.45 C1.04.42 +C2.04.22 C1.05.48 C1.04.43 +C2.04.23 C1.04.46 C1.04.44 +C2.04.24 C1.04.47 C1.04.45 +C2.04.25 C1.04.50 C1.04.51 C1.04.48 +C2.04.26 C1.04.52 C1.04.53 C1.04.49 +C2.04.27 C1.04.59 C1.04.56 +C2.04.28 C1.04.60 C1.04.57 +C2.04.29 C1.04.61 C1.04.59 +C2.04.30 C1.04.62 C1.04.60 +C2.05.00 C1.05.15 +C2.05.01 C1.06.17 C1.05.13 +C2.05.02 C1.05.18 C1.05.14 +C2.05.03 C1.05.12 C1.05.16 +C2.05.04 C1.05.18 C1.05.14 +C2.05.05 C1.05.16 +C2.05.06 C1.05.21 C1.05.17 +C2.05.07 C1.05.16 C1.05.19 C1.05.15 +C2.05.08 C1.05.22 C1.05.18 +C2.05.09 C1.05.24 C1.05.20 +C2.05.10 C1.05.27 C1.05.23 +C2.05.11 C1.05.28 C1.05.24 +C2.05.12 C1.05.30 C1.05.26 +C2.05.13 C1.05.32 C1.05.29 +C2.05.14 C1.05.31 C1.05.27 +C2.05.15 C1.05.33 C1.05.30 +C2.05.16 C1.05.37 C1.05.34 +C2.05.17 C1.05.35 C1.05.32 +C2.05.18 C1.05.40 C1.05.36 +C2.05.19 C1.05.42 C1.05.39 +C2.05.20 C1.05.43 C1.05.40 +C2.05.21 C1.05.44 C1.05.41 +C2.05.22 C1.05.45 C1.05.42 +C2.05.23 C1.05.46 C1.05.44 +C2.05.24 C1.06.48 C1.05.47 +C2.05.25 C1.05.51 C1.05.49 +C2.05.26 C1.05.52 C1.05.50 +C2.05.27 C1.05.55 C1.05.57 C1.05.53 C1.05.54 C1.05.52 +C2.05.28 C1.05.58 C1.05.60 C1.05.56 C1.04.58 C1.04.54 C1.04.55 +C2.05.29 C1.06.56 C1.05.59 +C2.05.30 C1.06.61 C1.05.59 C1.05.61 +C2.05.31 C1.05.61 C1.05.62 +C2.06.00 C1.06.17 +C2.06.01 C1.06.15 +C2.06.02 C1.06.16 C1.06.14 +C2.06.03 C1.06.17 +C2.06.04 C1.06.19 C1.06.16 +C2.06.05 C1.06.15 C1.06.20 C1.06.12 C1.06.17 +C2.06.06 C1.06.22 C1.06.18 +C2.06.07 C1.06.24 C1.06.22 +C2.06.08 C1.06.25 C1.05.21 +C2.06.09 C1.06.27 C1.06.23 +C2.06.10 C1.07.28 C1.06.26 +C2.06.11 C1.06.29 C1.06.27 +C2.06.12 C1.06.30 C1.06.28 +C2.06.13 C1.06.33 C1.06.31 +C2.06.14 C1.06.35 C1.06.32 +C2.06.15 C1.06.34 C1.06.30 +C2.06.16 C1.06.38 C1.06.36 +C2.06.17 C1.06.37 C1.06.35 +C2.06.18 C1.06.41 C1.06.39 +C2.06.19 C1.06.40 C1.05.37 +C2.06.20 C1.07.41 C1.06.41 +C2.06.21 C1.06.43 C1.06.42 +C2.06.22 C1.06.45 C1.06.43 +C2.06.23 C1.06.46 C1.06.44 +C2.06.24 C1.06.47 C1.06.46 +C2.06.25 C1.06.49 C1.06.48 +C2.06.26 C1.07.51 C1.06.50 +C2.06.27 C1.06.51 C1.05.51 +C2.06.28 C1.07.53 C1.06.57 C1.06.53 C1.06.55 C1.06.52 C1.06.54 +C2.06.29 C1.06.58 C1.06.60 +C2.06.30 C1.06.62 C1.06.59 C1.06.61 +C2.06.31 C1.06.62 C1.06.61 C1.06.60 +C2.07.00 C1.07.15 C1.07.14 +C2.07.01 C1.07.16 +C2.07.02 C1.07.16 C1.07.15 +C2.07.03 C1.07.18 C1.07.17 C1.06.13 +C2.07.04 C1.07.19 C1.07.18 +C2.07.05 C1.07.21 C1.07.20 +C2.07.06 C1.07.22 C1.07.21 +C2.07.07 C1.07.23 C1.06.21 +C2.07.08 C1.07.24 C1.07.23 +C2.07.09 C1.07.26 C1.07.25 +C2.07.10 C1.07.27 C1.07.26 +C2.07.11 C1.07.29 C1.07.28 +C2.07.12 C1.07.31 C1.07.30 +C2.07.13 C1.07.32 C1.07.31 +C2.07.14 C1.07.33 C1.06.33 +C2.07.15 C1.07.35 C1.07.34 +C2.07.16 C1.07.36 C1.07.35 +C2.07.17 C1.07.37 C1.06.38 +C2.07.18 C1.07.39 C1.07.38 +C2.07.19 C1.07.40 C1.07.39 +C2.07.20 C1.07.43 C1.07.42 +C2.07.21 C1.07.44 C1.07.43 +C2.07.22 C1.07.46 C1.07.45 +C2.07.23 C1.07.47 C1.07.46 +C2.07.24 C1.07.49 C1.07.48 +C2.07.25 C1.07.50 C1.07.49 +C2.07.26 C1.07.52 C1.07.51 +C2.07.27 C1.07.56 C1.07.59 C1.07.55 C1.07.58 C1.07.54 C1.07.57 +C2.07.28 C1.07.61 C1.07.60 +C2.07.29 C1.07.62 C1.07.61 +C2.08.00 C1.08.17 +C2.08.01 C1.08.16 C1.08.17 +C2.08.02 C1.08.15 C1.08.16 +C2.08.03 C1.09.13 C1.08.18 C1.08.19 +C2.08.04 C1.08.19 C1.08.20 +C2.08.05 C1.08.21 C1.08.22 +C2.08.06 C1.08.22 C1.08.23 +C2.08.07 C1.09.21 C1.08.24 +C2.08.08 C1.08.24 C1.08.25 +C2.08.09 C1.08.26 C1.08.27 +C2.08.10 C1.08.27 C1.08.28 +C2.08.11 C1.08.29 C1.08.30 +C2.08.12 C1.08.31 C1.08.32 +C2.08.13 C1.08.32 C1.08.33 +C2.08.14 C1.09.33 C1.08.34 +C2.08.15 C1.08.35 C1.08.36 +C2.08.16 C1.08.36 C1.08.37 +C2.08.17 C1.09.38 C1.08.38 +C2.08.18 C1.08.39 C1.08.40 +C2.08.19 C1.08.40 C1.08.41 +C2.08.20 C1.08.43 C1.08.44 +C2.08.21 C1.08.44 C1.08.45 +C2.08.22 C1.08.46 C1.08.47 +C2.08.23 C1.08.47 C1.08.48 +C2.08.24 C1.08.49 C1.08.50 +C2.08.25 C1.08.50 C1.08.51 +C2.08.26 C1.08.52 C1.08.53 +C2.08.27 C1.08.54 C1.08.57 C1.08.55 C1.08.58 C1.08.56 C1.08.59 +C2.08.28 C1.08.60 C1.08.61 +C2.08.29 C1.08.61 C1.08.62 +C2.09.00 C1.10.12 C1.09.17 +C2.09.01 C1.09.12 C1.09.15 +C2.09.02 C1.09.16 +C2.09.03 C1.09.15 +C2.09.04 C1.09.16 C1.09.19 +C2.09.05 C1.09.17 C1.09.20 +C2.09.06 C1.09.14 C1.09.18 C1.09.22 +C2.09.07 C1.09.22 C1.09.24 +C2.09.08 C1.10.20 C1.09.25 +C2.09.09 C1.09.23 C1.09.27 +C2.09.10 C1.09.26 C1.08.29 +C2.09.11 C1.09.27 C1.09.29 +C2.09.12 C1.09.28 C1.09.30 +C2.09.13 C1.09.31 C1.09.33 +C2.09.14 C1.09.32 C1.09.35 +C2.09.15 C1.09.30 C1.09.34 +C2.09.16 C1.09.36 C1.09.38 +C2.09.17 C1.09.35 C1.09.37 +C2.09.18 C1.09.39 C1.09.41 +C2.09.19 C1.10.35 C1.09.40 +C2.09.20 C1.09.41 C1.08.42 +C2.09.21 C1.09.42 C1.09.43 +C2.09.22 C1.09.43 C1.09.45 +C2.09.23 C1.09.44 C1.09.46 +C2.09.24 C1.09.46 C1.09.47 +C2.09.25 C1.09.48 C1.09.49 +C2.09.26 C1.09.50 C1.08.52 +C2.09.27 C1.10.50 C1.09.51 +C2.09.28 C1.09.52 C1.09.55 C1.09.53 C1.09.56 C1.09.54 C1.09.58 +C2.09.29 C1.09.57 C1.09.59 +C2.09.30 C1.09.59 C1.09.60 +C2.09.31 C1.09.61 C1.09.62 +C2.10.00 C1.10.12 C1.10.16 +C2.10.01 C1.10.14 +C2.10.02 C1.10.13 C1.10.17 +C2.10.03 C1.10.11 C1.10.15 +C2.10.04 C1.10.13 C1.10.17 +C2.10.05 C1.10.15 +C2.10.06 C1.10.12 C1.10.16 C1.09.17 C1.10.20 +C2.10.07 C1.10.14 C1.10.15 C1.10.18 +C2.10.08 C1.10.17 C1.10.21 +C2.10.09 C1.10.19 C1.10.23 +C2.10.10 C1.10.22 C1.10.26 +C2.10.11 C1.10.23 C1.10.27 +C2.10.12 C1.10.25 C1.10.29 +C2.10.13 C1.10.28 C1.10.31 +C2.10.14 C1.10.26 C1.10.30 +C2.10.15 C1.10.29 C1.10.32 +C2.10.16 C1.10.33 C1.10.35 +C2.10.17 C1.10.31 C1.10.34 +C2.10.18 C1.10.36 C1.10.39 +C2.10.19 C1.10.38 C1.10.41 +C2.10.20 C1.10.39 C1.10.42 +C2.10.21 C1.10.40 C1.10.43 +C2.10.22 C1.10.41 C1.10.44 +C2.10.23 C1.10.43 C1.10.45 +C2.10.24 C1.10.46 C1.09.48 +C2.10.25 C1.10.48 C1.10.50 +C2.10.26 C1.10.49 C1.10.51 +C2.10.27 C1.10.51 C1.10.52 C1.10.53 C1.10.54 C1.10.56 +C2.10.28 C1.11.54 C1.11.55 C1.10.55 C1.11.58 C1.10.57 C1.10.59 +C2.10.29 C1.10.58 C1.09.61 +C2.10.30 C1.10.60 C1.10.61 +C2.10.31 C1.10.60 C1.10.62 C1.10.61 +C2.11.00 C1.11.12 C1.11.13 C1.11.14 +C2.11.01 C1.10.13 C1.11.15 C1.11.20 +C2.11.02 C1.11.16 C1.11.21 +C2.11.03 C1.11.17 C1.11.22 +C2.11.04 C1.11.18 C1.11.23 +C2.11.05 C1.11.19 C1.11.24 +C2.11.06 C1.11.20 C1.10.24 +C2.11.07 C1.11.21 C1.11.25 +C2.11.08 C1.11.22 C1.11.26 +C2.11.09 C1.11.23 C1.11.27 +C2.11.10 C1.11.24 C1.11.28 +C2.11.11 C1.11.29 C1.11.33 +C2.11.12 C1.11.30 C1.11.34 +C2.11.13 C1.11.31 C1.11.35 +C2.11.14 C1.11.32 C1.11.36 +C2.11.15 C1.11.33 C1.10.37 +C2.11.16 C1.11.34 C1.11.37 +C2.11.17 C1.11.35 C1.11.38 +C2.11.18 C1.11.36 C1.11.39 +C2.11.19 C1.11.40 C1.11.43 +C2.11.20 C1.11.41 C1.11.44 +C2.11.21 C1.11.42 C1.11.45 +C2.11.22 C1.11.43 C1.10.47 +C2.11.23 C1.11.44 C1.11.46 +C2.11.24 C1.11.45 C1.11.47 +C2.11.25 C1.11.48 C1.11.50 C1.11.51 +C2.11.26 C1.11.49 C1.11.52 C1.11.53 +C2.11.27 C1.11.56 C1.11.59 +C2.11.28 C1.11.57 C1.11.60 +C2.11.29 C1.11.59 C1.11.61 +C2.11.30 C1.11.60 C1.11.62 +C2.12.00 C1.12.14 C1.12.13 C1.12.12 +C2.12.01 C1.12.15 C1.13.14 C1.12.20 +C2.12.02 C1.12.16 C1.12.21 +C2.12.03 C1.12.17 C1.12.22 +C2.12.04 C1.12.18 C1.12.23 +C2.12.05 C1.12.19 C1.12.24 +C2.12.06 C1.12.20 C1.13.25 +C2.12.07 C1.12.21 C1.12.25 +C2.12.08 C1.12.22 C1.12.26 +C2.12.09 C1.12.23 C1.12.27 +C2.12.10 C1.12.24 C1.12.28 +C2.12.11 C1.12.29 C1.12.33 +C2.12.12 C1.12.30 C1.12.34 +C2.12.13 C1.12.31 C1.12.35 +C2.12.14 C1.12.32 C1.12.36 +C2.12.15 C1.12.33 C1.13.38 +C2.12.16 C1.12.34 C1.12.37 +C2.12.17 C1.12.35 C1.12.38 +C2.12.18 C1.12.36 C1.12.39 +C2.12.19 C1.12.40 C1.12.43 +C2.12.20 C1.12.41 C1.12.44 +C2.12.21 C1.12.42 C1.12.45 +C2.12.22 C1.12.43 C1.13.48 +C2.12.23 C1.12.44 C1.12.46 +C2.12.24 C1.12.45 C1.12.47 +C2.12.25 C1.12.48 C1.12.51 C1.12.50 +C2.12.26 C1.12.49 C1.12.53 C1.12.52 +C2.12.27 C1.12.56 C1.12.59 +C2.12.28 C1.12.57 C1.12.60 +C2.12.29 C1.12.59 C1.12.61 +C2.12.30 C1.12.60 C1.12.62 +C2.13.00 C1.13.15 +C2.13.01 C1.13.12 C1.14.17 +C2.13.02 C1.13.14 C1.13.18 +C2.13.03 C1.13.16 C1.13.13 +C2.13.04 C1.13.14 C1.13.18 +C2.13.05 C1.13.16 +C2.13.06 C1.13.17 C1.13.21 +C2.13.07 C1.13.15 C1.13.19 C1.13.16 +C2.13.08 C1.13.18 C1.13.22 +C2.13.09 C1.13.20 C1.13.24 +C2.13.10 C1.13.23 C1.13.27 +C2.13.11 C1.13.24 C1.13.28 +C2.13.12 C1.13.26 C1.13.30 +C2.13.13 C1.13.29 C1.13.32 +C2.13.14 C1.13.27 C1.13.31 +C2.13.15 C1.13.30 C1.13.33 +C2.13.16 C1.13.34 C1.13.36 +C2.13.17 C1.13.32 C1.13.35 +C2.13.18 C1.13.37 C1.13.40 +C2.13.19 C1.13.39 C1.13.42 +C2.13.20 C1.13.40 C1.13.43 +C2.13.21 C1.13.41 C1.13.44 +C2.13.22 C1.13.42 C1.13.45 +C2.13.23 C1.13.44 C1.13.46 +C2.13.24 C1.13.47 C1.14.48 +C2.13.25 C1.13.49 C1.13.51 +C2.13.26 C1.13.50 C1.13.52 +C2.13.27 C1.13.52 C1.13.54 C1.13.53 C1.13.57 C1.13.55 +C2.13.28 C1.12.55 C1.12.54 C1.12.58 C1.13.56 C1.13.60 C1.13.58 +C2.13.29 C1.13.59 C1.14.56 +C2.13.30 C1.13.61 C1.13.59 C1.14.61 +C2.13.31 C1.13.62 C1.13.61 +C2.14.00 C1.14.17 +C2.14.01 C1.14.15 +C2.14.02 C1.14.14 C1.14.16 +C2.14.03 C1.14.17 +C2.14.04 C1.14.16 C1.14.19 +C2.14.05 C1.14.17 C1.14.12 C1.14.20 C1.14.15 +C2.14.06 C1.14.18 C1.14.22 +C2.14.07 C1.14.22 C1.14.24 +C2.14.08 C1.13.21 C1.14.25 +C2.14.09 C1.14.23 C1.14.27 +C2.14.10 C1.14.26 C1.15.28 +C2.14.11 C1.14.27 C1.14.29 +C2.14.12 C1.14.28 C1.14.30 +C2.14.13 C1.14.31 C1.14.33 +C2.14.14 C1.14.32 C1.14.35 +C2.14.15 C1.14.30 C1.14.34 +C2.14.16 C1.14.36 C1.14.38 +C2.14.17 C1.14.35 C1.14.37 +C2.14.18 C1.14.39 C1.14.41 +C2.14.19 C1.13.36 C1.14.40 +C2.14.20 C1.14.41 C1.15.41 +C2.14.21 C1.14.42 C1.14.43 +C2.14.22 C1.14.43 C1.14.45 +C2.14.23 C1.14.44 C1.14.46 +C2.14.24 C1.14.46 C1.14.47 +C2.14.25 C1.14.48 C1.14.49 +C2.14.26 C1.14.50 C1.15.51 +C2.14.27 C1.13.51 C1.14.51 +C2.14.28 C1.14.54 C1.14.52 C1.14.55 C1.14.53 C1.14.57 C1.15.53 +C2.14.29 C1.14.60 C1.14.58 +C2.14.30 C1.14.61 C1.14.59 C1.14.62 +C2.14.31 C1.14.61 C1.14.60 C1.14.62 +C2.15.00 C1.15.14 C1.15.15 +C2.15.01 C1.15.16 +C2.15.02 C1.15.15 C1.15.16 +C2.15.03 C1.14.13 C1.15.17 C1.15.18 +C2.15.04 C1.15.18 C1.15.19 +C2.15.05 C1.15.20 C1.15.21 +C2.15.06 C1.15.21 C1.15.22 +C2.15.07 C1.14.21 C1.15.23 +C2.15.08 C1.15.23 C1.15.24 +C2.15.09 C1.15.25 C1.15.26 +C2.15.10 C1.15.26 C1.15.27 +C2.15.11 C1.15.28 C1.15.29 +C2.15.12 C1.15.30 C1.15.31 +C2.15.13 C1.15.31 C1.15.32 +C2.15.14 C1.14.33 C1.15.33 +C2.15.15 C1.15.34 C1.15.35 +C2.15.16 C1.15.35 C1.15.36 +C2.15.17 C1.14.38 C1.15.37 +C2.15.18 C1.15.38 C1.15.39 +C2.15.19 C1.15.39 C1.15.40 +C2.15.20 C1.15.42 C1.15.43 +C2.15.21 C1.15.43 C1.15.44 +C2.15.22 C1.15.45 C1.15.46 +C2.15.23 C1.15.46 C1.15.47 +C2.15.24 C1.15.48 C1.15.49 +C2.15.25 C1.15.49 C1.15.50 +C2.15.26 C1.15.51 C1.15.52 +C2.15.27 C1.15.57 C1.15.54 C1.15.58 C1.15.55 C1.15.59 C1.15.56 +C2.15.28 C1.15.60 C1.15.61 +C2.15.29 C1.15.61 C1.15.62 +C3.00.00 C2.00.06 +C3.00.01 C2.00.11 C2.00.08 C2.01.10 C2.00.07 +C3.00.02 C2.00.12 C2.00.09 C2.00.05 C2.00.08 +C3.00.03 C2.00.13 C2.00.10 +C3.00.04 C2.00.14 C2.00.11 +C3.00.05 C2.00.15 C2.00.12 +C3.00.06 C2.00.16 C2.00.13 +C3.00.07 C2.01.20 C2.00.17 +C3.00.08 C2.00.20 C2.00.18 +C3.00.09 C2.00.21 C2.00.19 +C3.00.10 C2.00.22 C2.00.20 +C3.00.11 C2.00.23 C2.00.21 +C3.00.12 C2.01.26 C2.00.24 +C3.00.13 C2.00.26 C2.00.25 +C3.00.14 C2.00.27 C2.00.26 +C3.00.15 C2.00.29 C2.00.28 +C3.01.00 C2.01.11 C2.01.07 C2.01.09 C2.01.06 C2.01.08 C2.01.05 +C3.01.01 C2.01.10 C2.01.11 C2.01.07 +C3.01.02 C2.01.14 C2.01.12 C2.02.11 C2.01.08 +C3.01.03 C2.01.13 C2.01.10 +C3.01.04 C2.01.17 C2.01.15 C2.01.14 C2.01.12 +C3.01.05 C2.01.18 C2.01.16 +C3.01.06 C2.01.19 C2.01.17 C2.02.16 C2.01.14 +C3.01.07 C2.01.21 C2.01.18 +C3.01.08 C2.01.22 C2.01.20 +C3.01.09 C2.02.24 C2.01.23 +C3.01.10 C2.01.25 C2.01.24 +C3.01.11 C2.01.27 C2.01.25 +C3.01.12 C2.01.28 C2.01.26 +C3.01.13 C2.02.29 C2.01.29 +C3.01.14 C2.00.28 C2.01.31 C2.01.30 +C3.01.15 C2.01.31 C2.01.30 C2.02.30 C2.02.29 +C3.02.00 C2.02.11 C2.01.08 C2.02.09 C2.02.06 +C3.02.01 C2.02.12 C2.02.10 C2.02.09 C2.02.08 C2.02.07 +C3.02.02 C2.02.13 C2.02.12 C2.03.06 C2.02.08 +C3.02.03 C2.02.14 C2.02.11 C2.02.10 C2.02.09 +C3.02.04 C2.02.17 C2.02.15 C2.02.13 C2.02.12 +C3.02.05 C2.02.16 C2.01.14 C2.02.14 C2.02.11 +C3.02.06 C2.03.15 C2.02.17 C2.03.11 C2.02.13 +C3.02.07 C2.02.19 C2.02.18 C2.02.17 C2.02.15 +C3.02.08 C2.02.21 C2.02.19 C2.03.15 C2.02.17 +C3.02.09 C2.02.22 C2.02.20 C2.02.19 C2.02.18 +C3.02.10 C2.02.23 C2.02.22 C2.02.21 C2.02.19 +C3.02.11 C2.02.25 C2.02.24 +C3.02.12 C2.03.25 C2.02.26 +C3.02.13 C2.02.28 C2.02.27 +C3.02.14 C2.02.30 C2.02.29 C2.02.31 +C3.03.00 C2.03.05 C2.03.04 +C3.03.01 C2.03.05 +C3.03.02 C2.03.08 C2.03.07 C2.03.06 C2.03.03 C2.03.02 +C3.03.03 C2.03.09 C2.03.08 C2.03.04 C2.03.03 +C3.03.04 C2.03.10 C2.03.09 C2.03.05 C2.03.04 +C3.03.05 C2.03.11 C2.02.13 C2.03.07 C2.03.06 +C3.03.06 C2.03.13 C2.03.12 C2.03.09 C2.03.08 +C3.03.07 C2.03.14 C2.03.13 C2.03.10 C2.03.09 +C3.03.08 C2.03.17 C2.03.16 C2.03.13 C2.03.12 +C3.03.09 C2.03.18 C2.03.17 C2.03.14 C2.03.13 +C3.03.10 C2.03.20 C2.03.19 C2.03.17 C2.03.16 +C3.03.11 C2.03.21 C2.03.20 C2.03.18 C2.03.17 +C3.03.12 C2.03.23 C2.03.22 C2.03.20 C2.03.19 +C3.03.13 C2.03.24 C2.03.23 C2.03.21 C2.03.20 +C3.03.14 C2.03.26 C2.03.25 +C3.03.15 C2.03.30 C2.03.29 C2.02.28 C2.03.28 C2.03.27 +C3.04.00 C2.04.04 C2.04.05 +C3.04.01 C2.04.05 +C3.04.02 C2.04.06 C2.04.07 C2.04.08 C2.04.02 C2.04.03 +C3.04.03 C2.04.08 C2.04.09 C2.04.03 C2.04.04 +C3.04.04 C2.04.09 C2.04.10 C2.04.04 C2.04.05 +C3.04.05 C2.05.13 C2.04.11 C2.04.06 C2.04.07 +C3.04.06 C2.04.12 C2.04.13 C2.04.08 C2.04.09 +C3.04.07 C2.04.13 C2.04.14 C2.04.09 C2.04.10 +C3.04.08 C2.04.16 C2.04.17 C2.04.12 C2.04.13 +C3.04.09 C2.04.17 C2.04.18 C2.04.13 C2.04.14 +C3.04.10 C2.04.19 C2.04.20 C2.04.16 C2.04.17 +C3.04.11 C2.04.20 C2.04.21 C2.04.17 C2.04.18 +C3.04.12 C2.04.22 C2.04.23 C2.04.19 C2.04.20 +C3.04.13 C2.04.23 C2.04.24 C2.04.20 C2.04.21 +C3.04.14 C2.04.25 C2.04.26 +C3.04.15 C2.05.28 C2.04.29 C2.04.30 C2.04.27 C2.04.28 +C3.05.00 C2.06.08 C2.05.11 C2.05.06 C2.05.09 C2.05.10 +C3.05.01 C2.05.12 C2.05.13 C2.05.07 C2.05.08 C2.04.06 +C3.05.02 C2.05.10 C2.05.12 C2.05.13 C2.05.07 +C3.05.03 C2.05.11 C2.05.14 C2.05.09 C2.05.10 +C3.05.04 C2.05.15 C2.05.17 C2.05.12 C2.05.13 +C3.05.05 C2.06.14 C2.05.16 C2.05.11 C2.05.14 +C3.05.06 C2.05.17 C2.04.15 C2.05.13 C2.04.11 +C3.05.07 C2.05.18 C2.05.19 C2.05.15 C2.05.17 +C3.05.08 C2.05.19 C2.05.21 C2.05.17 C2.04.15 +C3.05.09 C2.05.20 C2.05.22 C2.05.18 C2.05.19 +C3.05.10 C2.05.22 C2.05.23 C2.05.19 C2.05.21 +C3.05.11 C2.05.24 C2.05.25 +C3.05.12 C2.05.26 C2.04.25 +C3.05.13 C2.05.27 C2.05.28 +C3.05.14 C2.06.31 C2.06.29 C2.05.30 C2.05.29 +C3.05.15 C2.05.30 C2.05.31 +C3.06.00 C2.07.07 C2.06.10 +C3.06.01 C2.06.11 C2.06.09 C2.06.05 C2.06.08 +C3.06.02 C2.06.10 C2.06.07 C2.06.11 C2.06.06 C2.06.09 +C3.06.03 C2.06.12 C2.06.14 C2.06.08 C2.05.11 +C3.06.04 C2.06.10 C2.06.13 +C3.06.05 C2.06.15 C2.06.17 C2.06.12 C2.06.14 +C3.06.06 C2.06.16 C2.06.18 +C3.06.07 C2.06.17 C2.06.19 C2.06.14 C2.05.16 +C3.06.08 C2.06.18 C2.06.21 +C3.06.09 C2.06.20 C2.06.22 +C3.06.10 C2.06.23 C2.05.24 +C3.06.11 C2.06.24 C2.06.25 +C3.06.12 C2.06.25 C2.06.27 +C3.06.13 C2.06.26 C2.06.28 +C3.06.14 C2.06.30 C2.06.29 C2.05.29 +C3.06.15 C2.07.28 C2.06.31 C2.06.30 +C3.07.00 C2.07.06 +C3.07.01 C2.07.08 C2.07.11 C2.07.07 C2.06.10 +C3.07.02 C2.07.05 C2.07.09 C2.07.12 +C3.07.03 C2.07.10 C2.07.13 +C3.07.04 C2.07.11 C2.07.14 +C3.07.05 C2.07.12 C2.07.15 +C3.07.06 C2.07.13 C2.07.16 +C3.07.07 C2.07.17 C2.06.20 +C3.07.08 C2.07.18 C2.07.20 +C3.07.09 C2.07.19 C2.07.21 +C3.07.10 C2.07.20 C2.07.22 +C3.07.11 C2.07.21 C2.07.23 +C3.07.12 C2.07.24 C2.06.26 +C3.07.13 C2.07.25 C2.07.26 +C3.07.14 C2.07.26 C2.07.27 +C3.07.15 C2.07.29 C2.07.28 +C3.08.00 C2.08.06 +C3.08.01 C2.08.07 C2.09.10 C2.08.08 C2.08.11 +C3.08.02 C2.08.08 C2.08.05 C2.08.09 C2.08.12 +C3.08.03 C2.08.10 C2.08.13 +C3.08.04 C2.08.11 C2.08.14 +C3.08.05 C2.08.12 C2.08.15 +C3.08.06 C2.08.13 C2.08.16 +C3.08.07 C2.08.17 C2.09.20 +C3.08.08 C2.08.18 C2.08.20 +C3.08.09 C2.08.19 C2.08.21 +C3.08.10 C2.08.20 C2.08.22 +C3.08.11 C2.08.21 C2.08.23 +C3.08.12 C2.08.24 C2.09.26 +C3.08.13 C2.08.25 C2.08.26 +C3.08.14 C2.08.26 C2.08.27 +C3.08.15 C2.08.28 C2.08.29 +C3.09.00 C2.09.05 C2.09.08 C2.09.06 C2.09.09 C2.09.07 C2.09.11 +C3.09.01 C2.09.07 C2.09.11 C2.09.10 +C3.09.02 C2.09.08 C2.10.11 C2.09.12 C2.09.14 +C3.09.03 C2.09.10 C2.09.13 +C3.09.04 C2.09.12 C2.09.14 C2.09.15 C2.09.17 +C3.09.05 C2.09.16 C2.09.18 +C3.09.06 C2.09.14 C2.10.16 C2.09.17 C2.09.19 +C3.09.07 C2.09.18 C2.09.21 +C3.09.08 C2.09.20 C2.09.22 +C3.09.09 C2.09.23 C2.10.24 +C3.09.10 C2.09.24 C2.09.25 +C3.09.11 C2.09.25 C2.09.27 +C3.09.12 C2.09.26 C2.09.28 +C3.09.13 C2.09.29 C2.10.29 +C3.09.14 C2.09.30 C2.09.31 C2.08.28 +C3.09.15 C2.10.29 C2.10.30 C2.09.30 C2.09.31 +C3.10.00 C2.10.06 C2.10.09 C2.09.08 C2.10.11 +C3.10.01 C2.10.07 C2.10.08 C2.10.09 C2.10.10 C2.10.12 +C3.10.02 C2.10.08 C2.11.06 C2.10.12 C2.10.13 +C3.10.03 C2.10.09 C2.10.10 C2.10.11 C2.10.14 +C3.10.04 C2.10.12 C2.10.13 C2.10.15 C2.10.17 +C3.10.05 C2.10.11 C2.10.14 C2.09.14 C2.10.16 +C3.10.06 C2.10.13 C2.11.11 C2.10.17 C2.11.15 +C3.10.07 C2.10.15 C2.10.17 C2.10.18 C2.10.19 +C3.10.08 C2.10.17 C2.11.15 C2.10.19 C2.10.21 +C3.10.09 C2.10.18 C2.10.19 C2.10.20 C2.10.22 +C3.10.10 C2.10.19 C2.10.21 C2.10.22 C2.10.23 +C3.10.11 C2.10.24 C2.10.25 +C3.10.12 C2.10.26 C2.11.25 +C3.10.13 C2.10.27 C2.10.28 +C3.10.14 C2.10.29 C2.10.30 C2.10.31 +C3.11.00 C2.11.04 C2.11.05 +C3.11.01 C2.11.05 +C3.11.02 C2.11.02 C2.11.03 C2.11.06 C2.11.07 C2.11.08 +C3.11.03 C2.11.03 C2.11.04 C2.11.08 C2.11.09 +C3.11.04 C2.11.04 C2.11.05 C2.11.09 C2.11.10 +C3.11.05 C2.11.06 C2.11.07 C2.10.13 C2.11.11 +C3.11.06 C2.11.08 C2.11.09 C2.11.12 C2.11.13 +C3.11.07 C2.11.09 C2.11.10 C2.11.13 C2.11.14 +C3.11.08 C2.11.12 C2.11.13 C2.11.16 C2.11.17 +C3.11.09 C2.11.13 C2.11.14 C2.11.17 C2.11.18 +C3.11.10 C2.11.16 C2.11.17 C2.11.19 C2.11.20 +C3.11.11 C2.11.17 C2.11.18 C2.11.20 C2.11.21 +C3.11.12 C2.11.19 C2.11.20 C2.11.22 C2.11.23 +C3.11.13 C2.11.20 C2.11.21 C2.11.23 C2.11.24 +C3.11.14 C2.11.25 C2.11.26 +C3.11.15 C2.10.28 C2.11.27 C2.11.28 C2.11.29 C2.11.30 +C3.12.00 C2.12.05 C2.12.04 +C3.12.01 C2.12.05 +C3.12.02 C2.12.03 C2.12.02 C2.12.08 C2.12.07 C2.12.06 +C3.12.03 C2.12.04 C2.12.03 C2.12.09 C2.12.08 +C3.12.04 C2.12.05 C2.12.04 C2.12.10 C2.12.09 +C3.12.05 C2.12.07 C2.12.06 C2.12.11 C2.13.13 +C3.12.06 C2.12.09 C2.12.08 C2.12.13 C2.12.12 +C3.12.07 C2.12.10 C2.12.09 C2.12.14 C2.12.13 +C3.12.08 C2.12.13 C2.12.12 C2.12.17 C2.12.16 +C3.12.09 C2.12.14 C2.12.13 C2.12.18 C2.12.17 +C3.12.10 C2.12.17 C2.12.16 C2.12.20 C2.12.19 +C3.12.11 C2.12.18 C2.12.17 C2.12.21 C2.12.20 +C3.12.12 C2.12.20 C2.12.19 C2.12.23 C2.12.22 +C3.12.13 C2.12.21 C2.12.20 C2.12.24 C2.12.23 +C3.12.14 C2.12.26 C2.12.25 +C3.12.15 C2.12.28 C2.12.27 C2.13.28 C2.12.30 C2.12.29 +C3.13.00 C2.13.10 C2.13.09 C2.13.06 C2.13.11 C2.14.08 +C3.13.01 C2.12.06 C2.13.08 C2.13.07 C2.13.13 C2.13.12 +C3.13.02 C2.13.07 C2.13.13 C2.13.12 C2.13.10 +C3.13.03 C2.13.10 C2.13.09 C2.13.14 C2.13.11 +C3.13.04 C2.13.13 C2.13.12 C2.13.17 C2.13.15 +C3.13.05 C2.13.14 C2.13.11 C2.13.16 C2.14.14 +C3.13.06 C2.12.11 C2.13.13 C2.12.15 C2.13.17 +C3.13.07 C2.13.17 C2.13.15 C2.13.19 C2.13.18 +C3.13.08 C2.12.15 C2.13.17 C2.13.21 C2.13.19 +C3.13.09 C2.13.19 C2.13.18 C2.13.22 C2.13.20 +C3.13.10 C2.13.21 C2.13.19 C2.13.23 C2.13.22 +C3.13.11 C2.13.25 C2.13.24 +C3.13.12 C2.12.25 C2.13.26 +C3.13.13 C2.13.28 C2.13.27 +C3.13.14 C2.13.30 C2.13.29 C2.14.31 C2.14.29 +C3.13.15 C2.13.31 C2.13.30 +C3.14.00 C2.14.10 C2.15.07 +C3.14.01 C2.14.08 C2.14.05 C2.14.09 C2.14.11 +C3.14.02 C2.14.09 C2.14.06 C2.14.11 C2.14.07 C2.14.10 +C3.14.03 C2.13.11 C2.14.08 C2.14.14 C2.14.12 +C3.14.04 C2.14.13 C2.14.10 +C3.14.05 C2.14.14 C2.14.12 C2.14.17 C2.14.15 +C3.14.06 C2.14.18 C2.14.16 +C3.14.07 C2.13.16 C2.14.14 C2.14.19 C2.14.17 +C3.14.08 C2.14.21 C2.14.18 +C3.14.09 C2.14.22 C2.14.20 +C3.14.10 C2.13.24 C2.14.23 +C3.14.11 C2.14.25 C2.14.24 +C3.14.12 C2.14.27 C2.14.25 +C3.14.13 C2.14.28 C2.14.26 +C3.14.14 C2.13.29 C2.14.29 C2.14.30 +C3.14.15 C2.14.31 C2.14.30 C2.15.28 +C3.15.00 C2.15.06 +C3.15.01 C2.14.10 C2.15.07 C2.15.11 C2.15.08 +C3.15.02 C2.15.12 C2.15.09 C2.15.05 +C3.15.03 C2.15.13 C2.15.10 +C3.15.04 C2.15.14 C2.15.11 +C3.15.05 C2.15.15 C2.15.12 +C3.15.06 C2.15.16 C2.15.13 +C3.15.07 C2.14.20 C2.15.17 +C3.15.08 C2.15.20 C2.15.18 +C3.15.09 C2.15.21 C2.15.19 +C3.15.10 C2.15.22 C2.15.20 +C3.15.11 C2.15.23 C2.15.21 +C3.15.12 C2.14.26 C2.15.24 +C3.15.13 C2.15.26 C2.15.25 +C3.15.14 C2.15.27 C2.15.26 +C3.15.15 C2.15.28 C2.15.29 diff --git a/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev_H6.txt b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev_H6.txt new file mode 100755 index 0000000000000000000000000000000000000000..ee97bcf6c64390b3112a9f425317dc2345e58290 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCal3DNeighborsPrev_H6.txt @@ -0,0 +1,115 @@ +# 3D FCal Neighbors Prev in Sampling for the H6 Beam Test 2004 +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Mar 10 11:16:32 2004 +# +# 3d neighbors prev in sampling are all cells touching the same +# eta phi area in the prev sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without prev sampling neighbors are not listed. +# +A2.04.00 A1.04.09 +A2.04.01 A1.04.07 +A2.04.02 A1.04.07 A1.05.13 +A2.04.03 A1.04.10 +A2.04.04 A1.04.10 +A2.04.05 A1.05.18 +A2.04.08 A1.04.09 A1.04.12 +A2.04.09 A1.04.08 A1.04.11 +A2.04.12 A1.04.12 A1.04.14 A1.04.16 +A2.04.13 A1.04.11 A1.04.13 A1.04.15 +A2.04.14 A1.04.10 A1.05.25 A1.05.29 +A2.04.17 A1.04.16 A1.04.18 +A2.04.18 A1.04.15 A1.04.17 +A2.04.21 A1.04.18 A1.04.19 +A2.04.22 A1.04.17 A1.05.38 +A2.04.24 A1.04.21 A1.04.23 +A2.04.25 A1.04.20 A1.04.22 +A2.04.27 A1.04.23 A1.04.24 +A2.04.28 A1.04.22 A1.05.48 +A2.04.30 A1.04.25 A1.04.26 +A2.04.31 A1.04.28 A1.04.29 +A2.05.00 A1.05.18 +A2.05.01 A1.05.15 +A2.05.02 A1.05.15 A1.05.19 +A2.05.03 A1.05.15 A1.05.16 A1.05.19 +A2.05.04 A1.05.19 A1.05.23 +A2.05.05 A1.05.19 A1.05.23 +A2.05.06 A1.05.16 A1.05.20 +A2.05.07 A1.05.16 A1.05.17 A1.05.20 +A2.05.08 A1.05.18 A1.05.22 A1.05.26 +A2.05.09 A1.05.29 A1.05.32 +A2.05.10 A1.05.26 A1.05.30 +A2.05.11 A1.05.23 A1.05.27 +A2.05.12 A1.05.20 A1.05.24 +A2.05.13 A1.05.17 A1.05.21 +A2.05.14 A1.05.27 A1.05.31 +A2.05.15 A1.05.24 A1.05.28 +A2.05.16 A1.05.32 A1.05.35 +A2.05.17 A1.05.30 A1.05.33 +A2.05.18 A1.05.41 A1.05.44 +A2.05.19 A1.05.39 A1.05.42 +A2.05.20 A1.05.37 A1.05.40 +A2.05.21 A1.05.34 A1.05.36 +A2.05.22 A1.05.44 A1.05.46 +A2.05.23 A1.05.42 A1.05.45 +A2.05.24 A1.05.40 A1.05.43 +A2.05.25 A1.05.50 A1.05.52 +A2.05.26 A1.05.49 A1.05.51 +A2.05.27 A1.05.47 A1.06.48 +A2.05.28 A1.04.26 A1.04.27 A1.05.56 A1.05.58 A1.05.60 +A2.05.29 A1.05.52 A1.05.53 A1.05.54 A1.05.55 A1.05.57 +A2.05.30 A1.05.61 A1.05.62 A1.05.63 +A2.05.31 A1.05.61 A1.05.62 +A2.06.00 A1.05.14 +A2.06.01 A1.06.17 +A2.06.02 A1.06.12 A1.06.15 +A2.06.03 A1.06.15 +A2.06.04 A1.06.11 A1.06.16 +A2.06.05 A1.05.21 A1.06.25 +A2.06.06 A1.06.17 A1.06.20 +A2.06.07 A1.06.32 A1.06.35 +A2.06.08 A1.06.28 A1.06.30 +A2.06.09 A1.06.23 A1.06.27 +A2.06.10 A1.06.14 A1.06.18 A1.06.22 +A2.06.11 A1.06.30 A1.06.34 +A2.06.12 A1.06.27 A1.06.29 +A2.06.13 A1.06.22 A1.06.24 +A2.06.14 A1.06.11 A1.06.13 A1.06.16 A1.06.19 +A2.06.15 A1.07.13 A1.06.26 +A2.06.16 A1.05.36 A1.06.40 +A2.06.17 A1.06.35 A1.06.37 +A2.06.18 A1.06.44 A1.06.46 +A2.06.19 A1.06.42 A1.06.43 +A2.06.20 A1.06.39 A1.06.41 +A2.06.21 A1.06.36 A1.06.38 +A2.06.22 A1.06.31 A1.06.33 +A2.06.23 A1.05.51 A1.06.51 +A2.06.24 A1.06.48 A1.06.49 +A2.06.25 A1.06.46 A1.06.47 +A2.06.26 A1.06.43 A1.06.45 +A2.06.27 A1.07.20 A1.06.41 +A2.06.28 A1.06.57 A1.05.59 A1.06.59 A1.06.60 A1.06.61 A1.06.62 +A2.06.29 A1.06.52 A1.06.53 A1.06.54 A1.06.55 A1.06.56 A1.06.58 +A2.06.30 A1.07.26 A1.06.50 +A2.07.03 A1.07.04 A1.07.05 A1.07.07 A1.07.08 A1.06.13 +A2.07.04 A1.07.05 A1.07.06 A1.07.08 A1.07.09 +A2.07.07 A1.07.07 A1.07.08 A1.07.10 A1.06.21 +A2.07.08 A1.07.08 A1.07.09 A1.07.10 A1.07.11 +A2.07.09 A1.07.12 +A2.07.11 A1.07.13 A1.07.14 +A2.07.12 A1.07.15 +A2.07.14 A1.07.16 A1.06.33 +A2.07.15 A1.07.17 +A2.07.17 A1.07.18 A1.06.38 +A2.07.18 A1.07.19 +A2.07.20 A1.07.21 +A2.07.22 A1.07.22 A1.07.23 +A2.07.23 A1.07.23 +A2.07.24 A1.07.24 A1.07.25 +A2.07.25 A1.07.25 +A2.07.26 A1.07.26 +A2.07.27 A1.07.27 A1.07.28 A1.07.29 +A2.07.28 A1.07.30 A1.07.31 +A2.07.29 A1.07.31 diff --git a/Calorimeter/CaloIdentifier/share/FCalSuperCells2DNeighborsNew-April2014.txt b/Calorimeter/CaloIdentifier/share/FCalSuperCells2DNeighborsNew-April2014.txt new file mode 100644 index 0000000000000000000000000000000000000000..7b13972534e60b8b01ae4ca8cf0d39ee8118198d --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCalSuperCells2DNeighborsNew-April2014.txt @@ -0,0 +1,779 @@ +# 2D SuperCell FCal Neighbors +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Mon Apr 21 14:47:12 2014 +# +# 2d neighbors are all touching neighbors including corners. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cell names are similar to normal cells with 'S' instead of 'A' +# for the A-side super cells and 'U' = 'S'+2 for C-side cells. +# +U1.00.00 U1.00.01 U1.01.00 U1.15.00 U1.15.01 +U1.00.01 U1.00.00 U1.00.02 U1.00.03 U1.01.00 U1.01.01 U1.01.02 U1.15.00 U1.15.01 U1.15.03 +U1.00.02 U1.00.01 U1.00.03 U1.00.04 U1.15.01 U1.15.03 U1.15.04 +U1.00.03 U1.00.01 U1.00.02 U1.00.04 U1.00.05 U1.01.01 U1.01.02 U1.01.03 U1.01.04 +U1.00.04 U1.00.02 U1.00.03 U1.00.05 U1.00.06 U1.01.04 U1.01.05 U1.15.03 U1.15.04 U1.15.05 +U1.00.05 U1.00.03 U1.00.04 U1.00.06 U1.00.07 U1.01.04 U1.01.05 U1.01.06 U1.15.04 U1.15.05 U1.15.06 +U1.00.06 U1.00.04 U1.00.05 U1.00.07 U1.01.05 U1.01.06 U1.01.07 U1.15.05 U1.15.06 U1.15.07 +U1.00.07 U1.00.05 U1.00.06 U1.00.08 U1.01.07 U1.15.06 U1.15.07 U1.15.08 +U1.00.08 U1.00.07 U1.00.09 U1.01.07 U1.01.08 U1.01.09 U1.15.08 U1.15.09 +U1.00.09 U1.00.08 U1.00.10 U1.01.08 U1.01.09 U1.01.10 U1.15.08 U1.15.09 U1.15.10 +U1.00.10 U1.00.09 U1.00.11 U1.01.10 U1.15.09 U1.15.10 U1.15.11 +U1.00.11 U1.00.10 U1.01.10 U1.01.11 U1.15.10 U1.15.11 +U1.01.00 U1.00.00 U1.00.01 U1.01.01 U1.02.00 +U1.01.01 U1.00.01 U1.00.03 U1.01.00 U1.01.02 U1.01.03 U1.02.00 U1.02.01 +U1.01.02 U1.00.01 U1.00.03 U1.01.01 U1.01.03 U1.01.04 U1.02.01 U1.02.02 U1.02.03 +U1.01.03 U1.00.03 U1.01.01 U1.01.02 U1.01.04 U1.01.05 U1.02.03 +U1.01.04 U1.00.03 U1.00.04 U1.00.05 U1.01.02 U1.01.03 U1.01.05 U1.01.06 U1.02.03 U1.02.04 U1.02.05 +U1.01.05 U1.00.04 U1.00.05 U1.00.06 U1.01.03 U1.01.04 U1.01.06 U1.02.05 +U1.01.06 U1.00.05 U1.00.06 U1.01.04 U1.01.05 U1.01.07 U1.02.05 U1.02.06 +U1.01.07 U1.00.06 U1.00.07 U1.00.08 U1.01.06 U1.01.08 U1.02.06 U1.02.07 +U1.01.08 U1.00.08 U1.00.09 U1.01.07 U1.01.09 U1.01.10 U1.02.07 U1.02.08 U1.02.09 +U1.01.09 U1.00.08 U1.00.09 U1.01.08 U1.01.10 U1.02.09 +U1.01.10 U1.00.09 U1.00.10 U1.00.11 U1.01.08 U1.01.09 U1.01.11 U1.02.09 U1.02.10 +U1.01.11 U1.00.11 U1.01.10 U1.02.10 U1.02.11 +U1.02.00 U1.01.00 U1.01.01 U1.02.01 U1.03.00 U1.03.01 +U1.02.01 U1.01.01 U1.01.02 U1.02.00 U1.02.02 U1.02.03 U1.03.00 U1.03.01 +U1.02.02 U1.01.02 U1.02.01 U1.02.03 U1.02.04 U1.03.01 U1.03.02 U1.03.03 +U1.02.03 U1.01.02 U1.01.03 U1.01.04 U1.02.01 U1.02.02 U1.02.04 U1.02.05 U1.03.02 U1.03.03 U1.03.04 +U1.02.04 U1.01.04 U1.02.02 U1.02.03 U1.02.05 U1.02.06 U1.03.03 U1.03.04 +U1.02.05 U1.01.04 U1.01.05 U1.01.06 U1.02.03 U1.02.04 U1.02.06 U1.02.07 U1.03.04 U1.03.05 U1.03.06 +U1.02.06 U1.01.06 U1.01.07 U1.02.04 U1.02.05 U1.02.07 U1.03.05 U1.03.06 +U1.02.07 U1.01.07 U1.01.08 U1.02.05 U1.02.06 U1.02.08 U1.03.06 +U1.02.08 U1.01.08 U1.02.07 U1.02.09 U1.03.06 U1.03.07 U1.03.08 +U1.02.09 U1.01.08 U1.01.09 U1.01.10 U1.02.08 U1.02.10 U1.03.08 U1.03.09 +U1.02.10 U1.01.10 U1.01.11 U1.02.09 U1.02.11 U1.03.09 U1.03.10 +U1.02.11 U1.01.11 U1.02.10 U1.03.10 U1.03.11 +U1.03.00 U1.02.00 U1.02.01 U1.03.01 U1.04.00 U1.04.01 +U1.03.01 U1.02.00 U1.02.01 U1.02.02 U1.03.00 U1.03.02 U1.03.03 U1.04.00 U1.04.01 U1.04.02 +U1.03.02 U1.02.02 U1.02.03 U1.03.01 U1.03.03 U1.03.04 U1.04.01 U1.04.02 U1.04.03 +U1.03.03 U1.02.02 U1.02.03 U1.02.04 U1.03.01 U1.03.02 U1.03.04 U1.03.05 U1.04.02 U1.04.03 U1.04.04 +U1.03.04 U1.02.03 U1.02.04 U1.02.05 U1.03.02 U1.03.03 U1.03.05 U1.04.03 U1.04.04 U1.04.05 +U1.03.05 U1.02.05 U1.02.06 U1.03.03 U1.03.04 U1.03.06 U1.04.04 U1.04.05 U1.04.06 +U1.03.06 U1.02.05 U1.02.06 U1.02.07 U1.02.08 U1.03.05 U1.03.07 U1.04.05 U1.04.06 U1.04.07 +U1.03.07 U1.02.08 U1.03.06 U1.03.08 U1.04.06 U1.04.07 U1.04.08 +U1.03.08 U1.02.08 U1.02.09 U1.03.07 U1.03.09 U1.03.10 U1.04.07 U1.04.08 U1.04.09 +U1.03.09 U1.02.09 U1.02.10 U1.03.08 U1.03.10 U1.04.08 U1.04.09 U1.04.10 +U1.03.10 U1.02.10 U1.02.11 U1.03.08 U1.03.09 U1.03.11 U1.04.09 U1.04.10 U1.04.11 +U1.03.11 U1.02.11 U1.03.10 U1.04.10 U1.04.11 +U1.04.00 U1.03.00 U1.03.01 U1.04.01 U1.05.00 U1.05.01 +U1.04.01 U1.03.00 U1.03.01 U1.03.02 U1.04.00 U1.04.02 U1.04.03 U1.05.00 U1.05.01 U1.05.02 +U1.04.02 U1.03.01 U1.03.02 U1.03.03 U1.04.01 U1.04.03 U1.04.04 U1.05.02 U1.05.03 +U1.04.03 U1.03.02 U1.03.03 U1.03.04 U1.04.01 U1.04.02 U1.04.04 U1.04.05 U1.05.02 U1.05.03 +U1.04.04 U1.03.03 U1.03.04 U1.03.05 U1.04.02 U1.04.03 U1.04.05 U1.05.03 U1.05.04 U1.05.05 +U1.04.05 U1.03.04 U1.03.05 U1.03.06 U1.04.03 U1.04.04 U1.04.06 U1.05.05 U1.05.06 +U1.04.06 U1.03.05 U1.03.06 U1.03.07 U1.04.05 U1.04.07 U1.05.05 U1.05.06 U1.05.07 +U1.04.07 U1.03.06 U1.03.07 U1.03.08 U1.04.06 U1.04.08 U1.05.07 U1.05.08 +U1.04.08 U1.03.07 U1.03.08 U1.03.09 U1.04.07 U1.04.09 U1.04.10 U1.05.07 U1.05.08 +U1.04.09 U1.03.08 U1.03.09 U1.03.10 U1.04.08 U1.04.10 U1.05.08 U1.05.09 +U1.04.10 U1.03.09 U1.03.10 U1.03.11 U1.04.08 U1.04.09 U1.04.11 U1.05.09 U1.05.10 +U1.04.11 U1.03.10 U1.03.11 U1.04.10 U1.05.10 U1.05.11 +U1.05.00 U1.04.00 U1.04.01 U1.05.01 U1.06.00 U1.06.01 +U1.05.01 U1.04.00 U1.04.01 U1.05.00 U1.05.02 U1.05.03 U1.06.01 U1.06.02 +U1.05.02 U1.04.01 U1.04.02 U1.04.03 U1.05.01 U1.05.03 U1.05.04 U1.06.02 U1.06.03 U1.06.04 +U1.05.03 U1.04.02 U1.04.03 U1.04.04 U1.05.01 U1.05.02 U1.05.04 U1.05.05 U1.06.04 +U1.05.04 U1.04.04 U1.05.02 U1.05.03 U1.05.05 U1.05.06 U1.06.04 U1.06.05 U1.06.06 +U1.05.05 U1.04.04 U1.04.05 U1.04.06 U1.05.03 U1.05.04 U1.05.06 U1.05.07 U1.06.06 +U1.05.06 U1.04.05 U1.04.06 U1.05.04 U1.05.05 U1.05.07 U1.06.06 U1.06.07 +U1.05.07 U1.04.06 U1.04.07 U1.04.08 U1.05.05 U1.05.06 U1.05.08 U1.06.07 U1.06.08 +U1.05.08 U1.04.07 U1.04.08 U1.04.09 U1.05.07 U1.05.09 U1.06.08 +U1.05.09 U1.04.09 U1.04.10 U1.05.08 U1.05.10 U1.06.08 U1.06.09 U1.06.10 +U1.05.10 U1.04.10 U1.04.11 U1.05.09 U1.05.11 U1.06.10 U1.06.11 +U1.05.11 U1.04.11 U1.05.10 U1.06.11 +U1.06.00 U1.05.00 U1.06.01 U1.07.00 U1.07.01 +U1.06.01 U1.05.00 U1.05.01 U1.06.00 U1.06.02 U1.06.03 U1.07.01 U1.07.02 U1.07.03 +U1.06.02 U1.05.01 U1.05.02 U1.06.01 U1.06.03 U1.06.04 U1.07.02 U1.07.03 +U1.06.03 U1.05.02 U1.06.01 U1.06.02 U1.06.04 U1.06.05 U1.07.03 +U1.06.04 U1.05.02 U1.05.03 U1.05.04 U1.06.02 U1.06.03 U1.06.05 U1.06.06 U1.07.03 U1.07.04 U1.07.05 +U1.06.05 U1.05.04 U1.06.03 U1.06.04 U1.06.06 U1.07.04 U1.07.05 U1.07.06 +U1.06.06 U1.05.04 U1.05.05 U1.05.06 U1.06.04 U1.06.05 U1.06.07 U1.07.05 U1.07.06 +U1.06.07 U1.05.06 U1.05.07 U1.06.06 U1.06.08 U1.07.06 U1.07.07 U1.07.08 +U1.06.08 U1.05.07 U1.05.08 U1.05.09 U1.06.07 U1.06.09 U1.06.10 U1.07.08 U1.07.09 +U1.06.09 U1.05.09 U1.06.08 U1.06.10 U1.07.09 U1.07.10 +U1.06.10 U1.05.09 U1.05.10 U1.06.08 U1.06.09 U1.06.11 U1.07.09 U1.07.10 U1.07.11 +U1.06.11 U1.05.10 U1.05.11 U1.06.10 U1.07.10 U1.07.11 +U1.07.00 U1.06.00 U1.07.01 U1.08.00 U1.08.01 +U1.07.01 U1.06.00 U1.06.01 U1.07.00 U1.07.02 U1.07.03 U1.08.00 U1.08.01 U1.08.02 +U1.07.02 U1.06.01 U1.06.02 U1.07.01 U1.07.03 U1.07.04 +U1.07.03 U1.06.01 U1.06.02 U1.06.03 U1.06.04 U1.07.01 U1.07.02 U1.07.04 U1.07.05 U1.08.01 U1.08.02 U1.08.04 +U1.07.04 U1.06.04 U1.06.05 U1.07.02 U1.07.03 U1.07.05 U1.07.06 U1.08.02 U1.08.04 U1.08.05 +U1.07.05 U1.06.04 U1.06.05 U1.06.06 U1.07.03 U1.07.04 U1.07.06 U1.07.07 U1.08.04 U1.08.05 U1.08.06 +U1.07.06 U1.06.05 U1.06.06 U1.06.07 U1.07.04 U1.07.05 U1.07.07 U1.08.05 U1.08.06 U1.08.07 +U1.07.07 U1.06.07 U1.07.05 U1.07.06 U1.07.08 U1.08.06 U1.08.07 +U1.07.08 U1.06.07 U1.06.08 U1.07.07 U1.07.09 U1.08.07 U1.08.08 U1.08.09 +U1.07.09 U1.06.08 U1.06.09 U1.06.10 U1.07.08 U1.07.10 U1.08.08 U1.08.09 U1.08.10 +U1.07.10 U1.06.09 U1.06.10 U1.06.11 U1.07.09 U1.07.11 U1.08.09 U1.08.10 U1.08.11 +U1.07.11 U1.06.10 U1.06.11 U1.07.10 U1.08.10 U1.08.11 +U1.08.00 U1.07.00 U1.07.01 U1.08.01 U1.09.00 +U1.08.01 U1.07.00 U1.07.01 U1.07.03 U1.08.00 U1.08.02 U1.08.03 U1.09.00 U1.09.01 U1.09.02 +U1.08.02 U1.07.01 U1.07.03 U1.07.04 U1.08.01 U1.08.03 U1.08.04 +U1.08.03 U1.08.01 U1.08.02 U1.08.04 U1.08.05 U1.09.01 U1.09.02 U1.09.03 U1.09.04 +U1.08.04 U1.07.03 U1.07.04 U1.07.05 U1.08.02 U1.08.03 U1.08.05 U1.08.06 U1.09.04 U1.09.05 +U1.08.05 U1.07.04 U1.07.05 U1.07.06 U1.08.03 U1.08.04 U1.08.06 U1.08.07 U1.09.04 U1.09.05 U1.09.06 +U1.08.06 U1.07.05 U1.07.06 U1.07.07 U1.08.04 U1.08.05 U1.08.07 U1.09.05 U1.09.06 U1.09.07 +U1.08.07 U1.07.06 U1.07.07 U1.07.08 U1.08.05 U1.08.06 U1.08.08 U1.09.07 +U1.08.08 U1.07.08 U1.07.09 U1.08.07 U1.08.09 U1.09.07 U1.09.08 U1.09.09 +U1.08.09 U1.07.08 U1.07.09 U1.07.10 U1.08.08 U1.08.10 U1.09.08 U1.09.09 U1.09.10 +U1.08.10 U1.07.09 U1.07.10 U1.07.11 U1.08.09 U1.08.11 U1.09.10 +U1.08.11 U1.07.10 U1.07.11 U1.08.10 U1.09.10 U1.09.11 +U1.09.00 U1.08.00 U1.08.01 U1.09.01 U1.10.00 +U1.09.01 U1.08.01 U1.08.03 U1.09.00 U1.09.02 U1.09.03 U1.10.00 U1.10.01 +U1.09.02 U1.08.01 U1.08.03 U1.09.01 U1.09.03 U1.09.04 U1.10.01 U1.10.02 U1.10.03 +U1.09.03 U1.08.03 U1.09.01 U1.09.02 U1.09.04 U1.09.05 U1.10.03 +U1.09.04 U1.08.03 U1.08.04 U1.08.05 U1.09.02 U1.09.03 U1.09.05 U1.09.06 U1.10.03 U1.10.04 U1.10.05 +U1.09.05 U1.08.04 U1.08.05 U1.08.06 U1.09.03 U1.09.04 U1.09.06 U1.10.05 +U1.09.06 U1.08.05 U1.08.06 U1.09.04 U1.09.05 U1.09.07 U1.10.05 U1.10.06 +U1.09.07 U1.08.06 U1.08.07 U1.08.08 U1.09.06 U1.09.08 U1.10.06 U1.10.07 +U1.09.08 U1.08.08 U1.08.09 U1.09.07 U1.09.09 U1.09.10 U1.10.07 U1.10.08 U1.10.09 +U1.09.09 U1.08.08 U1.08.09 U1.09.08 U1.09.10 U1.10.09 +U1.09.10 U1.08.09 U1.08.10 U1.08.11 U1.09.08 U1.09.09 U1.09.11 U1.10.09 U1.10.10 +U1.09.11 U1.08.11 U1.09.10 U1.10.10 U1.10.11 +U1.10.00 U1.09.00 U1.09.01 U1.10.01 U1.11.00 U1.11.01 +U1.10.01 U1.09.01 U1.09.02 U1.10.00 U1.10.02 U1.10.03 U1.11.00 U1.11.01 +U1.10.02 U1.09.02 U1.10.01 U1.10.03 U1.10.04 U1.11.01 U1.11.02 U1.11.03 +U1.10.03 U1.09.02 U1.09.03 U1.09.04 U1.10.01 U1.10.02 U1.10.04 U1.10.05 U1.11.02 U1.11.03 U1.11.04 +U1.10.04 U1.09.04 U1.10.02 U1.10.03 U1.10.05 U1.10.06 U1.11.03 U1.11.04 +U1.10.05 U1.09.04 U1.09.05 U1.09.06 U1.10.03 U1.10.04 U1.10.06 U1.10.07 U1.11.04 U1.11.05 U1.11.06 +U1.10.06 U1.09.06 U1.09.07 U1.10.04 U1.10.05 U1.10.07 U1.11.05 U1.11.06 +U1.10.07 U1.09.07 U1.09.08 U1.10.05 U1.10.06 U1.10.08 U1.11.06 +U1.10.08 U1.09.08 U1.10.07 U1.10.09 U1.11.06 U1.11.07 U1.11.08 +U1.10.09 U1.09.08 U1.09.09 U1.09.10 U1.10.08 U1.10.10 U1.11.08 U1.11.09 +U1.10.10 U1.09.10 U1.09.11 U1.10.09 U1.10.11 U1.11.09 U1.11.10 +U1.10.11 U1.09.11 U1.10.10 U1.11.10 U1.11.11 +U1.11.00 U1.10.00 U1.10.01 U1.11.01 U1.12.00 U1.12.01 +U1.11.01 U1.10.00 U1.10.01 U1.10.02 U1.11.00 U1.11.02 U1.11.03 U1.12.00 U1.12.01 U1.12.02 +U1.11.02 U1.10.02 U1.10.03 U1.11.01 U1.11.03 U1.11.04 U1.12.01 U1.12.02 U1.12.03 +U1.11.03 U1.10.02 U1.10.03 U1.10.04 U1.11.01 U1.11.02 U1.11.04 U1.11.05 U1.12.02 U1.12.03 U1.12.04 +U1.11.04 U1.10.03 U1.10.04 U1.10.05 U1.11.02 U1.11.03 U1.11.05 U1.12.03 U1.12.04 U1.12.05 +U1.11.05 U1.10.05 U1.10.06 U1.11.03 U1.11.04 U1.11.06 U1.12.04 U1.12.05 U1.12.06 +U1.11.06 U1.10.05 U1.10.06 U1.10.07 U1.10.08 U1.11.05 U1.11.07 U1.12.05 U1.12.06 U1.12.07 +U1.11.07 U1.10.08 U1.11.06 U1.11.08 U1.12.06 U1.12.07 U1.12.08 +U1.11.08 U1.10.08 U1.10.09 U1.11.07 U1.11.09 U1.11.10 U1.12.07 U1.12.08 U1.12.09 +U1.11.09 U1.10.09 U1.10.10 U1.11.08 U1.11.10 U1.12.08 U1.12.09 U1.12.10 +U1.11.10 U1.10.10 U1.10.11 U1.11.08 U1.11.09 U1.11.11 U1.12.09 U1.12.10 U1.12.11 +U1.11.11 U1.10.11 U1.11.10 U1.12.10 U1.12.11 +U1.12.00 U1.11.00 U1.11.01 U1.12.01 U1.13.00 U1.13.01 +U1.12.01 U1.11.00 U1.11.01 U1.11.02 U1.12.00 U1.12.02 U1.12.03 U1.13.00 U1.13.01 U1.13.02 +U1.12.02 U1.11.01 U1.11.02 U1.11.03 U1.12.01 U1.12.03 U1.12.04 U1.13.02 U1.13.03 +U1.12.03 U1.11.02 U1.11.03 U1.11.04 U1.12.01 U1.12.02 U1.12.04 U1.12.05 U1.13.02 U1.13.03 +U1.12.04 U1.11.03 U1.11.04 U1.11.05 U1.12.02 U1.12.03 U1.12.05 U1.13.03 U1.13.04 U1.13.05 +U1.12.05 U1.11.04 U1.11.05 U1.11.06 U1.12.03 U1.12.04 U1.12.06 U1.13.05 U1.13.06 +U1.12.06 U1.11.05 U1.11.06 U1.11.07 U1.12.05 U1.12.07 U1.13.05 U1.13.06 U1.13.07 +U1.12.07 U1.11.06 U1.11.07 U1.11.08 U1.12.06 U1.12.08 U1.13.07 U1.13.08 +U1.12.08 U1.11.07 U1.11.08 U1.11.09 U1.12.07 U1.12.09 U1.12.10 U1.13.07 U1.13.08 +U1.12.09 U1.11.08 U1.11.09 U1.11.10 U1.12.08 U1.12.10 U1.13.08 U1.13.09 +U1.12.10 U1.11.09 U1.11.10 U1.11.11 U1.12.08 U1.12.09 U1.12.11 U1.13.09 U1.13.10 +U1.12.11 U1.11.10 U1.11.11 U1.12.10 U1.13.10 U1.13.11 +U1.13.00 U1.12.00 U1.12.01 U1.13.01 U1.14.00 U1.14.01 +U1.13.01 U1.12.00 U1.12.01 U1.13.00 U1.13.02 U1.13.03 U1.14.01 U1.14.02 +U1.13.02 U1.12.01 U1.12.02 U1.12.03 U1.13.01 U1.13.03 U1.13.04 U1.14.02 U1.14.03 U1.14.04 +U1.13.03 U1.12.02 U1.12.03 U1.12.04 U1.13.01 U1.13.02 U1.13.04 U1.13.05 U1.14.04 +U1.13.04 U1.12.04 U1.13.02 U1.13.03 U1.13.05 U1.13.06 U1.14.04 U1.14.05 U1.14.06 +U1.13.05 U1.12.04 U1.12.05 U1.12.06 U1.13.03 U1.13.04 U1.13.06 U1.13.07 U1.14.06 +U1.13.06 U1.12.05 U1.12.06 U1.13.04 U1.13.05 U1.13.07 U1.14.06 U1.14.07 +U1.13.07 U1.12.06 U1.12.07 U1.12.08 U1.13.05 U1.13.06 U1.13.08 U1.14.07 U1.14.08 +U1.13.08 U1.12.07 U1.12.08 U1.12.09 U1.13.07 U1.13.09 U1.14.08 +U1.13.09 U1.12.09 U1.12.10 U1.13.08 U1.13.10 U1.14.08 U1.14.09 U1.14.10 +U1.13.10 U1.12.10 U1.12.11 U1.13.09 U1.13.11 U1.14.10 U1.14.11 +U1.13.11 U1.12.11 U1.13.10 U1.14.11 +U1.14.00 U1.13.00 U1.14.01 U1.15.00 U1.15.01 +U1.14.01 U1.13.00 U1.13.01 U1.14.00 U1.14.02 U1.14.03 U1.15.01 U1.15.02 U1.15.03 +U1.14.02 U1.13.01 U1.13.02 U1.14.01 U1.14.03 U1.14.04 U1.15.02 U1.15.03 +U1.14.03 U1.13.02 U1.14.01 U1.14.02 U1.14.04 U1.14.05 U1.15.03 +U1.14.04 U1.13.02 U1.13.03 U1.13.04 U1.14.02 U1.14.03 U1.14.05 U1.14.06 U1.15.03 U1.15.04 U1.15.05 +U1.14.05 U1.13.04 U1.14.03 U1.14.04 U1.14.06 U1.15.04 U1.15.05 U1.15.06 +U1.14.06 U1.13.04 U1.13.05 U1.13.06 U1.14.04 U1.14.05 U1.14.07 U1.15.05 U1.15.06 +U1.14.07 U1.13.06 U1.13.07 U1.14.06 U1.14.08 U1.15.06 U1.15.07 U1.15.08 +U1.14.08 U1.13.07 U1.13.08 U1.13.09 U1.14.07 U1.14.09 U1.14.10 U1.15.08 U1.15.09 +U1.14.09 U1.13.09 U1.14.08 U1.14.10 U1.15.09 U1.15.10 +U1.14.10 U1.13.09 U1.13.10 U1.14.08 U1.14.09 U1.14.11 U1.15.09 U1.15.10 U1.15.11 +U1.14.11 U1.13.10 U1.13.11 U1.14.10 U1.15.10 U1.15.11 +U1.15.00 U1.00.00 U1.00.01 U1.14.00 U1.15.01 +U1.15.01 U1.00.00 U1.00.01 U1.00.02 U1.14.00 U1.14.01 U1.15.00 U1.15.02 U1.15.03 +U1.15.02 U1.14.01 U1.14.02 U1.15.01 U1.15.03 U1.15.04 +U1.15.03 U1.00.01 U1.00.02 U1.00.04 U1.14.01 U1.14.02 U1.14.03 U1.14.04 U1.15.01 U1.15.02 U1.15.04 U1.15.05 +U1.15.04 U1.00.02 U1.00.04 U1.00.05 U1.14.04 U1.14.05 U1.15.02 U1.15.03 U1.15.05 U1.15.06 +U1.15.05 U1.00.04 U1.00.05 U1.00.06 U1.14.04 U1.14.05 U1.14.06 U1.15.03 U1.15.04 U1.15.06 U1.15.07 +U1.15.06 U1.00.05 U1.00.06 U1.00.07 U1.14.05 U1.14.06 U1.14.07 U1.15.04 U1.15.05 U1.15.07 +U1.15.07 U1.00.06 U1.00.07 U1.14.07 U1.15.05 U1.15.06 U1.15.08 +U1.15.08 U1.00.07 U1.00.08 U1.00.09 U1.14.07 U1.14.08 U1.15.07 U1.15.09 +U1.15.09 U1.00.08 U1.00.09 U1.00.10 U1.14.08 U1.14.09 U1.14.10 U1.15.08 U1.15.10 +U1.15.10 U1.00.09 U1.00.10 U1.00.11 U1.14.09 U1.14.10 U1.14.11 U1.15.09 U1.15.11 +U1.15.11 U1.00.10 U1.00.11 U1.14.10 U1.14.11 U1.15.10 +U2.00.00 U2.00.01 U2.00.02 U2.01.01 U2.15.00 U2.15.01 +U2.00.01 U2.00.00 U2.00.02 U2.01.01 U2.01.02 U2.15.00 U2.15.01 U2.15.02 +U2.00.02 U2.00.00 U2.00.01 U2.00.03 U2.01.02 U2.01.03 U2.15.01 U2.15.02 U2.15.03 +U2.00.03 U2.00.02 U2.00.04 U2.01.02 U2.01.03 U2.01.04 U2.15.02 U2.15.03 U2.15.04 +U2.00.04 U2.00.03 U2.00.05 U2.01.03 U2.01.04 U2.01.05 U2.15.03 U2.15.04 U2.15.05 +U2.00.05 U2.00.04 U2.00.06 U2.01.05 U2.01.06 U2.15.04 U2.15.05 U2.15.06 +U2.00.06 U2.00.05 U2.00.07 U2.01.05 U2.01.06 U2.01.07 U2.15.05 U2.15.06 U2.15.07 +U2.00.07 U2.00.06 U2.01.07 U2.15.06 U2.15.07 +U2.01.00 U2.01.01 U2.01.02 U2.02.00 U2.02.01 +U2.01.01 U2.00.00 U2.00.01 U2.01.00 U2.01.02 U2.01.03 +U2.01.02 U2.00.01 U2.00.02 U2.00.03 U2.01.00 U2.01.01 U2.01.03 U2.01.04 U2.02.01 U2.02.02 +U2.01.03 U2.00.02 U2.00.03 U2.00.04 U2.01.01 U2.01.02 U2.01.04 U2.02.02 U2.02.03 U2.02.04 +U2.01.04 U2.00.03 U2.00.04 U2.01.02 U2.01.03 U2.01.05 U2.02.04 U2.02.05 +U2.01.05 U2.00.04 U2.00.05 U2.00.06 U2.01.04 U2.01.06 U2.02.05 U2.02.06 +U2.01.06 U2.00.05 U2.00.06 U2.01.05 U2.01.07 U2.02.06 U2.02.07 +U2.01.07 U2.00.06 U2.00.07 U2.01.06 U2.02.06 U2.02.07 +U2.02.00 U2.01.00 U2.02.01 U2.02.02 U2.03.00 +U2.02.01 U2.01.00 U2.01.02 U2.02.00 U2.02.02 U2.02.03 U2.03.00 U2.03.01 +U2.02.02 U2.01.02 U2.01.03 U2.02.00 U2.02.01 U2.02.03 U2.02.04 U2.03.00 U2.03.01 +U2.02.03 U2.01.03 U2.02.01 U2.02.02 U2.02.04 U2.03.01 U2.03.02 U2.03.03 +U2.02.04 U2.01.03 U2.01.04 U2.02.02 U2.02.03 U2.02.05 U2.03.02 U2.03.03 +U2.02.05 U2.01.04 U2.01.05 U2.02.04 U2.02.06 U2.03.03 U2.03.04 U2.03.05 +U2.02.06 U2.01.05 U2.01.06 U2.01.07 U2.02.05 U2.02.07 U2.03.05 U2.03.06 +U2.02.07 U2.01.06 U2.01.07 U2.02.06 U2.03.06 U2.03.07 +U2.03.00 U2.02.00 U2.02.01 U2.02.02 U2.03.01 U2.03.02 U2.04.00 U2.04.01 +U2.03.01 U2.02.01 U2.02.02 U2.02.03 U2.03.00 U2.03.02 U2.03.03 U2.04.00 U2.04.01 U2.04.02 +U2.03.02 U2.02.03 U2.02.04 U2.03.00 U2.03.01 U2.03.03 U2.03.04 U2.04.01 U2.04.02 U2.04.03 +U2.03.03 U2.02.03 U2.02.04 U2.02.05 U2.03.01 U2.03.02 U2.03.04 U2.04.02 U2.04.03 U2.04.04 +U2.03.04 U2.02.05 U2.03.02 U2.03.03 U2.03.05 U2.04.03 U2.04.04 U2.04.05 +U2.03.05 U2.02.05 U2.02.06 U2.03.04 U2.03.06 U2.04.04 U2.04.05 U2.04.06 +U2.03.06 U2.02.06 U2.02.07 U2.03.05 U2.03.07 U2.04.05 U2.04.06 U2.04.07 +U2.03.07 U2.02.07 U2.03.06 U2.04.06 U2.04.07 +U2.04.00 U2.03.00 U2.03.01 U2.04.01 U2.04.02 U2.05.00 U2.05.01 U2.05.02 +U2.04.01 U2.03.00 U2.03.01 U2.03.02 U2.04.00 U2.04.02 U2.04.03 U2.05.01 U2.05.02 U2.05.03 +U2.04.02 U2.03.01 U2.03.02 U2.03.03 U2.04.00 U2.04.01 U2.04.03 U2.04.04 U2.05.03 U2.05.04 +U2.04.03 U2.03.02 U2.03.03 U2.03.04 U2.04.01 U2.04.02 U2.04.04 U2.05.03 U2.05.04 U2.05.05 +U2.04.04 U2.03.03 U2.03.04 U2.03.05 U2.04.02 U2.04.03 U2.04.05 U2.05.05 +U2.04.05 U2.03.04 U2.03.05 U2.03.06 U2.04.04 U2.04.06 U2.05.05 U2.05.06 +U2.04.06 U2.03.05 U2.03.06 U2.03.07 U2.04.05 U2.04.07 U2.05.06 U2.05.07 +U2.04.07 U2.03.06 U2.03.07 U2.04.06 U2.05.07 +U2.05.00 U2.04.00 U2.05.01 U2.05.02 U2.06.00 +U2.05.01 U2.04.00 U2.04.01 U2.05.00 U2.05.02 U2.05.03 U2.06.00 U2.06.01 U2.06.02 +U2.05.02 U2.04.00 U2.04.01 U2.05.00 U2.05.01 U2.05.03 U2.05.04 U2.06.02 U2.06.03 +U2.05.03 U2.04.01 U2.04.02 U2.04.03 U2.05.01 U2.05.02 U2.05.04 U2.06.03 +U2.05.04 U2.04.02 U2.04.03 U2.05.02 U2.05.03 U2.05.05 U2.06.03 U2.06.04 +U2.05.05 U2.04.03 U2.04.04 U2.04.05 U2.05.04 U2.05.06 U2.06.04 U2.06.05 +U2.05.06 U2.04.05 U2.04.06 U2.05.05 U2.05.07 U2.06.05 U2.06.06 U2.06.07 +U2.05.07 U2.04.06 U2.04.07 U2.05.06 U2.06.07 +U2.06.00 U2.05.00 U2.05.01 U2.06.01 U2.06.02 +U2.06.01 U2.05.01 U2.06.00 U2.06.02 U2.06.03 U2.07.00 U2.07.01 +U2.06.02 U2.05.01 U2.05.02 U2.06.00 U2.06.01 U2.06.03 U2.06.04 U2.07.01 U2.07.02 U2.07.03 +U2.06.03 U2.05.02 U2.05.03 U2.05.04 U2.06.01 U2.06.02 U2.06.04 U2.07.02 U2.07.03 U2.07.04 +U2.06.04 U2.05.04 U2.05.05 U2.06.02 U2.06.03 U2.06.05 U2.07.03 U2.07.04 +U2.06.05 U2.05.05 U2.05.06 U2.06.04 U2.06.06 U2.07.04 U2.07.05 U2.07.06 +U2.06.06 U2.05.06 U2.06.05 U2.06.07 U2.07.05 U2.07.06 +U2.06.07 U2.05.06 U2.05.07 U2.06.06 U2.07.06 U2.07.07 +U2.07.00 U2.06.01 U2.07.01 U2.07.02 U2.08.00 U2.08.01 +U2.07.01 U2.06.01 U2.06.02 U2.07.00 U2.07.02 U2.08.00 U2.08.01 U2.08.02 +U2.07.02 U2.06.02 U2.06.03 U2.07.00 U2.07.01 U2.07.03 U2.08.01 U2.08.02 U2.08.03 +U2.07.03 U2.06.02 U2.06.03 U2.06.04 U2.07.02 U2.07.04 U2.08.02 U2.08.03 U2.08.04 +U2.07.04 U2.06.03 U2.06.04 U2.06.05 U2.07.03 U2.07.05 U2.08.03 U2.08.04 U2.08.05 +U2.07.05 U2.06.05 U2.06.06 U2.07.04 U2.07.06 U2.08.04 U2.08.05 U2.08.06 +U2.07.06 U2.06.05 U2.06.06 U2.06.07 U2.07.05 U2.07.07 U2.08.05 U2.08.06 U2.08.07 +U2.07.07 U2.06.07 U2.07.06 U2.08.06 U2.08.07 +U2.08.00 U2.07.00 U2.07.01 U2.08.01 U2.08.02 U2.09.01 +U2.08.01 U2.07.00 U2.07.01 U2.07.02 U2.08.00 U2.08.02 U2.09.01 U2.09.02 +U2.08.02 U2.07.01 U2.07.02 U2.07.03 U2.08.00 U2.08.01 U2.08.03 U2.09.02 U2.09.03 +U2.08.03 U2.07.02 U2.07.03 U2.07.04 U2.08.02 U2.08.04 U2.09.02 U2.09.03 U2.09.04 +U2.08.04 U2.07.03 U2.07.04 U2.07.05 U2.08.03 U2.08.05 U2.09.03 U2.09.04 U2.09.05 +U2.08.05 U2.07.04 U2.07.05 U2.07.06 U2.08.04 U2.08.06 U2.09.05 U2.09.06 +U2.08.06 U2.07.05 U2.07.06 U2.07.07 U2.08.05 U2.08.07 U2.09.05 U2.09.06 U2.09.07 +U2.08.07 U2.07.06 U2.07.07 U2.08.06 U2.09.07 +U2.09.00 U2.09.01 U2.09.02 U2.10.00 U2.10.01 +U2.09.01 U2.08.00 U2.08.01 U2.09.00 U2.09.02 U2.09.03 +U2.09.02 U2.08.01 U2.08.02 U2.08.03 U2.09.00 U2.09.01 U2.09.03 U2.09.04 U2.10.01 U2.10.02 +U2.09.03 U2.08.02 U2.08.03 U2.08.04 U2.09.01 U2.09.02 U2.09.04 U2.10.02 U2.10.03 U2.10.04 +U2.09.04 U2.08.03 U2.08.04 U2.09.02 U2.09.03 U2.09.05 U2.10.04 U2.10.05 +U2.09.05 U2.08.04 U2.08.05 U2.08.06 U2.09.04 U2.09.06 U2.10.05 U2.10.06 +U2.09.06 U2.08.05 U2.08.06 U2.09.05 U2.09.07 U2.10.06 U2.10.07 +U2.09.07 U2.08.06 U2.08.07 U2.09.06 U2.10.06 U2.10.07 +U2.10.00 U2.09.00 U2.10.01 U2.10.02 U2.11.00 +U2.10.01 U2.09.00 U2.09.02 U2.10.00 U2.10.02 U2.10.03 U2.11.00 U2.11.01 +U2.10.02 U2.09.02 U2.09.03 U2.10.00 U2.10.01 U2.10.03 U2.10.04 U2.11.00 U2.11.01 +U2.10.03 U2.09.03 U2.10.01 U2.10.02 U2.10.04 U2.11.01 U2.11.02 U2.11.03 +U2.10.04 U2.09.03 U2.09.04 U2.10.02 U2.10.03 U2.10.05 U2.11.02 U2.11.03 +U2.10.05 U2.09.04 U2.09.05 U2.10.04 U2.10.06 U2.11.03 U2.11.04 U2.11.05 +U2.10.06 U2.09.05 U2.09.06 U2.09.07 U2.10.05 U2.10.07 U2.11.05 U2.11.06 +U2.10.07 U2.09.06 U2.09.07 U2.10.06 U2.11.06 U2.11.07 +U2.11.00 U2.10.00 U2.10.01 U2.10.02 U2.11.01 U2.11.02 U2.12.00 U2.12.01 +U2.11.01 U2.10.01 U2.10.02 U2.10.03 U2.11.00 U2.11.02 U2.11.03 U2.12.00 U2.12.01 U2.12.02 +U2.11.02 U2.10.03 U2.10.04 U2.11.00 U2.11.01 U2.11.03 U2.11.04 U2.12.01 U2.12.02 U2.12.03 +U2.11.03 U2.10.03 U2.10.04 U2.10.05 U2.11.01 U2.11.02 U2.11.04 U2.12.02 U2.12.03 U2.12.04 +U2.11.04 U2.10.05 U2.11.02 U2.11.03 U2.11.05 U2.12.03 U2.12.04 U2.12.05 +U2.11.05 U2.10.05 U2.10.06 U2.11.04 U2.11.06 U2.12.04 U2.12.05 U2.12.06 +U2.11.06 U2.10.06 U2.10.07 U2.11.05 U2.11.07 U2.12.05 U2.12.06 U2.12.07 +U2.11.07 U2.10.07 U2.11.06 U2.12.06 U2.12.07 +U2.12.00 U2.11.00 U2.11.01 U2.12.01 U2.12.02 U2.13.00 U2.13.01 U2.13.02 +U2.12.01 U2.11.00 U2.11.01 U2.11.02 U2.12.00 U2.12.02 U2.12.03 U2.13.01 U2.13.02 U2.13.03 +U2.12.02 U2.11.01 U2.11.02 U2.11.03 U2.12.00 U2.12.01 U2.12.03 U2.12.04 U2.13.03 U2.13.04 +U2.12.03 U2.11.02 U2.11.03 U2.11.04 U2.12.01 U2.12.02 U2.12.04 U2.13.03 U2.13.04 U2.13.05 +U2.12.04 U2.11.03 U2.11.04 U2.11.05 U2.12.02 U2.12.03 U2.12.05 U2.13.05 +U2.12.05 U2.11.04 U2.11.05 U2.11.06 U2.12.04 U2.12.06 U2.13.05 U2.13.06 +U2.12.06 U2.11.05 U2.11.06 U2.11.07 U2.12.05 U2.12.07 U2.13.06 U2.13.07 +U2.12.07 U2.11.06 U2.11.07 U2.12.06 U2.13.07 +U2.13.00 U2.12.00 U2.13.01 U2.13.02 U2.14.00 +U2.13.01 U2.12.00 U2.12.01 U2.13.00 U2.13.02 U2.13.03 U2.14.00 U2.14.01 U2.14.02 +U2.13.02 U2.12.00 U2.12.01 U2.13.00 U2.13.01 U2.13.03 U2.13.04 U2.14.02 U2.14.03 +U2.13.03 U2.12.01 U2.12.02 U2.12.03 U2.13.01 U2.13.02 U2.13.04 U2.14.03 +U2.13.04 U2.12.02 U2.12.03 U2.13.02 U2.13.03 U2.13.05 U2.14.03 U2.14.04 +U2.13.05 U2.12.03 U2.12.04 U2.12.05 U2.13.04 U2.13.06 U2.14.04 U2.14.05 +U2.13.06 U2.12.05 U2.12.06 U2.13.05 U2.13.07 U2.14.05 U2.14.06 U2.14.07 +U2.13.07 U2.12.06 U2.12.07 U2.13.06 U2.14.07 +U2.14.00 U2.13.00 U2.13.01 U2.14.01 U2.14.02 +U2.14.01 U2.13.01 U2.14.00 U2.14.02 U2.14.03 U2.15.00 U2.15.01 +U2.14.02 U2.13.01 U2.13.02 U2.14.00 U2.14.01 U2.14.03 U2.14.04 U2.15.01 U2.15.02 U2.15.03 +U2.14.03 U2.13.02 U2.13.03 U2.13.04 U2.14.01 U2.14.02 U2.14.04 U2.15.02 U2.15.03 U2.15.04 +U2.14.04 U2.13.04 U2.13.05 U2.14.02 U2.14.03 U2.14.05 U2.15.03 U2.15.04 +U2.14.05 U2.13.05 U2.13.06 U2.14.04 U2.14.06 U2.15.04 U2.15.05 U2.15.06 +U2.14.06 U2.13.06 U2.14.05 U2.14.07 U2.15.05 U2.15.06 +U2.14.07 U2.13.06 U2.13.07 U2.14.06 U2.15.06 U2.15.07 +U2.15.00 U2.00.00 U2.00.01 U2.14.01 U2.15.01 U2.15.02 +U2.15.01 U2.00.00 U2.00.01 U2.00.02 U2.14.01 U2.14.02 U2.15.00 U2.15.02 +U2.15.02 U2.00.01 U2.00.02 U2.00.03 U2.14.02 U2.14.03 U2.15.00 U2.15.01 U2.15.03 +U2.15.03 U2.00.02 U2.00.03 U2.00.04 U2.14.02 U2.14.03 U2.14.04 U2.15.02 U2.15.04 +U2.15.04 U2.00.03 U2.00.04 U2.00.05 U2.14.03 U2.14.04 U2.14.05 U2.15.03 U2.15.05 +U2.15.05 U2.00.04 U2.00.05 U2.00.06 U2.14.05 U2.14.06 U2.15.04 U2.15.06 +U2.15.06 U2.00.05 U2.00.06 U2.00.07 U2.14.05 U2.14.06 U2.14.07 U2.15.05 U2.15.07 +U2.15.07 U2.00.06 U2.00.07 U2.14.07 U2.15.06 +U3.00.00 U3.00.01 U3.01.00 U3.01.01 U3.15.00 U3.15.01 +U3.00.01 U3.00.00 U3.00.02 U3.01.01 U3.01.02 U3.15.00 U3.15.01 U3.15.02 +U3.00.02 U3.00.01 U3.00.03 U3.01.02 U3.15.01 U3.15.02 U3.15.03 +U3.00.03 U3.00.02 U3.01.02 U3.01.03 U3.15.02 U3.15.03 +U3.01.00 U3.00.00 U3.01.01 U3.02.00 U3.02.01 +U3.01.01 U3.00.00 U3.00.01 U3.01.00 U3.01.02 U3.02.01 U3.02.02 +U3.01.02 U3.00.01 U3.00.02 U3.00.03 U3.01.01 U3.01.03 U3.02.02 +U3.01.03 U3.00.03 U3.01.02 U3.02.02 U3.02.03 +U3.02.00 U3.01.00 U3.02.01 U3.03.00 U3.03.01 +U3.02.01 U3.01.00 U3.01.01 U3.02.00 U3.02.02 U3.03.01 U3.03.02 +U3.02.02 U3.01.01 U3.01.02 U3.01.03 U3.02.01 U3.02.03 U3.03.02 U3.03.03 +U3.02.03 U3.01.03 U3.02.02 U3.03.03 +U3.03.00 U3.02.00 U3.03.01 U3.04.00 U3.04.01 +U3.03.01 U3.02.00 U3.02.01 U3.03.00 U3.03.02 U3.04.00 U3.04.01 U3.04.02 +U3.03.02 U3.02.01 U3.02.02 U3.03.01 U3.03.03 U3.04.01 U3.04.02 U3.04.03 +U3.03.03 U3.02.02 U3.02.03 U3.03.02 U3.04.02 U3.04.03 +U3.04.00 U3.03.00 U3.03.01 U3.04.01 U3.05.00 +U3.04.01 U3.03.00 U3.03.01 U3.03.02 U3.04.00 U3.04.02 U3.05.00 U3.05.01 +U3.04.02 U3.03.01 U3.03.02 U3.03.03 U3.04.01 U3.04.03 U3.05.01 U3.05.02 +U3.04.03 U3.03.02 U3.03.03 U3.04.02 U3.05.02 U3.05.03 +U3.05.00 U3.04.00 U3.04.01 U3.05.01 U3.06.00 +U3.05.01 U3.04.01 U3.04.02 U3.05.00 U3.05.02 U3.06.00 U3.06.01 +U3.05.02 U3.04.02 U3.04.03 U3.05.01 U3.05.03 U3.06.01 U3.06.02 +U3.05.03 U3.04.03 U3.05.02 U3.06.02 U3.06.03 +U3.06.00 U3.05.00 U3.05.01 U3.06.01 U3.07.00 U3.07.01 +U3.06.01 U3.05.01 U3.05.02 U3.06.00 U3.06.02 U3.07.01 +U3.06.02 U3.05.02 U3.05.03 U3.06.01 U3.06.03 U3.07.01 U3.07.02 U3.07.03 +U3.06.03 U3.05.03 U3.06.02 U3.07.03 +U3.07.00 U3.06.00 U3.07.01 U3.08.00 U3.08.01 +U3.07.01 U3.06.00 U3.06.01 U3.06.02 U3.07.00 U3.07.02 U3.08.00 U3.08.01 U3.08.02 +U3.07.02 U3.06.02 U3.07.01 U3.07.03 U3.08.01 U3.08.02 U3.08.03 +U3.07.03 U3.06.02 U3.06.03 U3.07.02 U3.08.02 U3.08.03 +U3.08.00 U3.07.00 U3.07.01 U3.08.01 U3.09.00 U3.09.01 +U3.08.01 U3.07.00 U3.07.01 U3.07.02 U3.08.00 U3.08.02 U3.09.01 U3.09.02 +U3.08.02 U3.07.01 U3.07.02 U3.07.03 U3.08.01 U3.08.03 U3.09.02 +U3.08.03 U3.07.02 U3.07.03 U3.08.02 U3.09.02 U3.09.03 +U3.09.00 U3.08.00 U3.09.01 U3.10.00 U3.10.01 +U3.09.01 U3.08.00 U3.08.01 U3.09.00 U3.09.02 U3.10.01 U3.10.02 +U3.09.02 U3.08.01 U3.08.02 U3.08.03 U3.09.01 U3.09.03 U3.10.02 +U3.09.03 U3.08.03 U3.09.02 U3.10.02 U3.10.03 +U3.10.00 U3.09.00 U3.10.01 U3.11.00 U3.11.01 +U3.10.01 U3.09.00 U3.09.01 U3.10.00 U3.10.02 U3.11.01 U3.11.02 +U3.10.02 U3.09.01 U3.09.02 U3.09.03 U3.10.01 U3.10.03 U3.11.02 U3.11.03 +U3.10.03 U3.09.03 U3.10.02 U3.11.03 +U3.11.00 U3.10.00 U3.11.01 U3.12.00 U3.12.01 +U3.11.01 U3.10.00 U3.10.01 U3.11.00 U3.11.02 U3.12.00 U3.12.01 U3.12.02 +U3.11.02 U3.10.01 U3.10.02 U3.11.01 U3.11.03 U3.12.01 U3.12.02 U3.12.03 +U3.11.03 U3.10.02 U3.10.03 U3.11.02 U3.12.02 U3.12.03 +U3.12.00 U3.11.00 U3.11.01 U3.12.01 U3.13.00 +U3.12.01 U3.11.00 U3.11.01 U3.11.02 U3.12.00 U3.12.02 U3.13.00 U3.13.01 +U3.12.02 U3.11.01 U3.11.02 U3.11.03 U3.12.01 U3.12.03 U3.13.01 U3.13.02 +U3.12.03 U3.11.02 U3.11.03 U3.12.02 U3.13.02 U3.13.03 +U3.13.00 U3.12.00 U3.12.01 U3.13.01 U3.14.00 +U3.13.01 U3.12.01 U3.12.02 U3.13.00 U3.13.02 U3.14.00 U3.14.01 +U3.13.02 U3.12.02 U3.12.03 U3.13.01 U3.13.03 U3.14.01 U3.14.02 +U3.13.03 U3.12.03 U3.13.02 U3.14.02 U3.14.03 +U3.14.00 U3.13.00 U3.13.01 U3.14.01 U3.15.00 U3.15.01 +U3.14.01 U3.13.01 U3.13.02 U3.14.00 U3.14.02 U3.15.01 +U3.14.02 U3.13.02 U3.13.03 U3.14.01 U3.14.03 U3.15.01 U3.15.02 U3.15.03 +U3.14.03 U3.13.03 U3.14.02 U3.15.03 +U3.15.00 U3.00.00 U3.00.01 U3.14.00 U3.15.01 +U3.15.01 U3.00.00 U3.00.01 U3.00.02 U3.14.00 U3.14.01 U3.14.02 U3.15.00 U3.15.02 +U3.15.02 U3.00.01 U3.00.02 U3.00.03 U3.14.02 U3.15.01 U3.15.03 +U3.15.03 U3.00.02 U3.00.03 U3.14.02 U3.14.03 U3.15.02 +S1.00.00 S1.00.01 S1.01.00 S1.15.00 S1.15.01 +S1.00.01 S1.00.00 S1.00.02 S1.00.03 S1.01.00 S1.01.01 S1.01.02 S1.15.00 S1.15.01 S1.15.03 +S1.00.02 S1.00.01 S1.00.03 S1.00.04 S1.15.01 S1.15.03 S1.15.04 +S1.00.03 S1.00.01 S1.00.02 S1.00.04 S1.00.05 S1.01.01 S1.01.02 S1.01.03 S1.01.04 +S1.00.04 S1.00.02 S1.00.03 S1.00.05 S1.00.06 S1.01.04 S1.01.05 S1.15.03 S1.15.04 S1.15.05 +S1.00.05 S1.00.03 S1.00.04 S1.00.06 S1.00.07 S1.01.04 S1.01.05 S1.01.06 S1.15.04 S1.15.05 S1.15.06 +S1.00.06 S1.00.04 S1.00.05 S1.00.07 S1.01.05 S1.01.06 S1.01.07 S1.15.05 S1.15.06 S1.15.07 +S1.00.07 S1.00.05 S1.00.06 S1.00.08 S1.01.07 S1.15.06 S1.15.07 S1.15.08 +S1.00.08 S1.00.07 S1.00.09 S1.01.07 S1.01.08 S1.01.09 S1.15.08 S1.15.09 +S1.00.09 S1.00.08 S1.00.10 S1.01.08 S1.01.09 S1.01.10 S1.15.08 S1.15.09 S1.15.10 +S1.00.10 S1.00.09 S1.00.11 S1.01.10 S1.15.09 S1.15.10 S1.15.11 +S1.00.11 S1.00.10 S1.01.10 S1.01.11 S1.15.10 S1.15.11 +S1.01.00 S1.00.00 S1.00.01 S1.01.01 S1.02.00 +S1.01.01 S1.00.01 S1.00.03 S1.01.00 S1.01.02 S1.01.03 S1.02.00 S1.02.01 +S1.01.02 S1.00.01 S1.00.03 S1.01.01 S1.01.03 S1.01.04 S1.02.01 S1.02.02 S1.02.03 +S1.01.03 S1.00.03 S1.01.01 S1.01.02 S1.01.04 S1.01.05 S1.02.03 +S1.01.04 S1.00.03 S1.00.04 S1.00.05 S1.01.02 S1.01.03 S1.01.05 S1.01.06 S1.02.03 S1.02.04 S1.02.05 +S1.01.05 S1.00.04 S1.00.05 S1.00.06 S1.01.03 S1.01.04 S1.01.06 S1.02.05 +S1.01.06 S1.00.05 S1.00.06 S1.01.04 S1.01.05 S1.01.07 S1.02.05 S1.02.06 +S1.01.07 S1.00.06 S1.00.07 S1.00.08 S1.01.06 S1.01.08 S1.02.06 S1.02.07 +S1.01.08 S1.00.08 S1.00.09 S1.01.07 S1.01.09 S1.01.10 S1.02.07 S1.02.08 S1.02.09 +S1.01.09 S1.00.08 S1.00.09 S1.01.08 S1.01.10 S1.02.09 +S1.01.10 S1.00.09 S1.00.10 S1.00.11 S1.01.08 S1.01.09 S1.01.11 S1.02.09 S1.02.10 +S1.01.11 S1.00.11 S1.01.10 S1.02.10 S1.02.11 +S1.02.00 S1.01.00 S1.01.01 S1.02.01 S1.03.00 S1.03.01 +S1.02.01 S1.01.01 S1.01.02 S1.02.00 S1.02.02 S1.02.03 S1.03.00 S1.03.01 +S1.02.02 S1.01.02 S1.02.01 S1.02.03 S1.02.04 S1.03.01 S1.03.02 S1.03.03 +S1.02.03 S1.01.02 S1.01.03 S1.01.04 S1.02.01 S1.02.02 S1.02.04 S1.02.05 S1.03.02 S1.03.03 S1.03.04 +S1.02.04 S1.01.04 S1.02.02 S1.02.03 S1.02.05 S1.02.06 S1.03.03 S1.03.04 +S1.02.05 S1.01.04 S1.01.05 S1.01.06 S1.02.03 S1.02.04 S1.02.06 S1.02.07 S1.03.04 S1.03.05 S1.03.06 +S1.02.06 S1.01.06 S1.01.07 S1.02.04 S1.02.05 S1.02.07 S1.03.05 S1.03.06 +S1.02.07 S1.01.07 S1.01.08 S1.02.05 S1.02.06 S1.02.08 S1.03.06 +S1.02.08 S1.01.08 S1.02.07 S1.02.09 S1.03.06 S1.03.07 S1.03.08 +S1.02.09 S1.01.08 S1.01.09 S1.01.10 S1.02.08 S1.02.10 S1.03.08 S1.03.09 +S1.02.10 S1.01.10 S1.01.11 S1.02.09 S1.02.11 S1.03.09 S1.03.10 +S1.02.11 S1.01.11 S1.02.10 S1.03.10 S1.03.11 +S1.03.00 S1.02.00 S1.02.01 S1.03.01 S1.04.00 S1.04.01 +S1.03.01 S1.02.00 S1.02.01 S1.02.02 S1.03.00 S1.03.02 S1.03.03 S1.04.00 S1.04.01 S1.04.02 +S1.03.02 S1.02.02 S1.02.03 S1.03.01 S1.03.03 S1.03.04 S1.04.01 S1.04.02 S1.04.03 +S1.03.03 S1.02.02 S1.02.03 S1.02.04 S1.03.01 S1.03.02 S1.03.04 S1.03.05 S1.04.02 S1.04.03 S1.04.04 +S1.03.04 S1.02.03 S1.02.04 S1.02.05 S1.03.02 S1.03.03 S1.03.05 S1.04.03 S1.04.04 S1.04.05 +S1.03.05 S1.02.05 S1.02.06 S1.03.03 S1.03.04 S1.03.06 S1.04.04 S1.04.05 S1.04.06 +S1.03.06 S1.02.05 S1.02.06 S1.02.07 S1.02.08 S1.03.05 S1.03.07 S1.04.05 S1.04.06 S1.04.07 +S1.03.07 S1.02.08 S1.03.06 S1.03.08 S1.04.06 S1.04.07 S1.04.08 +S1.03.08 S1.02.08 S1.02.09 S1.03.07 S1.03.09 S1.03.10 S1.04.07 S1.04.08 S1.04.09 +S1.03.09 S1.02.09 S1.02.10 S1.03.08 S1.03.10 S1.04.08 S1.04.09 S1.04.10 +S1.03.10 S1.02.10 S1.02.11 S1.03.08 S1.03.09 S1.03.11 S1.04.09 S1.04.10 S1.04.11 +S1.03.11 S1.02.11 S1.03.10 S1.04.10 S1.04.11 +S1.04.00 S1.03.00 S1.03.01 S1.04.01 S1.05.00 S1.05.01 +S1.04.01 S1.03.00 S1.03.01 S1.03.02 S1.04.00 S1.04.02 S1.04.03 S1.05.00 S1.05.01 S1.05.02 +S1.04.02 S1.03.01 S1.03.02 S1.03.03 S1.04.01 S1.04.03 S1.04.04 S1.05.02 S1.05.03 +S1.04.03 S1.03.02 S1.03.03 S1.03.04 S1.04.01 S1.04.02 S1.04.04 S1.04.05 S1.05.02 S1.05.03 +S1.04.04 S1.03.03 S1.03.04 S1.03.05 S1.04.02 S1.04.03 S1.04.05 S1.05.03 S1.05.04 S1.05.05 +S1.04.05 S1.03.04 S1.03.05 S1.03.06 S1.04.03 S1.04.04 S1.04.06 S1.05.05 S1.05.06 +S1.04.06 S1.03.05 S1.03.06 S1.03.07 S1.04.05 S1.04.07 S1.05.05 S1.05.06 S1.05.07 +S1.04.07 S1.03.06 S1.03.07 S1.03.08 S1.04.06 S1.04.08 S1.05.07 S1.05.08 +S1.04.08 S1.03.07 S1.03.08 S1.03.09 S1.04.07 S1.04.09 S1.04.10 S1.05.07 S1.05.08 +S1.04.09 S1.03.08 S1.03.09 S1.03.10 S1.04.08 S1.04.10 S1.05.08 S1.05.09 +S1.04.10 S1.03.09 S1.03.10 S1.03.11 S1.04.08 S1.04.09 S1.04.11 S1.05.09 S1.05.10 +S1.04.11 S1.03.10 S1.03.11 S1.04.10 S1.05.10 S1.05.11 +S1.05.00 S1.04.00 S1.04.01 S1.05.01 S1.06.00 S1.06.01 +S1.05.01 S1.04.00 S1.04.01 S1.05.00 S1.05.02 S1.05.03 S1.06.01 S1.06.02 +S1.05.02 S1.04.01 S1.04.02 S1.04.03 S1.05.01 S1.05.03 S1.05.04 S1.06.02 S1.06.03 S1.06.04 +S1.05.03 S1.04.02 S1.04.03 S1.04.04 S1.05.01 S1.05.02 S1.05.04 S1.05.05 S1.06.04 +S1.05.04 S1.04.04 S1.05.02 S1.05.03 S1.05.05 S1.05.06 S1.06.04 S1.06.05 S1.06.06 +S1.05.05 S1.04.04 S1.04.05 S1.04.06 S1.05.03 S1.05.04 S1.05.06 S1.05.07 S1.06.06 +S1.05.06 S1.04.05 S1.04.06 S1.05.04 S1.05.05 S1.05.07 S1.06.06 S1.06.07 +S1.05.07 S1.04.06 S1.04.07 S1.04.08 S1.05.05 S1.05.06 S1.05.08 S1.06.07 S1.06.08 +S1.05.08 S1.04.07 S1.04.08 S1.04.09 S1.05.07 S1.05.09 S1.06.08 +S1.05.09 S1.04.09 S1.04.10 S1.05.08 S1.05.10 S1.06.08 S1.06.09 S1.06.10 +S1.05.10 S1.04.10 S1.04.11 S1.05.09 S1.05.11 S1.06.10 S1.06.11 +S1.05.11 S1.04.11 S1.05.10 S1.06.11 +S1.06.00 S1.05.00 S1.06.01 S1.07.00 S1.07.01 +S1.06.01 S1.05.00 S1.05.01 S1.06.00 S1.06.02 S1.06.03 S1.07.01 S1.07.02 S1.07.03 +S1.06.02 S1.05.01 S1.05.02 S1.06.01 S1.06.03 S1.06.04 S1.07.02 S1.07.03 +S1.06.03 S1.05.02 S1.06.01 S1.06.02 S1.06.04 S1.06.05 S1.07.03 +S1.06.04 S1.05.02 S1.05.03 S1.05.04 S1.06.02 S1.06.03 S1.06.05 S1.06.06 S1.07.03 S1.07.04 S1.07.05 +S1.06.05 S1.05.04 S1.06.03 S1.06.04 S1.06.06 S1.07.04 S1.07.05 S1.07.06 +S1.06.06 S1.05.04 S1.05.05 S1.05.06 S1.06.04 S1.06.05 S1.06.07 S1.07.05 S1.07.06 +S1.06.07 S1.05.06 S1.05.07 S1.06.06 S1.06.08 S1.07.06 S1.07.07 S1.07.08 +S1.06.08 S1.05.07 S1.05.08 S1.05.09 S1.06.07 S1.06.09 S1.06.10 S1.07.08 S1.07.09 +S1.06.09 S1.05.09 S1.06.08 S1.06.10 S1.07.09 S1.07.10 +S1.06.10 S1.05.09 S1.05.10 S1.06.08 S1.06.09 S1.06.11 S1.07.09 S1.07.10 S1.07.11 +S1.06.11 S1.05.10 S1.05.11 S1.06.10 S1.07.10 S1.07.11 +S1.07.00 S1.06.00 S1.07.01 S1.08.00 S1.08.01 +S1.07.01 S1.06.00 S1.06.01 S1.07.00 S1.07.02 S1.07.03 S1.08.00 S1.08.01 S1.08.02 +S1.07.02 S1.06.01 S1.06.02 S1.07.01 S1.07.03 S1.07.04 +S1.07.03 S1.06.01 S1.06.02 S1.06.03 S1.06.04 S1.07.01 S1.07.02 S1.07.04 S1.07.05 S1.08.01 S1.08.02 S1.08.04 +S1.07.04 S1.06.04 S1.06.05 S1.07.02 S1.07.03 S1.07.05 S1.07.06 S1.08.02 S1.08.04 S1.08.05 +S1.07.05 S1.06.04 S1.06.05 S1.06.06 S1.07.03 S1.07.04 S1.07.06 S1.07.07 S1.08.04 S1.08.05 S1.08.06 +S1.07.06 S1.06.05 S1.06.06 S1.06.07 S1.07.04 S1.07.05 S1.07.07 S1.08.05 S1.08.06 S1.08.07 +S1.07.07 S1.06.07 S1.07.05 S1.07.06 S1.07.08 S1.08.06 S1.08.07 +S1.07.08 S1.06.07 S1.06.08 S1.07.07 S1.07.09 S1.08.07 S1.08.08 S1.08.09 +S1.07.09 S1.06.08 S1.06.09 S1.06.10 S1.07.08 S1.07.10 S1.08.08 S1.08.09 S1.08.10 +S1.07.10 S1.06.09 S1.06.10 S1.06.11 S1.07.09 S1.07.11 S1.08.09 S1.08.10 S1.08.11 +S1.07.11 S1.06.10 S1.06.11 S1.07.10 S1.08.10 S1.08.11 +S1.08.00 S1.07.00 S1.07.01 S1.08.01 S1.09.00 +S1.08.01 S1.07.00 S1.07.01 S1.07.03 S1.08.00 S1.08.02 S1.08.03 S1.09.00 S1.09.01 S1.09.02 +S1.08.02 S1.07.01 S1.07.03 S1.07.04 S1.08.01 S1.08.03 S1.08.04 +S1.08.03 S1.08.01 S1.08.02 S1.08.04 S1.08.05 S1.09.01 S1.09.02 S1.09.03 S1.09.04 +S1.08.04 S1.07.03 S1.07.04 S1.07.05 S1.08.02 S1.08.03 S1.08.05 S1.08.06 S1.09.04 S1.09.05 +S1.08.05 S1.07.04 S1.07.05 S1.07.06 S1.08.03 S1.08.04 S1.08.06 S1.08.07 S1.09.04 S1.09.05 S1.09.06 +S1.08.06 S1.07.05 S1.07.06 S1.07.07 S1.08.04 S1.08.05 S1.08.07 S1.09.05 S1.09.06 S1.09.07 +S1.08.07 S1.07.06 S1.07.07 S1.07.08 S1.08.05 S1.08.06 S1.08.08 S1.09.07 +S1.08.08 S1.07.08 S1.07.09 S1.08.07 S1.08.09 S1.09.07 S1.09.08 S1.09.09 +S1.08.09 S1.07.08 S1.07.09 S1.07.10 S1.08.08 S1.08.10 S1.09.08 S1.09.09 S1.09.10 +S1.08.10 S1.07.09 S1.07.10 S1.07.11 S1.08.09 S1.08.11 S1.09.10 +S1.08.11 S1.07.10 S1.07.11 S1.08.10 S1.09.10 S1.09.11 +S1.09.00 S1.08.00 S1.08.01 S1.09.01 S1.10.00 +S1.09.01 S1.08.01 S1.08.03 S1.09.00 S1.09.02 S1.09.03 S1.10.00 S1.10.01 +S1.09.02 S1.08.01 S1.08.03 S1.09.01 S1.09.03 S1.09.04 S1.10.01 S1.10.02 S1.10.03 +S1.09.03 S1.08.03 S1.09.01 S1.09.02 S1.09.04 S1.09.05 S1.10.03 +S1.09.04 S1.08.03 S1.08.04 S1.08.05 S1.09.02 S1.09.03 S1.09.05 S1.09.06 S1.10.03 S1.10.04 S1.10.05 +S1.09.05 S1.08.04 S1.08.05 S1.08.06 S1.09.03 S1.09.04 S1.09.06 S1.10.05 +S1.09.06 S1.08.05 S1.08.06 S1.09.04 S1.09.05 S1.09.07 S1.10.05 S1.10.06 +S1.09.07 S1.08.06 S1.08.07 S1.08.08 S1.09.06 S1.09.08 S1.10.06 S1.10.07 +S1.09.08 S1.08.08 S1.08.09 S1.09.07 S1.09.09 S1.09.10 S1.10.07 S1.10.08 S1.10.09 +S1.09.09 S1.08.08 S1.08.09 S1.09.08 S1.09.10 S1.10.09 +S1.09.10 S1.08.09 S1.08.10 S1.08.11 S1.09.08 S1.09.09 S1.09.11 S1.10.09 S1.10.10 +S1.09.11 S1.08.11 S1.09.10 S1.10.10 S1.10.11 +S1.10.00 S1.09.00 S1.09.01 S1.10.01 S1.11.00 S1.11.01 +S1.10.01 S1.09.01 S1.09.02 S1.10.00 S1.10.02 S1.10.03 S1.11.00 S1.11.01 +S1.10.02 S1.09.02 S1.10.01 S1.10.03 S1.10.04 S1.11.01 S1.11.02 S1.11.03 +S1.10.03 S1.09.02 S1.09.03 S1.09.04 S1.10.01 S1.10.02 S1.10.04 S1.10.05 S1.11.02 S1.11.03 S1.11.04 +S1.10.04 S1.09.04 S1.10.02 S1.10.03 S1.10.05 S1.10.06 S1.11.03 S1.11.04 +S1.10.05 S1.09.04 S1.09.05 S1.09.06 S1.10.03 S1.10.04 S1.10.06 S1.10.07 S1.11.04 S1.11.05 S1.11.06 +S1.10.06 S1.09.06 S1.09.07 S1.10.04 S1.10.05 S1.10.07 S1.11.05 S1.11.06 +S1.10.07 S1.09.07 S1.09.08 S1.10.05 S1.10.06 S1.10.08 S1.11.06 +S1.10.08 S1.09.08 S1.10.07 S1.10.09 S1.11.06 S1.11.07 S1.11.08 +S1.10.09 S1.09.08 S1.09.09 S1.09.10 S1.10.08 S1.10.10 S1.11.08 S1.11.09 +S1.10.10 S1.09.10 S1.09.11 S1.10.09 S1.10.11 S1.11.09 S1.11.10 +S1.10.11 S1.09.11 S1.10.10 S1.11.10 S1.11.11 +S1.11.00 S1.10.00 S1.10.01 S1.11.01 S1.12.00 S1.12.01 +S1.11.01 S1.10.00 S1.10.01 S1.10.02 S1.11.00 S1.11.02 S1.11.03 S1.12.00 S1.12.01 S1.12.02 +S1.11.02 S1.10.02 S1.10.03 S1.11.01 S1.11.03 S1.11.04 S1.12.01 S1.12.02 S1.12.03 +S1.11.03 S1.10.02 S1.10.03 S1.10.04 S1.11.01 S1.11.02 S1.11.04 S1.11.05 S1.12.02 S1.12.03 S1.12.04 +S1.11.04 S1.10.03 S1.10.04 S1.10.05 S1.11.02 S1.11.03 S1.11.05 S1.12.03 S1.12.04 S1.12.05 +S1.11.05 S1.10.05 S1.10.06 S1.11.03 S1.11.04 S1.11.06 S1.12.04 S1.12.05 S1.12.06 +S1.11.06 S1.10.05 S1.10.06 S1.10.07 S1.10.08 S1.11.05 S1.11.07 S1.12.05 S1.12.06 S1.12.07 +S1.11.07 S1.10.08 S1.11.06 S1.11.08 S1.12.06 S1.12.07 S1.12.08 +S1.11.08 S1.10.08 S1.10.09 S1.11.07 S1.11.09 S1.11.10 S1.12.07 S1.12.08 S1.12.09 +S1.11.09 S1.10.09 S1.10.10 S1.11.08 S1.11.10 S1.12.08 S1.12.09 S1.12.10 +S1.11.10 S1.10.10 S1.10.11 S1.11.08 S1.11.09 S1.11.11 S1.12.09 S1.12.10 S1.12.11 +S1.11.11 S1.10.11 S1.11.10 S1.12.10 S1.12.11 +S1.12.00 S1.11.00 S1.11.01 S1.12.01 S1.13.00 S1.13.01 +S1.12.01 S1.11.00 S1.11.01 S1.11.02 S1.12.00 S1.12.02 S1.12.03 S1.13.00 S1.13.01 S1.13.02 +S1.12.02 S1.11.01 S1.11.02 S1.11.03 S1.12.01 S1.12.03 S1.12.04 S1.13.02 S1.13.03 +S1.12.03 S1.11.02 S1.11.03 S1.11.04 S1.12.01 S1.12.02 S1.12.04 S1.12.05 S1.13.02 S1.13.03 +S1.12.04 S1.11.03 S1.11.04 S1.11.05 S1.12.02 S1.12.03 S1.12.05 S1.13.03 S1.13.04 S1.13.05 +S1.12.05 S1.11.04 S1.11.05 S1.11.06 S1.12.03 S1.12.04 S1.12.06 S1.13.05 S1.13.06 +S1.12.06 S1.11.05 S1.11.06 S1.11.07 S1.12.05 S1.12.07 S1.13.05 S1.13.06 S1.13.07 +S1.12.07 S1.11.06 S1.11.07 S1.11.08 S1.12.06 S1.12.08 S1.13.07 S1.13.08 +S1.12.08 S1.11.07 S1.11.08 S1.11.09 S1.12.07 S1.12.09 S1.12.10 S1.13.07 S1.13.08 +S1.12.09 S1.11.08 S1.11.09 S1.11.10 S1.12.08 S1.12.10 S1.13.08 S1.13.09 +S1.12.10 S1.11.09 S1.11.10 S1.11.11 S1.12.08 S1.12.09 S1.12.11 S1.13.09 S1.13.10 +S1.12.11 S1.11.10 S1.11.11 S1.12.10 S1.13.10 S1.13.11 +S1.13.00 S1.12.00 S1.12.01 S1.13.01 S1.14.00 S1.14.01 +S1.13.01 S1.12.00 S1.12.01 S1.13.00 S1.13.02 S1.13.03 S1.14.01 S1.14.02 +S1.13.02 S1.12.01 S1.12.02 S1.12.03 S1.13.01 S1.13.03 S1.13.04 S1.14.02 S1.14.03 S1.14.04 +S1.13.03 S1.12.02 S1.12.03 S1.12.04 S1.13.01 S1.13.02 S1.13.04 S1.13.05 S1.14.04 +S1.13.04 S1.12.04 S1.13.02 S1.13.03 S1.13.05 S1.13.06 S1.14.04 S1.14.05 S1.14.06 +S1.13.05 S1.12.04 S1.12.05 S1.12.06 S1.13.03 S1.13.04 S1.13.06 S1.13.07 S1.14.06 +S1.13.06 S1.12.05 S1.12.06 S1.13.04 S1.13.05 S1.13.07 S1.14.06 S1.14.07 +S1.13.07 S1.12.06 S1.12.07 S1.12.08 S1.13.05 S1.13.06 S1.13.08 S1.14.07 S1.14.08 +S1.13.08 S1.12.07 S1.12.08 S1.12.09 S1.13.07 S1.13.09 S1.14.08 +S1.13.09 S1.12.09 S1.12.10 S1.13.08 S1.13.10 S1.14.08 S1.14.09 S1.14.10 +S1.13.10 S1.12.10 S1.12.11 S1.13.09 S1.13.11 S1.14.10 S1.14.11 +S1.13.11 S1.12.11 S1.13.10 S1.14.11 +S1.14.00 S1.13.00 S1.14.01 S1.15.00 S1.15.01 +S1.14.01 S1.13.00 S1.13.01 S1.14.00 S1.14.02 S1.14.03 S1.15.01 S1.15.02 S1.15.03 +S1.14.02 S1.13.01 S1.13.02 S1.14.01 S1.14.03 S1.14.04 S1.15.02 S1.15.03 +S1.14.03 S1.13.02 S1.14.01 S1.14.02 S1.14.04 S1.14.05 S1.15.03 +S1.14.04 S1.13.02 S1.13.03 S1.13.04 S1.14.02 S1.14.03 S1.14.05 S1.14.06 S1.15.03 S1.15.04 S1.15.05 +S1.14.05 S1.13.04 S1.14.03 S1.14.04 S1.14.06 S1.15.04 S1.15.05 S1.15.06 +S1.14.06 S1.13.04 S1.13.05 S1.13.06 S1.14.04 S1.14.05 S1.14.07 S1.15.05 S1.15.06 +S1.14.07 S1.13.06 S1.13.07 S1.14.06 S1.14.08 S1.15.06 S1.15.07 S1.15.08 +S1.14.08 S1.13.07 S1.13.08 S1.13.09 S1.14.07 S1.14.09 S1.14.10 S1.15.08 S1.15.09 +S1.14.09 S1.13.09 S1.14.08 S1.14.10 S1.15.09 S1.15.10 +S1.14.10 S1.13.09 S1.13.10 S1.14.08 S1.14.09 S1.14.11 S1.15.09 S1.15.10 S1.15.11 +S1.14.11 S1.13.10 S1.13.11 S1.14.10 S1.15.10 S1.15.11 +S1.15.00 S1.00.00 S1.00.01 S1.14.00 S1.15.01 +S1.15.01 S1.00.00 S1.00.01 S1.00.02 S1.14.00 S1.14.01 S1.15.00 S1.15.02 S1.15.03 +S1.15.02 S1.14.01 S1.14.02 S1.15.01 S1.15.03 S1.15.04 +S1.15.03 S1.00.01 S1.00.02 S1.00.04 S1.14.01 S1.14.02 S1.14.03 S1.14.04 S1.15.01 S1.15.02 S1.15.04 S1.15.05 +S1.15.04 S1.00.02 S1.00.04 S1.00.05 S1.14.04 S1.14.05 S1.15.02 S1.15.03 S1.15.05 S1.15.06 +S1.15.05 S1.00.04 S1.00.05 S1.00.06 S1.14.04 S1.14.05 S1.14.06 S1.15.03 S1.15.04 S1.15.06 S1.15.07 +S1.15.06 S1.00.05 S1.00.06 S1.00.07 S1.14.05 S1.14.06 S1.14.07 S1.15.04 S1.15.05 S1.15.07 +S1.15.07 S1.00.06 S1.00.07 S1.14.07 S1.15.05 S1.15.06 S1.15.08 +S1.15.08 S1.00.07 S1.00.08 S1.00.09 S1.14.07 S1.14.08 S1.15.07 S1.15.09 +S1.15.09 S1.00.08 S1.00.09 S1.00.10 S1.14.08 S1.14.09 S1.14.10 S1.15.08 S1.15.10 +S1.15.10 S1.00.09 S1.00.10 S1.00.11 S1.14.09 S1.14.10 S1.14.11 S1.15.09 S1.15.11 +S1.15.11 S1.00.10 S1.00.11 S1.14.10 S1.14.11 S1.15.10 +S2.00.00 S2.00.01 S2.00.02 S2.01.01 S2.15.00 S2.15.01 +S2.00.01 S2.00.00 S2.00.02 S2.01.01 S2.01.02 S2.15.00 S2.15.01 S2.15.02 +S2.00.02 S2.00.00 S2.00.01 S2.00.03 S2.01.02 S2.01.03 S2.15.01 S2.15.02 S2.15.03 +S2.00.03 S2.00.02 S2.00.04 S2.01.02 S2.01.03 S2.01.04 S2.15.02 S2.15.03 S2.15.04 +S2.00.04 S2.00.03 S2.00.05 S2.01.03 S2.01.04 S2.01.05 S2.15.03 S2.15.04 S2.15.05 +S2.00.05 S2.00.04 S2.00.06 S2.01.05 S2.01.06 S2.15.04 S2.15.05 S2.15.06 +S2.00.06 S2.00.05 S2.00.07 S2.01.05 S2.01.06 S2.01.07 S2.15.05 S2.15.06 S2.15.07 +S2.00.07 S2.00.06 S2.01.07 S2.15.06 S2.15.07 +S2.01.00 S2.01.01 S2.01.02 S2.02.00 S2.02.01 +S2.01.01 S2.00.00 S2.00.01 S2.01.00 S2.01.02 S2.01.03 +S2.01.02 S2.00.01 S2.00.02 S2.00.03 S2.01.00 S2.01.01 S2.01.03 S2.01.04 S2.02.01 S2.02.02 +S2.01.03 S2.00.02 S2.00.03 S2.00.04 S2.01.01 S2.01.02 S2.01.04 S2.02.02 S2.02.03 S2.02.04 +S2.01.04 S2.00.03 S2.00.04 S2.01.02 S2.01.03 S2.01.05 S2.02.04 S2.02.05 +S2.01.05 S2.00.04 S2.00.05 S2.00.06 S2.01.04 S2.01.06 S2.02.05 S2.02.06 +S2.01.06 S2.00.05 S2.00.06 S2.01.05 S2.01.07 S2.02.06 S2.02.07 +S2.01.07 S2.00.06 S2.00.07 S2.01.06 S2.02.06 S2.02.07 +S2.02.00 S2.01.00 S2.02.01 S2.02.02 S2.03.00 +S2.02.01 S2.01.00 S2.01.02 S2.02.00 S2.02.02 S2.02.03 S2.03.00 S2.03.01 +S2.02.02 S2.01.02 S2.01.03 S2.02.00 S2.02.01 S2.02.03 S2.02.04 S2.03.00 S2.03.01 +S2.02.03 S2.01.03 S2.02.01 S2.02.02 S2.02.04 S2.03.01 S2.03.02 S2.03.03 +S2.02.04 S2.01.03 S2.01.04 S2.02.02 S2.02.03 S2.02.05 S2.03.02 S2.03.03 +S2.02.05 S2.01.04 S2.01.05 S2.02.04 S2.02.06 S2.03.03 S2.03.04 S2.03.05 +S2.02.06 S2.01.05 S2.01.06 S2.01.07 S2.02.05 S2.02.07 S2.03.05 S2.03.06 +S2.02.07 S2.01.06 S2.01.07 S2.02.06 S2.03.06 S2.03.07 +S2.03.00 S2.02.00 S2.02.01 S2.02.02 S2.03.01 S2.03.02 S2.04.00 S2.04.01 +S2.03.01 S2.02.01 S2.02.02 S2.02.03 S2.03.00 S2.03.02 S2.03.03 S2.04.00 S2.04.01 S2.04.02 +S2.03.02 S2.02.03 S2.02.04 S2.03.00 S2.03.01 S2.03.03 S2.03.04 S2.04.01 S2.04.02 S2.04.03 +S2.03.03 S2.02.03 S2.02.04 S2.02.05 S2.03.01 S2.03.02 S2.03.04 S2.04.02 S2.04.03 S2.04.04 +S2.03.04 S2.02.05 S2.03.02 S2.03.03 S2.03.05 S2.04.03 S2.04.04 S2.04.05 +S2.03.05 S2.02.05 S2.02.06 S2.03.04 S2.03.06 S2.04.04 S2.04.05 S2.04.06 +S2.03.06 S2.02.06 S2.02.07 S2.03.05 S2.03.07 S2.04.05 S2.04.06 S2.04.07 +S2.03.07 S2.02.07 S2.03.06 S2.04.06 S2.04.07 +S2.04.00 S2.03.00 S2.03.01 S2.04.01 S2.04.02 S2.05.00 S2.05.01 S2.05.02 +S2.04.01 S2.03.00 S2.03.01 S2.03.02 S2.04.00 S2.04.02 S2.04.03 S2.05.01 S2.05.02 S2.05.03 +S2.04.02 S2.03.01 S2.03.02 S2.03.03 S2.04.00 S2.04.01 S2.04.03 S2.04.04 S2.05.03 S2.05.04 +S2.04.03 S2.03.02 S2.03.03 S2.03.04 S2.04.01 S2.04.02 S2.04.04 S2.05.03 S2.05.04 S2.05.05 +S2.04.04 S2.03.03 S2.03.04 S2.03.05 S2.04.02 S2.04.03 S2.04.05 S2.05.05 +S2.04.05 S2.03.04 S2.03.05 S2.03.06 S2.04.04 S2.04.06 S2.05.05 S2.05.06 +S2.04.06 S2.03.05 S2.03.06 S2.03.07 S2.04.05 S2.04.07 S2.05.06 S2.05.07 +S2.04.07 S2.03.06 S2.03.07 S2.04.06 S2.05.07 +S2.05.00 S2.04.00 S2.05.01 S2.05.02 S2.06.00 +S2.05.01 S2.04.00 S2.04.01 S2.05.00 S2.05.02 S2.05.03 S2.06.00 S2.06.01 S2.06.02 +S2.05.02 S2.04.00 S2.04.01 S2.05.00 S2.05.01 S2.05.03 S2.05.04 S2.06.02 S2.06.03 +S2.05.03 S2.04.01 S2.04.02 S2.04.03 S2.05.01 S2.05.02 S2.05.04 S2.06.03 +S2.05.04 S2.04.02 S2.04.03 S2.05.02 S2.05.03 S2.05.05 S2.06.03 S2.06.04 +S2.05.05 S2.04.03 S2.04.04 S2.04.05 S2.05.04 S2.05.06 S2.06.04 S2.06.05 +S2.05.06 S2.04.05 S2.04.06 S2.05.05 S2.05.07 S2.06.05 S2.06.06 S2.06.07 +S2.05.07 S2.04.06 S2.04.07 S2.05.06 S2.06.07 +S2.06.00 S2.05.00 S2.05.01 S2.06.01 S2.06.02 +S2.06.01 S2.05.01 S2.06.00 S2.06.02 S2.06.03 S2.07.00 S2.07.01 +S2.06.02 S2.05.01 S2.05.02 S2.06.00 S2.06.01 S2.06.03 S2.06.04 S2.07.01 S2.07.02 S2.07.03 +S2.06.03 S2.05.02 S2.05.03 S2.05.04 S2.06.01 S2.06.02 S2.06.04 S2.07.02 S2.07.03 S2.07.04 +S2.06.04 S2.05.04 S2.05.05 S2.06.02 S2.06.03 S2.06.05 S2.07.03 S2.07.04 +S2.06.05 S2.05.05 S2.05.06 S2.06.04 S2.06.06 S2.07.04 S2.07.05 S2.07.06 +S2.06.06 S2.05.06 S2.06.05 S2.06.07 S2.07.05 S2.07.06 +S2.06.07 S2.05.06 S2.05.07 S2.06.06 S2.07.06 S2.07.07 +S2.07.00 S2.06.01 S2.07.01 S2.07.02 S2.08.00 S2.08.01 +S2.07.01 S2.06.01 S2.06.02 S2.07.00 S2.07.02 S2.08.00 S2.08.01 S2.08.02 +S2.07.02 S2.06.02 S2.06.03 S2.07.00 S2.07.01 S2.07.03 S2.08.01 S2.08.02 S2.08.03 +S2.07.03 S2.06.02 S2.06.03 S2.06.04 S2.07.02 S2.07.04 S2.08.02 S2.08.03 S2.08.04 +S2.07.04 S2.06.03 S2.06.04 S2.06.05 S2.07.03 S2.07.05 S2.08.03 S2.08.04 S2.08.05 +S2.07.05 S2.06.05 S2.06.06 S2.07.04 S2.07.06 S2.08.04 S2.08.05 S2.08.06 +S2.07.06 S2.06.05 S2.06.06 S2.06.07 S2.07.05 S2.07.07 S2.08.05 S2.08.06 S2.08.07 +S2.07.07 S2.06.07 S2.07.06 S2.08.06 S2.08.07 +S2.08.00 S2.07.00 S2.07.01 S2.08.01 S2.08.02 S2.09.01 +S2.08.01 S2.07.00 S2.07.01 S2.07.02 S2.08.00 S2.08.02 S2.09.01 S2.09.02 +S2.08.02 S2.07.01 S2.07.02 S2.07.03 S2.08.00 S2.08.01 S2.08.03 S2.09.02 S2.09.03 +S2.08.03 S2.07.02 S2.07.03 S2.07.04 S2.08.02 S2.08.04 S2.09.02 S2.09.03 S2.09.04 +S2.08.04 S2.07.03 S2.07.04 S2.07.05 S2.08.03 S2.08.05 S2.09.03 S2.09.04 S2.09.05 +S2.08.05 S2.07.04 S2.07.05 S2.07.06 S2.08.04 S2.08.06 S2.09.05 S2.09.06 +S2.08.06 S2.07.05 S2.07.06 S2.07.07 S2.08.05 S2.08.07 S2.09.05 S2.09.06 S2.09.07 +S2.08.07 S2.07.06 S2.07.07 S2.08.06 S2.09.07 +S2.09.00 S2.09.01 S2.09.02 S2.10.00 S2.10.01 +S2.09.01 S2.08.00 S2.08.01 S2.09.00 S2.09.02 S2.09.03 +S2.09.02 S2.08.01 S2.08.02 S2.08.03 S2.09.00 S2.09.01 S2.09.03 S2.09.04 S2.10.01 S2.10.02 +S2.09.03 S2.08.02 S2.08.03 S2.08.04 S2.09.01 S2.09.02 S2.09.04 S2.10.02 S2.10.03 S2.10.04 +S2.09.04 S2.08.03 S2.08.04 S2.09.02 S2.09.03 S2.09.05 S2.10.04 S2.10.05 +S2.09.05 S2.08.04 S2.08.05 S2.08.06 S2.09.04 S2.09.06 S2.10.05 S2.10.06 +S2.09.06 S2.08.05 S2.08.06 S2.09.05 S2.09.07 S2.10.06 S2.10.07 +S2.09.07 S2.08.06 S2.08.07 S2.09.06 S2.10.06 S2.10.07 +S2.10.00 S2.09.00 S2.10.01 S2.10.02 S2.11.00 +S2.10.01 S2.09.00 S2.09.02 S2.10.00 S2.10.02 S2.10.03 S2.11.00 S2.11.01 +S2.10.02 S2.09.02 S2.09.03 S2.10.00 S2.10.01 S2.10.03 S2.10.04 S2.11.00 S2.11.01 +S2.10.03 S2.09.03 S2.10.01 S2.10.02 S2.10.04 S2.11.01 S2.11.02 S2.11.03 +S2.10.04 S2.09.03 S2.09.04 S2.10.02 S2.10.03 S2.10.05 S2.11.02 S2.11.03 +S2.10.05 S2.09.04 S2.09.05 S2.10.04 S2.10.06 S2.11.03 S2.11.04 S2.11.05 +S2.10.06 S2.09.05 S2.09.06 S2.09.07 S2.10.05 S2.10.07 S2.11.05 S2.11.06 +S2.10.07 S2.09.06 S2.09.07 S2.10.06 S2.11.06 S2.11.07 +S2.11.00 S2.10.00 S2.10.01 S2.10.02 S2.11.01 S2.11.02 S2.12.00 S2.12.01 +S2.11.01 S2.10.01 S2.10.02 S2.10.03 S2.11.00 S2.11.02 S2.11.03 S2.12.00 S2.12.01 S2.12.02 +S2.11.02 S2.10.03 S2.10.04 S2.11.00 S2.11.01 S2.11.03 S2.11.04 S2.12.01 S2.12.02 S2.12.03 +S2.11.03 S2.10.03 S2.10.04 S2.10.05 S2.11.01 S2.11.02 S2.11.04 S2.12.02 S2.12.03 S2.12.04 +S2.11.04 S2.10.05 S2.11.02 S2.11.03 S2.11.05 S2.12.03 S2.12.04 S2.12.05 +S2.11.05 S2.10.05 S2.10.06 S2.11.04 S2.11.06 S2.12.04 S2.12.05 S2.12.06 +S2.11.06 S2.10.06 S2.10.07 S2.11.05 S2.11.07 S2.12.05 S2.12.06 S2.12.07 +S2.11.07 S2.10.07 S2.11.06 S2.12.06 S2.12.07 +S2.12.00 S2.11.00 S2.11.01 S2.12.01 S2.12.02 S2.13.00 S2.13.01 S2.13.02 +S2.12.01 S2.11.00 S2.11.01 S2.11.02 S2.12.00 S2.12.02 S2.12.03 S2.13.01 S2.13.02 S2.13.03 +S2.12.02 S2.11.01 S2.11.02 S2.11.03 S2.12.00 S2.12.01 S2.12.03 S2.12.04 S2.13.03 S2.13.04 +S2.12.03 S2.11.02 S2.11.03 S2.11.04 S2.12.01 S2.12.02 S2.12.04 S2.13.03 S2.13.04 S2.13.05 +S2.12.04 S2.11.03 S2.11.04 S2.11.05 S2.12.02 S2.12.03 S2.12.05 S2.13.05 +S2.12.05 S2.11.04 S2.11.05 S2.11.06 S2.12.04 S2.12.06 S2.13.05 S2.13.06 +S2.12.06 S2.11.05 S2.11.06 S2.11.07 S2.12.05 S2.12.07 S2.13.06 S2.13.07 +S2.12.07 S2.11.06 S2.11.07 S2.12.06 S2.13.07 +S2.13.00 S2.12.00 S2.13.01 S2.13.02 S2.14.00 +S2.13.01 S2.12.00 S2.12.01 S2.13.00 S2.13.02 S2.13.03 S2.14.00 S2.14.01 S2.14.02 +S2.13.02 S2.12.00 S2.12.01 S2.13.00 S2.13.01 S2.13.03 S2.13.04 S2.14.02 S2.14.03 +S2.13.03 S2.12.01 S2.12.02 S2.12.03 S2.13.01 S2.13.02 S2.13.04 S2.14.03 +S2.13.04 S2.12.02 S2.12.03 S2.13.02 S2.13.03 S2.13.05 S2.14.03 S2.14.04 +S2.13.05 S2.12.03 S2.12.04 S2.12.05 S2.13.04 S2.13.06 S2.14.04 S2.14.05 +S2.13.06 S2.12.05 S2.12.06 S2.13.05 S2.13.07 S2.14.05 S2.14.06 S2.14.07 +S2.13.07 S2.12.06 S2.12.07 S2.13.06 S2.14.07 +S2.14.00 S2.13.00 S2.13.01 S2.14.01 S2.14.02 +S2.14.01 S2.13.01 S2.14.00 S2.14.02 S2.14.03 S2.15.00 S2.15.01 +S2.14.02 S2.13.01 S2.13.02 S2.14.00 S2.14.01 S2.14.03 S2.14.04 S2.15.01 S2.15.02 S2.15.03 +S2.14.03 S2.13.02 S2.13.03 S2.13.04 S2.14.01 S2.14.02 S2.14.04 S2.15.02 S2.15.03 S2.15.04 +S2.14.04 S2.13.04 S2.13.05 S2.14.02 S2.14.03 S2.14.05 S2.15.03 S2.15.04 +S2.14.05 S2.13.05 S2.13.06 S2.14.04 S2.14.06 S2.15.04 S2.15.05 S2.15.06 +S2.14.06 S2.13.06 S2.14.05 S2.14.07 S2.15.05 S2.15.06 +S2.14.07 S2.13.06 S2.13.07 S2.14.06 S2.15.06 S2.15.07 +S2.15.00 S2.00.00 S2.00.01 S2.14.01 S2.15.01 S2.15.02 +S2.15.01 S2.00.00 S2.00.01 S2.00.02 S2.14.01 S2.14.02 S2.15.00 S2.15.02 +S2.15.02 S2.00.01 S2.00.02 S2.00.03 S2.14.02 S2.14.03 S2.15.00 S2.15.01 S2.15.03 +S2.15.03 S2.00.02 S2.00.03 S2.00.04 S2.14.02 S2.14.03 S2.14.04 S2.15.02 S2.15.04 +S2.15.04 S2.00.03 S2.00.04 S2.00.05 S2.14.03 S2.14.04 S2.14.05 S2.15.03 S2.15.05 +S2.15.05 S2.00.04 S2.00.05 S2.00.06 S2.14.05 S2.14.06 S2.15.04 S2.15.06 +S2.15.06 S2.00.05 S2.00.06 S2.00.07 S2.14.05 S2.14.06 S2.14.07 S2.15.05 S2.15.07 +S2.15.07 S2.00.06 S2.00.07 S2.14.07 S2.15.06 +S3.00.00 S3.00.01 S3.01.00 S3.01.01 S3.15.00 S3.15.01 +S3.00.01 S3.00.00 S3.00.02 S3.01.01 S3.01.02 S3.15.00 S3.15.01 S3.15.02 +S3.00.02 S3.00.01 S3.00.03 S3.01.02 S3.15.01 S3.15.02 S3.15.03 +S3.00.03 S3.00.02 S3.01.02 S3.01.03 S3.15.02 S3.15.03 +S3.01.00 S3.00.00 S3.01.01 S3.02.00 S3.02.01 +S3.01.01 S3.00.00 S3.00.01 S3.01.00 S3.01.02 S3.02.01 S3.02.02 +S3.01.02 S3.00.01 S3.00.02 S3.00.03 S3.01.01 S3.01.03 S3.02.02 +S3.01.03 S3.00.03 S3.01.02 S3.02.02 S3.02.03 +S3.02.00 S3.01.00 S3.02.01 S3.03.00 S3.03.01 +S3.02.01 S3.01.00 S3.01.01 S3.02.00 S3.02.02 S3.03.01 S3.03.02 +S3.02.02 S3.01.01 S3.01.02 S3.01.03 S3.02.01 S3.02.03 S3.03.02 S3.03.03 +S3.02.03 S3.01.03 S3.02.02 S3.03.03 +S3.03.00 S3.02.00 S3.03.01 S3.04.00 S3.04.01 +S3.03.01 S3.02.00 S3.02.01 S3.03.00 S3.03.02 S3.04.00 S3.04.01 S3.04.02 +S3.03.02 S3.02.01 S3.02.02 S3.03.01 S3.03.03 S3.04.01 S3.04.02 S3.04.03 +S3.03.03 S3.02.02 S3.02.03 S3.03.02 S3.04.02 S3.04.03 +S3.04.00 S3.03.00 S3.03.01 S3.04.01 S3.05.00 +S3.04.01 S3.03.00 S3.03.01 S3.03.02 S3.04.00 S3.04.02 S3.05.00 S3.05.01 +S3.04.02 S3.03.01 S3.03.02 S3.03.03 S3.04.01 S3.04.03 S3.05.01 S3.05.02 +S3.04.03 S3.03.02 S3.03.03 S3.04.02 S3.05.02 S3.05.03 +S3.05.00 S3.04.00 S3.04.01 S3.05.01 S3.06.00 +S3.05.01 S3.04.01 S3.04.02 S3.05.00 S3.05.02 S3.06.00 S3.06.01 +S3.05.02 S3.04.02 S3.04.03 S3.05.01 S3.05.03 S3.06.01 S3.06.02 +S3.05.03 S3.04.03 S3.05.02 S3.06.02 S3.06.03 +S3.06.00 S3.05.00 S3.05.01 S3.06.01 S3.07.00 S3.07.01 +S3.06.01 S3.05.01 S3.05.02 S3.06.00 S3.06.02 S3.07.01 +S3.06.02 S3.05.02 S3.05.03 S3.06.01 S3.06.03 S3.07.01 S3.07.02 S3.07.03 +S3.06.03 S3.05.03 S3.06.02 S3.07.03 +S3.07.00 S3.06.00 S3.07.01 S3.08.00 S3.08.01 +S3.07.01 S3.06.00 S3.06.01 S3.06.02 S3.07.00 S3.07.02 S3.08.00 S3.08.01 S3.08.02 +S3.07.02 S3.06.02 S3.07.01 S3.07.03 S3.08.01 S3.08.02 S3.08.03 +S3.07.03 S3.06.02 S3.06.03 S3.07.02 S3.08.02 S3.08.03 +S3.08.00 S3.07.00 S3.07.01 S3.08.01 S3.09.00 S3.09.01 +S3.08.01 S3.07.00 S3.07.01 S3.07.02 S3.08.00 S3.08.02 S3.09.01 S3.09.02 +S3.08.02 S3.07.01 S3.07.02 S3.07.03 S3.08.01 S3.08.03 S3.09.02 +S3.08.03 S3.07.02 S3.07.03 S3.08.02 S3.09.02 S3.09.03 +S3.09.00 S3.08.00 S3.09.01 S3.10.00 S3.10.01 +S3.09.01 S3.08.00 S3.08.01 S3.09.00 S3.09.02 S3.10.01 S3.10.02 +S3.09.02 S3.08.01 S3.08.02 S3.08.03 S3.09.01 S3.09.03 S3.10.02 +S3.09.03 S3.08.03 S3.09.02 S3.10.02 S3.10.03 +S3.10.00 S3.09.00 S3.10.01 S3.11.00 S3.11.01 +S3.10.01 S3.09.00 S3.09.01 S3.10.00 S3.10.02 S3.11.01 S3.11.02 +S3.10.02 S3.09.01 S3.09.02 S3.09.03 S3.10.01 S3.10.03 S3.11.02 S3.11.03 +S3.10.03 S3.09.03 S3.10.02 S3.11.03 +S3.11.00 S3.10.00 S3.11.01 S3.12.00 S3.12.01 +S3.11.01 S3.10.00 S3.10.01 S3.11.00 S3.11.02 S3.12.00 S3.12.01 S3.12.02 +S3.11.02 S3.10.01 S3.10.02 S3.11.01 S3.11.03 S3.12.01 S3.12.02 S3.12.03 +S3.11.03 S3.10.02 S3.10.03 S3.11.02 S3.12.02 S3.12.03 +S3.12.00 S3.11.00 S3.11.01 S3.12.01 S3.13.00 +S3.12.01 S3.11.00 S3.11.01 S3.11.02 S3.12.00 S3.12.02 S3.13.00 S3.13.01 +S3.12.02 S3.11.01 S3.11.02 S3.11.03 S3.12.01 S3.12.03 S3.13.01 S3.13.02 +S3.12.03 S3.11.02 S3.11.03 S3.12.02 S3.13.02 S3.13.03 +S3.13.00 S3.12.00 S3.12.01 S3.13.01 S3.14.00 +S3.13.01 S3.12.01 S3.12.02 S3.13.00 S3.13.02 S3.14.00 S3.14.01 +S3.13.02 S3.12.02 S3.12.03 S3.13.01 S3.13.03 S3.14.01 S3.14.02 +S3.13.03 S3.12.03 S3.13.02 S3.14.02 S3.14.03 +S3.14.00 S3.13.00 S3.13.01 S3.14.01 S3.15.00 S3.15.01 +S3.14.01 S3.13.01 S3.13.02 S3.14.00 S3.14.02 S3.15.01 +S3.14.02 S3.13.02 S3.13.03 S3.14.01 S3.14.03 S3.15.01 S3.15.02 S3.15.03 +S3.14.03 S3.13.03 S3.14.02 S3.15.03 +S3.15.00 S3.00.00 S3.00.01 S3.14.00 S3.15.01 +S3.15.01 S3.00.00 S3.00.01 S3.00.02 S3.14.00 S3.14.01 S3.14.02 S3.15.00 S3.15.02 +S3.15.02 S3.00.01 S3.00.02 S3.00.03 S3.14.02 S3.15.01 S3.15.03 +S3.15.03 S3.00.02 S3.00.03 S3.14.02 S3.14.03 S3.15.02 diff --git a/Calorimeter/CaloIdentifier/share/FCalSuperCells3DNeighborsNextNew-April2014.txt b/Calorimeter/CaloIdentifier/share/FCalSuperCells3DNeighborsNextNew-April2014.txt new file mode 100644 index 0000000000000000000000000000000000000000..d8c62b6ce5f6765478814c0c8f102c0fab07631f --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCalSuperCells3DNeighborsNextNew-April2014.txt @@ -0,0 +1,631 @@ +# 3D SuperCell FCal Neighbors Next in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Mon Apr 21 14:47:12 2014 +# +# 3d neighbors next in sampling are all cells touching the same +# eta phi area in the next sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without next sampling neighbors are not listed. +# Cell names are similar to normal cells with 'S' instead of 'A' +# for the A-side super cells and 'U' = 'S'+2 for C-side cells. +# +U1.00.00 U2.00.00 +U1.00.01 U2.00.00 U2.00.01 U2.00.02 +U1.00.02 U2.00.02 +U1.00.03 U2.00.02 U2.00.03 U2.01.02 +U1.00.04 U2.00.03 U2.00.04 +U1.00.05 U2.00.04 +U1.00.06 U2.00.04 U2.00.05 U2.01.05 +U1.00.07 U2.00.05 +U1.00.08 U2.00.06 U2.01.06 +U1.00.09 U2.00.06 U2.01.06 U2.01.07 +U1.00.10 U2.00.06 +U1.00.11 U2.00.06 U2.00.07 +U1.01.00 U2.00.00 U2.01.00 U2.01.01 +U1.01.01 U2.00.01 U2.01.00 U2.01.01 U2.01.02 U2.02.00 +U1.01.02 U2.01.01 U2.01.02 +U1.01.03 U2.01.02 U2.01.03 +U1.01.04 U2.00.03 U2.01.03 U2.01.04 +U1.01.05 U2.00.04 U2.01.04 +U1.01.06 U2.01.04 U2.01.05 +U1.01.07 U2.01.05 U2.01.06 +U1.01.08 U2.00.06 U2.01.05 U2.01.06 U2.02.06 +U1.01.09 U2.01.06 U2.01.07 +U1.01.10 U2.01.07 U2.02.07 +U1.01.11 U2.00.07 U2.01.07 U2.02.07 +U1.02.00 U2.02.00 U2.02.01 U2.03.00 +U1.02.01 U2.01.02 U2.02.00 U2.02.01 U2.02.02 +U1.02.02 U2.02.02 U2.02.03 U2.03.01 +U1.02.03 U2.02.02 U2.02.03 +U1.02.04 U2.02.03 U2.02.04 +U1.02.05 U2.01.04 U2.02.04 U2.03.03 +U1.02.06 U2.02.04 U2.02.05 +U1.02.07 U2.01.05 U2.02.04 U2.02.05 U2.02.06 +U1.02.08 U2.01.06 U2.02.05 U2.02.06 U2.03.05 +U1.02.09 U2.01.06 U2.02.06 +U1.02.10 U2.02.06 U2.02.07 +U1.02.11 U2.02.07 +U1.03.00 U2.02.01 U2.03.00 +U1.03.01 U2.02.01 U2.02.02 U2.03.00 U2.03.01 U2.03.02 +U1.03.02 U2.03.01 U2.03.02 +U1.03.03 U2.02.03 U2.03.02 U2.03.03 +U1.03.04 U2.02.03 U2.02.04 U2.03.02 U2.03.03 U2.03.04 +U1.03.05 U2.03.03 U2.03.04 +U1.03.06 U2.02.05 U2.03.04 U2.03.05 +U1.03.07 U2.03.04 U2.03.05 U2.03.06 +U1.03.08 U2.02.06 U2.03.06 +U1.03.09 U2.02.06 U2.02.07 U2.03.06 +U1.03.10 U2.02.07 U2.03.06 U2.03.07 +U1.03.11 U2.02.07 U2.03.06 U2.03.07 +U1.04.00 U2.03.00 U2.04.00 +U1.04.01 U2.03.01 U2.04.00 U2.04.01 U2.04.02 +U1.04.02 U2.03.01 U2.03.02 U2.04.01 U2.04.02 +U1.04.03 U2.03.02 U2.04.02 U2.04.03 +U1.04.04 U2.03.03 U2.04.02 U2.04.03 U2.04.04 +U1.04.05 U2.03.03 U2.03.04 U2.04.03 U2.04.04 +U1.04.06 U2.03.05 U2.04.04 U2.04.05 +U1.04.07 U2.03.05 U2.03.06 U2.04.05 U2.04.06 +U1.04.08 U2.03.06 U2.04.06 +U1.04.09 U2.03.06 U2.04.06 U2.05.07 +U1.04.10 U2.03.07 U2.04.06 U2.04.07 U2.05.07 +U1.04.11 U2.03.07 U2.04.07 +U1.05.00 U2.04.00 U2.05.00 U2.05.01 U2.05.02 U2.06.00 +U1.05.01 U2.04.00 U2.04.01 U2.05.00 U2.05.01 U2.05.02 U2.05.03 U2.06.02 +U1.05.02 U2.04.01 U2.05.02 U2.05.03 +U1.05.03 U2.04.02 U2.04.03 U2.05.03 U2.05.04 +U1.05.04 U2.04.03 U2.05.03 U2.05.04 U2.05.05 U2.06.04 +U1.05.05 U2.04.03 U2.04.04 U2.05.04 U2.05.05 +U1.05.06 U2.04.04 U2.04.05 U2.05.04 U2.05.05 +U1.05.07 U2.04.05 U2.05.05 U2.05.06 +U1.05.08 U2.04.06 U2.05.06 U2.05.07 U2.06.06 +U1.05.09 U2.05.06 U2.05.07 +U1.05.10 U2.04.07 U2.05.06 U2.05.07 +U1.05.11 U2.05.07 +U1.06.00 U2.06.00 U2.06.01 U2.07.00 +U1.06.01 U2.05.01 U2.06.00 U2.06.01 U2.06.02 U2.06.03 U2.07.01 +U1.06.02 U2.05.02 U2.06.01 U2.06.02 U2.06.03 +U1.06.03 U2.06.02 U2.06.03 U2.06.04 +U1.06.04 U2.05.04 U2.06.03 U2.06.04 U2.07.03 U2.07.04 +U1.06.05 U2.06.04 U2.06.05 U2.07.04 +U1.06.06 U2.05.05 U2.06.04 U2.06.05 U2.06.06 +U1.06.07 U2.05.06 U2.06.05 U2.06.06 +U1.06.08 U2.05.06 U2.06.06 U2.06.07 +U1.06.09 U2.06.07 +U1.06.10 U2.05.07 U2.06.07 +U1.06.11 U2.05.07 U2.06.07 +U1.07.00 U2.07.00 U2.07.01 +U1.07.01 U2.07.00 U2.07.01 U2.07.02 +U1.07.02 U2.06.02 U2.07.01 U2.07.02 U2.07.03 +U1.07.03 U2.06.02 U2.06.03 U2.07.02 U2.07.03 +U1.07.04 U2.07.03 U2.07.04 +U1.07.05 U2.06.05 U2.07.03 U2.07.04 U2.07.05 +U1.07.06 U2.06.05 U2.07.04 U2.07.05 +U1.07.07 U2.07.05 U2.07.06 +U1.07.08 U2.06.06 U2.07.05 U2.07.06 +U1.07.09 U2.06.06 U2.06.07 U2.07.06 +U1.07.10 U2.07.06 U2.07.07 +U1.07.11 U2.06.07 U2.07.07 +U1.08.00 U2.08.00 U2.08.01 +U1.08.01 U2.08.00 U2.08.01 U2.08.02 U2.09.02 +U1.08.02 U2.08.02 U2.08.03 +U1.08.03 U2.08.02 U2.08.03 U2.08.04 U2.09.02 U2.09.03 +U1.08.04 U2.08.03 U2.08.04 +U1.08.05 U2.08.04 U2.08.05 U2.09.05 +U1.08.06 U2.08.04 U2.08.05 U2.09.05 +U1.08.07 U2.08.05 U2.08.06 +U1.08.08 U2.08.06 U2.09.06 U2.09.07 +U1.08.09 U2.08.06 U2.09.07 +U1.08.10 U2.08.06 U2.08.07 +U1.08.11 U2.08.07 U2.09.07 +U1.09.00 U2.08.00 U2.09.00 U2.09.01 +U1.09.01 U2.08.01 U2.09.00 U2.09.01 U2.09.02 U2.09.03 U2.10.00 U2.10.01 +U1.09.02 U2.09.01 U2.09.02 U2.09.03 U2.10.02 +U1.09.03 U2.09.02 U2.09.03 U2.09.04 +U1.09.04 U2.08.03 U2.08.04 U2.09.03 U2.09.04 U2.10.04 +U1.09.05 U2.08.04 U2.09.04 U2.09.05 +U1.09.06 U2.09.04 U2.09.05 U2.09.06 U2.10.05 +U1.09.07 U2.09.05 U2.09.06 U2.10.06 +U1.09.08 U2.09.06 U2.09.07 U2.10.06 +U1.09.09 U2.09.07 U2.10.07 +U1.09.10 U2.09.07 U2.10.07 +U1.09.11 U2.09.07 U2.10.07 +U1.10.00 U2.10.00 U2.10.01 U2.10.02 U2.11.00 +U1.10.01 U2.09.02 U2.10.00 U2.10.01 U2.10.02 U2.10.03 U2.11.00 U2.11.01 +U1.10.02 U2.10.02 U2.10.03 U2.11.01 +U1.10.03 U2.10.02 U2.10.03 U2.10.04 U2.11.02 +U1.10.04 U2.10.03 U2.10.04 U2.11.02 U2.11.03 +U1.10.05 U2.09.04 U2.10.04 U2.10.05 U2.11.03 U2.11.04 +U1.10.06 U2.10.04 U2.10.05 U2.11.04 +U1.10.07 U2.10.05 U2.10.06 U2.11.04 U2.11.05 +U1.10.08 U2.09.06 U2.10.06 U2.11.05 U2.11.06 +U1.10.09 U2.10.06 U2.10.07 U2.11.06 +U1.10.10 U2.10.06 U2.10.07 +U1.10.11 U2.10.07 U2.11.07 +U1.11.00 U2.11.00 U2.12.00 +U1.11.01 U2.11.00 U2.11.01 U2.11.02 U2.12.01 +U1.11.02 U2.11.01 U2.11.02 U2.12.01 U2.12.02 +U1.11.03 U2.11.02 U2.11.03 U2.12.02 +U1.11.04 U2.11.02 U2.11.03 U2.11.04 U2.12.03 +U1.11.05 U2.11.03 U2.11.04 U2.12.03 U2.12.04 +U1.11.06 U2.11.04 U2.11.05 U2.12.05 +U1.11.07 U2.11.05 U2.11.06 U2.12.05 U2.12.06 +U1.11.08 U2.11.06 U2.12.06 +U1.11.09 U2.10.07 U2.11.06 U2.12.06 +U1.11.10 U2.10.07 U2.11.06 U2.11.07 U2.12.07 +U1.11.11 U2.11.07 U2.12.07 +U1.12.00 U2.12.00 +U1.12.01 U2.12.00 U2.12.01 U2.12.02 U2.13.01 U2.13.02 +U1.12.02 U2.12.01 U2.12.02 +U1.12.03 U2.12.02 U2.12.03 U2.13.03 +U1.12.04 U2.12.02 U2.12.03 U2.12.04 U2.13.03 U2.13.04 +U1.12.05 U2.12.03 U2.12.04 +U1.12.06 U2.12.04 U2.12.05 U2.13.05 +U1.12.07 U2.12.04 U2.12.05 U2.12.06 +U1.12.08 U2.12.06 U2.13.06 +U1.12.09 U2.12.06 U2.13.06 U2.13.07 +U1.12.10 U2.12.06 U2.12.07 U2.13.07 +U1.12.11 U2.12.06 U2.12.07 U2.13.07 +U1.13.00 U2.12.00 U2.13.00 U2.13.01 U2.14.00 +U1.13.01 U2.13.00 U2.13.01 U2.13.02 U2.14.02 +U1.13.02 U2.12.01 U2.13.02 U2.13.03 +U1.13.03 U2.13.03 U2.13.04 +U1.13.04 U2.13.03 U2.13.04 U2.14.04 +U1.13.05 U2.12.03 U2.13.04 U2.13.05 +U1.13.06 U2.13.04 U2.13.05 +U1.13.07 U2.12.05 U2.13.05 U2.13.06 U2.14.05 +U1.13.08 U2.13.06 U2.14.06 +U1.13.09 U2.13.06 U2.13.07 U2.14.06 +U1.13.10 U2.13.06 U2.13.07 U2.14.07 +U1.13.11 U2.13.07 U2.14.07 +U1.14.00 U2.14.00 U2.14.01 U2.15.00 +U1.14.01 U2.13.01 U2.14.00 U2.14.01 U2.14.02 U2.15.01 +U1.14.02 U2.14.01 U2.14.02 +U1.14.03 U2.14.02 U2.14.03 +U1.14.04 U2.14.03 U2.14.04 U2.15.03 +U1.14.05 U2.14.04 U2.15.04 +U1.14.06 U2.14.04 U2.14.05 +U1.14.07 U2.14.05 U2.14.06 +U1.14.08 U2.13.06 U2.14.05 U2.14.06 U2.15.06 +U1.14.09 U2.14.06 U2.14.07 +U1.14.10 U2.14.07 +U1.14.11 U2.13.07 U2.14.07 U2.15.07 +U1.15.00 U2.15.00 +U1.15.01 U2.15.00 U2.15.01 +U1.15.02 U2.15.01 U2.15.02 +U1.15.03 U2.14.02 U2.15.02 U2.15.03 +U1.15.04 U2.15.03 +U1.15.05 U2.15.03 U2.15.04 +U1.15.06 U2.14.05 U2.15.04 U2.15.05 +U1.15.07 U2.15.05 +U1.15.08 U2.15.05 U2.15.06 +U1.15.09 U2.14.06 U2.15.06 +U1.15.10 U2.15.06 +U1.15.11 U2.15.06 U2.15.07 +U2.00.01 U3.00.00 U3.01.00 +U2.00.02 U3.00.00 U3.00.01 +U2.00.03 U3.00.00 U3.00.01 U3.00.02 +U2.00.04 U3.00.01 U3.00.02 +U2.00.05 U3.00.02 U3.00.03 +U2.00.06 U3.00.03 U3.01.03 +U2.00.07 U3.00.03 U3.01.03 +U2.01.00 U3.02.00 +U2.01.01 U3.01.00 +U2.01.02 U3.00.00 U3.01.00 U3.01.01 U3.02.00 +U2.01.03 U3.01.00 U3.01.01 U3.02.01 +U2.01.04 U3.01.01 U3.01.02 U3.02.02 +U2.01.05 U3.00.01 U3.01.02 +U2.01.06 U3.00.03 U3.01.02 U3.01.03 U3.02.03 +U2.01.07 U3.01.03 U3.02.03 +U2.02.01 U3.02.00 +U2.02.02 U3.01.00 U3.02.00 U3.02.01 +U2.02.03 U3.02.00 U3.02.01 U3.03.01 +U2.02.04 U3.01.01 U3.02.01 U3.02.02 +U2.02.05 U3.02.02 U3.03.02 U3.03.03 +U2.02.06 U3.01.02 U3.02.02 U3.02.03 +U2.02.07 U3.01.03 U3.02.03 U3.03.03 +U2.03.00 U3.03.00 +U2.03.01 U3.02.00 U3.03.00 U3.03.01 U3.04.00 U3.04.01 +U2.03.02 U3.02.01 U3.03.00 U3.03.01 U3.03.02 U3.04.01 +U2.03.03 U3.02.01 U3.02.02 U3.03.01 U3.03.02 U3.04.01 U3.04.02 +U2.03.04 U3.03.02 U3.03.03 U3.04.02 +U2.03.05 U3.03.02 U3.03.03 U3.04.02 U3.04.03 +U2.03.06 U3.02.03 U3.03.03 U3.04.03 +U2.03.07 U3.03.03 U3.04.03 +U2.04.00 U3.04.00 +U2.04.01 U3.04.00 U3.04.01 U3.05.00 +U2.04.02 U3.04.00 U3.04.01 U3.05.01 +U2.04.03 U3.04.01 U3.04.02 U3.05.01 U3.05.02 +U2.04.04 U3.04.02 U3.04.03 U3.05.01 U3.05.02 +U2.04.05 U3.04.02 U3.04.03 U3.05.02 +U2.04.06 U3.04.03 U3.05.03 +U2.04.07 U3.04.03 +U2.05.01 U3.05.00 +U2.05.02 U3.05.00 U3.05.01 U3.06.00 +U2.05.03 U3.04.01 U3.05.00 U3.05.01 +U2.05.04 U3.05.01 U3.05.02 U3.06.01 +U2.05.05 U3.05.02 U3.06.01 +U2.05.06 U3.05.02 U3.05.03 U3.06.02 +U2.05.07 U3.04.03 U3.05.03 U3.06.03 +U2.06.01 U3.06.00 +U2.06.02 U3.05.00 U3.06.00 U3.07.00 +U2.06.03 U3.05.01 U3.06.00 U3.06.01 +U2.06.04 U3.06.00 U3.06.01 +U2.06.05 U3.06.01 U3.06.02 U3.07.01 +U2.06.06 U3.06.02 U3.06.03 U3.07.03 +U2.06.07 U3.06.03 +U2.07.01 U3.07.00 +U2.07.02 U3.07.00 U3.07.01 +U2.07.03 U3.07.00 U3.07.01 +U2.07.04 U3.07.01 U3.07.02 +U2.07.05 U3.07.02 +U2.07.06 U3.07.02 U3.07.03 +U2.07.07 U3.06.03 U3.07.03 +U2.08.01 U3.08.00 U3.09.00 +U2.08.02 U3.08.00 U3.08.01 +U2.08.03 U3.08.00 U3.08.01 +U2.08.04 U3.08.01 U3.08.02 +U2.08.05 U3.08.02 +U2.08.06 U3.08.02 U3.08.03 +U2.08.07 U3.08.03 U3.09.03 +U2.09.01 U3.09.00 +U2.09.02 U3.08.00 U3.09.00 U3.09.01 U3.10.00 +U2.09.03 U3.09.00 U3.09.01 U3.10.01 +U2.09.04 U3.09.01 U3.09.02 +U2.09.05 U3.08.01 U3.09.02 +U2.09.06 U3.08.03 U3.09.02 U3.09.03 +U2.09.07 U3.09.03 U3.10.03 +U2.10.01 U3.10.00 +U2.10.02 U3.09.00 U3.10.00 U3.10.01 +U2.10.03 U3.10.00 U3.10.01 U3.11.01 +U2.10.04 U3.09.01 U3.10.01 U3.10.02 +U2.10.05 U3.09.01 U3.10.02 +U2.10.06 U3.09.02 U3.09.03 U3.10.02 U3.10.03 +U2.10.07 U3.09.03 U3.10.03 U3.11.03 +U2.11.00 U3.11.00 +U2.11.01 U3.10.00 U3.11.00 U3.11.01 +U2.11.02 U3.10.01 U3.11.00 U3.11.01 +U2.11.03 U3.10.01 U3.10.02 U3.11.01 U3.11.02 +U2.11.04 U3.10.01 U3.10.02 U3.11.02 U3.11.03 +U2.11.05 U3.10.02 U3.11.02 U3.11.03 +U2.11.06 U3.10.03 U3.11.03 +U2.11.07 U3.11.03 +U2.12.00 U3.12.00 +U2.12.01 U3.11.00 U3.11.01 U3.12.00 U3.12.01 U3.13.00 +U2.12.02 U3.11.01 U3.12.00 U3.12.01 U3.12.02 U3.13.01 +U2.12.03 U3.11.01 U3.11.02 U3.12.01 U3.12.02 U3.13.01 U3.13.02 +U2.12.04 U3.11.02 U3.12.02 U3.12.03 +U2.12.05 U3.11.02 U3.11.03 U3.12.02 U3.12.03 +U2.12.06 U3.11.03 U3.12.03 U3.13.03 +U2.12.07 U3.11.03 U3.12.03 +U2.13.01 U3.13.00 +U2.13.02 U3.13.00 U3.13.01 U3.14.00 +U2.13.03 U3.12.01 U3.13.00 U3.13.01 +U2.13.04 U3.13.01 U3.13.02 U3.14.01 +U2.13.05 U3.12.02 U3.12.03 U3.13.02 +U2.13.06 U3.13.02 U3.13.03 U3.14.02 +U2.13.07 U3.12.03 U3.13.03 U3.14.03 +U2.14.01 U3.13.00 U3.14.00 +U2.14.02 U3.13.00 U3.14.00 U3.14.01 U3.15.00 +U2.14.03 U3.13.01 U3.14.00 U3.14.01 +U2.14.04 U3.13.02 U3.14.01 +U2.14.05 U3.14.01 U3.14.02 U3.15.01 +U2.14.06 U3.13.03 U3.14.02 U3.14.03 U3.15.03 +U2.14.07 U3.14.03 +U2.15.01 U3.14.00 U3.15.00 +U2.15.02 U3.15.00 U3.15.01 +U2.15.03 U3.15.00 U3.15.01 U3.15.02 +U2.15.04 U3.15.01 U3.15.02 +U2.15.05 U3.15.02 U3.15.03 +U2.15.06 U3.14.03 U3.15.03 +U2.15.07 U3.14.03 U3.15.03 +S1.00.00 S2.00.00 +S1.00.01 S2.00.00 S2.00.01 S2.00.02 +S1.00.02 S2.00.02 +S1.00.03 S2.00.02 S2.00.03 S2.01.02 +S1.00.04 S2.00.03 S2.00.04 +S1.00.05 S2.00.04 +S1.00.06 S2.00.04 S2.00.05 S2.01.05 +S1.00.07 S2.00.05 +S1.00.08 S2.00.06 S2.01.06 +S1.00.09 S2.00.06 S2.01.06 S2.01.07 +S1.00.10 S2.00.06 +S1.00.11 S2.00.06 S2.00.07 +S1.01.00 S2.00.00 S2.01.00 S2.01.01 +S1.01.01 S2.00.01 S2.01.00 S2.01.01 S2.01.02 S2.02.00 +S1.01.02 S2.01.01 S2.01.02 +S1.01.03 S2.01.02 S2.01.03 +S1.01.04 S2.00.03 S2.01.03 S2.01.04 +S1.01.05 S2.00.04 S2.01.04 +S1.01.06 S2.01.04 S2.01.05 +S1.01.07 S2.01.05 S2.01.06 +S1.01.08 S2.00.06 S2.01.05 S2.01.06 S2.02.06 +S1.01.09 S2.01.06 S2.01.07 +S1.01.10 S2.01.07 S2.02.07 +S1.01.11 S2.00.07 S2.01.07 S2.02.07 +S1.02.00 S2.02.00 S2.02.01 S2.03.00 +S1.02.01 S2.01.02 S2.02.00 S2.02.01 S2.02.02 +S1.02.02 S2.02.02 S2.02.03 S2.03.01 +S1.02.03 S2.02.02 S2.02.03 +S1.02.04 S2.02.03 S2.02.04 +S1.02.05 S2.01.04 S2.02.04 S2.03.03 +S1.02.06 S2.02.04 S2.02.05 +S1.02.07 S2.01.05 S2.02.04 S2.02.05 S2.02.06 +S1.02.08 S2.01.06 S2.02.05 S2.02.06 S2.03.05 +S1.02.09 S2.01.06 S2.02.06 +S1.02.10 S2.02.06 S2.02.07 +S1.02.11 S2.02.07 +S1.03.00 S2.02.01 S2.03.00 +S1.03.01 S2.02.01 S2.02.02 S2.03.00 S2.03.01 S2.03.02 +S1.03.02 S2.03.01 S2.03.02 +S1.03.03 S2.02.03 S2.03.02 S2.03.03 +S1.03.04 S2.02.03 S2.02.04 S2.03.02 S2.03.03 S2.03.04 +S1.03.05 S2.03.03 S2.03.04 +S1.03.06 S2.02.05 S2.03.04 S2.03.05 +S1.03.07 S2.03.04 S2.03.05 S2.03.06 +S1.03.08 S2.02.06 S2.03.06 +S1.03.09 S2.02.06 S2.02.07 S2.03.06 +S1.03.10 S2.02.07 S2.03.06 S2.03.07 +S1.03.11 S2.02.07 S2.03.06 S2.03.07 +S1.04.00 S2.03.00 S2.04.00 +S1.04.01 S2.03.01 S2.04.00 S2.04.01 S2.04.02 +S1.04.02 S2.03.01 S2.03.02 S2.04.01 S2.04.02 +S1.04.03 S2.03.02 S2.04.02 S2.04.03 +S1.04.04 S2.03.03 S2.04.02 S2.04.03 S2.04.04 +S1.04.05 S2.03.03 S2.03.04 S2.04.03 S2.04.04 +S1.04.06 S2.03.05 S2.04.04 S2.04.05 +S1.04.07 S2.03.05 S2.03.06 S2.04.05 S2.04.06 +S1.04.08 S2.03.06 S2.04.06 +S1.04.09 S2.03.06 S2.04.06 S2.05.07 +S1.04.10 S2.03.07 S2.04.06 S2.04.07 S2.05.07 +S1.04.11 S2.03.07 S2.04.07 +S1.05.00 S2.04.00 S2.05.00 S2.05.01 S2.05.02 S2.06.00 +S1.05.01 S2.04.00 S2.04.01 S2.05.00 S2.05.01 S2.05.02 S2.05.03 S2.06.02 +S1.05.02 S2.04.01 S2.05.02 S2.05.03 +S1.05.03 S2.04.02 S2.04.03 S2.05.03 S2.05.04 +S1.05.04 S2.04.03 S2.05.03 S2.05.04 S2.05.05 S2.06.04 +S1.05.05 S2.04.03 S2.04.04 S2.05.04 S2.05.05 +S1.05.06 S2.04.04 S2.04.05 S2.05.04 S2.05.05 +S1.05.07 S2.04.05 S2.05.05 S2.05.06 +S1.05.08 S2.04.06 S2.05.06 S2.05.07 S2.06.06 +S1.05.09 S2.05.06 S2.05.07 +S1.05.10 S2.04.07 S2.05.06 S2.05.07 +S1.05.11 S2.05.07 +S1.06.00 S2.06.00 S2.06.01 S2.07.00 +S1.06.01 S2.05.01 S2.06.00 S2.06.01 S2.06.02 S2.06.03 S2.07.01 +S1.06.02 S2.05.02 S2.06.01 S2.06.02 S2.06.03 +S1.06.03 S2.06.02 S2.06.03 S2.06.04 +S1.06.04 S2.05.04 S2.06.03 S2.06.04 S2.07.03 S2.07.04 +S1.06.05 S2.06.04 S2.06.05 S2.07.04 +S1.06.06 S2.05.05 S2.06.04 S2.06.05 S2.06.06 +S1.06.07 S2.05.06 S2.06.05 S2.06.06 +S1.06.08 S2.05.06 S2.06.06 S2.06.07 +S1.06.09 S2.06.07 +S1.06.10 S2.05.07 S2.06.07 +S1.06.11 S2.05.07 S2.06.07 +S1.07.00 S2.07.00 S2.07.01 +S1.07.01 S2.07.00 S2.07.01 S2.07.02 +S1.07.02 S2.06.02 S2.07.01 S2.07.02 S2.07.03 +S1.07.03 S2.06.02 S2.06.03 S2.07.02 S2.07.03 +S1.07.04 S2.07.03 S2.07.04 +S1.07.05 S2.06.05 S2.07.03 S2.07.04 S2.07.05 +S1.07.06 S2.06.05 S2.07.04 S2.07.05 +S1.07.07 S2.07.05 S2.07.06 +S1.07.08 S2.06.06 S2.07.05 S2.07.06 +S1.07.09 S2.06.06 S2.06.07 S2.07.06 +S1.07.10 S2.07.06 S2.07.07 +S1.07.11 S2.06.07 S2.07.07 +S1.08.00 S2.08.00 S2.08.01 +S1.08.01 S2.08.00 S2.08.01 S2.08.02 S2.09.02 +S1.08.02 S2.08.02 S2.08.03 +S1.08.03 S2.08.02 S2.08.03 S2.08.04 S2.09.02 S2.09.03 +S1.08.04 S2.08.03 S2.08.04 +S1.08.05 S2.08.04 S2.08.05 S2.09.05 +S1.08.06 S2.08.04 S2.08.05 S2.09.05 +S1.08.07 S2.08.05 S2.08.06 +S1.08.08 S2.08.06 S2.09.06 S2.09.07 +S1.08.09 S2.08.06 S2.09.07 +S1.08.10 S2.08.06 S2.08.07 +S1.08.11 S2.08.07 S2.09.07 +S1.09.00 S2.08.00 S2.09.00 S2.09.01 +S1.09.01 S2.08.01 S2.09.00 S2.09.01 S2.09.02 S2.09.03 S2.10.00 S2.10.01 +S1.09.02 S2.09.01 S2.09.02 S2.09.03 S2.10.02 +S1.09.03 S2.09.02 S2.09.03 S2.09.04 +S1.09.04 S2.08.03 S2.08.04 S2.09.03 S2.09.04 S2.10.04 +S1.09.05 S2.08.04 S2.09.04 S2.09.05 +S1.09.06 S2.09.04 S2.09.05 S2.09.06 S2.10.05 +S1.09.07 S2.09.05 S2.09.06 S2.10.06 +S1.09.08 S2.09.06 S2.09.07 S2.10.06 +S1.09.09 S2.09.07 S2.10.07 +S1.09.10 S2.09.07 S2.10.07 +S1.09.11 S2.09.07 S2.10.07 +S1.10.00 S2.10.00 S2.10.01 S2.10.02 S2.11.00 +S1.10.01 S2.09.02 S2.10.00 S2.10.01 S2.10.02 S2.10.03 S2.11.00 S2.11.01 +S1.10.02 S2.10.02 S2.10.03 S2.11.01 +S1.10.03 S2.10.02 S2.10.03 S2.10.04 S2.11.02 +S1.10.04 S2.10.03 S2.10.04 S2.11.02 S2.11.03 +S1.10.05 S2.09.04 S2.10.04 S2.10.05 S2.11.03 S2.11.04 +S1.10.06 S2.10.04 S2.10.05 S2.11.04 +S1.10.07 S2.10.05 S2.10.06 S2.11.04 S2.11.05 +S1.10.08 S2.09.06 S2.10.06 S2.11.05 S2.11.06 +S1.10.09 S2.10.06 S2.10.07 S2.11.06 +S1.10.10 S2.10.06 S2.10.07 +S1.10.11 S2.10.07 S2.11.07 +S1.11.00 S2.11.00 S2.12.00 +S1.11.01 S2.11.00 S2.11.01 S2.11.02 S2.12.01 +S1.11.02 S2.11.01 S2.11.02 S2.12.01 S2.12.02 +S1.11.03 S2.11.02 S2.11.03 S2.12.02 +S1.11.04 S2.11.02 S2.11.03 S2.11.04 S2.12.03 +S1.11.05 S2.11.03 S2.11.04 S2.12.03 S2.12.04 +S1.11.06 S2.11.04 S2.11.05 S2.12.05 +S1.11.07 S2.11.05 S2.11.06 S2.12.05 S2.12.06 +S1.11.08 S2.11.06 S2.12.06 +S1.11.09 S2.10.07 S2.11.06 S2.12.06 +S1.11.10 S2.10.07 S2.11.06 S2.11.07 S2.12.07 +S1.11.11 S2.11.07 S2.12.07 +S1.12.00 S2.12.00 +S1.12.01 S2.12.00 S2.12.01 S2.12.02 S2.13.01 S2.13.02 +S1.12.02 S2.12.01 S2.12.02 +S1.12.03 S2.12.02 S2.12.03 S2.13.03 +S1.12.04 S2.12.02 S2.12.03 S2.12.04 S2.13.03 S2.13.04 +S1.12.05 S2.12.03 S2.12.04 +S1.12.06 S2.12.04 S2.12.05 S2.13.05 +S1.12.07 S2.12.04 S2.12.05 S2.12.06 +S1.12.08 S2.12.06 S2.13.06 +S1.12.09 S2.12.06 S2.13.06 S2.13.07 +S1.12.10 S2.12.06 S2.12.07 S2.13.07 +S1.12.11 S2.12.06 S2.12.07 S2.13.07 +S1.13.00 S2.12.00 S2.13.00 S2.13.01 S2.14.00 +S1.13.01 S2.13.00 S2.13.01 S2.13.02 S2.14.02 +S1.13.02 S2.12.01 S2.13.02 S2.13.03 +S1.13.03 S2.13.03 S2.13.04 +S1.13.04 S2.13.03 S2.13.04 S2.14.04 +S1.13.05 S2.12.03 S2.13.04 S2.13.05 +S1.13.06 S2.13.04 S2.13.05 +S1.13.07 S2.12.05 S2.13.05 S2.13.06 S2.14.05 +S1.13.08 S2.13.06 S2.14.06 +S1.13.09 S2.13.06 S2.13.07 S2.14.06 +S1.13.10 S2.13.06 S2.13.07 S2.14.07 +S1.13.11 S2.13.07 S2.14.07 +S1.14.00 S2.14.00 S2.14.01 S2.15.00 +S1.14.01 S2.13.01 S2.14.00 S2.14.01 S2.14.02 S2.15.01 +S1.14.02 S2.14.01 S2.14.02 +S1.14.03 S2.14.02 S2.14.03 +S1.14.04 S2.14.03 S2.14.04 S2.15.03 +S1.14.05 S2.14.04 S2.15.04 +S1.14.06 S2.14.04 S2.14.05 +S1.14.07 S2.14.05 S2.14.06 +S1.14.08 S2.13.06 S2.14.05 S2.14.06 S2.15.06 +S1.14.09 S2.14.06 S2.14.07 +S1.14.10 S2.14.07 +S1.14.11 S2.13.07 S2.14.07 S2.15.07 +S1.15.00 S2.15.00 +S1.15.01 S2.15.00 S2.15.01 +S1.15.02 S2.15.01 S2.15.02 +S1.15.03 S2.14.02 S2.15.02 S2.15.03 +S1.15.04 S2.15.03 +S1.15.05 S2.15.03 S2.15.04 +S1.15.06 S2.14.05 S2.15.04 S2.15.05 +S1.15.07 S2.15.05 +S1.15.08 S2.15.05 S2.15.06 +S1.15.09 S2.14.06 S2.15.06 +S1.15.10 S2.15.06 +S1.15.11 S2.15.06 S2.15.07 +S2.00.01 S3.00.00 S3.01.00 +S2.00.02 S3.00.00 S3.00.01 +S2.00.03 S3.00.00 S3.00.01 S3.00.02 +S2.00.04 S3.00.01 S3.00.02 +S2.00.05 S3.00.02 S3.00.03 +S2.00.06 S3.00.03 S3.01.03 +S2.00.07 S3.00.03 S3.01.03 +S2.01.00 S3.02.00 +S2.01.01 S3.01.00 +S2.01.02 S3.00.00 S3.01.00 S3.01.01 S3.02.00 +S2.01.03 S3.01.00 S3.01.01 S3.02.01 +S2.01.04 S3.01.01 S3.01.02 S3.02.02 +S2.01.05 S3.00.01 S3.01.02 +S2.01.06 S3.00.03 S3.01.02 S3.01.03 S3.02.03 +S2.01.07 S3.01.03 S3.02.03 +S2.02.01 S3.02.00 +S2.02.02 S3.01.00 S3.02.00 S3.02.01 +S2.02.03 S3.02.00 S3.02.01 S3.03.01 +S2.02.04 S3.01.01 S3.02.01 S3.02.02 +S2.02.05 S3.02.02 S3.03.02 S3.03.03 +S2.02.06 S3.01.02 S3.02.02 S3.02.03 +S2.02.07 S3.01.03 S3.02.03 S3.03.03 +S2.03.00 S3.03.00 +S2.03.01 S3.02.00 S3.03.00 S3.03.01 S3.04.00 S3.04.01 +S2.03.02 S3.02.01 S3.03.00 S3.03.01 S3.03.02 S3.04.01 +S2.03.03 S3.02.01 S3.02.02 S3.03.01 S3.03.02 S3.04.01 S3.04.02 +S2.03.04 S3.03.02 S3.03.03 S3.04.02 +S2.03.05 S3.03.02 S3.03.03 S3.04.02 S3.04.03 +S2.03.06 S3.02.03 S3.03.03 S3.04.03 +S2.03.07 S3.03.03 S3.04.03 +S2.04.00 S3.04.00 +S2.04.01 S3.04.00 S3.04.01 S3.05.00 +S2.04.02 S3.04.00 S3.04.01 S3.05.01 +S2.04.03 S3.04.01 S3.04.02 S3.05.01 S3.05.02 +S2.04.04 S3.04.02 S3.04.03 S3.05.01 S3.05.02 +S2.04.05 S3.04.02 S3.04.03 S3.05.02 +S2.04.06 S3.04.03 S3.05.03 +S2.04.07 S3.04.03 +S2.05.01 S3.05.00 +S2.05.02 S3.05.00 S3.05.01 S3.06.00 +S2.05.03 S3.04.01 S3.05.00 S3.05.01 +S2.05.04 S3.05.01 S3.05.02 S3.06.01 +S2.05.05 S3.05.02 S3.06.01 +S2.05.06 S3.05.02 S3.05.03 S3.06.02 +S2.05.07 S3.04.03 S3.05.03 S3.06.03 +S2.06.01 S3.06.00 +S2.06.02 S3.05.00 S3.06.00 S3.07.00 +S2.06.03 S3.05.01 S3.06.00 S3.06.01 +S2.06.04 S3.06.00 S3.06.01 +S2.06.05 S3.06.01 S3.06.02 S3.07.01 +S2.06.06 S3.06.02 S3.06.03 S3.07.03 +S2.06.07 S3.06.03 +S2.07.01 S3.07.00 +S2.07.02 S3.07.00 S3.07.01 +S2.07.03 S3.07.00 S3.07.01 +S2.07.04 S3.07.01 S3.07.02 +S2.07.05 S3.07.02 +S2.07.06 S3.07.02 S3.07.03 +S2.07.07 S3.06.03 S3.07.03 +S2.08.01 S3.08.00 S3.09.00 +S2.08.02 S3.08.00 S3.08.01 +S2.08.03 S3.08.00 S3.08.01 +S2.08.04 S3.08.01 S3.08.02 +S2.08.05 S3.08.02 +S2.08.06 S3.08.02 S3.08.03 +S2.08.07 S3.08.03 S3.09.03 +S2.09.01 S3.09.00 +S2.09.02 S3.08.00 S3.09.00 S3.09.01 S3.10.00 +S2.09.03 S3.09.00 S3.09.01 S3.10.01 +S2.09.04 S3.09.01 S3.09.02 +S2.09.05 S3.08.01 S3.09.02 +S2.09.06 S3.08.03 S3.09.02 S3.09.03 +S2.09.07 S3.09.03 S3.10.03 +S2.10.01 S3.10.00 +S2.10.02 S3.09.00 S3.10.00 S3.10.01 +S2.10.03 S3.10.00 S3.10.01 S3.11.01 +S2.10.04 S3.09.01 S3.10.01 S3.10.02 +S2.10.05 S3.09.01 S3.10.02 +S2.10.06 S3.09.02 S3.09.03 S3.10.02 S3.10.03 +S2.10.07 S3.09.03 S3.10.03 S3.11.03 +S2.11.00 S3.11.00 +S2.11.01 S3.10.00 S3.11.00 S3.11.01 +S2.11.02 S3.10.01 S3.11.00 S3.11.01 +S2.11.03 S3.10.01 S3.10.02 S3.11.01 S3.11.02 +S2.11.04 S3.10.01 S3.10.02 S3.11.02 S3.11.03 +S2.11.05 S3.10.02 S3.11.02 S3.11.03 +S2.11.06 S3.10.03 S3.11.03 +S2.11.07 S3.11.03 +S2.12.00 S3.12.00 +S2.12.01 S3.11.00 S3.11.01 S3.12.00 S3.12.01 S3.13.00 +S2.12.02 S3.11.01 S3.12.00 S3.12.01 S3.12.02 S3.13.01 +S2.12.03 S3.11.01 S3.11.02 S3.12.01 S3.12.02 S3.13.01 S3.13.02 +S2.12.04 S3.11.02 S3.12.02 S3.12.03 +S2.12.05 S3.11.02 S3.11.03 S3.12.02 S3.12.03 +S2.12.06 S3.11.03 S3.12.03 S3.13.03 +S2.12.07 S3.11.03 S3.12.03 +S2.13.01 S3.13.00 +S2.13.02 S3.13.00 S3.13.01 S3.14.00 +S2.13.03 S3.12.01 S3.13.00 S3.13.01 +S2.13.04 S3.13.01 S3.13.02 S3.14.01 +S2.13.05 S3.12.02 S3.12.03 S3.13.02 +S2.13.06 S3.13.02 S3.13.03 S3.14.02 +S2.13.07 S3.12.03 S3.13.03 S3.14.03 +S2.14.01 S3.13.00 S3.14.00 +S2.14.02 S3.13.00 S3.14.00 S3.14.01 S3.15.00 +S2.14.03 S3.13.01 S3.14.00 S3.14.01 +S2.14.04 S3.13.02 S3.14.01 +S2.14.05 S3.14.01 S3.14.02 S3.15.01 +S2.14.06 S3.13.03 S3.14.02 S3.14.03 S3.15.03 +S2.14.07 S3.14.03 +S2.15.01 S3.14.00 S3.15.00 +S2.15.02 S3.15.00 S3.15.01 +S2.15.03 S3.15.00 S3.15.01 S3.15.02 +S2.15.04 S3.15.01 S3.15.02 +S2.15.05 S3.15.02 S3.15.03 +S2.15.06 S3.14.03 S3.15.03 +S2.15.07 S3.14.03 S3.15.03 diff --git a/Calorimeter/CaloIdentifier/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt b/Calorimeter/CaloIdentifier/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt new file mode 100644 index 0000000000000000000000000000000000000000..69f08af0cbab94230fdf2538a988fee9abe00a08 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt @@ -0,0 +1,397 @@ +# 3D SuperCell FCal Neighbors Prev in Sampling +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Mon Apr 21 14:47:12 2014 +# +# 3d neighbors prev in sampling are all cells touching the same +# eta phi area in the prev sampling. +# The list contains the cell name of the current cell and the +# names of all neigbor cells on one line separated by a space. +# Cells without prev sampling neighbors are not listed. +# Cell names are similar to normal cells with 'S' instead of 'A' +# for the A-side super cells and 'U' = 'S'+2 for C-side cells. +# +U2.00.00 U1.00.00 U1.00.01 U1.01.00 +U2.00.01 U1.00.01 U1.01.01 +U2.00.02 U1.00.01 U1.00.02 U1.00.03 +U2.00.03 U1.00.03 U1.00.04 U1.01.04 +U2.00.04 U1.00.04 U1.00.05 U1.00.06 U1.01.05 +U2.00.05 U1.00.06 U1.00.07 +U2.00.06 U1.00.08 U1.00.09 U1.00.10 U1.00.11 U1.01.08 +U2.00.07 U1.00.11 U1.01.11 +U2.01.00 U1.01.00 U1.01.01 +U2.01.01 U1.01.00 U1.01.01 U1.01.02 +U2.01.02 U1.00.03 U1.01.01 U1.01.02 U1.01.03 U1.02.01 +U2.01.03 U1.01.03 U1.01.04 +U2.01.04 U1.01.04 U1.01.05 U1.01.06 U1.02.05 +U2.01.05 U1.00.06 U1.01.06 U1.01.07 U1.01.08 U1.02.07 +U2.01.06 U1.00.08 U1.00.09 U1.01.07 U1.01.08 U1.01.09 U1.02.08 U1.02.09 +U2.01.07 U1.00.09 U1.01.09 U1.01.10 U1.01.11 +U2.02.00 U1.01.01 U1.02.00 U1.02.01 +U2.02.01 U1.02.00 U1.02.01 U1.03.00 U1.03.01 +U2.02.02 U1.02.01 U1.02.02 U1.02.03 U1.03.01 +U2.02.03 U1.02.02 U1.02.03 U1.02.04 U1.03.03 U1.03.04 +U2.02.04 U1.02.04 U1.02.05 U1.02.06 U1.02.07 U1.03.04 +U2.02.05 U1.02.06 U1.02.07 U1.02.08 U1.03.06 +U2.02.06 U1.01.08 U1.02.07 U1.02.08 U1.02.09 U1.02.10 U1.03.08 U1.03.09 +U2.02.07 U1.01.10 U1.01.11 U1.02.10 U1.02.11 U1.03.09 U1.03.10 U1.03.11 +U2.03.00 U1.02.00 U1.03.00 U1.03.01 U1.04.00 +U2.03.01 U1.02.02 U1.03.01 U1.03.02 U1.04.01 U1.04.02 +U2.03.02 U1.03.01 U1.03.02 U1.03.03 U1.03.04 U1.04.02 U1.04.03 +U2.03.03 U1.02.05 U1.03.03 U1.03.04 U1.03.05 U1.04.04 U1.04.05 +U2.03.04 U1.03.04 U1.03.05 U1.03.06 U1.03.07 U1.04.05 +U2.03.05 U1.02.08 U1.03.06 U1.03.07 U1.04.06 U1.04.07 +U2.03.06 U1.03.07 U1.03.08 U1.03.09 U1.03.10 U1.03.11 U1.04.07 U1.04.08 U1.04.09 +U2.03.07 U1.03.10 U1.03.11 U1.04.10 U1.04.11 +U2.04.00 U1.04.00 U1.04.01 U1.05.00 U1.05.01 +U2.04.01 U1.04.01 U1.04.02 U1.05.01 U1.05.02 +U2.04.02 U1.04.01 U1.04.02 U1.04.03 U1.04.04 U1.05.03 +U2.04.03 U1.04.03 U1.04.04 U1.04.05 U1.05.03 U1.05.04 U1.05.05 +U2.04.04 U1.04.04 U1.04.05 U1.04.06 U1.05.05 U1.05.06 +U2.04.05 U1.04.06 U1.04.07 U1.05.06 U1.05.07 +U2.04.06 U1.04.07 U1.04.08 U1.04.09 U1.04.10 U1.05.08 +U2.04.07 U1.04.10 U1.04.11 U1.05.10 +U2.05.00 U1.05.00 U1.05.01 +U2.05.01 U1.05.00 U1.05.01 U1.06.01 +U2.05.02 U1.05.00 U1.05.01 U1.05.02 U1.06.02 +U2.05.03 U1.05.01 U1.05.02 U1.05.03 U1.05.04 +U2.05.04 U1.05.03 U1.05.04 U1.05.05 U1.05.06 U1.06.04 +U2.05.05 U1.05.04 U1.05.05 U1.05.06 U1.05.07 U1.06.06 +U2.05.06 U1.05.07 U1.05.08 U1.05.09 U1.05.10 U1.06.07 U1.06.08 +U2.05.07 U1.04.09 U1.04.10 U1.05.08 U1.05.09 U1.05.10 U1.05.11 U1.06.10 U1.06.11 +U2.06.00 U1.05.00 U1.06.00 U1.06.01 +U2.06.01 U1.06.00 U1.06.01 U1.06.02 +U2.06.02 U1.05.01 U1.06.01 U1.06.02 U1.06.03 U1.07.02 U1.07.03 +U2.06.03 U1.06.01 U1.06.02 U1.06.03 U1.06.04 U1.07.03 +U2.06.04 U1.05.04 U1.06.03 U1.06.04 U1.06.05 U1.06.06 +U2.06.05 U1.06.05 U1.06.06 U1.06.07 U1.07.05 U1.07.06 +U2.06.06 U1.05.08 U1.06.06 U1.06.07 U1.06.08 U1.07.08 U1.07.09 +U2.06.07 U1.06.08 U1.06.09 U1.06.10 U1.06.11 U1.07.09 U1.07.11 +U2.07.00 U1.06.00 U1.07.00 U1.07.01 +U2.07.01 U1.06.01 U1.07.00 U1.07.01 U1.07.02 +U2.07.02 U1.07.01 U1.07.02 U1.07.03 +U2.07.03 U1.06.04 U1.07.02 U1.07.03 U1.07.04 U1.07.05 +U2.07.04 U1.06.04 U1.06.05 U1.07.04 U1.07.05 U1.07.06 +U2.07.05 U1.07.05 U1.07.06 U1.07.07 U1.07.08 +U2.07.06 U1.07.07 U1.07.08 U1.07.09 U1.07.10 +U2.07.07 U1.07.10 U1.07.11 +U2.08.00 U1.08.00 U1.08.01 U1.09.00 +U2.08.01 U1.08.00 U1.08.01 U1.09.01 +U2.08.02 U1.08.01 U1.08.02 U1.08.03 +U2.08.03 U1.08.02 U1.08.03 U1.08.04 U1.09.04 +U2.08.04 U1.08.03 U1.08.04 U1.08.05 U1.08.06 U1.09.04 U1.09.05 +U2.08.05 U1.08.05 U1.08.06 U1.08.07 +U2.08.06 U1.08.07 U1.08.08 U1.08.09 U1.08.10 +U2.08.07 U1.08.10 U1.08.11 +U2.09.00 U1.09.00 U1.09.01 +U2.09.01 U1.09.00 U1.09.01 U1.09.02 +U2.09.02 U1.08.01 U1.08.03 U1.09.01 U1.09.02 U1.09.03 U1.10.01 +U2.09.03 U1.08.03 U1.09.01 U1.09.02 U1.09.03 U1.09.04 +U2.09.04 U1.09.03 U1.09.04 U1.09.05 U1.09.06 U1.10.05 +U2.09.05 U1.08.05 U1.08.06 U1.09.05 U1.09.06 U1.09.07 +U2.09.06 U1.08.08 U1.09.06 U1.09.07 U1.09.08 U1.10.08 +U2.09.07 U1.08.08 U1.08.09 U1.08.11 U1.09.08 U1.09.09 U1.09.10 U1.09.11 +U2.10.00 U1.09.01 U1.10.00 U1.10.01 +U2.10.01 U1.09.01 U1.10.00 U1.10.01 +U2.10.02 U1.09.02 U1.10.00 U1.10.01 U1.10.02 U1.10.03 +U2.10.03 U1.10.01 U1.10.02 U1.10.03 U1.10.04 +U2.10.04 U1.09.04 U1.10.03 U1.10.04 U1.10.05 U1.10.06 +U2.10.05 U1.09.06 U1.10.05 U1.10.06 U1.10.07 +U2.10.06 U1.09.07 U1.09.08 U1.10.07 U1.10.08 U1.10.09 U1.10.10 +U2.10.07 U1.09.09 U1.09.10 U1.09.11 U1.10.09 U1.10.10 U1.10.11 U1.11.09 U1.11.10 +U2.11.00 U1.10.00 U1.10.01 U1.11.00 U1.11.01 +U2.11.01 U1.10.01 U1.10.02 U1.11.01 U1.11.02 +U2.11.02 U1.10.03 U1.10.04 U1.11.01 U1.11.02 U1.11.03 U1.11.04 +U2.11.03 U1.10.04 U1.10.05 U1.11.03 U1.11.04 U1.11.05 +U2.11.04 U1.10.05 U1.10.06 U1.10.07 U1.11.04 U1.11.05 U1.11.06 +U2.11.05 U1.10.07 U1.10.08 U1.11.06 U1.11.07 +U2.11.06 U1.10.08 U1.10.09 U1.11.07 U1.11.08 U1.11.09 U1.11.10 +U2.11.07 U1.10.11 U1.11.10 U1.11.11 +U2.12.00 U1.11.00 U1.12.00 U1.12.01 U1.13.00 +U2.12.01 U1.11.01 U1.11.02 U1.12.01 U1.12.02 U1.13.02 +U2.12.02 U1.11.02 U1.11.03 U1.12.01 U1.12.02 U1.12.03 U1.12.04 +U2.12.03 U1.11.04 U1.11.05 U1.12.03 U1.12.04 U1.12.05 U1.13.05 +U2.12.04 U1.11.05 U1.12.04 U1.12.05 U1.12.06 U1.12.07 +U2.12.05 U1.11.06 U1.11.07 U1.12.06 U1.12.07 U1.13.07 +U2.12.06 U1.11.07 U1.11.08 U1.11.09 U1.12.07 U1.12.08 U1.12.09 U1.12.10 U1.12.11 +U2.12.07 U1.11.10 U1.11.11 U1.12.10 U1.12.11 +U2.13.00 U1.13.00 U1.13.01 +U2.13.01 U1.12.01 U1.13.00 U1.13.01 U1.14.01 +U2.13.02 U1.12.01 U1.13.01 U1.13.02 +U2.13.03 U1.12.03 U1.12.04 U1.13.02 U1.13.03 U1.13.04 +U2.13.04 U1.12.04 U1.13.03 U1.13.04 U1.13.05 U1.13.06 +U2.13.05 U1.12.06 U1.13.05 U1.13.06 U1.13.07 +U2.13.06 U1.12.08 U1.12.09 U1.13.07 U1.13.08 U1.13.09 U1.13.10 U1.14.08 +U2.13.07 U1.12.09 U1.12.10 U1.12.11 U1.13.09 U1.13.10 U1.13.11 U1.14.11 +U2.14.00 U1.13.00 U1.14.00 U1.14.01 +U2.14.01 U1.14.00 U1.14.01 U1.14.02 +U2.14.02 U1.13.01 U1.14.01 U1.14.02 U1.14.03 U1.15.03 +U2.14.03 U1.14.03 U1.14.04 +U2.14.04 U1.13.04 U1.14.04 U1.14.05 U1.14.06 +U2.14.05 U1.13.07 U1.14.06 U1.14.07 U1.14.08 U1.15.06 +U2.14.06 U1.13.08 U1.13.09 U1.14.07 U1.14.08 U1.14.09 U1.15.09 +U2.14.07 U1.13.10 U1.13.11 U1.14.09 U1.14.10 U1.14.11 +U2.15.00 U1.14.00 U1.15.00 U1.15.01 +U2.15.01 U1.14.01 U1.15.01 U1.15.02 +U2.15.02 U1.15.02 U1.15.03 +U2.15.03 U1.14.04 U1.15.03 U1.15.04 U1.15.05 +U2.15.04 U1.14.05 U1.15.05 U1.15.06 +U2.15.05 U1.15.06 U1.15.07 U1.15.08 +U2.15.06 U1.14.08 U1.15.08 U1.15.09 U1.15.10 U1.15.11 +U2.15.07 U1.14.11 U1.15.11 +U3.00.00 U2.00.01 U2.00.02 U2.00.03 U2.01.02 +U3.00.01 U2.00.02 U2.00.03 U2.00.04 U2.01.05 +U3.00.02 U2.00.03 U2.00.04 U2.00.05 +U3.00.03 U2.00.05 U2.00.06 U2.00.07 U2.01.06 +U3.01.00 U2.00.01 U2.01.01 U2.01.02 U2.01.03 U2.02.02 +U3.01.01 U2.01.02 U2.01.03 U2.01.04 U2.02.04 +U3.01.02 U2.01.04 U2.01.05 U2.01.06 U2.02.06 +U3.01.03 U2.00.06 U2.00.07 U2.01.06 U2.01.07 U2.02.07 +U3.02.00 U2.01.00 U2.01.02 U2.02.01 U2.02.02 U2.02.03 U2.03.01 +U3.02.01 U2.01.03 U2.02.02 U2.02.03 U2.02.04 U2.03.02 U2.03.03 +U3.02.02 U2.01.04 U2.02.04 U2.02.05 U2.02.06 U2.03.03 +U3.02.03 U2.01.06 U2.01.07 U2.02.06 U2.02.07 U2.03.06 +U3.03.00 U2.03.00 U2.03.01 U2.03.02 +U3.03.01 U2.02.03 U2.03.01 U2.03.02 U2.03.03 +U3.03.02 U2.02.05 U2.03.02 U2.03.03 U2.03.04 U2.03.05 +U3.03.03 U2.02.05 U2.02.07 U2.03.04 U2.03.05 U2.03.06 U2.03.07 +U3.04.00 U2.03.01 U2.04.00 U2.04.01 U2.04.02 +U3.04.01 U2.03.01 U2.03.02 U2.03.03 U2.04.01 U2.04.02 U2.04.03 U2.05.03 +U3.04.02 U2.03.03 U2.03.04 U2.03.05 U2.04.03 U2.04.04 U2.04.05 +U3.04.03 U2.03.05 U2.03.06 U2.03.07 U2.04.04 U2.04.05 U2.04.06 U2.04.07 U2.05.07 +U3.05.00 U2.04.01 U2.05.01 U2.05.02 U2.05.03 U2.06.02 +U3.05.01 U2.04.02 U2.04.03 U2.04.04 U2.05.02 U2.05.03 U2.05.04 U2.06.03 +U3.05.02 U2.04.03 U2.04.04 U2.04.05 U2.05.04 U2.05.05 U2.05.06 +U3.05.03 U2.04.06 U2.05.06 U2.05.07 +U3.06.00 U2.05.02 U2.06.01 U2.06.02 U2.06.03 U2.06.04 +U3.06.01 U2.05.04 U2.05.05 U2.06.03 U2.06.04 U2.06.05 +U3.06.02 U2.05.06 U2.06.05 U2.06.06 +U3.06.03 U2.05.07 U2.06.06 U2.06.07 U2.07.07 +U3.07.00 U2.06.02 U2.07.01 U2.07.02 U2.07.03 +U3.07.01 U2.06.05 U2.07.02 U2.07.03 U2.07.04 +U3.07.02 U2.07.04 U2.07.05 U2.07.06 +U3.07.03 U2.06.06 U2.07.06 U2.07.07 +U3.08.00 U2.08.01 U2.08.02 U2.08.03 U2.09.02 +U3.08.01 U2.08.02 U2.08.03 U2.08.04 U2.09.05 +U3.08.02 U2.08.04 U2.08.05 U2.08.06 +U3.08.03 U2.08.06 U2.08.07 U2.09.06 +U3.09.00 U2.08.01 U2.09.01 U2.09.02 U2.09.03 U2.10.02 +U3.09.01 U2.09.02 U2.09.03 U2.09.04 U2.10.04 U2.10.05 +U3.09.02 U2.09.04 U2.09.05 U2.09.06 U2.10.06 +U3.09.03 U2.08.07 U2.09.06 U2.09.07 U2.10.06 U2.10.07 +U3.10.00 U2.09.02 U2.10.01 U2.10.02 U2.10.03 U2.11.01 +U3.10.01 U2.09.03 U2.10.02 U2.10.03 U2.10.04 U2.11.02 U2.11.03 U2.11.04 +U3.10.02 U2.10.04 U2.10.05 U2.10.06 U2.11.03 U2.11.04 U2.11.05 +U3.10.03 U2.09.07 U2.10.06 U2.10.07 U2.11.06 +U3.11.00 U2.11.00 U2.11.01 U2.11.02 U2.12.01 +U3.11.01 U2.10.03 U2.11.01 U2.11.02 U2.11.03 U2.12.01 U2.12.02 U2.12.03 +U3.11.02 U2.11.03 U2.11.04 U2.11.05 U2.12.03 U2.12.04 U2.12.05 +U3.11.03 U2.10.07 U2.11.04 U2.11.05 U2.11.06 U2.11.07 U2.12.05 U2.12.06 U2.12.07 +U3.12.00 U2.12.00 U2.12.01 U2.12.02 +U3.12.01 U2.12.01 U2.12.02 U2.12.03 U2.13.03 +U3.12.02 U2.12.02 U2.12.03 U2.12.04 U2.12.05 U2.13.05 +U3.12.03 U2.12.04 U2.12.05 U2.12.06 U2.12.07 U2.13.05 U2.13.07 +U3.13.00 U2.12.01 U2.13.01 U2.13.02 U2.13.03 U2.14.01 U2.14.02 +U3.13.01 U2.12.02 U2.12.03 U2.13.02 U2.13.03 U2.13.04 U2.14.03 +U3.13.02 U2.12.03 U2.13.04 U2.13.05 U2.13.06 U2.14.04 +U3.13.03 U2.12.06 U2.13.06 U2.13.07 U2.14.06 +U3.14.00 U2.13.02 U2.14.01 U2.14.02 U2.14.03 U2.15.01 +U3.14.01 U2.13.04 U2.14.02 U2.14.03 U2.14.04 U2.14.05 +U3.14.02 U2.13.06 U2.14.05 U2.14.06 +U3.14.03 U2.13.07 U2.14.06 U2.14.07 U2.15.06 U2.15.07 +U3.15.00 U2.14.02 U2.15.01 U2.15.02 U2.15.03 +U3.15.01 U2.14.05 U2.15.02 U2.15.03 U2.15.04 +U3.15.02 U2.15.03 U2.15.04 U2.15.05 +U3.15.03 U2.14.06 U2.15.05 U2.15.06 U2.15.07 +S2.00.00 S1.00.00 S1.00.01 S1.01.00 +S2.00.01 S1.00.01 S1.01.01 +S2.00.02 S1.00.01 S1.00.02 S1.00.03 +S2.00.03 S1.00.03 S1.00.04 S1.01.04 +S2.00.04 S1.00.04 S1.00.05 S1.00.06 S1.01.05 +S2.00.05 S1.00.06 S1.00.07 +S2.00.06 S1.00.08 S1.00.09 S1.00.10 S1.00.11 S1.01.08 +S2.00.07 S1.00.11 S1.01.11 +S2.01.00 S1.01.00 S1.01.01 +S2.01.01 S1.01.00 S1.01.01 S1.01.02 +S2.01.02 S1.00.03 S1.01.01 S1.01.02 S1.01.03 S1.02.01 +S2.01.03 S1.01.03 S1.01.04 +S2.01.04 S1.01.04 S1.01.05 S1.01.06 S1.02.05 +S2.01.05 S1.00.06 S1.01.06 S1.01.07 S1.01.08 S1.02.07 +S2.01.06 S1.00.08 S1.00.09 S1.01.07 S1.01.08 S1.01.09 S1.02.08 S1.02.09 +S2.01.07 S1.00.09 S1.01.09 S1.01.10 S1.01.11 +S2.02.00 S1.01.01 S1.02.00 S1.02.01 +S2.02.01 S1.02.00 S1.02.01 S1.03.00 S1.03.01 +S2.02.02 S1.02.01 S1.02.02 S1.02.03 S1.03.01 +S2.02.03 S1.02.02 S1.02.03 S1.02.04 S1.03.03 S1.03.04 +S2.02.04 S1.02.04 S1.02.05 S1.02.06 S1.02.07 S1.03.04 +S2.02.05 S1.02.06 S1.02.07 S1.02.08 S1.03.06 +S2.02.06 S1.01.08 S1.02.07 S1.02.08 S1.02.09 S1.02.10 S1.03.08 S1.03.09 +S2.02.07 S1.01.10 S1.01.11 S1.02.10 S1.02.11 S1.03.09 S1.03.10 S1.03.11 +S2.03.00 S1.02.00 S1.03.00 S1.03.01 S1.04.00 +S2.03.01 S1.02.02 S1.03.01 S1.03.02 S1.04.01 S1.04.02 +S2.03.02 S1.03.01 S1.03.02 S1.03.03 S1.03.04 S1.04.02 S1.04.03 +S2.03.03 S1.02.05 S1.03.03 S1.03.04 S1.03.05 S1.04.04 S1.04.05 +S2.03.04 S1.03.04 S1.03.05 S1.03.06 S1.03.07 S1.04.05 +S2.03.05 S1.02.08 S1.03.06 S1.03.07 S1.04.06 S1.04.07 +S2.03.06 S1.03.07 S1.03.08 S1.03.09 S1.03.10 S1.03.11 S1.04.07 S1.04.08 S1.04.09 +S2.03.07 S1.03.10 S1.03.11 S1.04.10 S1.04.11 +S2.04.00 S1.04.00 S1.04.01 S1.05.00 S1.05.01 +S2.04.01 S1.04.01 S1.04.02 S1.05.01 S1.05.02 +S2.04.02 S1.04.01 S1.04.02 S1.04.03 S1.04.04 S1.05.03 +S2.04.03 S1.04.03 S1.04.04 S1.04.05 S1.05.03 S1.05.04 S1.05.05 +S2.04.04 S1.04.04 S1.04.05 S1.04.06 S1.05.05 S1.05.06 +S2.04.05 S1.04.06 S1.04.07 S1.05.06 S1.05.07 +S2.04.06 S1.04.07 S1.04.08 S1.04.09 S1.04.10 S1.05.08 +S2.04.07 S1.04.10 S1.04.11 S1.05.10 +S2.05.00 S1.05.00 S1.05.01 +S2.05.01 S1.05.00 S1.05.01 S1.06.01 +S2.05.02 S1.05.00 S1.05.01 S1.05.02 S1.06.02 +S2.05.03 S1.05.01 S1.05.02 S1.05.03 S1.05.04 +S2.05.04 S1.05.03 S1.05.04 S1.05.05 S1.05.06 S1.06.04 +S2.05.05 S1.05.04 S1.05.05 S1.05.06 S1.05.07 S1.06.06 +S2.05.06 S1.05.07 S1.05.08 S1.05.09 S1.05.10 S1.06.07 S1.06.08 +S2.05.07 S1.04.09 S1.04.10 S1.05.08 S1.05.09 S1.05.10 S1.05.11 S1.06.10 S1.06.11 +S2.06.00 S1.05.00 S1.06.00 S1.06.01 +S2.06.01 S1.06.00 S1.06.01 S1.06.02 +S2.06.02 S1.05.01 S1.06.01 S1.06.02 S1.06.03 S1.07.02 S1.07.03 +S2.06.03 S1.06.01 S1.06.02 S1.06.03 S1.06.04 S1.07.03 +S2.06.04 S1.05.04 S1.06.03 S1.06.04 S1.06.05 S1.06.06 +S2.06.05 S1.06.05 S1.06.06 S1.06.07 S1.07.05 S1.07.06 +S2.06.06 S1.05.08 S1.06.06 S1.06.07 S1.06.08 S1.07.08 S1.07.09 +S2.06.07 S1.06.08 S1.06.09 S1.06.10 S1.06.11 S1.07.09 S1.07.11 +S2.07.00 S1.06.00 S1.07.00 S1.07.01 +S2.07.01 S1.06.01 S1.07.00 S1.07.01 S1.07.02 +S2.07.02 S1.07.01 S1.07.02 S1.07.03 +S2.07.03 S1.06.04 S1.07.02 S1.07.03 S1.07.04 S1.07.05 +S2.07.04 S1.06.04 S1.06.05 S1.07.04 S1.07.05 S1.07.06 +S2.07.05 S1.07.05 S1.07.06 S1.07.07 S1.07.08 +S2.07.06 S1.07.07 S1.07.08 S1.07.09 S1.07.10 +S2.07.07 S1.07.10 S1.07.11 +S2.08.00 S1.08.00 S1.08.01 S1.09.00 +S2.08.01 S1.08.00 S1.08.01 S1.09.01 +S2.08.02 S1.08.01 S1.08.02 S1.08.03 +S2.08.03 S1.08.02 S1.08.03 S1.08.04 S1.09.04 +S2.08.04 S1.08.03 S1.08.04 S1.08.05 S1.08.06 S1.09.04 S1.09.05 +S2.08.05 S1.08.05 S1.08.06 S1.08.07 +S2.08.06 S1.08.07 S1.08.08 S1.08.09 S1.08.10 +S2.08.07 S1.08.10 S1.08.11 +S2.09.00 S1.09.00 S1.09.01 +S2.09.01 S1.09.00 S1.09.01 S1.09.02 +S2.09.02 S1.08.01 S1.08.03 S1.09.01 S1.09.02 S1.09.03 S1.10.01 +S2.09.03 S1.08.03 S1.09.01 S1.09.02 S1.09.03 S1.09.04 +S2.09.04 S1.09.03 S1.09.04 S1.09.05 S1.09.06 S1.10.05 +S2.09.05 S1.08.05 S1.08.06 S1.09.05 S1.09.06 S1.09.07 +S2.09.06 S1.08.08 S1.09.06 S1.09.07 S1.09.08 S1.10.08 +S2.09.07 S1.08.08 S1.08.09 S1.08.11 S1.09.08 S1.09.09 S1.09.10 S1.09.11 +S2.10.00 S1.09.01 S1.10.00 S1.10.01 +S2.10.01 S1.09.01 S1.10.00 S1.10.01 +S2.10.02 S1.09.02 S1.10.00 S1.10.01 S1.10.02 S1.10.03 +S2.10.03 S1.10.01 S1.10.02 S1.10.03 S1.10.04 +S2.10.04 S1.09.04 S1.10.03 S1.10.04 S1.10.05 S1.10.06 +S2.10.05 S1.09.06 S1.10.05 S1.10.06 S1.10.07 +S2.10.06 S1.09.07 S1.09.08 S1.10.07 S1.10.08 S1.10.09 S1.10.10 +S2.10.07 S1.09.09 S1.09.10 S1.09.11 S1.10.09 S1.10.10 S1.10.11 S1.11.09 S1.11.10 +S2.11.00 S1.10.00 S1.10.01 S1.11.00 S1.11.01 +S2.11.01 S1.10.01 S1.10.02 S1.11.01 S1.11.02 +S2.11.02 S1.10.03 S1.10.04 S1.11.01 S1.11.02 S1.11.03 S1.11.04 +S2.11.03 S1.10.04 S1.10.05 S1.11.03 S1.11.04 S1.11.05 +S2.11.04 S1.10.05 S1.10.06 S1.10.07 S1.11.04 S1.11.05 S1.11.06 +S2.11.05 S1.10.07 S1.10.08 S1.11.06 S1.11.07 +S2.11.06 S1.10.08 S1.10.09 S1.11.07 S1.11.08 S1.11.09 S1.11.10 +S2.11.07 S1.10.11 S1.11.10 S1.11.11 +S2.12.00 S1.11.00 S1.12.00 S1.12.01 S1.13.00 +S2.12.01 S1.11.01 S1.11.02 S1.12.01 S1.12.02 S1.13.02 +S2.12.02 S1.11.02 S1.11.03 S1.12.01 S1.12.02 S1.12.03 S1.12.04 +S2.12.03 S1.11.04 S1.11.05 S1.12.03 S1.12.04 S1.12.05 S1.13.05 +S2.12.04 S1.11.05 S1.12.04 S1.12.05 S1.12.06 S1.12.07 +S2.12.05 S1.11.06 S1.11.07 S1.12.06 S1.12.07 S1.13.07 +S2.12.06 S1.11.07 S1.11.08 S1.11.09 S1.12.07 S1.12.08 S1.12.09 S1.12.10 S1.12.11 +S2.12.07 S1.11.10 S1.11.11 S1.12.10 S1.12.11 +S2.13.00 S1.13.00 S1.13.01 +S2.13.01 S1.12.01 S1.13.00 S1.13.01 S1.14.01 +S2.13.02 S1.12.01 S1.13.01 S1.13.02 +S2.13.03 S1.12.03 S1.12.04 S1.13.02 S1.13.03 S1.13.04 +S2.13.04 S1.12.04 S1.13.03 S1.13.04 S1.13.05 S1.13.06 +S2.13.05 S1.12.06 S1.13.05 S1.13.06 S1.13.07 +S2.13.06 S1.12.08 S1.12.09 S1.13.07 S1.13.08 S1.13.09 S1.13.10 S1.14.08 +S2.13.07 S1.12.09 S1.12.10 S1.12.11 S1.13.09 S1.13.10 S1.13.11 S1.14.11 +S2.14.00 S1.13.00 S1.14.00 S1.14.01 +S2.14.01 S1.14.00 S1.14.01 S1.14.02 +S2.14.02 S1.13.01 S1.14.01 S1.14.02 S1.14.03 S1.15.03 +S2.14.03 S1.14.03 S1.14.04 +S2.14.04 S1.13.04 S1.14.04 S1.14.05 S1.14.06 +S2.14.05 S1.13.07 S1.14.06 S1.14.07 S1.14.08 S1.15.06 +S2.14.06 S1.13.08 S1.13.09 S1.14.07 S1.14.08 S1.14.09 S1.15.09 +S2.14.07 S1.13.10 S1.13.11 S1.14.09 S1.14.10 S1.14.11 +S2.15.00 S1.14.00 S1.15.00 S1.15.01 +S2.15.01 S1.14.01 S1.15.01 S1.15.02 +S2.15.02 S1.15.02 S1.15.03 +S2.15.03 S1.14.04 S1.15.03 S1.15.04 S1.15.05 +S2.15.04 S1.14.05 S1.15.05 S1.15.06 +S2.15.05 S1.15.06 S1.15.07 S1.15.08 +S2.15.06 S1.14.08 S1.15.08 S1.15.09 S1.15.10 S1.15.11 +S2.15.07 S1.14.11 S1.15.11 +S3.00.00 S2.00.01 S2.00.02 S2.00.03 S2.01.02 +S3.00.01 S2.00.02 S2.00.03 S2.00.04 S2.01.05 +S3.00.02 S2.00.03 S2.00.04 S2.00.05 +S3.00.03 S2.00.05 S2.00.06 S2.00.07 S2.01.06 +S3.01.00 S2.00.01 S2.01.01 S2.01.02 S2.01.03 S2.02.02 +S3.01.01 S2.01.02 S2.01.03 S2.01.04 S2.02.04 +S3.01.02 S2.01.04 S2.01.05 S2.01.06 S2.02.06 +S3.01.03 S2.00.06 S2.00.07 S2.01.06 S2.01.07 S2.02.07 +S3.02.00 S2.01.00 S2.01.02 S2.02.01 S2.02.02 S2.02.03 S2.03.01 +S3.02.01 S2.01.03 S2.02.02 S2.02.03 S2.02.04 S2.03.02 S2.03.03 +S3.02.02 S2.01.04 S2.02.04 S2.02.05 S2.02.06 S2.03.03 +S3.02.03 S2.01.06 S2.01.07 S2.02.06 S2.02.07 S2.03.06 +S3.03.00 S2.03.00 S2.03.01 S2.03.02 +S3.03.01 S2.02.03 S2.03.01 S2.03.02 S2.03.03 +S3.03.02 S2.02.05 S2.03.02 S2.03.03 S2.03.04 S2.03.05 +S3.03.03 S2.02.05 S2.02.07 S2.03.04 S2.03.05 S2.03.06 S2.03.07 +S3.04.00 S2.03.01 S2.04.00 S2.04.01 S2.04.02 +S3.04.01 S2.03.01 S2.03.02 S2.03.03 S2.04.01 S2.04.02 S2.04.03 S2.05.03 +S3.04.02 S2.03.03 S2.03.04 S2.03.05 S2.04.03 S2.04.04 S2.04.05 +S3.04.03 S2.03.05 S2.03.06 S2.03.07 S2.04.04 S2.04.05 S2.04.06 S2.04.07 S2.05.07 +S3.05.00 S2.04.01 S2.05.01 S2.05.02 S2.05.03 S2.06.02 +S3.05.01 S2.04.02 S2.04.03 S2.04.04 S2.05.02 S2.05.03 S2.05.04 S2.06.03 +S3.05.02 S2.04.03 S2.04.04 S2.04.05 S2.05.04 S2.05.05 S2.05.06 +S3.05.03 S2.04.06 S2.05.06 S2.05.07 +S3.06.00 S2.05.02 S2.06.01 S2.06.02 S2.06.03 S2.06.04 +S3.06.01 S2.05.04 S2.05.05 S2.06.03 S2.06.04 S2.06.05 +S3.06.02 S2.05.06 S2.06.05 S2.06.06 +S3.06.03 S2.05.07 S2.06.06 S2.06.07 S2.07.07 +S3.07.00 S2.06.02 S2.07.01 S2.07.02 S2.07.03 +S3.07.01 S2.06.05 S2.07.02 S2.07.03 S2.07.04 +S3.07.02 S2.07.04 S2.07.05 S2.07.06 +S3.07.03 S2.06.06 S2.07.06 S2.07.07 +S3.08.00 S2.08.01 S2.08.02 S2.08.03 S2.09.02 +S3.08.01 S2.08.02 S2.08.03 S2.08.04 S2.09.05 +S3.08.02 S2.08.04 S2.08.05 S2.08.06 +S3.08.03 S2.08.06 S2.08.07 S2.09.06 +S3.09.00 S2.08.01 S2.09.01 S2.09.02 S2.09.03 S2.10.02 +S3.09.01 S2.09.02 S2.09.03 S2.09.04 S2.10.04 S2.10.05 +S3.09.02 S2.09.04 S2.09.05 S2.09.06 S2.10.06 +S3.09.03 S2.08.07 S2.09.06 S2.09.07 S2.10.06 S2.10.07 +S3.10.00 S2.09.02 S2.10.01 S2.10.02 S2.10.03 S2.11.01 +S3.10.01 S2.09.03 S2.10.02 S2.10.03 S2.10.04 S2.11.02 S2.11.03 S2.11.04 +S3.10.02 S2.10.04 S2.10.05 S2.10.06 S2.11.03 S2.11.04 S2.11.05 +S3.10.03 S2.09.07 S2.10.06 S2.10.07 S2.11.06 +S3.11.00 S2.11.00 S2.11.01 S2.11.02 S2.12.01 +S3.11.01 S2.10.03 S2.11.01 S2.11.02 S2.11.03 S2.12.01 S2.12.02 S2.12.03 +S3.11.02 S2.11.03 S2.11.04 S2.11.05 S2.12.03 S2.12.04 S2.12.05 +S3.11.03 S2.10.07 S2.11.04 S2.11.05 S2.11.06 S2.11.07 S2.12.05 S2.12.06 S2.12.07 +S3.12.00 S2.12.00 S2.12.01 S2.12.02 +S3.12.01 S2.12.01 S2.12.02 S2.12.03 S2.13.03 +S3.12.02 S2.12.02 S2.12.03 S2.12.04 S2.12.05 S2.13.05 +S3.12.03 S2.12.04 S2.12.05 S2.12.06 S2.12.07 S2.13.05 S2.13.07 +S3.13.00 S2.12.01 S2.13.01 S2.13.02 S2.13.03 S2.14.01 S2.14.02 +S3.13.01 S2.12.02 S2.12.03 S2.13.02 S2.13.03 S2.13.04 S2.14.03 +S3.13.02 S2.12.03 S2.13.04 S2.13.05 S2.13.06 S2.14.04 +S3.13.03 S2.12.06 S2.13.06 S2.13.07 S2.14.06 +S3.14.00 S2.13.02 S2.14.01 S2.14.02 S2.14.03 S2.15.01 +S3.14.01 S2.13.04 S2.14.02 S2.14.03 S2.14.04 S2.14.05 +S3.14.02 S2.13.06 S2.14.05 S2.14.06 +S3.14.03 S2.13.07 S2.14.06 S2.14.07 S2.15.06 S2.15.07 +S3.15.00 S2.14.02 S2.15.01 S2.15.02 S2.15.03 +S3.15.01 S2.14.05 S2.15.02 S2.15.03 S2.15.04 +S3.15.02 S2.15.03 S2.15.04 S2.15.05 +S3.15.03 S2.14.06 S2.15.05 S2.15.06 S2.15.07 diff --git a/Calorimeter/CaloIdentifier/share/LArEM_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArEM_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..67bc308c49553032105f0a9e255af6c79534c16b --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArEM_ID_test.ref @@ -0,0 +1,109 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/1 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/2/0 + channel range -> 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 + disconected region range -> 4/-1/-1,1/0/0 | 4/-1/-1,1/1/0 | 4/-1/-1,1/3/0 | 4/-1/-2,2/0/0 | 4/-1/-2,2/1/1 | 4/-1/-2,2/1/3 | 4/-1/-2,2/1/5 | 4/-1/-3,3/1/0 | 4/-1/-3,3/2/0 + disconnected channel range -> 4/-1/-1,1/0/0/61:63/0:63 | 4/-1/-1,1/1/0/0/0:63 | 4/-1/-1,1/3/0/27/0:255 | 4/-1/-2,2/0/0/12:19/0:63 | 4/-1/-2,2/1/1/3:6/0:63 | 4/-1/-2,2/1/3/48:63/0:63 | 4/-1/-2,2/1/5/4:7/0:63 | 4/-1/-3,3/1/0/7/0:63 | 4/-1/-3,3/2/0/7/0:63 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/1 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/2/0 + channel range -> 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 + disconected region range -> 4/-1/-1,1/0/0 | 4/-1/-1,1/1/0 | 4/-1/-1,1/3/0 | 4/-1/-2,2/0/0 | 4/-1/-2,2/1/1 | 4/-1/-2,2/1/3 | 4/-1/-2,2/1/5 | 4/-1/-3,3/1/0 | 4/-1/-3,3/2/0 + disconnected channel range -> 4/-1/-1,1/0/0/61:63/0:63 | 4/-1/-1,1/1/0/0/0:63 | 4/-1/-1,1/3/0/27/0:255 | 4/-1/-2,2/0/0/12:19/0:63 | 4/-1/-2,2/1/1/3:6/0:63 | 4/-1/-2,2/1/3/48:63/0:63 | 4/-1/-2,2/1/5/4:7/0:63 | 4/-1/-3,3/1/0/7/0:63 | 4/-1/-3,3/2/0/7/0:63 + LArEM_Base_ID::init_neighbors +test_basic +[4.1.1.1.1.0.1.0] hex(2da4000200000000) +[4.1.2.1.1.2.10.0] hex(2e24041400000000) +[4.1.3.2.0.0.20.0] hex(2ec0002800000000) +[4.1.-1.1.1.0.1.0] hex(2d24000200000000) +[4.1.-2.1.1.2.10.0] hex(2ca4041400000000) +[4.1.-3.2.0.0.20.0] hex(2c40002800000000) +test_connected + nchan 173312 + nreg 36 +Region [4.1.-3.1.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.1.-3.2.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.1.-2.0.0.0.0.0] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.1.0.0.0] eta: 1.425000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.2.0.0.0] eta: 1.500000 0.003125 0 95 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.3.0.0.0] eta: 1.800000 0.004167 0 47 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.4.0.0.0] eta: 2.000000 0.006250 0 63 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.5.0.0.0] eta: 2.400000 0.025000 0 3 phi: 0.0 0.098175 0 63 +Region [4.1.-2.2.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.-2.2.1.0.0.0] eta: 1.425000 0.025000 0 42 phi: 0.0 0.024544 0 255 +Region [4.1.-2.3.0.0.0.0] eta: 1.500000 0.050000 0 19 phi: 0.0 0.024544 0 255 +Region [4.1.-1.0.0.0.0.0] eta: 0.000000 0.025000 0 60 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.0.0.0] eta: 0.003125 0.003125 1 447 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.1.0.0.0] eta: 1.400000 0.025000 0 2 phi: 0.0 0.024544 0 255 +Region [4.1.-1.2.0.0.0.0] eta: 0.000000 0.025000 0 55 phi: 0.0 0.024544 0 255 +Region [4.1.-1.2.1.0.0.0] eta: 1.400000 0.075000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.-1.3.0.0.0.0] eta: 0.000000 0.050000 0 26 phi: 0.0 0.024544 0 255 +Region [4.1.1.0.0.0.0.0] eta: 0.000000 0.025000 0 60 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.0.0.0] eta: 0.003125 0.003125 1 447 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.1.0.0.0] eta: 1.400000 0.025000 0 2 phi: 0.0 0.024544 0 255 +Region [4.1.1.2.0.0.0.0] eta: 0.000000 0.025000 0 55 phi: 0.0 0.024544 0 255 +Region [4.1.1.2.1.0.0.0] eta: 1.400000 0.075000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.1.3.0.0.0.0] eta: 0.000000 0.050000 0 26 phi: 0.0 0.024544 0 255 +Region [4.1.2.0.0.0.0.0] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.1.0.0.0] eta: 1.425000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.2.0.0.0] eta: 1.500000 0.003125 0 95 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.3.0.0.0] eta: 1.800000 0.004167 0 47 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.4.0.0.0] eta: 2.000000 0.006250 0 63 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.5.0.0.0] eta: 2.400000 0.025000 0 3 phi: 0.0 0.098175 0 63 +Region [4.1.2.2.0.0.0.0] eta: 1.375000 0.050000 0 0 phi: 0.0 0.024544 0 255 +Region [4.1.2.2.1.0.0.0] eta: 1.425000 0.025000 0 42 phi: 0.0 0.024544 0 255 +Region [4.1.2.3.0.0.0.0] eta: 1.500000 0.050000 0 19 phi: 0.0 0.024544 0 255 +Region [4.1.3.1.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Region [4.1.3.2.0.0.0.0] eta: 2.500000 0.100000 0 6 phi: 0.0 0.098175 0 63 +Sampling Barrel Outer wheel Inner wheel +0 7808 1536 0 +1 58752 27648 896 +2 29184 22528 896 +3 13824 10240 0 +Total 109568 61952 1792 Grand total: 173312 +test_disco + nchan 5376 +Sampling Barrel Outer wheel Inner wheel +0 384 1024 0 +1 128 3072 128 +2 0 0 128 +3 512 0 0 +Total 1024 4096 256 Grand total: 5376 +test_exceptions +Exception 1: LArID_Exception - Error code: 5 + LArEM_Base_ID::region_id_checks() result is not OK: ID, range = 4/1/0/99/0 , 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/1 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/2/0 +Exception 2: LArID_Exception - Error code: 6 + LArEM_Base_ID::channel_id_checks() result is not OK: ID, range = 4/1/0/99/0/0/0/0 , 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 +Exception 3: LArID_Exception - Error code: 6 + LArEM_Base_ID::channel_id_checks(regId) result is not OK: ID, range = 4/1/1/0/0/0/-99/0 , 4/1/-1,1/0/0/0:60/0:63/0 | 4/1/-1,1/1/0/1:447/0:63/0 | 4/1/-1,1/1/1/0:2/0:255/0 | 4/1/-1,1/2/0/0:55/0:255/0 | 4/1/-1,1/2/1/0/0:255/0 | 4/1/-1,1/3/0/0:26/0:255/0 | 4/1/-2,2/0/0/0:11/0:63/0 | 4/1/-2,2/1/0/0/0:63/0 | 4/1/-2,2/1/1/0:2/0:63/0 | 4/1/-2,2/1/2/0:95/0:63/0 | 4/1/-2,2/1/3/0:47/0:63/0 | 4/1/-2,2/1/4/0:63/0:63/0 | 4/1/-2,2/1/5/0:3/0:63/0 | 4/1/-2,2/2/0/0/0:255/0 | 4/1/-2,2/2/1/0:42/0:255/0 | 4/1/-2,2/3/0/0:19/0:255/0 | 4/1/-3,3/1/0/0:6/0:63/0 | 4/1/-3,3/2/0/0:6/0:63/0 +test4 diff --git a/Calorimeter/CaloIdentifier/share/LArEM_SuperCell_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArEM_SuperCell_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..a8fec4fd52ca54f9ee8a3f2018962099c1ecff01 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArEM_SuperCell_ID_test.ref @@ -0,0 +1,111 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/1/1 | 4/1/-3,3/2/0 | 4/1/-3,3/2/1 + channel range -> 4/1/-1,1/0/0/0:14/0:63/1 | 4/1/-1,1/1/0/0:55/0:63/1 | 4/1/-1,1/1/1/0:2/0:63/1 | 4/1/-1,1/2/0/0:55/0:63/1 | 4/1/-1,1/2/1/0/0:63/1 | 4/1/-1,1/3/0/0:13/0:63/1 | 4/1/-2,2/0/0/0:2/0:63/1 | 4/1/-2,2/1/0/0/0:63/1 | 4/1/-2,2/1/2/0:11/0:63/1 | 4/1/-2,2/1/3/0:11/0:63/1 | 4/1/-2,2/1/4/0:15/0:63/1 | 4/1/-2,2/1/5/0/0:63/1 | 4/1/-2,2/2/0/0/0:63/1 | 4/1/-2,2/2/1/0:42/0:63/1 | 4/1/-2,2/3/0/0:9/0:63/1 | 4/1/-3,3/1/0/0:2/0:31/1 | 4/1/-3,3/1/1/0/0:31/1 | 4/1/-3,3/2/0/0:2/0:31/1 | 4/1/-3,3/2/1/0/0:31/1 + disconected region range -> + disconnected channel range -> +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +em decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +bec decode 1 vals -3,-2,-1,1,2,3 mask/zero mask/shift/bits/offset 7 fc7fffffffffffff 55 3 6 indexes 0 1 2 0 3 4 5 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +reg decode 0 vals 0:5 mask/zero mask/shift/bits/offset 7 ffe3ffffffffffff 50 3 11 indexes mode both_bounded +eta decode 0 vals 0:447 mask/zero mask/shift/bits/offset 1ff fffc01ffffffffff 41 9 14 indexes mode both_bounded +phi decode 0 vals 0:255 mask/zero mask/shift/bits/offset ff fffffe01ffffffff 33 8 23 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffffffeffffffff 32 1 31 indexes mode both_bounded + LArEM_Base_ID::initialize_from_dict : + region range -> 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/1/1 | 4/1/-3,3/2/0 | 4/1/-3,3/2/1 + channel range -> 4/1/-1,1/0/0/0:14/0:63/1 | 4/1/-1,1/1/0/0:55/0:63/1 | 4/1/-1,1/1/1/0:2/0:63/1 | 4/1/-1,1/2/0/0:55/0:63/1 | 4/1/-1,1/2/1/0/0:63/1 | 4/1/-1,1/3/0/0:13/0:63/1 | 4/1/-2,2/0/0/0:2/0:63/1 | 4/1/-2,2/1/0/0/0:63/1 | 4/1/-2,2/1/2/0:11/0:63/1 | 4/1/-2,2/1/3/0:11/0:63/1 | 4/1/-2,2/1/4/0:15/0:63/1 | 4/1/-2,2/1/5/0/0:63/1 | 4/1/-2,2/2/0/0/0:63/1 | 4/1/-2,2/2/1/0:42/0:63/1 | 4/1/-2,2/3/0/0:9/0:63/1 | 4/1/-3,3/1/0/0:2/0:31/1 | 4/1/-3,3/1/1/0/0:31/1 | 4/1/-3,3/2/0/0:2/0:31/1 | 4/1/-3,3/2/1/0/0:31/1 + disconected region range -> + disconnected channel range -> + LArEM_Base_ID::init_neighbors +test_basic +[4.1.1.1.1.0.1.1] hex(2da4000300000000) +[4.1.2.2.1.0.10.1] hex(2e44001500000000) +[4.1.3.2.0.0.20.1] hex(2ec0002900000000) +[4.1.-1.1.1.0.1.1] hex(2d24000300000000) +[4.1.-2.2.1.0.10.1] hex(2cc4001500000000) +[4.1.-3.2.0.0.20.1] hex(2c40002900000000) +test_connected + nchan 31744 + nreg 38 +Region [4.1.-3.1.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.-3.1.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.1.-3.2.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.-3.2.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.1.-2.0.0.0.0.1] eta: 1.500000 0.100000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.0.0.0.1] eta: 1.375000 0.125000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.2.0.0.1] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.3.0.0.1] eta: 1.800000 0.016667 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.4.0.0.1] eta: 2.000000 0.025000 0 15 phi: 0.0 0.098175 0 63 +Region [4.1.-2.1.5.0.0.1] eta: 2.400000 0.100000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.2.0.0.0.1] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-2.2.1.0.0.1] eta: 1.425000 0.025000 0 42 phi: 0.0 0.098175 0 63 +Region [4.1.-2.3.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.1.-1.0.0.0.0.1] eta: 0.000000 0.100000 0 14 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.-1.1.1.0.0.1] eta: 1.400000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.-1.2.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.-1.2.1.0.0.1] eta: 1.400000 0.075000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.-1.3.0.0.0.1] eta: 0.000000 0.100000 0 13 phi: 0.0 0.098175 0 63 +Region [4.1.1.0.0.0.0.1] eta: 0.000000 0.100000 0 14 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.1.1.1.0.0.1] eta: 1.400000 0.025000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.1.2.0.0.0.1] eta: 0.000000 0.025000 0 55 phi: 0.0 0.098175 0 63 +Region [4.1.1.2.1.0.0.1] eta: 1.400000 0.075000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.1.3.0.0.0.1] eta: 0.000000 0.100000 0 13 phi: 0.0 0.098175 0 63 +Region [4.1.2.0.0.0.0.1] eta: 1.500000 0.100000 0 2 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.0.0.0.1] eta: 1.375000 0.125000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.2.0.0.1] eta: 1.500000 0.025000 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.3.0.0.1] eta: 1.800000 0.016667 0 11 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.4.0.0.1] eta: 2.000000 0.025000 0 15 phi: 0.0 0.098175 0 63 +Region [4.1.2.1.5.0.0.1] eta: 2.400000 0.100000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.2.0.0.0.1] eta: 1.375000 0.050000 0 0 phi: 0.0 0.098175 0 63 +Region [4.1.2.2.1.0.0.1] eta: 1.425000 0.025000 0 42 phi: 0.0 0.098175 0 63 +Region [4.1.2.3.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.1.3.1.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.3.1.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Region [4.1.3.2.0.0.0.1] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.1.3.2.1.0.0.1] eta: 3.100000 0.100000 0 0 phi: 0.0 0.196350 0 31 +Sampling Barrel Outer wheel Inner wheel +0 1920 384 0 +1 7552 5376 256 +2 7296 5632 256 +3 1792 1280 0 +Total 18560 12672 512 Grand total: 31744 +test_disco + nchan 0 +Sampling Barrel Outer wheel Inner wheel +0 0 0 0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +Total 0 0 0 Grand total: 0 +test_exceptions +Exception 1: LArID_Exception - Error code: 5 + LArEM_Base_ID::region_id_checks() result is not OK: ID, range = 4/1/0/99/0 , 4/1/-1,1/0/0 | 4/1/-1,1/1/0 | 4/1/-1,1/1/1 | 4/1/-1,1/2/0 | 4/1/-1,1/2/1 | 4/1/-1,1/3/0 | 4/1/-2,2/0/0 | 4/1/-2,2/1/0 | 4/1/-2,2/1/2 | 4/1/-2,2/1/3 | 4/1/-2,2/1/4 | 4/1/-2,2/1/5 | 4/1/-2,2/2/0 | 4/1/-2,2/2/1 | 4/1/-2,2/3/0 | 4/1/-3,3/1/0 | 4/1/-3,3/1/1 | 4/1/-3,3/2/0 | 4/1/-3,3/2/1 +Exception 2: LArID_Exception - Error code: 6 + LArEM_Base_ID::channel_id_checks() result is not OK: ID, range = 4/1/0/99/0/0/0/1 , 4/1/-1,1/0/0/0:14/0:63/1 | 4/1/-1,1/1/0/0:55/0:63/1 | 4/1/-1,1/1/1/0:2/0:63/1 | 4/1/-1,1/2/0/0:55/0:63/1 | 4/1/-1,1/2/1/0/0:63/1 | 4/1/-1,1/3/0/0:13/0:63/1 | 4/1/-2,2/0/0/0:2/0:63/1 | 4/1/-2,2/1/0/0/0:63/1 | 4/1/-2,2/1/2/0:11/0:63/1 | 4/1/-2,2/1/3/0:11/0:63/1 | 4/1/-2,2/1/4/0:15/0:63/1 | 4/1/-2,2/1/5/0/0:63/1 | 4/1/-2,2/2/0/0/0:63/1 | 4/1/-2,2/2/1/0:42/0:63/1 | 4/1/-2,2/3/0/0:9/0:63/1 | 4/1/-3,3/1/0/0:2/0:31/1 | 4/1/-3,3/1/1/0/0:31/1 | 4/1/-3,3/2/0/0:2/0:31/1 | 4/1/-3,3/2/1/0/0:31/1 +Exception 3: LArID_Exception - Error code: 6 + LArEM_Base_ID::channel_id_checks(regId) result is not OK: ID, range = 4/1/1/0/0/0/-99/1 , 4/1/-1,1/0/0/0:14/0:63/1 | 4/1/-1,1/1/0/0:55/0:63/1 | 4/1/-1,1/1/1/0:2/0:63/1 | 4/1/-1,1/2/0/0:55/0:63/1 | 4/1/-1,1/2/1/0/0:63/1 | 4/1/-1,1/3/0/0:13/0:63/1 | 4/1/-2,2/0/0/0:2/0:63/1 | 4/1/-2,2/1/0/0/0:63/1 | 4/1/-2,2/1/2/0:11/0:63/1 | 4/1/-2,2/1/3/0:11/0:63/1 | 4/1/-2,2/1/4/0:15/0:63/1 | 4/1/-2,2/1/5/0/0:63/1 | 4/1/-2,2/2/0/0/0:63/1 | 4/1/-2,2/2/1/0:42/0:63/1 | 4/1/-2,2/3/0/0:9/0:63/1 | 4/1/-3,3/1/0/0:2/0:31/1 | 4/1/-3,3/1/1/0/0:31/1 | 4/1/-3,3/2/0/0:2/0:31/1 | 4/1/-3,3/2/1/0/0:31/1 +test4 diff --git a/Calorimeter/CaloIdentifier/share/LArFCAL_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArFCAL_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..2ba3552e02e96a2472715ab6f530a86e0ca3e2a2 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArFCAL_ID_test.ref @@ -0,0 +1,71 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 1 vals 1:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +eta decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f ff81ffffffffffff 49 6 9 indexes mode both_bounded +phi decode 0 vals 0:15 mask/zero mask/shift/bits/offset f fffe1fffffffffff 45 4 15 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffffefffffffffff 44 1 19 indexes mode both_bounded + initialize_from_dict : + channel range -> 4/3/-2,2/1/0:62/0:15/0 | 4/3/-2,2/2/0:29/0,7,8,15/0 | 4/3/-2,2/2/0:30/3,4,11,12/0 | 4/3/-2,2/2/0:31/1,2,5,6,9,10,13,14/0 | 4/3/-2,2/3/0:14/2,10/0 | 4/3/-2,2/3/0:14/0,1,3,4,5,6,7,8,9,11,12,13,14,15/0 | 4/3/-2,2/3/15/0,1,2,3,4,6,7,8,9,10,11,12,14,15/0 + module range -> 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 + disconnected channel range -> 4/-3/-2,2/1/63/0:15 | 4/-3/-2,2/2/30:31/0,7,8,15 | 4/-3/-2,2/2/31/3,4,11,12 | 4/-3/-2,2/3/15/5,13 + disconnected module range -> 4/-3/-2,2/1 | 4/-3/-2,2/2 | 4/-3/-2,2/3 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 1 vals 1:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +eta decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f ff81ffffffffffff 49 6 9 indexes mode both_bounded +phi decode 0 vals 0:15 mask/zero mask/shift/bits/offset f fffe1fffffffffff 45 4 15 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffffefffffffffff 44 1 19 indexes mode both_bounded + initialize_from_dict : + channel range -> 4/3/-2,2/1/0:62/0:15/0 | 4/3/-2,2/2/0:29/0,7,8,15/0 | 4/3/-2,2/2/0:30/3,4,11,12/0 | 4/3/-2,2/2/0:31/1,2,5,6,9,10,13,14/0 | 4/3/-2,2/3/0:14/2,10/0 | 4/3/-2,2/3/0:14/0,1,3,4,5,6,7,8,9,11,12,13,14,15/0 | 4/3/-2,2/3/15/0,1,2,3,4,6,7,8,9,10,11,12,14,15/0 + module range -> 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 + disconnected channel range -> 4/-3/-2,2/1/63/0:15 | 4/-3/-2,2/2/30:31/0,7,8,15 | 4/-3/-2,2/2/31/3,4,11,12 | 4/-3/-2,2/3/15/5,13 + disconnected module range -> 4/-3/-2,2/1 | 4/-3/-2,2/2 | 4/-3/-2,2/3 +LarFCal_Base_ID::init_neighbours +LArFCAL_Base_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal2DNeighbors-DC3-05-Comm-01.txt +LArFCAL_Base_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal3DNeighborsNext-DC3-05-Comm-01.txt +LArFCAL_Base_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal3DNeighborsPrev-DC3-05-Comm-01.txt +LarFCal_Base_ID::init_neighbours status: 0 +test_basic +[4.3.2.1.1.1.0] hex(3602200000000000) +[4.3.2.2.1.1.0] hex(3682200000000000) +[4.3.2.3.1.1.0] hex(3702200000000000) +[4.3.-2.1.1.1.0] hex(3402200000000000) +[4.3.-2.2.1.1.0] hex(3482200000000000) +[4.3.-2.3.1.1.0] hex(3502200000000000) +test_connected + nchan 3524 + nreg 6 +Module [4.3.-2.1.0.0.0] eta: 3.200000 0.025000 0 62 phi: 0.0 0.392699 0 15 +Module [4.3.-2.2.0.0.0] eta: 3.200000 0.050000 0 31 phi: 0.0 0.392699 0 15 +Module [4.3.-2.3.0.0.0] eta: 3.200000 0.100000 0 15 phi: 0.0 0.392699 0 15 +Module [4.3.2.1.0.0.0] eta: 3.200000 0.025000 0 62 phi: 0.0 0.392699 0 15 +Module [4.3.2.2.0.0.0] eta: 3.200000 0.050000 0 31 phi: 0.0 0.392699 0 15 +Module [4.3.2.3.0.0.0] eta: 3.200000 0.100000 0 15 phi: 0.0 0.392699 0 15 + Module counts: 2016 1000 508 ; total: 3524 +test_disco + nchan 60 + Module counts: 32 24 4 ; total: 60 +test_exeptions +Exception 1: LArID_Exception - Error code: 6 + LArFCAL_Base_ID::module_id() result is not OK: ID, range = 4/3/0/99 , 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 +Exception 2: LArID_Exception - Error code: 10 + LArFCAL_Base_ID::channel_id() result is not OK: ID, range = 4/3/0/99/0/0/0 , 4/3/-2,2/1/0:62/0:15/0 | 4/3/-2,2/2/0:29/0,7,8,15/0 | 4/3/-2,2/2/0:30/3,4,11,12/0 | 4/3/-2,2/2/0:31/1,2,5,6,9,10,13,14/0 | 4/3/-2,2/3/0:14/2,10/0 | 4/3/-2,2/3/0:14/0,1,3,4,5,6,7,8,9,11,12,13,14,15/0 | 4/3/-2,2/3/15/0,1,2,3,4,6,7,8,9,10,11,12,14,15/0 +Exception 3: LArID_Exception - Error code: 6 + LArFCAL_Base_ID::module_id() result is not OK: ID, range = 4/3/1/1 , 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 +test4 diff --git a/Calorimeter/CaloIdentifier/share/LArFCAL_SuperCell_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArFCAL_SuperCell_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..c1db10738e5c70ad291d4f66bc6f2e74f059a0f5 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArFCAL_SuperCell_ID_test.ref @@ -0,0 +1,42 @@ +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 1 vals 1:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +eta decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f ff81ffffffffffff 49 6 9 indexes mode both_bounded +phi decode 0 vals 0:15 mask/zero mask/shift/bits/offset f fffe1fffffffffff 45 4 15 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffffefffffffffff 44 1 19 indexes mode both_bounded + initialize_from_dict : + channel range -> 4/3/-2,2/1/0:11/0:15/1 | 4/3/-2,2/2/0:7/0:15/1 | 4/3/-2,2/3/0:3/0:15/1 + module range -> 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 + disconnected channel range -> + disconnected module range -> +test_basic +[4.3.2.1.1.1.1] hex(3602300000000000) +[4.3.2.2.1.1.1] hex(3682300000000000) +[4.3.2.3.1.1.1] hex(3702300000000000) +[4.3.-2.1.1.1.1] hex(3402300000000000) +[4.3.-2.2.1.1.1] hex(3482300000000000) +[4.3.-2.3.1.1.1] hex(3502300000000000) +test_connected + nchan 768 + nreg 6 +Module [4.3.-2.1.0.0.1] eta: 3.200000 0.140000 0 11 phi: 0.0 0.392699 0 15 +Module [4.3.-2.2.0.0.1] eta: 3.200000 0.160000 0 7 phi: 0.0 0.392699 0 15 +Module [4.3.-2.3.0.0.1] eta: 3.200000 0.320000 0 3 phi: 0.0 0.392699 0 15 +Module [4.3.2.1.0.0.1] eta: 3.200000 0.140000 0 11 phi: 0.0 0.392699 0 15 +Module [4.3.2.2.0.0.1] eta: 3.200000 0.160000 0 7 phi: 0.0 0.392699 0 15 +Module [4.3.2.3.0.0.1] eta: 3.200000 0.320000 0 3 phi: 0.0 0.392699 0 15 + Module counts: 384 256 128 ; total: 768 +test_disco + nchan 0 + Module counts: 0 0 0 ; total: 0 +test_exeptions +Exception 1: LArID_Exception - Error code: 6 + LArFCAL_Base_ID::module_id() result is not OK: ID, range = 4/3/0/99 , 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 +Exception 2: LArID_Exception - Error code: 10 + LArFCAL_Base_ID::channel_id() result is not OK: ID, range = 4/3/0/99/0/0/1 , 4/3/-2,2/1/0:11/0:15/1 | 4/3/-2,2/2/0:7/0:15/1 | 4/3/-2,2/3/0:3/0:15/1 +Exception 3: LArID_Exception - Error code: 6 + LArFCAL_Base_ID::module_id() result is not OK: ID, range = 4/3/1/1 , 4/3/-2,2/1 | 4/3/-2,2/2 | 4/3/-2,2/3 diff --git a/Calorimeter/CaloIdentifier/share/LArHEC_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArHEC_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..90b65c64ad99f1e1f995d0f27ee1d81b52dccf1f --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArHEC_ID_test.ref @@ -0,0 +1,90 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/0 | 4/2/-2,2/1/0/0:9/0:63/0 | 4/2/-2,2/2/0/1:9/0:63/0 | 4/2/-2,2/3/0/2:9/0:63/0 | 4/2/-2,2/0/1/0:3/0:31/0 | 4/2/-2,2/1/1/0:2/0:31/0 | 4/2/-2,2/2/1/0:2/0:31/0 | 4/2/-2,2/3/1/0:3/0:31/0 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/1/0 | 4/2/-2,2/2/0 | 4/2/-2,2/3/0 | 4/2/-2,2/0/1 | 4/2/-2,2/1/1 | 4/2/-2,2/2/1 | 4/2/-2,2/3/1 + disconnected channel range -> 4/-2/-2,2/2/0/0/0:63 | 4/-2/-2,2/3/0/0:1/0:63 | 4/-2/-2,2/1/1/3/0:31 | 4/-2/-2,2/2/1/3/0:31 + disconnected region range -> 4/-2/-2,2/2/0 | 4/-2/-2,2/3/0 | 4/-2/-2,2/1/1 | 4/-2/-2,2/2/1 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/0 | 4/2/-2,2/1/0/0:9/0:63/0 | 4/2/-2,2/2/0/1:9/0:63/0 | 4/2/-2,2/3/0/2:9/0:63/0 | 4/2/-2,2/0/1/0:3/0:31/0 | 4/2/-2,2/1/1/0:2/0:31/0 | 4/2/-2,2/2/1/0:2/0:31/0 | 4/2/-2,2/3/1/0:3/0:31/0 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/1/0 | 4/2/-2,2/2/0 | 4/2/-2,2/3/0 | 4/2/-2,2/0/1 | 4/2/-2,2/1/1 | 4/2/-2,2/2/1 | 4/2/-2,2/3/1 + disconnected channel range -> 4/-2/-2,2/2/0/0/0:63 | 4/-2/-2,2/3/0/0:1/0:63 | 4/-2/-2,2/1/1/3/0:31 | 4/-2/-2,2/2/1/3/0:31 + disconnected region range -> 4/-2/-2,2/2/0 | 4/-2/-2,2/3/0 | 4/-2/-2,2/1/1 | 4/-2/-2,2/2/1 + LArHEC_Base_ID::init_neighbors +test_basic +[4.2.2.1.0.0.1.0] hex(3280100000000000) +[4.2.2.2.0.2.10.0] hex(3308a00000000000) +[4.2.2.3.1.0.20.0] hex(33c1400000000000) +[4.2.-2.1.0.0.1.0] hex(3080100000000000) +[4.2.-2.2.0.2.10.0] hex(3108a00000000000) +[4.2.-2.3.1.0.20.0] hex(31c1400000000000) +test_connected + nchannel 5632 + nregion 16 +Sampling Outer Inner +0 1280 256 +1 1280 192 +2 1152 192 +3 1024 256 +Total 4736 896 Grand total: 5632 +Region [4.2.-2.0.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.0.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.-2.1.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.1.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.-2.2.0] eta: 1.600000 0.100000 1 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.2.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.-2.3.0] eta: 1.700000 0.100000 2 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.3.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.2.0.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.0.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.2.1.0.0.0.0] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.1.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.2.2.0] eta: 1.600000 0.100000 1 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.2.1.0.0.0] eta: 2.500000 0.200000 0 2 phi: 0.0 0.196350 0 31 +Region [4.2.2.3.0] eta: 1.700000 0.100000 2 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.3.1.0.0.0] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +test_disco + nchan 512 +Sampling Outer Inner +0 0 0 +1 0 64 +2 128 64 +3 256 0 +Total 384 128 Grand total: 512 +test_exceptions +Exception 1: LArID_Exception - Error code: 7 + LArHEC_Base_ID::region_id() result is not OK: ID, range = 4/2/0/99/0 , 4/2/-2,2/0/0 | 4/2/-2,2/1/0 | 4/2/-2,2/2/0 | 4/2/-2,2/3/0 | 4/2/-2,2/0/1 | 4/2/-2,2/1/1 | 4/2/-2,2/2/1 | 4/2/-2,2/3/1 +Exception 2: LArID_Exception - Error code: 8 + LArHEC_Base_ID::channel_id() result is not OK: ID, range = 4/2/0/99/0/0/0/0 , 4/2/-2,2/0/0/0:9/0:63/0 | 4/2/-2,2/1/0/0:9/0:63/0 | 4/2/-2,2/2/0/1:9/0:63/0 | 4/2/-2,2/3/0/2:9/0:63/0 | 4/2/-2,2/0/1/0:3/0:31/0 | 4/2/-2,2/1/1/0:2/0:31/0 | 4/2/-2,2/2/1/0:2/0:31/0 | 4/2/-2,2/3/1/0:3/0:31/0 +Exception 3: LArID_Exception - Error code: 8 + LArHEC_Base_ID::channel_id(regId) result is not OK: ID, range = 4/2/2/0/0/0/-99/0 , 4/2/-2,2/0/0/0:9/0:63/0 | 4/2/-2,2/1/0/0:9/0:63/0 | 4/2/-2,2/2/0/1:9/0:63/0 | 4/2/-2,2/3/0/2:9/0:63/0 | 4/2/-2,2/0/1/0:3/0:31/0 | 4/2/-2,2/1/1/0:2/0:31/0 | 4/2/-2,2/2/1/0:2/0:31/0 | 4/2/-2,2/3/1/0:3/0:31/0 +test_neighbors +test_hec diff --git a/Calorimeter/CaloIdentifier/share/LArHEC_SuperCell_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArHEC_SuperCell_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..466b8433b83af904458f95d6019f803aaf198c8a --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArHEC_SuperCell_ID_test.ref @@ -0,0 +1,76 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/1 | 4/2/-2,2/0/1/0:3/0:31/1 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/0/1 + disconnected channel range -> + disconnected region range -> +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +hec decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +samp decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +reg decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 ffbfffffffffffff 54 1 9 indexes mode both_bounded +eta decode 0 vals 0:9 mask/zero mask/shift/bits/offset f ffc3ffffffffffff 50 4 10 indexes mode both_bounded +phi decode 0 vals 0:63 mask/zero mask/shift/bits/offset 3f fffc0fffffffffff 44 6 14 indexes mode both_bounded +is-slar decode 0 vals 0:1 mask/zero mask/shift/bits/offset 1 fffff7ffffffffff 43 1 20 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/2/-2,2/0/0/0:9/0:63/1 | 4/2/-2,2/0/1/0:3/0:31/1 + region range -> 4/2/-2,2/0/0 | 4/2/-2,2/0/1 + disconnected channel range -> + disconnected region range -> + LArHEC_Base_ID::init_neighbors +test_basic +[4.2.2.0.0.0.1.1] hex(3200180000000000) +[4.2.2.0.1.3.2.1] hex(324c280000000000) +[4.2.-2.0.0.0.1.1] hex(3000180000000000) +[4.2.-2.0.1.3.2.1] hex(304c280000000000) +test_connected + nchannel 1536 + nregion 4 +Sampling Outer Inner +0 1280 256 +1 0 0 +2 0 0 +3 0 0 +Total 1280 256 Grand total: 1536 +Region [4.2.-2.0.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.-2.0.1.0.0.1] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +Region [4.2.2.0.0.0.0.1] eta: 1.500000 0.100000 0 9 phi: 0.0 0.098175 0 63 +Region [4.2.2.0.1.0.0.1] eta: 2.500000 0.200000 0 3 phi: 0.0 0.196350 0 31 +test_disco + nchan 0 +Sampling Outer Inner +0 0 0 +1 0 0 +2 0 0 +3 0 0 +Total 0 0 Grand total: 0 +test_exceptions +Exception 1: LArID_Exception - Error code: 7 + LArHEC_Base_ID::region_id() result is not OK: ID, range = 4/2/0/99/0 , 4/2/-2,2/0/0 | 4/2/-2,2/0/1 +Exception 2: LArID_Exception - Error code: 8 + LArHEC_Base_ID::channel_id() result is not OK: ID, range = 4/2/0/99/0/0/0/1 , 4/2/-2,2/0/0/0:9/0:63/1 | 4/2/-2,2/0/1/0:3/0:31/1 +Exception 3: LArID_Exception - Error code: 8 + LArHEC_Base_ID::channel_id(regId) result is not OK: ID, range = 4/2/2/0/0/0/-99/1 , 4/2/-2,2/0/0/0:9/0:63/1 | 4/2/-2,2/0/1/0:3/0:31/1 +test_neighbors +test_hec diff --git a/Calorimeter/CaloIdentifier/share/LArMiniFCAL_ID_test.ref b/Calorimeter/CaloIdentifier/share/LArMiniFCAL_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..0affe4d4fef91e33460cb0d8fe4a1570e20998e5 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/LArMiniFCAL_ID_test.ref @@ -0,0 +1,64 @@ +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +depth decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +eta decode 0 vals 0:8 mask/zero mask/shift/bits/offset f ffe1ffffffffffff 49 4 11 indexes mode both_bounded +phi decode 0 vals 0:85 mask/zero mask/shift/bits/offset 7f fffe03ffffffffff 42 7 15 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/3/-2,2/0/0:3/0/0:85 | 4/3/-2,2/0/0:3/1/0:79 | 4/3/-2,2/0/0:3/2/0:73 | 4/3/-2,2/0/0:3/3/0:66 | 4/3/-2,2/0/0:3/4/0:60 | 4/3/-2,2/0/0:3/5/0:54 | 4/3/-2,2/0/0:3/6/0:47 | 4/3/-2,2/0/0:3/7/0:41 | 4/3/-2,2/0/0:3/8/0:35 + module range -> 4/3/-2,2/0 + depth range -> 4/3/-2,2/0/0:3 + disconnected channel range -> + disconnected module range -> +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +decode index and bit fields for each level: +lar decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7 1fffffffffffffff 61 3 0 indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode enumerated +fcal decode 1 vals -3,-2,-1,1,2,3,4,5 mask/zero mask/shift/bits/offset 7 e3ffffffffffffff 58 3 3 indexes 0 1 2 0 3 4 5 6 7 mode enumerated +pn decode 1 vals -2,2 mask/zero mask/shift/bits/offset 1 fdffffffffffffff 57 1 6 indexes 0 0 0 0 1 mode enumerated +mod decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 fe7fffffffffffff 55 2 7 indexes mode both_bounded +depth decode 0 vals 0:3 mask/zero mask/shift/bits/offset 3 ff9fffffffffffff 53 2 9 indexes mode both_bounded +eta decode 0 vals 0:8 mask/zero mask/shift/bits/offset f ffe1ffffffffffff 49 4 11 indexes mode both_bounded +phi decode 0 vals 0:85 mask/zero mask/shift/bits/offset 7f fffe03ffffffffff 42 7 15 indexes mode both_bounded +initialize_from_dict : + channel range -> 4/3/-2,2/0/0:3/0/0:85 | 4/3/-2,2/0/0:3/1/0:79 | 4/3/-2,2/0/0:3/2/0:73 | 4/3/-2,2/0/0:3/3/0:66 | 4/3/-2,2/0/0:3/4/0:60 | 4/3/-2,2/0/0:3/5/0:54 | 4/3/-2,2/0/0:3/6/0:47 | 4/3/-2,2/0/0:3/7/0:41 | 4/3/-2,2/0/0:3/8/0:35 + module range -> 4/3/-2,2/0 + depth range -> 4/3/-2,2/0/0:3 + disconnected channel range -> + disconnected module range -> +LArMiniFCAL_ID::init_neighbors +LArMiniFCAL_ID::init_neighbors_from_file +LArMiniFCAL_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal2DNeighbors-DC3-05-Comm-01.txt +LArMiniFCAL_ID::init_neighbors_from_file +LArMiniFCAL_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal3DNeighborsNext-DC3-05-Comm-01.txt +LArMiniFCAL_ID::init_neighbors_from_file +LArMiniFCAL_ID INFO Reading file /home/sss/atlas/supercell2/build/share/FCal3DNeighborsPrev-DC3-05-Comm-01.txt +test_basic +[4.3.2.0.0.0.0] hex(3600000000000000) +[4.3.2.0.1.0.0] hex(3620000000000000) +[4.3.2.0.2.0.0] hex(3640000000000000) +[4.3.-2.0.0.0.0] hex(3400000000000000) +[4.3.-2.0.1.0.0] hex(3420000000000000) +[4.3.-2.0.2.0.0] hex(3440000000000000) +test_connected + nchannel 4392 + nmodule 2 +Sampling +0 1098 +1 1098 +2 1098 +3 1098 +Total 4392 +Region [4.3.-2.0.0.0.0] eta: 4.750000 0.150000 0 8 phi: 0.0 0.174533 0 85 +Region [4.3.2.0.0.0.0] eta: 4.750000 0.150000 0 8 phi: 0.0 0.174533 0 85 +test_disco +test_exceptions +Exception 1: LArID_Exception - Error code: 6 + LArMiniFCAL_ID::module_id() result is not OK: ID, range = 4/3/99/0 , 4/3/-2,2/0 +Exception 2: LArID_Exception - Error code: 10 + LArMiniFCAL_ID::channel_id() result is not OK: ID, range = 4/3/2/0/0/0/999 , 4/3/-2,2/0/0:3/0/0:85 | 4/3/-2,2/0/0:3/1/0:79 | 4/3/-2,2/0/0:3/2/0:73 | 4/3/-2,2/0/0:3/3/0:66 | 4/3/-2,2/0/0:3/4/0:60 | 4/3/-2,2/0/0:3/5/0:54 | 4/3/-2,2/0/0:3/6/0:47 | 4/3/-2,2/0/0:3/7/0:41 | 4/3/-2,2/0/0:3/8/0:35 +test_neighbors diff --git a/Calorimeter/CaloIdentifier/share/SuperCaloNeighborsSuperCells-April2014.dat b/Calorimeter/CaloIdentifier/share/SuperCaloNeighborsSuperCells-April2014.dat new file mode 100644 index 0000000000000000000000000000000000000000..0f6b804abe4f5b898f2a753dd83965736f3ed8c1 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/SuperCaloNeighborsSuperCells-April2014.dat @@ -0,0 +1,297 @@ +# File and Version Information: +# $Id: SuperCaloNeighboursSuperCells-April2014.dat,v 1.0 2014-05-06 15:36:00 menke Exp $ +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Tue May 06 15:36:00 2014 +# +# ranges of expanded calorimeter super cell identifiers are mapped to create +# lookup tables for the super calo neighbours. The mapping in eta has to be given +# explicitely, while side symmetry and the mapping in phi can be automated. +# The automation in phi works only on contigous ranges. +# +# Syntax: +# for each mapped region: Header and Entry lines until an empty line +# denotes the end of the block. The Header consists of: +# <Type> <Name> <SourceRange> <TargetRange> [<SideDirective>] [<PhiDirective>] +# <Type>: nextSuperCalo or prevSuperCalo denotes the direction of the map +# <Name>: any string without blanks, white-space etc. +# <Source/TargetRange>: A cell-level ExpandedIdentifier Range +# <SideDirective>: calcSide(i1,i2) maps sign of the field i1 in SourceRange to +# the sign of field i2 in TargetRange. +# <PhiDirective>: calcPhi(i1,i2) maps the field i1 in SourceRange to +# the field i2 in TargetRange by scaling. +# +nextSuperCalo EMB3/TileB 4/1/-1,1/3/0/0:9/0:63 5/1/-1,1/0:63/0:8 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/0/0 5/1/1/0/0 +4/1/1/3/0/1/0 5/1/1/0/1 +4/1/1/3/0/2/0 5/1/1/0/2 +4/1/1/3/0/3/0 5/1/1/0/3 +4/1/1/3/0/4/0 5/1/1/0/4 +4/1/1/3/0/5/0 5/1/1/0/5 +4/1/1/3/0/6/0 5/1/1/0/6 +4/1/1/3/0/7/0 5/1/1/0/7 +4/1/1/3/0/8/0 5/1/1/0/8 +4/1/1/3/0/9/0 5/1/1/0/8 + +prevSuperCalo TileB/EMB3 5/1/-1,1/0:63/0:8 4/1/-1,1/3/0/0:9/0:63 calcSide(2,2) calcPhi(3,6) +5/1/1/0/0 4/1/1/3/0/0/0 +5/1/1/0/1 4/1/1/3/0/1/0 +5/1/1/0/2 4/1/1/3/0/2/0 +5/1/1/0/3 4/1/1/3/0/3/0 +5/1/1/0/4 4/1/1/3/0/4/0 +5/1/1/0/5 4/1/1/3/0/5/0 +5/1/1/0/6 4/1/1/3/0/6/0 +5/1/1/0/7 4/1/1/3/0/7/0 +5/1/1/0/8 4/1/1/3/0/8/0 4/1/1/3/0/9/0 + +nextSuperCalo EMB3/TileE 4/1/-1,1/3/0/9:13/0:63 5/2/-1,1/0:63/9:13 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/9/0 5/2/1/0/9 +4/1/1/3/0/10/0 5/2/1/0/10 +4/1/1/3/0/11/0 5/2/1/0/11 +4/1/1/3/0/12/0 5/2/1/0/12 +4/1/1/3/0/13/0 5/2/1/0/13 + +prevSuperCalo TileE/EMB3 5/2/-1,1/0:63/9:13 4/1/-1,1/3/0/9:13/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/9 4/1/1/3/0/9/0 +5/2/1/0/10 4/1/1/3/0/10/0 +5/2/1/0/11 4/1/1/3/0/11/0 +5/2/1/0/12 4/1/1/3/0/12/0 +5/2/1/0/13 4/1/1/3/0/13/0 + +nextSuperCalo EMEC3/TileE 4/1/-2,2/3/0/0/0:63 5/2/-1,1/0:63/15 calcSide(2,2) calcPhi(6,3) +4/1/2/3/0/0/0 5/2/1/0/15 + +prevSuperCalo TileE/EME3 5/2/-1,1/0:63/15 4/1/-2,2/3/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15 4/1/2/3/0/0/0 + +nextSuperCalo EMEC2/TileE 4/1/-2,2/2/1/0:3/0:63 5/2/-1,1/0:63/14:15 calcSide(2,2) calcPhi(6,3) +4/1/2/2/1/0/0 5/2/1/0/14 +4/1/2/2/1/1/0 5/2/1/0/14 +4/1/2/2/1/2/0 5/2/1/0/14 +4/1/2/2/1/3/0 5/2/1/0/15 + +prevSuperCalo TileE/EME2 5/2/-1,1/0:63/14:15 4/1/-2,2/2/1/0:3/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14 4/1/2/2/1/0/0 4/1/2/2/1/1/0 4/1/2/2/1/2/0 +5/2/1/0/15 4/1/2/2/1/3/0 + +nextSuperCalo EMEC3/HECOW 4/1/-2,2/3/0/0:9/0:63 4/2/-2,2/0/0/0:9/0:63 calcSide(2,2) calcPhi(6,6) +4/1/2/3/0/0/0 4/2/2/0/0/0/0 +4/1/2/3/0/1/0 4/2/2/0/0/1/0 +4/1/2/3/0/2/0 4/2/2/0/0/2/0 +4/1/2/3/0/3/0 4/2/2/0/0/3/0 +4/1/2/3/0/4/0 4/2/2/0/0/4/0 +4/1/2/3/0/5/0 4/2/2/0/0/5/0 +4/1/2/3/0/6/0 4/2/2/0/0/6/0 +4/1/2/3/0/7/0 4/2/2/0/0/7/0 +4/1/2/3/0/8/0 4/2/2/0/0/8/0 +4/1/2/3/0/9/0 4/2/2/0/0/9/0 + +prevSuperCalo HECOW/EMEC3 4/2/-2,2/0/0/0:9/0:63 4/1/-2,2/3/0/0:9/0:63 calcSide(2,2) calcPhi(6,6) +4/2/2/0/0/0/0 4/1/2/3/0/0/0 +4/2/2/0/0/1/0 4/1/2/3/0/1/0 +4/2/2/0/0/2/0 4/1/2/3/0/2/0 +4/2/2/0/0/3/0 4/1/2/3/0/3/0 +4/2/2/0/0/4/0 4/1/2/3/0/4/0 +4/2/2/0/0/5/0 4/1/2/3/0/5/0 +4/2/2/0/0/6/0 4/1/2/3/0/6/0 +4/2/2/0/0/7/0 4/1/2/3/0/7/0 +4/2/2/0/0/8/0 4/1/2/3/0/8/0 +4/2/2/0/0/9/0 4/1/2/3/0/9/0 + +nextSuperCalo EMEC20/HECIW 4/1/-3,3/2/0/0:2/0:31 4/2/-2,2/0/1/0:2/0:31 calcSide(2,2) calcPhi(6,6) +4/1/3/2/0/0/0 4/2/2/0/1/0/0 +4/1/3/2/0/1/0 4/2/2/0/1/1/0 +4/1/3/2/0/2/0 4/2/2/0/1/2/0 + +prevSuperCalo HECIW/EMEC20 4/2/-2,2/0/1/0:2/0:31 4/1/-3,3/2/0/0:2/0:31 calcSide(2,2) calcPhi(6,6) +4/2/2/0/1/0/0 4/1/3/2/0/0/0 +4/2/2/0/1/1/0 4/1/3/2/0/1/0 +4/2/2/0/1/2/0 4/1/3/2/0/2/0 + +nextSuperCalo EMEC21/HECIW 4/1/-3,3/2/1/0/0:31 4/2/-2,2/0/1/3/0:31 calcSide(2,2) calcPhi(6,6) +4/1/3/2/1/0/0 4/2/2/0/1/3/0 + +prevSuperCalo HECIW/EMEC21 4/2/-2,2/0/1/3/0:31 4/1/-3,3/2/1/0/0:31 calcSide(2,2) calcPhi(6,6) +4/2/2/0/1/3/0 4/1/3/2/1/0/0 + +nextSuperCalo HEC/TileE 4/2/-2,2/0/0/0/0:63 5/2/-1,1/0:63/15 calcSide(2,2) calcPhi(6,3) +4/2/2/0/0/0/0 5/2/1/0/15 + +prevSuperCalo TileE/HEC 5/2/-1,1/0:63/15 4/2/-2,2/0/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15 4/2/2/0/0/0/0 + +nextSuperCalo HECIW/FCal1 4/2/-2,2/0/1/2:3/0:31 4/3/-2,2/1/0:2/0:15 calcSide(2,2) +4/2/2/0/1/2/1 4/3/2/1/0/0 +4/2/2/0/1/2/2 4/3/2/1/0/1 +4/2/2/0/1/2/3 4/3/2/1/0/1 +4/2/2/0/1/2/4 4/3/2/1/0/2 +4/2/2/0/1/2/5 4/3/2/1/0/3 +4/2/2/0/1/2/6 4/3/2/1/0/3 +4/2/2/0/1/2/7 4/3/2/1/0/3 +4/2/2/0/1/2/8 4/3/2/1/0/4 +4/2/2/0/1/2/23 4/3/2/1/0/11 +4/2/2/0/1/2/24 4/3/2/1/0/12 +4/2/2/0/1/2/25 4/3/2/1/0/12 +4/2/2/0/1/2/26 4/3/2/1/0/12 4/3/2/1/0/13 +4/2/2/0/1/2/27 4/3/2/1/0/13 +4/2/2/0/1/2/28 4/3/2/1/0/14 +4/2/2/0/1/2/29 4/3/2/1/0/14 4/3/2/1/0/15 +4/2/2/0/1/2/30 4/3/2/1/0/15 +4/2/2/0/1/3/0 4/3/2/1/0/0 4/3/2/1/1/0 4/3/2/1/2/0 +4/2/2/0/1/3/1 4/3/2/1/0/0 4/3/2/1/1/0 4/3/2/1/2/0 4/3/2/1/0/1 4/3/2/1/1/1 +4/2/2/0/1/3/2 4/3/2/1/0/0 4/3/2/1/1/0 4/3/2/1/0/1 4/3/2/1/1/1 4/3/2/1/2/1 +4/2/2/0/1/3/3 4/3/2/1/0/1 4/3/2/1/1/1 4/3/2/1/2/1 4/3/2/1/0/2 4/3/2/1/1/2 +4/2/2/0/1/3/4 4/3/2/1/0/1 4/3/2/1/1/1 4/3/2/1/0/2 4/3/2/1/1/2 4/3/2/1/2/2 +4/2/2/0/1/3/5 4/3/2/1/0/2 4/3/2/1/1/2 4/3/2/1/2/2 4/3/2/1/0/3 4/3/2/1/1/3 +4/2/2/0/1/3/6 4/3/2/1/0/2 4/3/2/1/0/3 4/3/2/1/1/3 +4/2/2/0/1/3/7 4/3/2/1/0/3 4/3/2/1/1/3 4/3/2/1/0/4 4/3/2/1/1/4 +4/2/2/0/1/3/8 4/3/2/1/0/4 4/3/2/1/1/4 +4/2/2/0/1/3/9 4/3/2/1/0/4 4/3/2/1/1/4 4/3/2/1/0/5 4/3/2/1/1/5 +4/2/2/0/1/3/10 4/3/2/1/0/4 4/3/2/1/1/4 4/3/2/1/0/5 4/3/2/1/1/5 4/3/2/1/2/5 +4/2/2/0/1/3/11 4/3/2/1/0/5 4/3/2/1/1/5 4/3/2/1/0/6 4/3/2/1/1/6 +4/2/2/0/1/3/12 4/3/2/1/0/5 4/3/2/1/1/5 4/3/2/1/0/6 4/3/2/1/1/6 4/3/2/1/2/6 +4/2/2/0/1/3/13 4/3/2/1/0/6 4/3/2/1/1/6 4/3/2/1/2/6 4/3/2/1/0/7 4/3/2/1/1/7 +4/2/2/0/1/3/14 4/3/2/1/0/6 4/3/2/1/1/6 4/3/2/1/0/7 4/3/2/1/1/7 4/3/2/1/2/7 +4/2/2/0/1/3/15 4/3/2/1/0/7 4/3/2/1/1/7 +4/2/2/0/1/3/16 4/3/2/1/0/8 4/3/2/1/1/8 +4/2/2/0/1/3/17 4/3/2/1/0/8 4/3/2/1/1/8 4/3/2/1/2/8 4/3/2/1/0/9 4/3/2/1/1/9 +4/2/2/0/1/3/18 4/3/2/1/0/8 4/3/2/1/1/8 4/3/2/1/0/9 4/3/2/1/1/9 4/3/2/1/2/9 +4/2/2/0/1/3/19 4/3/2/1/0/9 4/3/2/1/1/9 4/3/2/1/2/9 4/3/2/1/0/10 4/3/2/1/1/10 +4/2/2/0/1/3/20 4/3/2/1/0/9 4/3/2/1/1/9 4/3/2/1/0/10 4/3/2/1/1/10 4/3/2/1/2/10 +4/2/2/0/1/3/21 4/3/2/1/0/10 4/3/2/1/1/10 4/3/2/1/2/10 4/3/2/1/1/11 +4/2/2/0/1/3/22 4/3/2/1/0/10 4/3/2/1/1/10 4/3/2/1/0/11 4/3/2/1/1/11 +4/2/2/0/1/3/23 4/3/2/1/0/11 4/3/2/1/1/11 +4/2/2/0/1/3/24 4/3/2/1/0/11 4/3/2/1/1/11 4/3/2/1/0/12 4/3/2/1/1/12 +4/2/2/0/1/3/25 4/3/2/1/0/12 4/3/2/1/1/12 4/3/2/1/0/13 +4/2/2/0/1/3/26 4/3/2/1/0/12 4/3/2/1/1/12 4/3/2/1/0/13 4/3/2/1/1/13 4/3/2/1/2/13 +4/2/2/0/1/3/27 4/3/2/1/0/13 4/3/2/1/1/13 4/3/2/1/0/14 4/3/2/1/1/14 +4/2/2/0/1/3/28 4/3/2/1/0/13 4/3/2/1/1/13 4/3/2/1/0/14 4/3/2/1/1/14 4/3/2/1/2/14 +4/2/2/0/1/3/29 4/3/2/1/0/14 4/3/2/1/1/14 4/3/2/1/2/14 4/3/2/1/0/15 4/3/2/1/1/15 +4/2/2/0/1/3/30 4/3/2/1/0/14 4/3/2/1/1/14 4/3/2/1/0/15 4/3/2/1/1/15 4/3/2/1/2/15 +4/2/2/0/1/3/31 4/3/2/1/0/15 4/3/2/1/1/15 4/3/2/1/2/15 + +prevSuperCalo FCal1/HECIW 4/3/-2,2/1/0:2/0:15 4/2/-2,2/0/1/2:3/0:31 calcSide(2,2) +4/3/2/1/0/0 4/2/2/0/1/3/0 4/2/2/0/1/2/1 4/2/2/0/1/3/1 4/2/2/0/1/3/2 +4/3/2/1/1/0 4/2/2/0/1/3/0 4/2/2/0/1/3/1 4/2/2/0/1/3/2 +4/3/2/1/2/0 4/2/2/0/1/3/0 4/2/2/0/1/3/1 +4/3/2/1/0/1 4/2/2/0/1/3/1 4/2/2/0/1/2/2 4/2/2/0/1/3/2 4/2/2/0/1/2/3 4/2/2/0/1/3/3 4/2/2/0/1/3/4 +4/3/2/1/1/1 4/2/2/0/1/3/1 4/2/2/0/1/3/2 4/2/2/0/1/3/3 4/2/2/0/1/3/4 +4/3/2/1/2/1 4/2/2/0/1/3/2 4/2/2/0/1/3/3 +4/3/2/1/0/2 4/2/2/0/1/3/3 4/2/2/0/1/2/4 4/2/2/0/1/3/4 4/2/2/0/1/3/5 4/2/2/0/1/3/6 +4/3/2/1/1/2 4/2/2/0/1/3/3 4/2/2/0/1/3/4 4/2/2/0/1/3/5 +4/3/2/1/2/2 4/2/2/0/1/3/4 4/2/2/0/1/3/5 +4/3/2/1/0/3 4/2/2/0/1/2/5 4/2/2/0/1/3/5 4/2/2/0/1/2/6 4/2/2/0/1/3/6 4/2/2/0/1/2/7 4/2/2/0/1/3/7 +4/3/2/1/1/3 4/2/2/0/1/3/5 4/2/2/0/1/3/6 4/2/2/0/1/3/7 +4/3/2/1/0/4 4/2/2/0/1/3/7 4/2/2/0/1/2/8 4/2/2/0/1/3/8 4/2/2/0/1/3/9 4/2/2/0/1/3/10 +4/3/2/1/1/4 4/2/2/0/1/3/7 4/2/2/0/1/3/8 4/2/2/0/1/3/9 4/2/2/0/1/3/10 +4/3/2/1/0/5 4/2/2/0/1/3/9 4/2/2/0/1/3/10 4/2/2/0/1/3/11 4/2/2/0/1/3/12 +4/3/2/1/1/5 4/2/2/0/1/3/9 4/2/2/0/1/3/10 4/2/2/0/1/3/11 4/2/2/0/1/3/12 +4/3/2/1/2/5 4/2/2/0/1/3/10 +4/3/2/1/0/6 4/2/2/0/1/3/11 4/2/2/0/1/3/12 4/2/2/0/1/3/13 4/2/2/0/1/3/14 +4/3/2/1/1/6 4/2/2/0/1/3/11 4/2/2/0/1/3/12 4/2/2/0/1/3/13 4/2/2/0/1/3/14 +4/3/2/1/2/6 4/2/2/0/1/3/12 4/2/2/0/1/3/13 +4/3/2/1/0/7 4/2/2/0/1/3/13 4/2/2/0/1/3/14 4/2/2/0/1/3/15 +4/3/2/1/1/7 4/2/2/0/1/3/13 4/2/2/0/1/3/14 4/2/2/0/1/3/15 +4/3/2/1/2/7 4/2/2/0/1/3/14 +4/3/2/1/0/8 4/2/2/0/1/3/16 4/2/2/0/1/3/17 4/2/2/0/1/3/18 +4/3/2/1/1/8 4/2/2/0/1/3/16 4/2/2/0/1/3/17 4/2/2/0/1/3/18 +4/3/2/1/2/8 4/2/2/0/1/3/17 +4/3/2/1/0/9 4/2/2/0/1/3/17 4/2/2/0/1/3/18 4/2/2/0/1/3/19 4/2/2/0/1/3/20 +4/3/2/1/1/9 4/2/2/0/1/3/17 4/2/2/0/1/3/18 4/2/2/0/1/3/19 4/2/2/0/1/3/20 +4/3/2/1/2/9 4/2/2/0/1/3/18 4/2/2/0/1/3/19 +4/3/2/1/0/10 4/2/2/0/1/3/19 4/2/2/0/1/3/20 4/2/2/0/1/3/21 4/2/2/0/1/3/22 +4/3/2/1/1/10 4/2/2/0/1/3/19 4/2/2/0/1/3/20 4/2/2/0/1/3/21 4/2/2/0/1/3/22 +4/3/2/1/2/10 4/2/2/0/1/3/20 4/2/2/0/1/3/21 +4/3/2/1/0/11 4/2/2/0/1/3/22 4/2/2/0/1/2/23 4/2/2/0/1/3/23 4/2/2/0/1/3/24 +4/3/2/1/1/11 4/2/2/0/1/3/21 4/2/2/0/1/3/22 4/2/2/0/1/3/23 4/2/2/0/1/3/24 +4/3/2/1/0/12 4/2/2/0/1/2/24 4/2/2/0/1/3/24 4/2/2/0/1/2/25 4/2/2/0/1/3/25 4/2/2/0/1/2/26 4/2/2/0/1/3/26 +4/3/2/1/1/12 4/2/2/0/1/3/24 4/2/2/0/1/3/25 4/2/2/0/1/3/26 +4/3/2/1/0/13 4/2/2/0/1/3/25 4/2/2/0/1/2/26 4/2/2/0/1/3/26 4/2/2/0/1/2/27 4/2/2/0/1/3/27 4/2/2/0/1/3/28 +4/3/2/1/1/13 4/2/2/0/1/3/26 4/2/2/0/1/3/27 4/2/2/0/1/3/28 +4/3/2/1/2/13 4/2/2/0/1/3/26 +4/3/2/1/0/14 4/2/2/0/1/3/27 4/2/2/0/1/2/28 4/2/2/0/1/3/28 4/2/2/0/1/2/29 4/2/2/0/1/3/29 4/2/2/0/1/3/30 +4/3/2/1/1/14 4/2/2/0/1/3/27 4/2/2/0/1/3/28 4/2/2/0/1/3/29 4/2/2/0/1/3/30 +4/3/2/1/2/14 4/2/2/0/1/3/28 4/2/2/0/1/3/29 +4/3/2/1/0/15 4/2/2/0/1/2/29 4/2/2/0/1/3/29 4/2/2/0/1/2/30 4/2/2/0/1/3/30 4/2/2/0/1/3/31 +4/3/2/1/1/15 4/2/2/0/1/3/29 4/2/2/0/1/3/30 4/2/2/0/1/3/31 +4/3/2/1/2/15 4/2/2/0/1/3/30 4/2/2/0/1/3/31 + +nextSuperCalo FCal2/HECIW 4/3/-2,2/2/0:2/0:15 4/2/-2,2/0/1/3/0:31 calcSide(2,2) +4/3/2/2/0/0 4/2/2/0/1/3/0 4/2/2/0/1/3/1 4/2/2/0/1/3/2 +4/3/2/2/1/0 4/2/2/0/1/3/0 4/2/2/0/1/3/1 4/2/2/0/1/3/2 +4/3/2/2/2/0 4/2/2/0/1/3/0 4/2/2/0/1/3/1 +4/3/2/2/0/1 4/2/2/0/1/3/2 4/2/2/0/1/3/3 4/2/2/0/1/3/4 +4/3/2/2/1/1 4/2/2/0/1/3/2 4/2/2/0/1/3/3 +4/3/2/2/2/1 4/2/2/0/1/3/2 4/2/2/0/1/3/3 4/2/2/0/1/3/4 +4/3/2/2/0/2 4/2/2/0/1/3/3 4/2/2/0/1/3/4 4/2/2/0/1/3/5 +4/3/2/2/1/2 4/2/2/0/1/3/4 4/2/2/0/1/3/5 +4/3/2/2/2/2 4/2/2/0/1/3/4 4/2/2/0/1/3/5 +4/3/2/2/0/3 4/2/2/0/1/3/5 4/2/2/0/1/3/6 4/2/2/0/1/3/7 +4/3/2/2/1/3 4/2/2/0/1/3/5 4/2/2/0/1/3/6 4/2/2/0/1/3/7 +4/3/2/2/0/4 4/2/2/0/1/3/8 4/2/2/0/1/3/9 4/2/2/0/1/3/10 +4/3/2/2/1/4 4/2/2/0/1/3/8 4/2/2/0/1/3/9 4/2/2/0/1/3/10 +4/3/2/2/0/5 4/2/2/0/1/3/10 4/2/2/0/1/3/11 +4/3/2/2/1/5 4/2/2/0/1/3/10 4/2/2/0/1/3/11 4/2/2/0/1/3/12 +4/3/2/2/2/5 4/2/2/0/1/3/10 4/2/2/0/1/3/11 +4/3/2/2/0/6 4/2/2/0/1/3/11 4/2/2/0/1/3/12 4/2/2/0/1/3/13 +4/3/2/2/1/6 4/2/2/0/1/3/12 4/2/2/0/1/3/13 +4/3/2/2/2/6 4/2/2/0/1/3/11 4/2/2/0/1/3/12 4/2/2/0/1/3/13 +4/3/2/2/0/7 4/2/2/0/1/3/13 4/2/2/0/1/3/14 4/2/2/0/1/3/15 +4/3/2/2/1/7 4/2/2/0/1/3/13 4/2/2/0/1/3/14 4/2/2/0/1/3/15 +4/3/2/2/2/7 4/2/2/0/1/3/14 4/2/2/0/1/3/15 +4/3/2/2/0/8 4/2/2/0/1/3/16 4/2/2/0/1/3/17 4/2/2/0/1/3/18 +4/3/2/2/1/8 4/2/2/0/1/3/16 4/2/2/0/1/3/17 4/2/2/0/1/3/18 +4/3/2/2/2/8 4/2/2/0/1/3/16 4/2/2/0/1/3/17 +4/3/2/2/0/9 4/2/2/0/1/3/18 4/2/2/0/1/3/19 4/2/2/0/1/3/20 +4/3/2/2/1/9 4/2/2/0/1/3/18 4/2/2/0/1/3/19 +4/3/2/2/2/9 4/2/2/0/1/3/18 4/2/2/0/1/3/19 4/2/2/0/1/3/20 +4/3/2/2/0/10 4/2/2/0/1/3/19 4/2/2/0/1/3/20 4/2/2/0/1/3/21 +4/3/2/2/1/10 4/2/2/0/1/3/20 4/2/2/0/1/3/21 +4/3/2/2/2/10 4/2/2/0/1/3/20 4/2/2/0/1/3/21 +4/3/2/2/0/11 4/2/2/0/1/3/21 4/2/2/0/1/3/22 4/2/2/0/1/3/23 +4/3/2/2/1/11 4/2/2/0/1/3/21 4/2/2/0/1/3/22 4/2/2/0/1/3/23 +4/3/2/2/0/12 4/2/2/0/1/3/24 4/2/2/0/1/3/25 4/2/2/0/1/3/26 +4/3/2/2/1/12 4/2/2/0/1/3/24 4/2/2/0/1/3/25 4/2/2/0/1/3/26 +4/3/2/2/0/13 4/2/2/0/1/3/26 4/2/2/0/1/3/27 +4/3/2/2/1/13 4/2/2/0/1/3/26 4/2/2/0/1/3/27 4/2/2/0/1/3/28 +4/3/2/2/2/13 4/2/2/0/1/3/26 4/2/2/0/1/3/27 +4/3/2/2/0/14 4/2/2/0/1/3/27 4/2/2/0/1/3/28 4/2/2/0/1/3/29 +4/3/2/2/1/14 4/2/2/0/1/3/28 4/2/2/0/1/3/29 +4/3/2/2/2/14 4/2/2/0/1/3/27 4/2/2/0/1/3/28 4/2/2/0/1/3/29 +4/3/2/2/0/15 4/2/2/0/1/3/29 4/2/2/0/1/3/30 4/2/2/0/1/3/31 +4/3/2/2/1/15 4/2/2/0/1/3/29 4/2/2/0/1/3/30 4/2/2/0/1/3/31 +4/3/2/2/2/15 4/2/2/0/1/3/30 4/2/2/0/1/3/31 + +prevSuperCalo HECIW/FCal2 4/2/-2,2/0/1/3/0:31 4/3/-2,2/2/0:2/0:15 calcSide(2,2) +4/2/2/0/1/3/0 4/3/2/2/0/0 4/3/2/2/1/0 4/3/2/2/2/0 +4/2/2/0/1/3/1 4/3/2/2/0/0 4/3/2/2/1/0 4/3/2/2/2/0 +4/2/2/0/1/3/2 4/3/2/2/0/0 4/3/2/2/1/0 4/3/2/2/0/1 4/3/2/2/1/1 4/3/2/2/2/1 +4/2/2/0/1/3/3 4/3/2/2/0/1 4/3/2/2/1/1 4/3/2/2/2/1 4/3/2/2/0/2 +4/2/2/0/1/3/4 4/3/2/2/0/1 4/3/2/2/2/1 4/3/2/2/0/2 4/3/2/2/1/2 4/3/2/2/2/2 +4/2/2/0/1/3/5 4/3/2/2/0/2 4/3/2/2/1/2 4/3/2/2/2/2 4/3/2/2/0/3 4/3/2/2/1/3 +4/2/2/0/1/3/6 4/3/2/2/0/3 4/3/2/2/1/3 +4/2/2/0/1/3/7 4/3/2/2/0/3 4/3/2/2/1/3 +4/2/2/0/1/3/8 4/3/2/2/0/4 4/3/2/2/1/4 +4/2/2/0/1/3/9 4/3/2/2/0/4 4/3/2/2/1/4 +4/2/2/0/1/3/10 4/3/2/2/0/4 4/3/2/2/1/4 4/3/2/2/0/5 4/3/2/2/1/5 4/3/2/2/2/5 +4/2/2/0/1/3/11 4/3/2/2/0/5 4/3/2/2/1/5 4/3/2/2/2/5 4/3/2/2/0/6 4/3/2/2/2/6 +4/2/2/0/1/3/12 4/3/2/2/1/5 4/3/2/2/0/6 4/3/2/2/1/6 4/3/2/2/2/6 +4/2/2/0/1/3/13 4/3/2/2/0/6 4/3/2/2/1/6 4/3/2/2/2/6 4/3/2/2/0/7 4/3/2/2/1/7 +4/2/2/0/1/3/14 4/3/2/2/0/7 4/3/2/2/1/7 4/3/2/2/2/7 +4/2/2/0/1/3/15 4/3/2/2/0/7 4/3/2/2/1/7 4/3/2/2/2/7 +4/2/2/0/1/3/16 4/3/2/2/0/8 4/3/2/2/1/8 4/3/2/2/2/8 +4/2/2/0/1/3/17 4/3/2/2/0/8 4/3/2/2/1/8 4/3/2/2/2/8 +4/2/2/0/1/3/18 4/3/2/2/0/8 4/3/2/2/1/8 4/3/2/2/0/9 4/3/2/2/1/9 4/3/2/2/2/9 +4/2/2/0/1/3/19 4/3/2/2/0/9 4/3/2/2/1/9 4/3/2/2/2/9 4/3/2/2/0/10 +4/2/2/0/1/3/20 4/3/2/2/0/9 4/3/2/2/2/9 4/3/2/2/0/10 4/3/2/2/1/10 4/3/2/2/2/10 +4/2/2/0/1/3/21 4/3/2/2/0/10 4/3/2/2/1/10 4/3/2/2/2/10 4/3/2/2/0/11 4/3/2/2/1/11 +4/2/2/0/1/3/22 4/3/2/2/0/11 4/3/2/2/1/11 +4/2/2/0/1/3/23 4/3/2/2/0/11 4/3/2/2/1/11 +4/2/2/0/1/3/24 4/3/2/2/0/12 4/3/2/2/1/12 +4/2/2/0/1/3/25 4/3/2/2/0/12 4/3/2/2/1/12 +4/2/2/0/1/3/26 4/3/2/2/0/12 4/3/2/2/1/12 4/3/2/2/0/13 4/3/2/2/1/13 4/3/2/2/2/13 +4/2/2/0/1/3/27 4/3/2/2/0/13 4/3/2/2/1/13 4/3/2/2/2/13 4/3/2/2/0/14 4/3/2/2/2/14 +4/2/2/0/1/3/28 4/3/2/2/1/13 4/3/2/2/0/14 4/3/2/2/1/14 4/3/2/2/2/14 +4/2/2/0/1/3/29 4/3/2/2/0/14 4/3/2/2/1/14 4/3/2/2/2/14 4/3/2/2/0/15 4/3/2/2/1/15 +4/2/2/0/1/3/30 4/3/2/2/0/15 4/3/2/2/1/15 4/3/2/2/2/15 +4/2/2/0/1/3/31 4/3/2/2/0/15 4/3/2/2/1/15 4/3/2/2/2/15 diff --git a/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours-April2011.dat b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours-April2011.dat new file mode 100644 index 0000000000000000000000000000000000000000..d44ad56328120b56ba03903496d3808fbe925032 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours-April2011.dat @@ -0,0 +1,772 @@ +# File and Version Information: +# $Id: SuperCaloNeighbours-April2011.dat,v 1.0 2011-04-20 13:53:00 menke Exp $ +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Wed Apr 20 13:52:50 2011 +# +# ranges of expanded calorimeter identifiers are mapped to create lookup +# tables for the super calo neighbours. The mapping in eta has to be given +# explicitely, while side symmetry and the mapping in phi can be automated. +# The automation in phi works only on contigous ranges. +# +# Syntax: +# for each mapped region: Header and Entry lines until an empty line +# denotes the end of the block. The Header consists of: +# <Type> <Name> <SourceRange> <TargetRange> [<SideDirective>] [<PhiDirective>] +# <Type>: nextSuperCalo or prevSuperCalo denotes the direction of the map +# <Name>: any string without blanks, white-space etc. +# <Source/TargetRange>: A cell-level ExpandedIdentifier Range +# <SideDirective>: calcSide(i1,i2) maps sign of the field i1 in SourceRange to +# the sign of field i2 in TargetRange. +# <PhiDirective>: calcPhi(i1,i2) maps the field i1 in SourceRange to +# the field i2 in TargetRange by scaling. +# +nextSuperCalo EMB3/TILEB 4/1/-1,1/3/0/0:19/0:255 5/1/-1,1/0:63/0:9/0 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/0/0 5/1/1/0/0/0 +4/1/1/3/0/1/0 5/1/1/0/0/0 +4/1/1/3/0/2/0 5/1/1/0/1/0 +4/1/1/3/0/3/0 5/1/1/0/1/0 +4/1/1/3/0/4/0 5/1/1/0/2/0 +4/1/1/3/0/5/0 5/1/1/0/2/0 +4/1/1/3/0/6/0 5/1/1/0/3/0 +4/1/1/3/0/7/0 5/1/1/0/3/0 +4/1/1/3/0/8/0 5/1/1/0/4/0 +4/1/1/3/0/9/0 5/1/1/0/4/0 +4/1/1/3/0/10/0 5/1/1/0/5/0 +4/1/1/3/0/11/0 5/1/1/0/5/0 +4/1/1/3/0/12/0 5/1/1/0/6/0 +4/1/1/3/0/13/0 5/1/1/0/6/0 +4/1/1/3/0/14/0 5/1/1/0/7/0 +4/1/1/3/0/15/0 5/1/1/0/7/0 +4/1/1/3/0/16/0 5/1/1/0/8/0 +4/1/1/3/0/17/0 5/1/1/0/8/0 +4/1/1/3/0/18/0 5/1/1/0/9/0 +4/1/1/3/0/19/0 5/1/1/0/9/0 + +prevSuperCalo TILEB/EMB3 5/1/-1,1/0:63/0:9/0 4/1/-1,1/3/0/0:19/0:255 calcSide(2,2) calcPhi(3,6) +5/1/1/0/0/0 4/1/1/3/0/0/0 4/1/1/3/0/0/1 4/1/1/3/0/0/2 4/1/1/3/0/0/3 4/1/1/3/0/1/0 4/1/1/3/0/1/1 4/1/1/3/0/1/2 4/1/1/3/0/1/3 +5/1/1/0/1/0 4/1/1/3/0/2/0 4/1/1/3/0/2/1 4/1/1/3/0/2/2 4/1/1/3/0/2/3 4/1/1/3/0/3/0 4/1/1/3/0/3/1 4/1/1/3/0/3/2 4/1/1/3/0/3/3 +5/1/1/0/2/0 4/1/1/3/0/4/0 4/1/1/3/0/4/1 4/1/1/3/0/4/2 4/1/1/3/0/4/3 4/1/1/3/0/5/0 4/1/1/3/0/5/1 4/1/1/3/0/5/2 4/1/1/3/0/5/3 +5/1/1/0/3/0 4/1/1/3/0/6/0 4/1/1/3/0/6/1 4/1/1/3/0/6/2 4/1/1/3/0/6/3 4/1/1/3/0/7/0 4/1/1/3/0/7/1 4/1/1/3/0/7/2 4/1/1/3/0/7/3 +5/1/1/0/4/0 4/1/1/3/0/8/0 4/1/1/3/0/8/1 4/1/1/3/0/8/2 4/1/1/3/0/8/3 4/1/1/3/0/9/0 4/1/1/3/0/9/1 4/1/1/3/0/9/2 4/1/1/3/0/9/3 +5/1/1/0/5/0 4/1/1/3/0/10/0 4/1/1/3/0/10/1 4/1/1/3/0/10/2 4/1/1/3/0/10/3 4/1/1/3/0/11/0 4/1/1/3/0/11/1 4/1/1/3/0/11/2 4/1/1/3/0/11/3 +5/1/1/0/6/0 4/1/1/3/0/12/0 4/1/1/3/0/12/1 4/1/1/3/0/12/2 4/1/1/3/0/12/3 4/1/1/3/0/13/0 4/1/1/3/0/13/1 4/1/1/3/0/13/2 4/1/1/3/0/13/3 +5/1/1/0/7/0 4/1/1/3/0/14/0 4/1/1/3/0/14/1 4/1/1/3/0/14/2 4/1/1/3/0/14/3 4/1/1/3/0/15/0 4/1/1/3/0/15/1 4/1/1/3/0/15/2 4/1/1/3/0/15/3 +5/1/1/0/8/0 4/1/1/3/0/16/0 4/1/1/3/0/16/1 4/1/1/3/0/16/2 4/1/1/3/0/16/3 4/1/1/3/0/17/0 4/1/1/3/0/17/1 4/1/1/3/0/17/2 4/1/1/3/0/17/3 +5/1/1/0/9/0 4/1/1/3/0/18/0 4/1/1/3/0/18/1 4/1/1/3/0/18/2 4/1/1/3/0/18/3 4/1/1/3/0/19/0 4/1/1/3/0/19/1 4/1/1/3/0/19/2 4/1/1/3/0/19/3 + +nextSuperCalo EMB3/TILEG 4/1/-1,1/3/0/20,21,22,23,25,26/0:255 5/3/-1,1/0:63/10,11,13/3 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/20/0 5/3/1/0/10/3 +4/1/1/3/0/21/0 5/3/1/0/10/3 +4/1/1/3/0/22/0 5/3/1/0/11/3 +4/1/1/3/0/23/0 5/3/1/0/11/3 +4/1/1/3/0/25/0 5/3/1/0/13/3 +4/1/1/3/0/26/0 5/3/1/0/13/3 + +prevSuperCalo TILEG/EMB3 5/3/-1,1/0:63/10,11,13/3 4/1/-1,1/3/0/20,21,22,23,25,26/0:255 calcSide(2,2) calcPhi(3,6) +5/3/1/0/10/3 4/1/1/3/0/20/0 4/1/1/3/0/20/1 4/1/1/3/0/20/2 4/1/1/3/0/20/3 4/1/1/3/0/21/0 4/1/1/3/0/21/1 4/1/1/3/0/21/2 4/1/1/3/0/21/3 +5/3/1/0/11/3 4/1/1/3/0/22/0 4/1/1/3/0/22/1 4/1/1/3/0/22/2 4/1/1/3/0/22/3 4/1/1/3/0/23/0 4/1/1/3/0/23/1 4/1/1/3/0/23/2 4/1/1/3/0/23/3 +5/3/1/0/13/3 4/1/1/3/0/25/0 4/1/1/3/0/25/1 4/1/1/3/0/25/2 4/1/1/3/0/25/3 4/1/1/3/0/26/0 4/1/1/3/0/26/1 4/1/1/3/0/26/2 4/1/1/3/0/26/3 + +nextSuperCalo EMB3/TILEE 4/1/-1,1/3/0/22:26/0:255 5/2/-1,1/0:63/11:13/0 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/22/0 5/2/1/0/11/0 +4/1/1/3/0/23/0 5/2/1/0/11/0 +4/1/1/3/0/24/0 5/2/1/0/12/0 +4/1/1/3/0/25/0 5/2/1/0/12/0 +4/1/1/3/0/26/0 5/2/1/0/13/0 + +prevSuperCalo TILEE/EMB3 5/2/-1,1/0:63/11:13/0 4/1/-1,1/3/0/22:26/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/11/0 4/1/1/3/0/22/0 4/1/1/3/0/22/1 4/1/1/3/0/22/2 4/1/1/3/0/22/3 4/1/1/3/0/23/0 4/1/1/3/0/23/1 4/1/1/3/0/23/2 4/1/1/3/0/23/3 +5/2/1/0/12/0 4/1/1/3/0/24/0 4/1/1/3/0/24/1 4/1/1/3/0/24/2 4/1/1/3/0/24/3 4/1/1/3/0/25/0 4/1/1/3/0/25/1 4/1/1/3/0/25/2 4/1/1/3/0/25/3 +5/2/1/0/13/0 4/1/1/3/0/26/0 4/1/1/3/0/26/1 4/1/1/3/0/26/2 4/1/1/3/0/26/3 + +nextSuperCalo EME2OW0/TILEE 4/1/-2,2/2/0/0/0:255 5/2/-1,1/0:63/14/0 calcSide(2,2) calcPhi(6,3) +4/1/2/2/0/0/0 5/2/1/0/14/0 + +prevSuperCalo TILEE/EME2OW0 5/2/-1,1/0:63/14/0 4/1/-2,2/2/0/0/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14/0 4/1/2/2/0/0/0 4/1/2/2/0/0/1 4/1/2/2/0/0/2 4/1/2/2/0/0/3 + +nextSuperCalo EME2OW1/TILEE 4/1/-2,2/2/1/0:2/0:255 5/2/-1,1/0:63/14/0 calcSide(2,2) calcPhi(6,3) +4/1/2/2/1/0/0 5/2/1/0/14/0 +4/1/2/2/1/1/0 5/2/1/0/14/0 +4/1/2/2/1/2/0 5/2/1/0/14/0 + +prevSuperCalo TILEE/EME2OW1 5/2/-1,1/0:63/14/0 4/1/-2,2/2/1/0:2/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14/0 4/1/2/2/1/0/0 4/1/2/2/1/1/0 4/1/2/2/1/2/0 4/1/2/2/1/0/1 4/1/2/2/1/1/1 4/1/2/2/1/2/1 4/1/2/2/1/0/2 4/1/2/2/1/1/2 4/1/2/2/1/2/2 4/1/2/2/1/0/3 4/1/2/2/1/1/3 4/1/2/2/1/2/3 + +nextSuperCalo EME3OW/HEC00 4/1/-2,2/3/0/0:19/0:255 4/2/-2,2/0/0/0:9/0:63 calcSide(2,2) calcPhi(6,6) +4/1/2/3/0/0/0 4/2/2/0/0/0/0 +4/1/2/3/0/1/0 4/2/2/0/0/0/0 +4/1/2/3/0/2/0 4/2/2/0/0/1/0 +4/1/2/3/0/3/0 4/2/2/0/0/1/0 +4/1/2/3/0/4/0 4/2/2/0/0/2/0 +4/1/2/3/0/5/0 4/2/2/0/0/2/0 +4/1/2/3/0/6/0 4/2/2/0/0/3/0 +4/1/2/3/0/7/0 4/2/2/0/0/3/0 +4/1/2/3/0/8/0 4/2/2/0/0/4/0 +4/1/2/3/0/9/0 4/2/2/0/0/4/0 +4/1/2/3/0/10/0 4/2/2/0/0/5/0 +4/1/2/3/0/11/0 4/2/2/0/0/5/0 +4/1/2/3/0/12/0 4/2/2/0/0/6/0 +4/1/2/3/0/13/0 4/2/2/0/0/6/0 +4/1/2/3/0/14/0 4/2/2/0/0/7/0 +4/1/2/3/0/15/0 4/2/2/0/0/7/0 +4/1/2/3/0/16/0 4/2/2/0/0/8/0 +4/1/2/3/0/17/0 4/2/2/0/0/8/0 +4/1/2/3/0/18/0 4/2/2/0/0/9/0 +4/1/2/3/0/19/0 4/2/2/0/0/9/0 + +prevSuperCalo HEC00/EME3OW 4/2/-2,2/0/0/0:9/0:63 4/1/-2,2/3/0/0:19/0:255 calcSide(2,2) calcPhi(6,6) +4/2/2/0/0/0/0 4/1/2/3/0/0/0 4/1/2/3/0/0/1 4/1/2/3/0/0/2 4/1/2/3/0/0/3 4/1/2/3/0/1/0 4/1/2/3/0/1/1 4/1/2/3/0/1/2 4/1/2/3/0/1/3 +4/2/2/0/0/1/0 4/1/2/3/0/2/0 4/1/2/3/0/2/1 4/1/2/3/0/2/2 4/1/2/3/0/2/3 4/1/2/3/0/3/0 4/1/2/3/0/3/1 4/1/2/3/0/3/2 4/1/2/3/0/3/3 +4/2/2/0/0/2/0 4/1/2/3/0/4/0 4/1/2/3/0/4/1 4/1/2/3/0/4/2 4/1/2/3/0/4/3 4/1/2/3/0/5/0 4/1/2/3/0/5/1 4/1/2/3/0/5/2 4/1/2/3/0/5/3 +4/2/2/0/0/3/0 4/1/2/3/0/6/0 4/1/2/3/0/6/1 4/1/2/3/0/6/2 4/1/2/3/0/6/3 4/1/2/3/0/7/0 4/1/2/3/0/7/1 4/1/2/3/0/7/2 4/1/2/3/0/7/3 +4/2/2/0/0/4/0 4/1/2/3/0/8/0 4/1/2/3/0/8/1 4/1/2/3/0/8/2 4/1/2/3/0/8/3 4/1/2/3/0/9/0 4/1/2/3/0/9/1 4/1/2/3/0/9/2 4/1/2/3/0/9/3 +4/2/2/0/0/5/0 4/1/2/3/0/10/0 4/1/2/3/0/10/1 4/1/2/3/0/10/2 4/1/2/3/0/10/3 4/1/2/3/0/11/0 4/1/2/3/0/11/1 4/1/2/3/0/11/2 4/1/2/3/0/11/3 +4/2/2/0/0/6/0 4/1/2/3/0/12/0 4/1/2/3/0/12/1 4/1/2/3/0/12/2 4/1/2/3/0/12/3 4/1/2/3/0/13/0 4/1/2/3/0/13/1 4/1/2/3/0/13/2 4/1/2/3/0/13/3 +4/2/2/0/0/7/0 4/1/2/3/0/14/0 4/1/2/3/0/14/1 4/1/2/3/0/14/2 4/1/2/3/0/14/3 4/1/2/3/0/15/0 4/1/2/3/0/15/1 4/1/2/3/0/15/2 4/1/2/3/0/15/3 +4/2/2/0/0/8/0 4/1/2/3/0/16/0 4/1/2/3/0/16/1 4/1/2/3/0/16/2 4/1/2/3/0/16/3 4/1/2/3/0/17/0 4/1/2/3/0/17/1 4/1/2/3/0/17/2 4/1/2/3/0/17/3 +4/2/2/0/0/9/0 4/1/2/3/0/18/0 4/1/2/3/0/18/1 4/1/2/3/0/18/2 4/1/2/3/0/18/3 4/1/2/3/0/19/0 4/1/2/3/0/19/1 4/1/2/3/0/19/2 4/1/2/3/0/19/3 + +nextSuperCalo EME2IW/HEC01 4/1/-3,3/2/0/0:6/0:63 4/2/-2,2/0/1/0:3/0:31 calcSide(2,2) calcPhi(6,6) +4/1/3/2/0/0/0 4/2/2/0/1/0/0 +4/1/3/2/0/1/0 4/2/2/0/1/0/0 +4/1/3/2/0/2/0 4/2/2/0/1/1/0 +4/1/3/2/0/3/0 4/2/2/0/1/1/0 +4/1/3/2/0/4/0 4/2/2/0/1/2/0 +4/1/3/2/0/5/0 4/2/2/0/1/2/0 +4/1/3/2/0/6/0 4/2/2/0/1/3/0 + +prevSuperCalo HEC01/EME2IW 4/2/-2,2/0/1/0:3/0:31 4/1/-3,3/2/0/0:6/0:63 calcSide(2,2) calcPhi(6,6) +4/2/2/0/1/0/0 4/1/3/2/0/0/0 4/1/3/2/0/0/1 4/1/3/2/0/1/0 4/1/3/2/0/1/1 +4/2/2/0/1/1/0 4/1/3/2/0/2/0 4/1/3/2/0/2/1 4/1/3/2/0/3/0 4/1/3/2/0/3/1 +4/2/2/0/1/2/0 4/1/3/2/0/4/0 4/1/3/2/0/4/1 4/1/3/2/0/5/0 4/1/3/2/0/5/1 +4/2/2/0/1/3/0 4/1/3/2/0/6/0 4/1/3/2/0/6/1 + +nextSuperCalo HEC00/TILEE 4/2/-2,2/0/0/0/0:63 5/2/-1,1/0:63/15/0 calcSide(2,2) calcPhi(6,3) +4/2/2/0/0/0/0 5/2/1/0/15/0 + +prevSuperCalo TILEE/HEC00 5/2/-1,1/0:63/15/0 4/2/-2,2/0/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15/0 4/2/2/0/0/0/0 + +nextSuperCalo HEC01/FCAL1 4/2/-2,2/0/1/2:3/0:31 4/3/-2,2/1/0:24/0:15 calcSide(2,2) +4/2/2/0/1/2/4 4/3/2/1/0/2 +4/2/2/0/1/2/6 4/3/2/1/1/3 +4/2/2/0/1/2/7 4/3/2/1/0/3 +4/2/2/0/1/2/8 4/3/2/1/0/4 +4/2/2/0/1/2/9 4/3/2/1/1/4 +4/2/2/0/1/2/10 4/3/2/1/0/5 +4/2/2/0/1/2/12 4/3/2/1/1/6 +4/2/2/0/1/2/13 4/3/2/1/0/6 +4/2/2/0/1/2/20 4/3/2/1/0/10 +4/2/2/0/1/2/22 4/3/2/1/1/11 +4/2/2/0/1/2/23 4/3/2/1/0/11 +4/2/2/0/1/2/24 4/3/2/1/0/12 +4/2/2/0/1/2/25 4/3/2/1/1/12 +4/2/2/0/1/2/26 4/3/2/1/0/13 +4/2/2/0/1/2/28 4/3/2/1/1/14 +4/2/2/0/1/2/29 4/3/2/1/0/14 +4/2/2/0/1/3/0 4/3/2/1/1/0 4/3/2/1/2/0 4/3/2/1/3/0 4/3/2/1/5/0 4/3/2/1/6/0 4/3/2/1/9/0 4/3/2/1/10/0 4/3/2/1/11/0 4/3/2/1/14/0 4/3/2/1/15/0 4/3/2/1/16/0 4/3/2/1/20/0 4/3/2/1/21/0 4/3/2/1/22/0 +4/2/2/0/1/3/1 4/3/2/1/0/0 4/3/2/1/4/0 4/3/2/1/7/0 4/3/2/1/8/0 4/3/2/1/12/0 4/3/2/1/13/0 4/3/2/1/17/0 4/3/2/1/18/0 4/3/2/1/19/0 4/3/2/1/21/1 4/3/2/1/23/0 +4/2/2/0/1/3/2 4/3/2/1/1/1 4/3/2/1/2/1 4/3/2/1/3/1 4/3/2/1/5/1 4/3/2/1/7/1 4/3/2/1/9/1 4/3/2/1/11/1 4/3/2/1/13/1 4/3/2/1/14/1 4/3/2/1/16/1 4/3/2/1/19/1 4/3/2/1/22/1 +4/2/2/0/1/3/3 4/3/2/1/0/1 4/3/2/1/4/1 4/3/2/1/6/1 4/3/2/1/8/1 4/3/2/1/10/1 4/3/2/1/12/1 4/3/2/1/15/1 4/3/2/1/17/1 4/3/2/1/18/1 4/3/2/1/20/1 +4/2/2/0/1/3/4 4/3/2/1/3/2 4/3/2/1/6/2 4/3/2/1/8/2 4/3/2/1/9/2 4/3/2/1/12/2 4/3/2/1/13/2 4/3/2/1/16/2 4/3/2/1/17/2 4/3/2/1/20/2 4/3/2/1/21/2 +4/2/2/0/1/3/5 4/3/2/1/1/2 4/3/2/1/2/2 4/3/2/1/4/2 4/3/2/1/5/2 4/3/2/1/7/2 4/3/2/1/10/2 4/3/2/1/11/2 4/3/2/1/14/2 4/3/2/1/15/2 4/3/2/1/18/2 4/3/2/1/19/2 4/3/2/1/22/2 +4/2/2/0/1/3/6 4/3/2/1/2/3 4/3/2/1/3/3 4/3/2/1/4/3 4/3/2/1/8/3 4/3/2/1/10/3 4/3/2/1/11/3 4/3/2/1/15/3 4/3/2/1/16/3 4/3/2/1/17/3 4/3/2/1/20/3 4/3/2/1/21/3 +4/2/2/0/1/3/7 4/3/2/1/5/3 4/3/2/1/6/3 4/3/2/1/7/3 4/3/2/1/9/3 4/3/2/1/12/3 4/3/2/1/13/3 4/3/2/1/14/3 4/3/2/1/18/3 4/3/2/1/19/3 +4/2/2/0/1/3/8 4/3/2/1/6/4 4/3/2/1/7/4 4/3/2/1/8/4 4/3/2/1/9/4 4/3/2/1/12/4 4/3/2/1/13/4 4/3/2/1/14/4 4/3/2/1/18/4 4/3/2/1/19/4 +4/2/2/0/1/3/9 4/3/2/1/2/4 4/3/2/1/3/4 4/3/2/1/4/4 4/3/2/1/5/4 4/3/2/1/10/4 4/3/2/1/11/4 4/3/2/1/15/4 4/3/2/1/16/4 4/3/2/1/17/4 4/3/2/1/20/4 4/3/2/1/21/4 +4/2/2/0/1/3/10 4/3/2/1/2/5 4/3/2/1/4/5 4/3/2/1/5/5 4/3/2/1/9/5 4/3/2/1/10/5 4/3/2/1/13/5 4/3/2/1/14/5 4/3/2/1/17/5 4/3/2/1/18/5 4/3/2/1/21/5 +4/2/2/0/1/3/11 4/3/2/1/1/5 4/3/2/1/3/5 4/3/2/1/6/5 4/3/2/1/7/5 4/3/2/1/8/5 4/3/2/1/11/5 4/3/2/1/12/5 4/3/2/1/15/5 4/3/2/1/16/5 4/3/2/1/19/5 4/3/2/1/20/5 +4/2/2/0/1/3/12 4/3/2/1/4/6 4/3/2/1/6/6 4/3/2/1/8/6 4/3/2/1/10/6 4/3/2/1/12/6 4/3/2/1/15/6 4/3/2/1/17/6 4/3/2/1/18/6 4/3/2/1/20/6 +4/2/2/0/1/3/13 4/3/2/1/2/6 4/3/2/1/3/6 4/3/2/1/5/6 4/3/2/1/7/6 4/3/2/1/9/6 4/3/2/1/11/6 4/3/2/1/13/6 4/3/2/1/14/6 4/3/2/1/16/6 4/3/2/1/19/6 4/3/2/1/22/6 +4/2/2/0/1/3/14 4/3/2/1/0/7 4/3/2/1/3/7 4/3/2/1/5/7 4/3/2/1/7/7 4/3/2/1/8/7 4/3/2/1/13/7 4/3/2/1/14/7 4/3/2/1/18/7 4/3/2/1/19/7 4/3/2/1/20/7 4/3/2/1/21/6 4/3/2/1/24/7 +4/2/2/0/1/3/15 4/3/2/1/1/7 4/3/2/1/2/7 4/3/2/1/4/7 4/3/2/1/6/7 4/3/2/1/9/7 4/3/2/1/10/7 4/3/2/1/11/7 4/3/2/1/12/7 4/3/2/1/15/7 4/3/2/1/16/7 4/3/2/1/17/7 4/3/2/1/21/7 4/3/2/1/22/7 4/3/2/1/23/7 +4/2/2/0/1/3/16 4/3/2/1/1/8 4/3/2/1/2/8 4/3/2/1/3/8 4/3/2/1/5/8 4/3/2/1/6/8 4/3/2/1/9/8 4/3/2/1/10/8 4/3/2/1/11/8 4/3/2/1/14/8 4/3/2/1/15/8 4/3/2/1/16/8 4/3/2/1/20/8 4/3/2/1/21/8 4/3/2/1/22/8 +4/2/2/0/1/3/17 4/3/2/1/0/8 4/3/2/1/4/8 4/3/2/1/7/8 4/3/2/1/8/8 4/3/2/1/12/8 4/3/2/1/13/8 4/3/2/1/17/8 4/3/2/1/18/8 4/3/2/1/19/8 4/3/2/1/21/9 4/3/2/1/23/8 +4/2/2/0/1/3/18 4/3/2/1/1/9 4/3/2/1/2/9 4/3/2/1/3/9 4/3/2/1/5/9 4/3/2/1/7/9 4/3/2/1/9/9 4/3/2/1/11/9 4/3/2/1/13/9 4/3/2/1/14/9 4/3/2/1/16/9 4/3/2/1/19/9 4/3/2/1/22/9 +4/2/2/0/1/3/19 4/3/2/1/0/9 4/3/2/1/4/9 4/3/2/1/6/9 4/3/2/1/8/9 4/3/2/1/10/9 4/3/2/1/12/9 4/3/2/1/15/9 4/3/2/1/17/9 4/3/2/1/18/9 4/3/2/1/20/9 +4/2/2/0/1/3/20 4/3/2/1/3/10 4/3/2/1/6/10 4/3/2/1/8/10 4/3/2/1/9/10 4/3/2/1/12/10 4/3/2/1/13/10 4/3/2/1/16/10 4/3/2/1/17/10 4/3/2/1/20/10 4/3/2/1/21/10 +4/2/2/0/1/3/21 4/3/2/1/1/10 4/3/2/1/2/10 4/3/2/1/4/10 4/3/2/1/5/10 4/3/2/1/7/10 4/3/2/1/10/10 4/3/2/1/11/10 4/3/2/1/14/10 4/3/2/1/15/10 4/3/2/1/18/10 4/3/2/1/19/10 4/3/2/1/22/10 +4/2/2/0/1/3/22 4/3/2/1/2/11 4/3/2/1/3/11 4/3/2/1/4/11 4/3/2/1/8/11 4/3/2/1/10/11 4/3/2/1/11/11 4/3/2/1/15/11 4/3/2/1/16/11 4/3/2/1/17/11 4/3/2/1/20/11 4/3/2/1/21/11 +4/2/2/0/1/3/23 4/3/2/1/5/11 4/3/2/1/6/11 4/3/2/1/7/11 4/3/2/1/9/11 4/3/2/1/12/11 4/3/2/1/13/11 4/3/2/1/14/11 4/3/2/1/18/11 4/3/2/1/19/11 +4/2/2/0/1/3/24 4/3/2/1/6/12 4/3/2/1/7/12 4/3/2/1/8/12 4/3/2/1/9/12 4/3/2/1/12/12 4/3/2/1/13/12 4/3/2/1/14/12 4/3/2/1/18/12 4/3/2/1/19/12 +4/2/2/0/1/3/25 4/3/2/1/2/12 4/3/2/1/3/12 4/3/2/1/4/12 4/3/2/1/5/12 4/3/2/1/10/12 4/3/2/1/11/12 4/3/2/1/15/12 4/3/2/1/16/12 4/3/2/1/17/12 4/3/2/1/20/12 4/3/2/1/21/12 +4/2/2/0/1/3/26 4/3/2/1/2/13 4/3/2/1/4/13 4/3/2/1/5/13 4/3/2/1/9/13 4/3/2/1/10/13 4/3/2/1/13/13 4/3/2/1/14/13 4/3/2/1/17/13 4/3/2/1/18/13 4/3/2/1/21/13 +4/2/2/0/1/3/27 4/3/2/1/1/13 4/3/2/1/3/13 4/3/2/1/6/13 4/3/2/1/7/13 4/3/2/1/8/13 4/3/2/1/11/13 4/3/2/1/12/13 4/3/2/1/15/13 4/3/2/1/16/13 4/3/2/1/19/13 4/3/2/1/20/13 +4/2/2/0/1/3/28 4/3/2/1/4/14 4/3/2/1/6/14 4/3/2/1/8/14 4/3/2/1/10/14 4/3/2/1/12/14 4/3/2/1/15/14 4/3/2/1/17/14 4/3/2/1/18/14 4/3/2/1/20/14 +4/2/2/0/1/3/29 4/3/2/1/2/14 4/3/2/1/3/14 4/3/2/1/5/14 4/3/2/1/7/14 4/3/2/1/9/14 4/3/2/1/11/14 4/3/2/1/13/14 4/3/2/1/14/14 4/3/2/1/16/14 4/3/2/1/19/14 4/3/2/1/22/14 +4/2/2/0/1/3/30 4/3/2/1/0/15 4/3/2/1/3/15 4/3/2/1/5/15 4/3/2/1/7/15 4/3/2/1/8/15 4/3/2/1/13/15 4/3/2/1/14/15 4/3/2/1/18/15 4/3/2/1/19/15 4/3/2/1/20/15 4/3/2/1/21/14 4/3/2/1/24/15 +4/2/2/0/1/3/31 4/3/2/1/1/15 4/3/2/1/2/15 4/3/2/1/4/15 4/3/2/1/6/15 4/3/2/1/9/15 4/3/2/1/10/15 4/3/2/1/11/15 4/3/2/1/12/15 4/3/2/1/15/15 4/3/2/1/16/15 4/3/2/1/17/15 4/3/2/1/21/15 4/3/2/1/22/15 4/3/2/1/23/15 + +prevSuperCalo FCAL1/HEC01 4/3/-2,2/1/0:24/0:15 4/2/-2,2/0/1/2:3/0:31 calcSide(2,2) +4/3/2/1/0/2 4/2/2/0/1/2/4 +4/3/2/1/1/3 4/2/2/0/1/2/6 +4/3/2/1/0/3 4/2/2/0/1/2/7 +4/3/2/1/0/4 4/2/2/0/1/2/8 +4/3/2/1/1/4 4/2/2/0/1/2/9 +4/3/2/1/0/5 4/2/2/0/1/2/10 +4/3/2/1/1/6 4/2/2/0/1/2/12 +4/3/2/1/0/6 4/2/2/0/1/2/13 +4/3/2/1/0/10 4/2/2/0/1/2/20 +4/3/2/1/1/11 4/2/2/0/1/2/22 +4/3/2/1/0/11 4/2/2/0/1/2/23 +4/3/2/1/0/12 4/2/2/0/1/2/24 +4/3/2/1/1/12 4/2/2/0/1/2/25 +4/3/2/1/0/13 4/2/2/0/1/2/26 +4/3/2/1/1/14 4/2/2/0/1/2/28 +4/3/2/1/0/14 4/2/2/0/1/2/29 +4/3/2/1/1/0 4/2/2/0/1/3/0 +4/3/2/1/2/0 4/2/2/0/1/3/0 +4/3/2/1/3/0 4/2/2/0/1/3/0 +4/3/2/1/5/0 4/2/2/0/1/3/0 +4/3/2/1/6/0 4/2/2/0/1/3/0 +4/3/2/1/9/0 4/2/2/0/1/3/0 +4/3/2/1/10/0 4/2/2/0/1/3/0 +4/3/2/1/11/0 4/2/2/0/1/3/0 +4/3/2/1/14/0 4/2/2/0/1/3/0 +4/3/2/1/15/0 4/2/2/0/1/3/0 +4/3/2/1/16/0 4/2/2/0/1/3/0 +4/3/2/1/20/0 4/2/2/0/1/3/0 +4/3/2/1/21/0 4/2/2/0/1/3/0 +4/3/2/1/22/0 4/2/2/0/1/3/0 +4/3/2/1/0/0 4/2/2/0/1/3/1 +4/3/2/1/4/0 4/2/2/0/1/3/1 +4/3/2/1/7/0 4/2/2/0/1/3/1 +4/3/2/1/8/0 4/2/2/0/1/3/1 +4/3/2/1/12/0 4/2/2/0/1/3/1 +4/3/2/1/13/0 4/2/2/0/1/3/1 +4/3/2/1/17/0 4/2/2/0/1/3/1 +4/3/2/1/18/0 4/2/2/0/1/3/1 +4/3/2/1/19/0 4/2/2/0/1/3/1 +4/3/2/1/21/1 4/2/2/0/1/3/1 +4/3/2/1/23/0 4/2/2/0/1/3/1 +4/3/2/1/1/1 4/2/2/0/1/3/2 +4/3/2/1/2/1 4/2/2/0/1/3/2 +4/3/2/1/3/1 4/2/2/0/1/3/2 +4/3/2/1/5/1 4/2/2/0/1/3/2 +4/3/2/1/7/1 4/2/2/0/1/3/2 +4/3/2/1/9/1 4/2/2/0/1/3/2 +4/3/2/1/11/1 4/2/2/0/1/3/2 +4/3/2/1/13/1 4/2/2/0/1/3/2 +4/3/2/1/14/1 4/2/2/0/1/3/2 +4/3/2/1/16/1 4/2/2/0/1/3/2 +4/3/2/1/19/1 4/2/2/0/1/3/2 +4/3/2/1/22/1 4/2/2/0/1/3/2 +4/3/2/1/0/1 4/2/2/0/1/3/3 +4/3/2/1/4/1 4/2/2/0/1/3/3 +4/3/2/1/6/1 4/2/2/0/1/3/3 +4/3/2/1/8/1 4/2/2/0/1/3/3 +4/3/2/1/10/1 4/2/2/0/1/3/3 +4/3/2/1/12/1 4/2/2/0/1/3/3 +4/3/2/1/15/1 4/2/2/0/1/3/3 +4/3/2/1/17/1 4/2/2/0/1/3/3 +4/3/2/1/18/1 4/2/2/0/1/3/3 +4/3/2/1/20/1 4/2/2/0/1/3/3 +4/3/2/1/3/2 4/2/2/0/1/3/4 +4/3/2/1/6/2 4/2/2/0/1/3/4 +4/3/2/1/8/2 4/2/2/0/1/3/4 +4/3/2/1/9/2 4/2/2/0/1/3/4 +4/3/2/1/12/2 4/2/2/0/1/3/4 +4/3/2/1/13/2 4/2/2/0/1/3/4 +4/3/2/1/16/2 4/2/2/0/1/3/4 +4/3/2/1/17/2 4/2/2/0/1/3/4 +4/3/2/1/20/2 4/2/2/0/1/3/4 +4/3/2/1/21/2 4/2/2/0/1/3/4 +4/3/2/1/1/2 4/2/2/0/1/3/5 +4/3/2/1/2/2 4/2/2/0/1/3/5 +4/3/2/1/4/2 4/2/2/0/1/3/5 +4/3/2/1/5/2 4/2/2/0/1/3/5 +4/3/2/1/7/2 4/2/2/0/1/3/5 +4/3/2/1/10/2 4/2/2/0/1/3/5 +4/3/2/1/11/2 4/2/2/0/1/3/5 +4/3/2/1/14/2 4/2/2/0/1/3/5 +4/3/2/1/15/2 4/2/2/0/1/3/5 +4/3/2/1/18/2 4/2/2/0/1/3/5 +4/3/2/1/19/2 4/2/2/0/1/3/5 +4/3/2/1/22/2 4/2/2/0/1/3/5 +4/3/2/1/2/3 4/2/2/0/1/3/6 +4/3/2/1/3/3 4/2/2/0/1/3/6 +4/3/2/1/4/3 4/2/2/0/1/3/6 +4/3/2/1/8/3 4/2/2/0/1/3/6 +4/3/2/1/10/3 4/2/2/0/1/3/6 +4/3/2/1/11/3 4/2/2/0/1/3/6 +4/3/2/1/15/3 4/2/2/0/1/3/6 +4/3/2/1/16/3 4/2/2/0/1/3/6 +4/3/2/1/17/3 4/2/2/0/1/3/6 +4/3/2/1/20/3 4/2/2/0/1/3/6 +4/3/2/1/21/3 4/2/2/0/1/3/6 +4/3/2/1/5/3 4/2/2/0/1/3/7 +4/3/2/1/6/3 4/2/2/0/1/3/7 +4/3/2/1/7/3 4/2/2/0/1/3/7 +4/3/2/1/9/3 4/2/2/0/1/3/7 +4/3/2/1/12/3 4/2/2/0/1/3/7 +4/3/2/1/13/3 4/2/2/0/1/3/7 +4/3/2/1/14/3 4/2/2/0/1/3/7 +4/3/2/1/18/3 4/2/2/0/1/3/7 +4/3/2/1/19/3 4/2/2/0/1/3/7 +4/3/2/1/6/4 4/2/2/0/1/3/8 +4/3/2/1/7/4 4/2/2/0/1/3/8 +4/3/2/1/8/4 4/2/2/0/1/3/8 +4/3/2/1/9/4 4/2/2/0/1/3/8 +4/3/2/1/12/4 4/2/2/0/1/3/8 +4/3/2/1/13/4 4/2/2/0/1/3/8 +4/3/2/1/14/4 4/2/2/0/1/3/8 +4/3/2/1/18/4 4/2/2/0/1/3/8 +4/3/2/1/19/4 4/2/2/0/1/3/8 +4/3/2/1/2/4 4/2/2/0/1/3/9 +4/3/2/1/3/4 4/2/2/0/1/3/9 +4/3/2/1/4/4 4/2/2/0/1/3/9 +4/3/2/1/5/4 4/2/2/0/1/3/9 +4/3/2/1/10/4 4/2/2/0/1/3/9 +4/3/2/1/11/4 4/2/2/0/1/3/9 +4/3/2/1/15/4 4/2/2/0/1/3/9 +4/3/2/1/16/4 4/2/2/0/1/3/9 +4/3/2/1/17/4 4/2/2/0/1/3/9 +4/3/2/1/20/4 4/2/2/0/1/3/9 +4/3/2/1/21/4 4/2/2/0/1/3/9 +4/3/2/1/2/5 4/2/2/0/1/3/10 +4/3/2/1/4/5 4/2/2/0/1/3/10 +4/3/2/1/5/5 4/2/2/0/1/3/10 +4/3/2/1/9/5 4/2/2/0/1/3/10 +4/3/2/1/10/5 4/2/2/0/1/3/10 +4/3/2/1/13/5 4/2/2/0/1/3/10 +4/3/2/1/14/5 4/2/2/0/1/3/10 +4/3/2/1/17/5 4/2/2/0/1/3/10 +4/3/2/1/18/5 4/2/2/0/1/3/10 +4/3/2/1/21/5 4/2/2/0/1/3/10 +4/3/2/1/1/5 4/2/2/0/1/3/11 +4/3/2/1/3/5 4/2/2/0/1/3/11 +4/3/2/1/6/5 4/2/2/0/1/3/11 +4/3/2/1/7/5 4/2/2/0/1/3/11 +4/3/2/1/8/5 4/2/2/0/1/3/11 +4/3/2/1/11/5 4/2/2/0/1/3/11 +4/3/2/1/12/5 4/2/2/0/1/3/11 +4/3/2/1/15/5 4/2/2/0/1/3/11 +4/3/2/1/16/5 4/2/2/0/1/3/11 +4/3/2/1/19/5 4/2/2/0/1/3/11 +4/3/2/1/20/5 4/2/2/0/1/3/11 +4/3/2/1/4/6 4/2/2/0/1/3/12 +4/3/2/1/6/6 4/2/2/0/1/3/12 +4/3/2/1/8/6 4/2/2/0/1/3/12 +4/3/2/1/10/6 4/2/2/0/1/3/12 +4/3/2/1/12/6 4/2/2/0/1/3/12 +4/3/2/1/15/6 4/2/2/0/1/3/12 +4/3/2/1/17/6 4/2/2/0/1/3/12 +4/3/2/1/18/6 4/2/2/0/1/3/12 +4/3/2/1/20/6 4/2/2/0/1/3/12 +4/3/2/1/2/6 4/2/2/0/1/3/13 +4/3/2/1/3/6 4/2/2/0/1/3/13 +4/3/2/1/5/6 4/2/2/0/1/3/13 +4/3/2/1/7/6 4/2/2/0/1/3/13 +4/3/2/1/9/6 4/2/2/0/1/3/13 +4/3/2/1/11/6 4/2/2/0/1/3/13 +4/3/2/1/13/6 4/2/2/0/1/3/13 +4/3/2/1/14/6 4/2/2/0/1/3/13 +4/3/2/1/16/6 4/2/2/0/1/3/13 +4/3/2/1/19/6 4/2/2/0/1/3/13 +4/3/2/1/22/6 4/2/2/0/1/3/13 +4/3/2/1/0/7 4/2/2/0/1/3/14 +4/3/2/1/3/7 4/2/2/0/1/3/14 +4/3/2/1/5/7 4/2/2/0/1/3/14 +4/3/2/1/7/7 4/2/2/0/1/3/14 +4/3/2/1/8/7 4/2/2/0/1/3/14 +4/3/2/1/13/7 4/2/2/0/1/3/14 +4/3/2/1/14/7 4/2/2/0/1/3/14 +4/3/2/1/18/7 4/2/2/0/1/3/14 +4/3/2/1/19/7 4/2/2/0/1/3/14 +4/3/2/1/20/7 4/2/2/0/1/3/14 +4/3/2/1/21/6 4/2/2/0/1/3/14 +4/3/2/1/24/7 4/2/2/0/1/3/14 +4/3/2/1/1/7 4/2/2/0/1/3/15 +4/3/2/1/2/7 4/2/2/0/1/3/15 +4/3/2/1/4/7 4/2/2/0/1/3/15 +4/3/2/1/6/7 4/2/2/0/1/3/15 +4/3/2/1/9/7 4/2/2/0/1/3/15 +4/3/2/1/10/7 4/2/2/0/1/3/15 +4/3/2/1/11/7 4/2/2/0/1/3/15 +4/3/2/1/12/7 4/2/2/0/1/3/15 +4/3/2/1/15/7 4/2/2/0/1/3/15 +4/3/2/1/16/7 4/2/2/0/1/3/15 +4/3/2/1/17/7 4/2/2/0/1/3/15 +4/3/2/1/21/7 4/2/2/0/1/3/15 +4/3/2/1/22/7 4/2/2/0/1/3/15 +4/3/2/1/23/7 4/2/2/0/1/3/15 +4/3/2/1/1/8 4/2/2/0/1/3/16 +4/3/2/1/2/8 4/2/2/0/1/3/16 +4/3/2/1/3/8 4/2/2/0/1/3/16 +4/3/2/1/5/8 4/2/2/0/1/3/16 +4/3/2/1/6/8 4/2/2/0/1/3/16 +4/3/2/1/9/8 4/2/2/0/1/3/16 +4/3/2/1/10/8 4/2/2/0/1/3/16 +4/3/2/1/11/8 4/2/2/0/1/3/16 +4/3/2/1/14/8 4/2/2/0/1/3/16 +4/3/2/1/15/8 4/2/2/0/1/3/16 +4/3/2/1/16/8 4/2/2/0/1/3/16 +4/3/2/1/20/8 4/2/2/0/1/3/16 +4/3/2/1/21/8 4/2/2/0/1/3/16 +4/3/2/1/22/8 4/2/2/0/1/3/16 +4/3/2/1/0/8 4/2/2/0/1/3/17 +4/3/2/1/4/8 4/2/2/0/1/3/17 +4/3/2/1/7/8 4/2/2/0/1/3/17 +4/3/2/1/8/8 4/2/2/0/1/3/17 +4/3/2/1/12/8 4/2/2/0/1/3/17 +4/3/2/1/13/8 4/2/2/0/1/3/17 +4/3/2/1/17/8 4/2/2/0/1/3/17 +4/3/2/1/18/8 4/2/2/0/1/3/17 +4/3/2/1/19/8 4/2/2/0/1/3/17 +4/3/2/1/21/9 4/2/2/0/1/3/17 +4/3/2/1/23/8 4/2/2/0/1/3/17 +4/3/2/1/1/9 4/2/2/0/1/3/18 +4/3/2/1/2/9 4/2/2/0/1/3/18 +4/3/2/1/3/9 4/2/2/0/1/3/18 +4/3/2/1/5/9 4/2/2/0/1/3/18 +4/3/2/1/7/9 4/2/2/0/1/3/18 +4/3/2/1/9/9 4/2/2/0/1/3/18 +4/3/2/1/11/9 4/2/2/0/1/3/18 +4/3/2/1/13/9 4/2/2/0/1/3/18 +4/3/2/1/14/9 4/2/2/0/1/3/18 +4/3/2/1/16/9 4/2/2/0/1/3/18 +4/3/2/1/19/9 4/2/2/0/1/3/18 +4/3/2/1/22/9 4/2/2/0/1/3/18 +4/3/2/1/0/9 4/2/2/0/1/3/19 +4/3/2/1/4/9 4/2/2/0/1/3/19 +4/3/2/1/6/9 4/2/2/0/1/3/19 +4/3/2/1/8/9 4/2/2/0/1/3/19 +4/3/2/1/10/9 4/2/2/0/1/3/19 +4/3/2/1/12/9 4/2/2/0/1/3/19 +4/3/2/1/15/9 4/2/2/0/1/3/19 +4/3/2/1/17/9 4/2/2/0/1/3/19 +4/3/2/1/18/9 4/2/2/0/1/3/19 +4/3/2/1/20/9 4/2/2/0/1/3/19 +4/3/2/1/3/10 4/2/2/0/1/3/20 +4/3/2/1/6/10 4/2/2/0/1/3/20 +4/3/2/1/8/10 4/2/2/0/1/3/20 +4/3/2/1/9/10 4/2/2/0/1/3/20 +4/3/2/1/12/10 4/2/2/0/1/3/20 +4/3/2/1/13/10 4/2/2/0/1/3/20 +4/3/2/1/16/10 4/2/2/0/1/3/20 +4/3/2/1/17/10 4/2/2/0/1/3/20 +4/3/2/1/20/10 4/2/2/0/1/3/20 +4/3/2/1/21/10 4/2/2/0/1/3/20 +4/3/2/1/1/10 4/2/2/0/1/3/21 +4/3/2/1/2/10 4/2/2/0/1/3/21 +4/3/2/1/4/10 4/2/2/0/1/3/21 +4/3/2/1/5/10 4/2/2/0/1/3/21 +4/3/2/1/7/10 4/2/2/0/1/3/21 +4/3/2/1/10/10 4/2/2/0/1/3/21 +4/3/2/1/11/10 4/2/2/0/1/3/21 +4/3/2/1/14/10 4/2/2/0/1/3/21 +4/3/2/1/15/10 4/2/2/0/1/3/21 +4/3/2/1/18/10 4/2/2/0/1/3/21 +4/3/2/1/19/10 4/2/2/0/1/3/21 +4/3/2/1/22/10 4/2/2/0/1/3/21 +4/3/2/1/2/11 4/2/2/0/1/3/22 +4/3/2/1/3/11 4/2/2/0/1/3/22 +4/3/2/1/4/11 4/2/2/0/1/3/22 +4/3/2/1/8/11 4/2/2/0/1/3/22 +4/3/2/1/10/11 4/2/2/0/1/3/22 +4/3/2/1/11/11 4/2/2/0/1/3/22 +4/3/2/1/15/11 4/2/2/0/1/3/22 +4/3/2/1/16/11 4/2/2/0/1/3/22 +4/3/2/1/17/11 4/2/2/0/1/3/22 +4/3/2/1/20/11 4/2/2/0/1/3/22 +4/3/2/1/21/11 4/2/2/0/1/3/22 +4/3/2/1/5/11 4/2/2/0/1/3/23 +4/3/2/1/6/11 4/2/2/0/1/3/23 +4/3/2/1/7/11 4/2/2/0/1/3/23 +4/3/2/1/9/11 4/2/2/0/1/3/23 +4/3/2/1/12/11 4/2/2/0/1/3/23 +4/3/2/1/13/11 4/2/2/0/1/3/23 +4/3/2/1/14/11 4/2/2/0/1/3/23 +4/3/2/1/18/11 4/2/2/0/1/3/23 +4/3/2/1/19/11 4/2/2/0/1/3/23 +4/3/2/1/6/12 4/2/2/0/1/3/24 +4/3/2/1/7/12 4/2/2/0/1/3/24 +4/3/2/1/8/12 4/2/2/0/1/3/24 +4/3/2/1/9/12 4/2/2/0/1/3/24 +4/3/2/1/12/12 4/2/2/0/1/3/24 +4/3/2/1/13/12 4/2/2/0/1/3/24 +4/3/2/1/14/12 4/2/2/0/1/3/24 +4/3/2/1/18/12 4/2/2/0/1/3/24 +4/3/2/1/19/12 4/2/2/0/1/3/24 +4/3/2/1/2/12 4/2/2/0/1/3/25 +4/3/2/1/3/12 4/2/2/0/1/3/25 +4/3/2/1/4/12 4/2/2/0/1/3/25 +4/3/2/1/5/12 4/2/2/0/1/3/25 +4/3/2/1/10/12 4/2/2/0/1/3/25 +4/3/2/1/11/12 4/2/2/0/1/3/25 +4/3/2/1/15/12 4/2/2/0/1/3/25 +4/3/2/1/16/12 4/2/2/0/1/3/25 +4/3/2/1/17/12 4/2/2/0/1/3/25 +4/3/2/1/20/12 4/2/2/0/1/3/25 +4/3/2/1/21/12 4/2/2/0/1/3/25 +4/3/2/1/2/13 4/2/2/0/1/3/26 +4/3/2/1/4/13 4/2/2/0/1/3/26 +4/3/2/1/5/13 4/2/2/0/1/3/26 +4/3/2/1/9/13 4/2/2/0/1/3/26 +4/3/2/1/10/13 4/2/2/0/1/3/26 +4/3/2/1/13/13 4/2/2/0/1/3/26 +4/3/2/1/14/13 4/2/2/0/1/3/26 +4/3/2/1/17/13 4/2/2/0/1/3/26 +4/3/2/1/18/13 4/2/2/0/1/3/26 +4/3/2/1/21/13 4/2/2/0/1/3/26 +4/3/2/1/1/13 4/2/2/0/1/3/27 +4/3/2/1/3/13 4/2/2/0/1/3/27 +4/3/2/1/6/13 4/2/2/0/1/3/27 +4/3/2/1/7/13 4/2/2/0/1/3/27 +4/3/2/1/8/13 4/2/2/0/1/3/27 +4/3/2/1/11/13 4/2/2/0/1/3/27 +4/3/2/1/12/13 4/2/2/0/1/3/27 +4/3/2/1/15/13 4/2/2/0/1/3/27 +4/3/2/1/16/13 4/2/2/0/1/3/27 +4/3/2/1/19/13 4/2/2/0/1/3/27 +4/3/2/1/20/13 4/2/2/0/1/3/27 +4/3/2/1/4/14 4/2/2/0/1/3/28 +4/3/2/1/6/14 4/2/2/0/1/3/28 +4/3/2/1/8/14 4/2/2/0/1/3/28 +4/3/2/1/10/14 4/2/2/0/1/3/28 +4/3/2/1/12/14 4/2/2/0/1/3/28 +4/3/2/1/15/14 4/2/2/0/1/3/28 +4/3/2/1/17/14 4/2/2/0/1/3/28 +4/3/2/1/18/14 4/2/2/0/1/3/28 +4/3/2/1/20/14 4/2/2/0/1/3/28 +4/3/2/1/2/14 4/2/2/0/1/3/29 +4/3/2/1/3/14 4/2/2/0/1/3/29 +4/3/2/1/5/14 4/2/2/0/1/3/29 +4/3/2/1/7/14 4/2/2/0/1/3/29 +4/3/2/1/9/14 4/2/2/0/1/3/29 +4/3/2/1/11/14 4/2/2/0/1/3/29 +4/3/2/1/13/14 4/2/2/0/1/3/29 +4/3/2/1/14/14 4/2/2/0/1/3/29 +4/3/2/1/16/14 4/2/2/0/1/3/29 +4/3/2/1/19/14 4/2/2/0/1/3/29 +4/3/2/1/22/14 4/2/2/0/1/3/29 +4/3/2/1/0/15 4/2/2/0/1/3/30 +4/3/2/1/3/15 4/2/2/0/1/3/30 +4/3/2/1/5/15 4/2/2/0/1/3/30 +4/3/2/1/7/15 4/2/2/0/1/3/30 +4/3/2/1/8/15 4/2/2/0/1/3/30 +4/3/2/1/13/15 4/2/2/0/1/3/30 +4/3/2/1/14/15 4/2/2/0/1/3/30 +4/3/2/1/18/15 4/2/2/0/1/3/30 +4/3/2/1/19/15 4/2/2/0/1/3/30 +4/3/2/1/20/15 4/2/2/0/1/3/30 +4/3/2/1/21/14 4/2/2/0/1/3/30 +4/3/2/1/24/15 4/2/2/0/1/3/30 +4/3/2/1/1/15 4/2/2/0/1/3/31 +4/3/2/1/2/15 4/2/2/0/1/3/31 +4/3/2/1/4/15 4/2/2/0/1/3/31 +4/3/2/1/6/15 4/2/2/0/1/3/31 +4/3/2/1/9/15 4/2/2/0/1/3/31 +4/3/2/1/10/15 4/2/2/0/1/3/31 +4/3/2/1/11/15 4/2/2/0/1/3/31 +4/3/2/1/12/15 4/2/2/0/1/3/31 +4/3/2/1/15/15 4/2/2/0/1/3/31 +4/3/2/1/16/15 4/2/2/0/1/3/31 +4/3/2/1/17/15 4/2/2/0/1/3/31 +4/3/2/1/21/15 4/2/2/0/1/3/31 +4/3/2/1/22/15 4/2/2/0/1/3/31 +4/3/2/1/23/15 4/2/2/0/1/3/31 + +nextSuperCalo HEC10/TILEE 4/2/-2,2/1/0/0/0:63 5/2/-1,1/0:63/15/0 calcSide(2,2) calcPhi(6,3) +4/2/2/1/0/0/0 5/2/1/0/15/0 + +prevSuperCalo HEC10/TILEE 5/2/-1,1/0:63/15/0 4/2/-2,2/1/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15/0 4/2/2/1/0/0/0 + +nextSuperCalo FCAL1/HEC21 4/3/-2,2/1/0,1/2:14 4/2/-2,2/2/1/2/0:31 calcSide(2,2) +4/3/2/1/0/2 4/2/2/2/1/2/4 +4/3/2/1/1/3 4/2/2/2/1/2/6 +4/3/2/1/0/3 4/2/2/2/1/2/7 +4/3/2/1/0/4 4/2/2/2/1/2/8 +4/3/2/1/1/4 4/2/2/2/1/2/9 +4/3/2/1/0/5 4/2/2/2/1/2/10 +4/3/2/1/1/6 4/2/2/2/1/2/12 +4/3/2/1/0/6 4/2/2/2/1/2/13 +4/3/2/1/0/10 4/2/2/2/1/2/20 +4/3/2/1/1/11 4/2/2/2/1/2/22 +4/3/2/1/0/11 4/2/2/2/1/2/23 +4/3/2/1/0/12 4/2/2/2/1/2/24 +4/3/2/1/1/12 4/2/2/2/1/2/25 +4/3/2/1/0/13 4/2/2/2/1/2/26 +4/3/2/1/1/14 4/2/2/2/1/2/28 +4/3/2/1/0/14 4/2/2/2/1/2/29 + +prevSuperCalo HEC21/FCAL1 4/2/-2,2/2/1/2/0:31 4/3/-2,2/1/0,1/2:14 calcSide(2,2) +4/2/2/2/1/2/4 4/3/2/1/0/2 +4/2/2/2/1/2/6 4/3/2/1/1/3 +4/2/2/2/1/2/7 4/3/2/1/0/3 +4/2/2/2/1/2/8 4/3/2/1/0/4 +4/2/2/2/1/2/9 4/3/2/1/1/4 +4/2/2/2/1/2/10 4/3/2/1/0/5 +4/2/2/2/1/2/12 4/3/2/1/1/6 +4/2/2/2/1/2/13 4/3/2/1/0/6 +4/2/2/2/1/2/20 4/3/2/1/0/10 +4/2/2/2/1/2/22 4/3/2/1/1/11 +4/2/2/2/1/2/23 4/3/2/1/0/11 +4/2/2/2/1/2/24 4/3/2/1/0/12 +4/2/2/2/1/2/25 4/3/2/1/1/12 +4/2/2/2/1/2/26 4/3/2/1/0/13 +4/2/2/2/1/2/28 4/3/2/1/1/14 +4/2/2/2/1/2/29 4/3/2/1/0/14 + +nextSuperCalo FCAL2/HEC31 4/3/-2,2/2/0:9/0:15 4/2/-2,2/3/1/3/0:31 calcSide(2,2) +4/3/2/2/0/0 4/2/2/3/1/3/0 +4/3/2/2/1/0 4/2/2/3/1/3/0 +4/3/2/2/2/0 4/2/2/3/1/3/0 +4/3/2/2/3/0 4/2/2/3/1/3/1 4/2/2/3/1/3/2 +4/3/2/2/4/0 4/2/2/3/1/3/1 +4/3/2/2/5/0 4/2/2/3/1/3/0 4/2/2/3/1/3/1 +4/3/2/2/6/0 4/2/2/3/1/3/0 +4/3/2/2/7/0 4/2/2/3/1/3/1 4/2/2/3/1/3/2 +4/3/2/2/0/1 4/2/2/3/1/3/3 +4/3/2/2/1/1 4/2/2/3/1/3/3 +4/3/2/2/2/1 4/2/2/3/1/3/2 +4/3/2/2/3/1 4/2/2/3/1/3/3 4/2/2/3/1/3/4 +4/3/2/2/4/1 4/2/2/3/1/3/2 +4/3/2/2/5/1 4/2/2/3/1/3/3 +4/3/2/2/6/1 4/2/2/3/1/3/2 4/2/2/3/1/3/3 +4/3/2/2/0/2 4/2/2/3/1/3/5 +4/3/2/2/1/2 4/2/2/3/1/3/3 4/2/2/3/1/3/4 +4/3/2/2/2/2 4/2/2/3/1/3/5 +4/3/2/2/3/2 4/2/2/3/1/3/4 +4/3/2/2/4/2 4/2/2/3/1/3/5 +4/3/2/2/5/2 4/2/2/3/1/3/4 4/2/2/3/1/3/5 +4/3/2/2/6/2 4/2/2/3/1/3/4 +4/3/2/2/7/2 4/2/2/3/1/3/5 +4/3/2/2/8/2 4/2/2/3/1/3/5 +4/3/2/2/9/2 4/2/2/3/1/3/4 +4/3/2/2/0/3 4/2/2/3/1/3/7 +4/3/2/2/1/3 4/2/2/3/1/3/5 4/2/2/3/1/3/6 +4/3/2/2/2/3 4/2/2/3/1/3/6 +4/3/2/2/3/3 4/2/2/3/1/3/6 4/2/2/3/1/3/7 +4/3/2/2/4/3 4/2/2/3/1/3/7 +4/3/2/2/5/3 4/2/2/3/1/3/7 +4/3/2/2/0/4 4/2/2/3/1/3/8 +4/3/2/2/1/4 4/2/2/3/1/3/9 4/2/2/3/1/3/10 +4/3/2/2/2/4 4/2/2/3/1/3/9 +4/3/2/2/3/4 4/2/2/3/1/3/8 4/2/2/3/1/3/9 +4/3/2/2/4/4 4/2/2/3/1/3/8 +4/3/2/2/5/4 4/2/2/3/1/3/8 +4/3/2/2/0/5 4/2/2/3/1/3/11 +4/3/2/2/1/5 4/2/2/3/1/3/10 +4/3/2/2/2/5 4/2/2/3/1/3/10 +4/3/2/2/3/5 4/2/2/3/1/3/11 +4/3/2/2/4/5 4/2/2/3/1/3/10 +4/3/2/2/5/5 4/2/2/3/1/3/10 4/2/2/3/1/3/11 +4/3/2/2/6/5 4/2/2/3/1/3/11 4/2/2/3/1/3/12 +4/3/2/2/7/5 4/2/2/3/1/3/10 4/2/2/3/1/3/11 +4/3/2/2/8/5 4/2/2/3/1/3/10 +4/3/2/2/9/5 4/2/2/3/1/3/11 +4/3/2/2/0/6 4/2/2/3/1/3/11 4/2/2/3/1/3/12 +4/3/2/2/1/6 4/2/2/3/1/3/12 +4/3/2/2/2/6 4/2/2/3/1/3/13 +4/3/2/2/3/6 4/2/2/3/1/3/12 +4/3/2/2/4/6 4/2/2/3/1/3/13 +4/3/2/2/5/6 4/2/2/3/1/3/12 +4/3/2/2/6/6 4/2/2/3/1/3/12 4/2/2/3/1/3/13 +4/3/2/2/0/7 4/2/2/3/1/3/15 +4/3/2/2/1/7 4/2/2/3/1/3/15 +4/3/2/2/2/7 4/2/2/3/1/3/15 +4/3/2/2/3/7 4/2/2/3/1/3/13 4/2/2/3/1/3/14 +4/3/2/2/4/7 4/2/2/3/1/3/14 +4/3/2/2/5/7 4/2/2/3/1/3/14 4/2/2/3/1/3/15 +4/3/2/2/6/7 4/2/2/3/1/3/15 +4/3/2/2/7/7 4/2/2/3/1/3/13 4/2/2/3/1/3/14 +4/3/2/2/0/8 4/2/2/3/1/3/16 +4/3/2/2/1/8 4/2/2/3/1/3/16 +4/3/2/2/2/8 4/2/2/3/1/3/16 +4/3/2/2/3/8 4/2/2/3/1/3/17 4/2/2/3/1/3/18 +4/3/2/2/4/8 4/2/2/3/1/3/17 +4/3/2/2/5/8 4/2/2/3/1/3/16 4/2/2/3/1/3/17 +4/3/2/2/6/8 4/2/2/3/1/3/16 +4/3/2/2/7/8 4/2/2/3/1/3/17 4/2/2/3/1/3/18 +4/3/2/2/0/9 4/2/2/3/1/3/19 +4/3/2/2/1/9 4/2/2/3/1/3/19 +4/3/2/2/2/9 4/2/2/3/1/3/18 +4/3/2/2/3/9 4/2/2/3/1/3/19 4/2/2/3/1/3/20 +4/3/2/2/4/9 4/2/2/3/1/3/18 +4/3/2/2/5/9 4/2/2/3/1/3/19 +4/3/2/2/6/9 4/2/2/3/1/3/18 4/2/2/3/1/3/19 +4/3/2/2/0/10 4/2/2/3/1/3/21 +4/3/2/2/1/10 4/2/2/3/1/3/19 4/2/2/3/1/3/20 +4/3/2/2/2/10 4/2/2/3/1/3/21 +4/3/2/2/3/10 4/2/2/3/1/3/20 +4/3/2/2/4/10 4/2/2/3/1/3/21 +4/3/2/2/5/10 4/2/2/3/1/3/20 4/2/2/3/1/3/21 +4/3/2/2/6/10 4/2/2/3/1/3/20 +4/3/2/2/7/10 4/2/2/3/1/3/21 +4/3/2/2/8/10 4/2/2/3/1/3/21 +4/3/2/2/9/10 4/2/2/3/1/3/20 +4/3/2/2/0/11 4/2/2/3/1/3/23 +4/3/2/2/1/11 4/2/2/3/1/3/21 4/2/2/3/1/3/22 +4/3/2/2/2/11 4/2/2/3/1/3/22 +4/3/2/2/3/11 4/2/2/3/1/3/22 4/2/2/3/1/3/23 +4/3/2/2/4/11 4/2/2/3/1/3/23 +4/3/2/2/5/11 4/2/2/3/1/3/23 +4/3/2/2/0/12 4/2/2/3/1/3/24 +4/3/2/2/1/12 4/2/2/3/1/3/25 4/2/2/3/1/3/26 +4/3/2/2/2/12 4/2/2/3/1/3/25 +4/3/2/2/3/12 4/2/2/3/1/3/24 4/2/2/3/1/3/25 +4/3/2/2/4/12 4/2/2/3/1/3/24 +4/3/2/2/5/12 4/2/2/3/1/3/24 +4/3/2/2/0/13 4/2/2/3/1/3/27 +4/3/2/2/1/13 4/2/2/3/1/3/26 +4/3/2/2/2/13 4/2/2/3/1/3/26 +4/3/2/2/3/13 4/2/2/3/1/3/27 +4/3/2/2/4/13 4/2/2/3/1/3/26 +4/3/2/2/5/13 4/2/2/3/1/3/26 4/2/2/3/1/3/27 +4/3/2/2/6/13 4/2/2/3/1/3/27 4/2/2/3/1/3/28 +4/3/2/2/7/13 4/2/2/3/1/3/26 4/2/2/3/1/3/27 +4/3/2/2/8/13 4/2/2/3/1/3/26 +4/3/2/2/9/13 4/2/2/3/1/3/27 +4/3/2/2/0/14 4/2/2/3/1/3/27 4/2/2/3/1/3/28 +4/3/2/2/1/14 4/2/2/3/1/3/28 +4/3/2/2/2/14 4/2/2/3/1/3/29 +4/3/2/2/3/14 4/2/2/3/1/3/28 +4/3/2/2/4/14 4/2/2/3/1/3/29 +4/3/2/2/5/14 4/2/2/3/1/3/28 +4/3/2/2/6/14 4/2/2/3/1/3/28 4/2/2/3/1/3/29 +4/3/2/2/0/15 4/2/2/3/1/3/31 +4/3/2/2/1/15 4/2/2/3/1/3/31 +4/3/2/2/2/15 4/2/2/3/1/3/31 +4/3/2/2/3/15 4/2/2/3/1/3/29 4/2/2/3/1/3/30 +4/3/2/2/4/15 4/2/2/3/1/3/30 +4/3/2/2/5/15 4/2/2/3/1/3/30 4/2/2/3/1/3/31 +4/3/2/2/6/15 4/2/2/3/1/3/31 +4/3/2/2/7/15 4/2/2/3/1/3/29 4/2/2/3/1/3/30 + +prevSuperCalo HEC31/FCAL2 4/2/-2,2/3/1/3/0:31 4/3/-2,2/2/0:9/0:15 calcSide(2,2) +4/2/2/3/1/3/0 4/3/2/2/0/0 4/3/2/2/1/0 4/3/2/2/2/0 4/3/2/2/5/0 4/3/2/2/6/0 +4/2/2/3/1/3/1 4/3/2/2/3/0 4/3/2/2/4/0 4/3/2/2/5/0 4/3/2/2/7/0 +4/2/2/3/1/3/2 4/3/2/2/3/0 4/3/2/2/7/0 4/3/2/2/2/1 4/3/2/2/4/1 4/3/2/2/6/1 +4/2/2/3/1/3/3 4/3/2/2/0/1 4/3/2/2/1/1 4/3/2/2/3/1 4/3/2/2/5/1 4/3/2/2/6/1 4/3/2/2/1/2 +4/2/2/3/1/3/4 4/3/2/2/3/1 4/3/2/2/1/2 4/3/2/2/3/2 4/3/2/2/5/2 4/3/2/2/6/2 4/3/2/2/9/2 +4/2/2/3/1/3/5 4/3/2/2/0/2 4/3/2/2/2/2 4/3/2/2/4/2 4/3/2/2/5/2 4/3/2/2/7/2 4/3/2/2/8/2 4/3/2/2/1/3 +4/2/2/3/1/3/6 4/3/2/2/1/3 4/3/2/2/2/3 4/3/2/2/3/3 +4/2/2/3/1/3/7 4/3/2/2/0/3 4/3/2/2/3/3 4/3/2/2/4/3 4/3/2/2/5/3 +4/2/2/3/1/3/8 4/3/2/2/0/4 4/3/2/2/3/4 4/3/2/2/4/4 4/3/2/2/5/4 +4/2/2/3/1/3/9 4/3/2/2/1/4 4/3/2/2/2/4 4/3/2/2/3/4 +4/2/2/3/1/3/10 4/3/2/2/1/4 4/3/2/2/1/5 4/3/2/2/2/5 4/3/2/2/4/5 4/3/2/2/5/5 4/3/2/2/7/5 4/3/2/2/8/5 +4/2/2/3/1/3/11 4/3/2/2/0/5 4/3/2/2/3/5 4/3/2/2/5/5 4/3/2/2/6/5 4/3/2/2/7/5 4/3/2/2/9/5 4/3/2/2/0/6 +4/2/2/3/1/3/12 4/3/2/2/6/5 4/3/2/2/0/6 4/3/2/2/1/6 4/3/2/2/3/6 4/3/2/2/5/6 4/3/2/2/6/6 +4/2/2/3/1/3/13 4/3/2/2/2/6 4/3/2/2/4/6 4/3/2/2/6/6 4/3/2/2/3/7 4/3/2/2/7/7 +4/2/2/3/1/3/14 4/3/2/2/3/7 4/3/2/2/4/7 4/3/2/2/5/7 4/3/2/2/7/7 +4/2/2/3/1/3/15 4/3/2/2/0/7 4/3/2/2/1/7 4/3/2/2/2/7 4/3/2/2/5/7 4/3/2/2/6/7 +4/2/2/3/1/3/16 4/3/2/2/0/8 4/3/2/2/1/8 4/3/2/2/2/8 4/3/2/2/5/8 4/3/2/2/6/8 +4/2/2/3/1/3/17 4/3/2/2/3/8 4/3/2/2/4/8 4/3/2/2/5/8 4/3/2/2/7/8 +4/2/2/3/1/3/18 4/3/2/2/3/8 4/3/2/2/7/8 4/3/2/2/2/9 4/3/2/2/4/9 4/3/2/2/6/9 +4/2/2/3/1/3/19 4/3/2/2/0/9 4/3/2/2/1/9 4/3/2/2/3/9 4/3/2/2/5/9 4/3/2/2/6/9 4/3/2/2/1/10 +4/2/2/3/1/3/20 4/3/2/2/3/9 4/3/2/2/1/10 4/3/2/2/3/10 4/3/2/2/5/10 4/3/2/2/6/10 4/3/2/2/9/10 +4/2/2/3/1/3/21 4/3/2/2/0/10 4/3/2/2/2/10 4/3/2/2/4/10 4/3/2/2/5/10 4/3/2/2/7/10 4/3/2/2/8/10 4/3/2/2/1/11 +4/2/2/3/1/3/22 4/3/2/2/1/11 4/3/2/2/2/11 4/3/2/2/3/11 +4/2/2/3/1/3/23 4/3/2/2/0/11 4/3/2/2/3/11 4/3/2/2/4/11 4/3/2/2/5/11 +4/2/2/3/1/3/24 4/3/2/2/0/12 4/3/2/2/3/12 4/3/2/2/4/12 4/3/2/2/5/12 +4/2/2/3/1/3/25 4/3/2/2/1/12 4/3/2/2/2/12 4/3/2/2/3/12 +4/2/2/3/1/3/26 4/3/2/2/1/12 4/3/2/2/1/13 4/3/2/2/2/13 4/3/2/2/4/13 4/3/2/2/5/13 4/3/2/2/7/13 4/3/2/2/8/13 +4/2/2/3/1/3/27 4/3/2/2/0/13 4/3/2/2/3/13 4/3/2/2/5/13 4/3/2/2/6/13 4/3/2/2/7/13 4/3/2/2/9/13 4/3/2/2/0/14 +4/2/2/3/1/3/28 4/3/2/2/6/13 4/3/2/2/0/14 4/3/2/2/1/14 4/3/2/2/3/14 4/3/2/2/5/14 4/3/2/2/6/14 +4/2/2/3/1/3/29 4/3/2/2/2/14 4/3/2/2/4/14 4/3/2/2/6/14 4/3/2/2/3/15 4/3/2/2/7/15 +4/2/2/3/1/3/30 4/3/2/2/3/15 4/3/2/2/4/15 4/3/2/2/5/15 4/3/2/2/7/15 +4/2/2/3/1/3/31 4/3/2/2/0/15 4/3/2/2/1/15 4/3/2/2/2/15 4/3/2/2/5/15 4/3/2/2/6/15 diff --git a/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours-DC3-05-Comm-01.dat b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours-DC3-05-Comm-01.dat new file mode 100755 index 0000000000000000000000000000000000000000..6b78296a9f6b72955f0d8bd04cf64ca6d8ea8c46 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours-DC3-05-Comm-01.dat @@ -0,0 +1,772 @@ +# File and Version Information: +# $Id: SuperCaloNeighbours-DC3-05-Comm-01.dat,v 1.1 2006-12-01 14:06:51 menke Exp $ +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Thu Nov 30 18:52:50 2004 +# +# ranges of expanded calorimeter identifiers are mapped to create lookup +# tables for the super calo neighbours. The mapping in eta has to be given +# explicitely, while side symmetry and the mapping in phi can be automated. +# The automation in phi works only on contigous ranges. +# +# Syntax: +# for each mapped region: Header and Entry lines until an empty line +# denotes the end of the block. The Header consists of: +# <Type> <Name> <SourceRange> <TargetRange> [<SideDirective>] [<PhiDirective>] +# <Type>: nextSuperCalo or prevSuperCalo denotes the direction of the map +# <Name>: any string without blanks, white-space etc. +# <Source/TargetRange>: A cell-level ExpandedIdentifier Range +# <SideDirective>: calcSide(i1,i2) maps sign of the field i1 in SourceRange to +# the sign of field i2 in TargetRange. +# <PhiDirective>: calcPhi(i1,i2) maps the field i1 in SourceRange to +# the field i2 in TargetRange by scaling. +# +nextSuperCalo EMB3/TILEB 4/1/-1,1/3/0/0:19/0:255 5/1/-1,1/0:63/0:9/0 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/0/0 5/1/1/0/0/0 +4/1/1/3/0/1/0 5/1/1/0/0/0 +4/1/1/3/0/2/0 5/1/1/0/1/0 +4/1/1/3/0/3/0 5/1/1/0/1/0 +4/1/1/3/0/4/0 5/1/1/0/2/0 +4/1/1/3/0/5/0 5/1/1/0/2/0 +4/1/1/3/0/6/0 5/1/1/0/3/0 +4/1/1/3/0/7/0 5/1/1/0/3/0 +4/1/1/3/0/8/0 5/1/1/0/4/0 +4/1/1/3/0/9/0 5/1/1/0/4/0 +4/1/1/3/0/10/0 5/1/1/0/5/0 +4/1/1/3/0/11/0 5/1/1/0/5/0 +4/1/1/3/0/12/0 5/1/1/0/6/0 +4/1/1/3/0/13/0 5/1/1/0/6/0 +4/1/1/3/0/14/0 5/1/1/0/7/0 +4/1/1/3/0/15/0 5/1/1/0/7/0 +4/1/1/3/0/16/0 5/1/1/0/8/0 +4/1/1/3/0/17/0 5/1/1/0/8/0 +4/1/1/3/0/18/0 5/1/1/0/9/0 +4/1/1/3/0/19/0 5/1/1/0/9/0 + +prevSuperCalo TILEB/EMB3 5/1/-1,1/0:63/0:9/0 4/1/-1,1/3/0/0:19/0:255 calcSide(2,2) calcPhi(3,6) +5/1/1/0/0/0 4/1/1/3/0/0/0 4/1/1/3/0/0/1 4/1/1/3/0/0/2 4/1/1/3/0/0/3 4/1/1/3/0/1/0 4/1/1/3/0/1/1 4/1/1/3/0/1/2 4/1/1/3/0/1/3 +5/1/1/0/1/0 4/1/1/3/0/2/0 4/1/1/3/0/2/1 4/1/1/3/0/2/2 4/1/1/3/0/2/3 4/1/1/3/0/3/0 4/1/1/3/0/3/1 4/1/1/3/0/3/2 4/1/1/3/0/3/3 +5/1/1/0/2/0 4/1/1/3/0/4/0 4/1/1/3/0/4/1 4/1/1/3/0/4/2 4/1/1/3/0/4/3 4/1/1/3/0/5/0 4/1/1/3/0/5/1 4/1/1/3/0/5/2 4/1/1/3/0/5/3 +5/1/1/0/3/0 4/1/1/3/0/6/0 4/1/1/3/0/6/1 4/1/1/3/0/6/2 4/1/1/3/0/6/3 4/1/1/3/0/7/0 4/1/1/3/0/7/1 4/1/1/3/0/7/2 4/1/1/3/0/7/3 +5/1/1/0/4/0 4/1/1/3/0/8/0 4/1/1/3/0/8/1 4/1/1/3/0/8/2 4/1/1/3/0/8/3 4/1/1/3/0/9/0 4/1/1/3/0/9/1 4/1/1/3/0/9/2 4/1/1/3/0/9/3 +5/1/1/0/5/0 4/1/1/3/0/10/0 4/1/1/3/0/10/1 4/1/1/3/0/10/2 4/1/1/3/0/10/3 4/1/1/3/0/11/0 4/1/1/3/0/11/1 4/1/1/3/0/11/2 4/1/1/3/0/11/3 +5/1/1/0/6/0 4/1/1/3/0/12/0 4/1/1/3/0/12/1 4/1/1/3/0/12/2 4/1/1/3/0/12/3 4/1/1/3/0/13/0 4/1/1/3/0/13/1 4/1/1/3/0/13/2 4/1/1/3/0/13/3 +5/1/1/0/7/0 4/1/1/3/0/14/0 4/1/1/3/0/14/1 4/1/1/3/0/14/2 4/1/1/3/0/14/3 4/1/1/3/0/15/0 4/1/1/3/0/15/1 4/1/1/3/0/15/2 4/1/1/3/0/15/3 +5/1/1/0/8/0 4/1/1/3/0/16/0 4/1/1/3/0/16/1 4/1/1/3/0/16/2 4/1/1/3/0/16/3 4/1/1/3/0/17/0 4/1/1/3/0/17/1 4/1/1/3/0/17/2 4/1/1/3/0/17/3 +5/1/1/0/9/0 4/1/1/3/0/18/0 4/1/1/3/0/18/1 4/1/1/3/0/18/2 4/1/1/3/0/18/3 4/1/1/3/0/19/0 4/1/1/3/0/19/1 4/1/1/3/0/19/2 4/1/1/3/0/19/3 + +nextSuperCalo EMB3/TILEG 4/1/-1,1/3/0/20,21,22,23,25,26/0:255 5/3/-1,1/0:63/10,11,13/3 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/20/0 5/3/1/0/10/3 +4/1/1/3/0/21/0 5/3/1/0/10/3 +4/1/1/3/0/22/0 5/3/1/0/11/3 +4/1/1/3/0/23/0 5/3/1/0/11/3 +4/1/1/3/0/25/0 5/3/1/0/13/3 +4/1/1/3/0/26/0 5/3/1/0/13/3 + +prevSuperCalo TILEG/EMB3 5/3/-1,1/0:63/10,11,13/3 4/1/-1,1/3/0/20,21,22,23,25,26/0:255 calcSide(2,2) calcPhi(3,6) +5/3/1/0/10/3 4/1/1/3/0/20/0 4/1/1/3/0/20/1 4/1/1/3/0/20/2 4/1/1/3/0/20/3 4/1/1/3/0/21/0 4/1/1/3/0/21/1 4/1/1/3/0/21/2 4/1/1/3/0/21/3 +5/3/1/0/11/3 4/1/1/3/0/22/0 4/1/1/3/0/22/1 4/1/1/3/0/22/2 4/1/1/3/0/22/3 4/1/1/3/0/23/0 4/1/1/3/0/23/1 4/1/1/3/0/23/2 4/1/1/3/0/23/3 +5/3/1/0/13/3 4/1/1/3/0/25/0 4/1/1/3/0/25/1 4/1/1/3/0/25/2 4/1/1/3/0/25/3 4/1/1/3/0/26/0 4/1/1/3/0/26/1 4/1/1/3/0/26/2 4/1/1/3/0/26/3 + +nextSuperCalo EMB3/TILEE 4/1/-1,1/3/0/22:26/0:255 5/2/-1,1/0:63/11:13/0 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/22/0 5/2/1/0/11/0 +4/1/1/3/0/23/0 5/2/1/0/11/0 +4/1/1/3/0/24/0 5/2/1/0/12/0 +4/1/1/3/0/25/0 5/2/1/0/12/0 +4/1/1/3/0/26/0 5/2/1/0/13/0 + +prevSuperCalo TILEE/EMB3 5/2/-1,1/0:63/11:13/0 4/1/-1,1/3/0/22:26/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/11/0 4/1/1/3/0/22/0 4/1/1/3/0/22/1 4/1/1/3/0/22/2 4/1/1/3/0/22/3 4/1/1/3/0/23/0 4/1/1/3/0/23/1 4/1/1/3/0/23/2 4/1/1/3/0/23/3 +5/2/1/0/12/0 4/1/1/3/0/24/0 4/1/1/3/0/24/1 4/1/1/3/0/24/2 4/1/1/3/0/24/3 4/1/1/3/0/25/0 4/1/1/3/0/25/1 4/1/1/3/0/25/2 4/1/1/3/0/25/3 +5/2/1/0/13/0 4/1/1/3/0/26/0 4/1/1/3/0/26/1 4/1/1/3/0/26/2 4/1/1/3/0/26/3 + +nextSuperCalo EME2OW0/TILEE 4/1/-2,2/2/0/0/0:255 5/2/-1,1/0:63/14/0 calcSide(2,2) calcPhi(6,3) +4/1/2/2/0/0/0 5/2/1/0/14/0 + +prevSuperCalo TILEE/EME2OW0 5/2/-1,1/0:63/14/0 4/1/-2,2/2/0/0/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14/0 4/1/2/2/0/0/0 4/1/2/2/0/0/1 4/1/2/2/0/0/2 4/1/2/2/0/0/3 + +nextSuperCalo EME2OW1/TILEE 4/1/-2,2/2/1/0:2/0:255 5/2/-1,1/0:63/14/0 calcSide(2,2) calcPhi(6,3) +4/1/2/2/1/0/0 5/2/1/0/14/0 +4/1/2/2/1/1/0 5/2/1/0/14/0 +4/1/2/2/1/2/0 5/2/1/0/14/0 + +prevSuperCalo TILEE/EME2OW1 5/2/-1,1/0:63/14/0 4/1/-2,2/2/1/0:2/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14/0 4/1/2/2/1/0/0 4/1/2/2/1/1/0 4/1/2/2/1/2/0 4/1/2/2/1/0/1 4/1/2/2/1/1/1 4/1/2/2/1/2/1 4/1/2/2/1/0/2 4/1/2/2/1/1/2 4/1/2/2/1/2/2 4/1/2/2/1/0/3 4/1/2/2/1/1/3 4/1/2/2/1/2/3 + +nextSuperCalo EME3OW/HEC00 4/1/-2,2/3/0/0:19/0:255 4/2/-2,2/0/0/0:9/0:63 calcSide(2,2) calcPhi(6,6) +4/1/2/3/0/0/0 4/2/2/0/0/0/0 +4/1/2/3/0/1/0 4/2/2/0/0/0/0 +4/1/2/3/0/2/0 4/2/2/0/0/1/0 +4/1/2/3/0/3/0 4/2/2/0/0/1/0 +4/1/2/3/0/4/0 4/2/2/0/0/2/0 +4/1/2/3/0/5/0 4/2/2/0/0/2/0 +4/1/2/3/0/6/0 4/2/2/0/0/3/0 +4/1/2/3/0/7/0 4/2/2/0/0/3/0 +4/1/2/3/0/8/0 4/2/2/0/0/4/0 +4/1/2/3/0/9/0 4/2/2/0/0/4/0 +4/1/2/3/0/10/0 4/2/2/0/0/5/0 +4/1/2/3/0/11/0 4/2/2/0/0/5/0 +4/1/2/3/0/12/0 4/2/2/0/0/6/0 +4/1/2/3/0/13/0 4/2/2/0/0/6/0 +4/1/2/3/0/14/0 4/2/2/0/0/7/0 +4/1/2/3/0/15/0 4/2/2/0/0/7/0 +4/1/2/3/0/16/0 4/2/2/0/0/8/0 +4/1/2/3/0/17/0 4/2/2/0/0/8/0 +4/1/2/3/0/18/0 4/2/2/0/0/9/0 +4/1/2/3/0/19/0 4/2/2/0/0/9/0 + +prevSuperCalo HEC00/EME3OW 4/2/-2,2/0/0/0:9/0:63 4/1/-2,2/3/0/0:19/0:255 calcSide(2,2) calcPhi(6,6) +4/2/2/0/0/0/0 4/1/2/3/0/0/0 4/1/2/3/0/0/1 4/1/2/3/0/0/2 4/1/2/3/0/0/3 4/1/2/3/0/1/0 4/1/2/3/0/1/1 4/1/2/3/0/1/2 4/1/2/3/0/1/3 +4/2/2/0/0/1/0 4/1/2/3/0/2/0 4/1/2/3/0/2/1 4/1/2/3/0/2/2 4/1/2/3/0/2/3 4/1/2/3/0/3/0 4/1/2/3/0/3/1 4/1/2/3/0/3/2 4/1/2/3/0/3/3 +4/2/2/0/0/2/0 4/1/2/3/0/4/0 4/1/2/3/0/4/1 4/1/2/3/0/4/2 4/1/2/3/0/4/3 4/1/2/3/0/5/0 4/1/2/3/0/5/1 4/1/2/3/0/5/2 4/1/2/3/0/5/3 +4/2/2/0/0/3/0 4/1/2/3/0/6/0 4/1/2/3/0/6/1 4/1/2/3/0/6/2 4/1/2/3/0/6/3 4/1/2/3/0/7/0 4/1/2/3/0/7/1 4/1/2/3/0/7/2 4/1/2/3/0/7/3 +4/2/2/0/0/4/0 4/1/2/3/0/8/0 4/1/2/3/0/8/1 4/1/2/3/0/8/2 4/1/2/3/0/8/3 4/1/2/3/0/9/0 4/1/2/3/0/9/1 4/1/2/3/0/9/2 4/1/2/3/0/9/3 +4/2/2/0/0/5/0 4/1/2/3/0/10/0 4/1/2/3/0/10/1 4/1/2/3/0/10/2 4/1/2/3/0/10/3 4/1/2/3/0/11/0 4/1/2/3/0/11/1 4/1/2/3/0/11/2 4/1/2/3/0/11/3 +4/2/2/0/0/6/0 4/1/2/3/0/12/0 4/1/2/3/0/12/1 4/1/2/3/0/12/2 4/1/2/3/0/12/3 4/1/2/3/0/13/0 4/1/2/3/0/13/1 4/1/2/3/0/13/2 4/1/2/3/0/13/3 +4/2/2/0/0/7/0 4/1/2/3/0/14/0 4/1/2/3/0/14/1 4/1/2/3/0/14/2 4/1/2/3/0/14/3 4/1/2/3/0/15/0 4/1/2/3/0/15/1 4/1/2/3/0/15/2 4/1/2/3/0/15/3 +4/2/2/0/0/8/0 4/1/2/3/0/16/0 4/1/2/3/0/16/1 4/1/2/3/0/16/2 4/1/2/3/0/16/3 4/1/2/3/0/17/0 4/1/2/3/0/17/1 4/1/2/3/0/17/2 4/1/2/3/0/17/3 +4/2/2/0/0/9/0 4/1/2/3/0/18/0 4/1/2/3/0/18/1 4/1/2/3/0/18/2 4/1/2/3/0/18/3 4/1/2/3/0/19/0 4/1/2/3/0/19/1 4/1/2/3/0/19/2 4/1/2/3/0/19/3 + +nextSuperCalo EME2IW/HEC01 4/1/-3,3/2/0/0:6/0:63 4/2/-2,2/0/1/0:3/0:31 calcSide(2,2) calcPhi(6,6) +4/1/3/2/0/0/0 4/2/2/0/1/0/0 +4/1/3/2/0/1/0 4/2/2/0/1/0/0 +4/1/3/2/0/2/0 4/2/2/0/1/1/0 +4/1/3/2/0/3/0 4/2/2/0/1/1/0 +4/1/3/2/0/4/0 4/2/2/0/1/2/0 +4/1/3/2/0/5/0 4/2/2/0/1/2/0 +4/1/3/2/0/6/0 4/2/2/0/1/3/0 + +prevSuperCalo HEC01/EME2IW 4/2/-2,2/0/1/0:3/0:31 4/1/-3,3/2/0/0:6/0:63 calcSide(2,2) calcPhi(6,6) +4/2/2/0/1/0/0 4/1/3/2/0/0/0 4/1/3/2/0/0/1 4/1/3/2/0/1/0 4/1/3/2/0/1/1 +4/2/2/0/1/1/0 4/1/3/2/0/2/0 4/1/3/2/0/2/1 4/1/3/2/0/3/0 4/1/3/2/0/3/1 +4/2/2/0/1/2/0 4/1/3/2/0/4/0 4/1/3/2/0/4/1 4/1/3/2/0/5/0 4/1/3/2/0/5/1 +4/2/2/0/1/3/0 4/1/3/2/0/6/0 4/1/3/2/0/6/1 + +nextSuperCalo HEC00/TILEE 4/2/-2,2/0/0/0/0:63 5/2/-1,1/0:63/15/0 calcSide(2,2) calcPhi(6,3) +4/2/2/0/0/0/0 5/2/1/0/15/0 + +prevSuperCalo TILEE/HEC00 5/2/-1,1/0:63/15/0 4/2/-2,2/0/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15/0 4/2/2/0/0/0/0 + +nextSuperCalo HEC01/FCAL1 4/2/-2,2/0/1/2:3/0:31 4/3/-2,2/1/0:24/0:15 calcSide(2,2) +4/2/2/0/1/2/4 4/3/2/1/0/2 +4/2/2/0/1/2/6 4/3/2/1/1/3 +4/2/2/0/1/2/7 4/3/2/1/0/3 +4/2/2/0/1/2/8 4/3/2/1/0/4 +4/2/2/0/1/2/9 4/3/2/1/1/4 +4/2/2/0/1/2/10 4/3/2/1/0/5 +4/2/2/0/1/2/12 4/3/2/1/1/6 +4/2/2/0/1/2/13 4/3/2/1/0/6 +4/2/2/0/1/2/20 4/3/2/1/0/10 +4/2/2/0/1/2/22 4/3/2/1/1/11 +4/2/2/0/1/2/23 4/3/2/1/0/11 +4/2/2/0/1/2/24 4/3/2/1/0/12 +4/2/2/0/1/2/25 4/3/2/1/1/12 +4/2/2/0/1/2/26 4/3/2/1/0/13 +4/2/2/0/1/2/28 4/3/2/1/1/14 +4/2/2/0/1/2/29 4/3/2/1/0/14 +4/2/2/0/1/3/0 4/3/2/1/1/0 4/3/2/1/2/0 4/3/2/1/3/0 4/3/2/1/5/0 4/3/2/1/6/0 4/3/2/1/9/0 4/3/2/1/10/0 4/3/2/1/11/0 4/3/2/1/14/0 4/3/2/1/15/0 4/3/2/1/16/0 4/3/2/1/20/0 4/3/2/1/21/0 4/3/2/1/22/0 +4/2/2/0/1/3/1 4/3/2/1/0/0 4/3/2/1/4/0 4/3/2/1/7/0 4/3/2/1/8/0 4/3/2/1/12/0 4/3/2/1/13/0 4/3/2/1/17/0 4/3/2/1/18/0 4/3/2/1/19/0 4/3/2/1/21/1 4/3/2/1/23/0 +4/2/2/0/1/3/2 4/3/2/1/1/1 4/3/2/1/2/1 4/3/2/1/3/1 4/3/2/1/5/1 4/3/2/1/7/1 4/3/2/1/9/1 4/3/2/1/11/1 4/3/2/1/13/1 4/3/2/1/14/1 4/3/2/1/16/1 4/3/2/1/19/1 4/3/2/1/22/1 +4/2/2/0/1/3/3 4/3/2/1/0/1 4/3/2/1/4/1 4/3/2/1/6/1 4/3/2/1/8/1 4/3/2/1/10/1 4/3/2/1/12/1 4/3/2/1/15/1 4/3/2/1/17/1 4/3/2/1/18/1 4/3/2/1/20/1 +4/2/2/0/1/3/4 4/3/2/1/3/2 4/3/2/1/6/2 4/3/2/1/8/2 4/3/2/1/9/2 4/3/2/1/12/2 4/3/2/1/13/2 4/3/2/1/16/2 4/3/2/1/17/2 4/3/2/1/20/2 4/3/2/1/21/2 +4/2/2/0/1/3/5 4/3/2/1/1/2 4/3/2/1/2/2 4/3/2/1/4/2 4/3/2/1/5/2 4/3/2/1/7/2 4/3/2/1/10/2 4/3/2/1/11/2 4/3/2/1/14/2 4/3/2/1/15/2 4/3/2/1/18/2 4/3/2/1/19/2 4/3/2/1/22/2 +4/2/2/0/1/3/6 4/3/2/1/2/3 4/3/2/1/3/3 4/3/2/1/4/3 4/3/2/1/8/3 4/3/2/1/10/3 4/3/2/1/11/3 4/3/2/1/15/3 4/3/2/1/16/3 4/3/2/1/17/3 4/3/2/1/20/3 4/3/2/1/21/3 +4/2/2/0/1/3/7 4/3/2/1/5/3 4/3/2/1/6/3 4/3/2/1/7/3 4/3/2/1/9/3 4/3/2/1/12/3 4/3/2/1/13/3 4/3/2/1/14/3 4/3/2/1/18/3 4/3/2/1/19/3 +4/2/2/0/1/3/8 4/3/2/1/6/4 4/3/2/1/7/4 4/3/2/1/8/4 4/3/2/1/9/4 4/3/2/1/12/4 4/3/2/1/13/4 4/3/2/1/14/4 4/3/2/1/18/4 4/3/2/1/19/4 +4/2/2/0/1/3/9 4/3/2/1/2/4 4/3/2/1/3/4 4/3/2/1/4/4 4/3/2/1/5/4 4/3/2/1/10/4 4/3/2/1/11/4 4/3/2/1/15/4 4/3/2/1/16/4 4/3/2/1/17/4 4/3/2/1/20/4 4/3/2/1/21/4 +4/2/2/0/1/3/10 4/3/2/1/2/5 4/3/2/1/4/5 4/3/2/1/5/5 4/3/2/1/9/5 4/3/2/1/10/5 4/3/2/1/13/5 4/3/2/1/14/5 4/3/2/1/17/5 4/3/2/1/18/5 4/3/2/1/21/5 +4/2/2/0/1/3/11 4/3/2/1/1/5 4/3/2/1/3/5 4/3/2/1/6/5 4/3/2/1/7/5 4/3/2/1/8/5 4/3/2/1/11/5 4/3/2/1/12/5 4/3/2/1/15/5 4/3/2/1/16/5 4/3/2/1/19/5 4/3/2/1/20/5 +4/2/2/0/1/3/12 4/3/2/1/4/6 4/3/2/1/6/6 4/3/2/1/8/6 4/3/2/1/10/6 4/3/2/1/12/6 4/3/2/1/15/6 4/3/2/1/17/6 4/3/2/1/18/6 4/3/2/1/20/6 +4/2/2/0/1/3/13 4/3/2/1/2/6 4/3/2/1/3/6 4/3/2/1/5/6 4/3/2/1/7/6 4/3/2/1/9/6 4/3/2/1/11/6 4/3/2/1/13/6 4/3/2/1/14/6 4/3/2/1/16/6 4/3/2/1/19/6 4/3/2/1/22/6 +4/2/2/0/1/3/14 4/3/2/1/0/7 4/3/2/1/3/7 4/3/2/1/5/7 4/3/2/1/7/7 4/3/2/1/8/7 4/3/2/1/13/7 4/3/2/1/14/7 4/3/2/1/18/7 4/3/2/1/19/7 4/3/2/1/20/7 4/3/2/1/21/6 4/3/2/1/24/7 +4/2/2/0/1/3/15 4/3/2/1/1/7 4/3/2/1/2/7 4/3/2/1/4/7 4/3/2/1/6/7 4/3/2/1/9/7 4/3/2/1/10/7 4/3/2/1/11/7 4/3/2/1/12/7 4/3/2/1/15/7 4/3/2/1/16/7 4/3/2/1/17/7 4/3/2/1/21/7 4/3/2/1/22/7 4/3/2/1/23/7 +4/2/2/0/1/3/16 4/3/2/1/1/8 4/3/2/1/2/8 4/3/2/1/3/8 4/3/2/1/5/8 4/3/2/1/6/8 4/3/2/1/9/8 4/3/2/1/10/8 4/3/2/1/11/8 4/3/2/1/14/8 4/3/2/1/15/8 4/3/2/1/16/8 4/3/2/1/20/8 4/3/2/1/21/8 4/3/2/1/22/8 +4/2/2/0/1/3/17 4/3/2/1/0/8 4/3/2/1/4/8 4/3/2/1/7/8 4/3/2/1/8/8 4/3/2/1/12/8 4/3/2/1/13/8 4/3/2/1/17/8 4/3/2/1/18/8 4/3/2/1/19/8 4/3/2/1/21/9 4/3/2/1/23/8 +4/2/2/0/1/3/18 4/3/2/1/1/9 4/3/2/1/2/9 4/3/2/1/3/9 4/3/2/1/5/9 4/3/2/1/7/9 4/3/2/1/9/9 4/3/2/1/11/9 4/3/2/1/13/9 4/3/2/1/14/9 4/3/2/1/16/9 4/3/2/1/19/9 4/3/2/1/22/9 +4/2/2/0/1/3/19 4/3/2/1/0/9 4/3/2/1/4/9 4/3/2/1/6/9 4/3/2/1/8/9 4/3/2/1/10/9 4/3/2/1/12/9 4/3/2/1/15/9 4/3/2/1/17/9 4/3/2/1/18/9 4/3/2/1/20/9 +4/2/2/0/1/3/20 4/3/2/1/3/10 4/3/2/1/6/10 4/3/2/1/8/10 4/3/2/1/9/10 4/3/2/1/12/10 4/3/2/1/13/10 4/3/2/1/16/10 4/3/2/1/17/10 4/3/2/1/20/10 4/3/2/1/21/10 +4/2/2/0/1/3/21 4/3/2/1/1/10 4/3/2/1/2/10 4/3/2/1/4/10 4/3/2/1/5/10 4/3/2/1/7/10 4/3/2/1/10/10 4/3/2/1/11/10 4/3/2/1/14/10 4/3/2/1/15/10 4/3/2/1/18/10 4/3/2/1/19/10 4/3/2/1/22/10 +4/2/2/0/1/3/22 4/3/2/1/2/11 4/3/2/1/3/11 4/3/2/1/4/11 4/3/2/1/8/11 4/3/2/1/10/11 4/3/2/1/11/11 4/3/2/1/15/11 4/3/2/1/16/11 4/3/2/1/17/11 4/3/2/1/20/11 4/3/2/1/21/11 +4/2/2/0/1/3/23 4/3/2/1/5/11 4/3/2/1/6/11 4/3/2/1/7/11 4/3/2/1/9/11 4/3/2/1/12/11 4/3/2/1/13/11 4/3/2/1/14/11 4/3/2/1/18/11 4/3/2/1/19/11 +4/2/2/0/1/3/24 4/3/2/1/6/12 4/3/2/1/7/12 4/3/2/1/8/12 4/3/2/1/9/12 4/3/2/1/12/12 4/3/2/1/13/12 4/3/2/1/14/12 4/3/2/1/18/12 4/3/2/1/19/12 +4/2/2/0/1/3/25 4/3/2/1/2/12 4/3/2/1/3/12 4/3/2/1/4/12 4/3/2/1/5/12 4/3/2/1/10/12 4/3/2/1/11/12 4/3/2/1/15/12 4/3/2/1/16/12 4/3/2/1/17/12 4/3/2/1/20/12 4/3/2/1/21/12 +4/2/2/0/1/3/26 4/3/2/1/2/13 4/3/2/1/4/13 4/3/2/1/5/13 4/3/2/1/9/13 4/3/2/1/10/13 4/3/2/1/13/13 4/3/2/1/14/13 4/3/2/1/17/13 4/3/2/1/18/13 4/3/2/1/21/13 +4/2/2/0/1/3/27 4/3/2/1/1/13 4/3/2/1/3/13 4/3/2/1/6/13 4/3/2/1/7/13 4/3/2/1/8/13 4/3/2/1/11/13 4/3/2/1/12/13 4/3/2/1/15/13 4/3/2/1/16/13 4/3/2/1/19/13 4/3/2/1/20/13 +4/2/2/0/1/3/28 4/3/2/1/4/14 4/3/2/1/6/14 4/3/2/1/8/14 4/3/2/1/10/14 4/3/2/1/12/14 4/3/2/1/15/14 4/3/2/1/17/14 4/3/2/1/18/14 4/3/2/1/20/14 +4/2/2/0/1/3/29 4/3/2/1/2/14 4/3/2/1/3/14 4/3/2/1/5/14 4/3/2/1/7/14 4/3/2/1/9/14 4/3/2/1/11/14 4/3/2/1/13/14 4/3/2/1/14/14 4/3/2/1/16/14 4/3/2/1/19/14 4/3/2/1/22/14 +4/2/2/0/1/3/30 4/3/2/1/0/15 4/3/2/1/3/15 4/3/2/1/5/15 4/3/2/1/7/15 4/3/2/1/8/15 4/3/2/1/13/15 4/3/2/1/14/15 4/3/2/1/18/15 4/3/2/1/19/15 4/3/2/1/20/15 4/3/2/1/21/14 4/3/2/1/24/15 +4/2/2/0/1/3/31 4/3/2/1/1/15 4/3/2/1/2/15 4/3/2/1/4/15 4/3/2/1/6/15 4/3/2/1/9/15 4/3/2/1/10/15 4/3/2/1/11/15 4/3/2/1/12/15 4/3/2/1/15/15 4/3/2/1/16/15 4/3/2/1/17/15 4/3/2/1/21/15 4/3/2/1/22/15 4/3/2/1/23/15 + +prevSuperCalo FCAL1/HEC01 4/3/-2,2/1/0:24/0:15 4/2/-2,2/0/1/2:3/0:31 calcSide(2,2) +4/3/2/1/0/2 4/2/2/0/1/2/4 +4/3/2/1/1/3 4/2/2/0/1/2/6 +4/3/2/1/0/3 4/2/2/0/1/2/7 +4/3/2/1/0/4 4/2/2/0/1/2/8 +4/3/2/1/1/4 4/2/2/0/1/2/9 +4/3/2/1/0/5 4/2/2/0/1/2/10 +4/3/2/1/1/6 4/2/2/0/1/2/12 +4/3/2/1/0/6 4/2/2/0/1/2/13 +4/3/2/1/0/10 4/2/2/0/1/2/20 +4/3/2/1/1/11 4/2/2/0/1/2/22 +4/3/2/1/0/11 4/2/2/0/1/2/23 +4/3/2/1/0/12 4/2/2/0/1/2/24 +4/3/2/1/1/12 4/2/2/0/1/2/25 +4/3/2/1/0/13 4/2/2/0/1/2/26 +4/3/2/1/1/14 4/2/2/0/1/2/28 +4/3/2/1/0/14 4/2/2/0/1/2/29 +4/3/2/1/1/0 4/2/2/0/1/3/0 +4/3/2/1/2/0 4/2/2/0/1/3/0 +4/3/2/1/3/0 4/2/2/0/1/3/0 +4/3/2/1/5/0 4/2/2/0/1/3/0 +4/3/2/1/6/0 4/2/2/0/1/3/0 +4/3/2/1/9/0 4/2/2/0/1/3/0 +4/3/2/1/10/0 4/2/2/0/1/3/0 +4/3/2/1/11/0 4/2/2/0/1/3/0 +4/3/2/1/14/0 4/2/2/0/1/3/0 +4/3/2/1/15/0 4/2/2/0/1/3/0 +4/3/2/1/16/0 4/2/2/0/1/3/0 +4/3/2/1/20/0 4/2/2/0/1/3/0 +4/3/2/1/21/0 4/2/2/0/1/3/0 +4/3/2/1/22/0 4/2/2/0/1/3/0 +4/3/2/1/0/0 4/2/2/0/1/3/1 +4/3/2/1/4/0 4/2/2/0/1/3/1 +4/3/2/1/7/0 4/2/2/0/1/3/1 +4/3/2/1/8/0 4/2/2/0/1/3/1 +4/3/2/1/12/0 4/2/2/0/1/3/1 +4/3/2/1/13/0 4/2/2/0/1/3/1 +4/3/2/1/17/0 4/2/2/0/1/3/1 +4/3/2/1/18/0 4/2/2/0/1/3/1 +4/3/2/1/19/0 4/2/2/0/1/3/1 +4/3/2/1/21/1 4/2/2/0/1/3/1 +4/3/2/1/23/0 4/2/2/0/1/3/1 +4/3/2/1/1/1 4/2/2/0/1/3/2 +4/3/2/1/2/1 4/2/2/0/1/3/2 +4/3/2/1/3/1 4/2/2/0/1/3/2 +4/3/2/1/5/1 4/2/2/0/1/3/2 +4/3/2/1/7/1 4/2/2/0/1/3/2 +4/3/2/1/9/1 4/2/2/0/1/3/2 +4/3/2/1/11/1 4/2/2/0/1/3/2 +4/3/2/1/13/1 4/2/2/0/1/3/2 +4/3/2/1/14/1 4/2/2/0/1/3/2 +4/3/2/1/16/1 4/2/2/0/1/3/2 +4/3/2/1/19/1 4/2/2/0/1/3/2 +4/3/2/1/22/1 4/2/2/0/1/3/2 +4/3/2/1/0/1 4/2/2/0/1/3/3 +4/3/2/1/4/1 4/2/2/0/1/3/3 +4/3/2/1/6/1 4/2/2/0/1/3/3 +4/3/2/1/8/1 4/2/2/0/1/3/3 +4/3/2/1/10/1 4/2/2/0/1/3/3 +4/3/2/1/12/1 4/2/2/0/1/3/3 +4/3/2/1/15/1 4/2/2/0/1/3/3 +4/3/2/1/17/1 4/2/2/0/1/3/3 +4/3/2/1/18/1 4/2/2/0/1/3/3 +4/3/2/1/20/1 4/2/2/0/1/3/3 +4/3/2/1/3/2 4/2/2/0/1/3/4 +4/3/2/1/6/2 4/2/2/0/1/3/4 +4/3/2/1/8/2 4/2/2/0/1/3/4 +4/3/2/1/9/2 4/2/2/0/1/3/4 +4/3/2/1/12/2 4/2/2/0/1/3/4 +4/3/2/1/13/2 4/2/2/0/1/3/4 +4/3/2/1/16/2 4/2/2/0/1/3/4 +4/3/2/1/17/2 4/2/2/0/1/3/4 +4/3/2/1/20/2 4/2/2/0/1/3/4 +4/3/2/1/21/2 4/2/2/0/1/3/4 +4/3/2/1/1/2 4/2/2/0/1/3/5 +4/3/2/1/2/2 4/2/2/0/1/3/5 +4/3/2/1/4/2 4/2/2/0/1/3/5 +4/3/2/1/5/2 4/2/2/0/1/3/5 +4/3/2/1/7/2 4/2/2/0/1/3/5 +4/3/2/1/10/2 4/2/2/0/1/3/5 +4/3/2/1/11/2 4/2/2/0/1/3/5 +4/3/2/1/14/2 4/2/2/0/1/3/5 +4/3/2/1/15/2 4/2/2/0/1/3/5 +4/3/2/1/18/2 4/2/2/0/1/3/5 +4/3/2/1/19/2 4/2/2/0/1/3/5 +4/3/2/1/22/2 4/2/2/0/1/3/5 +4/3/2/1/2/3 4/2/2/0/1/3/6 +4/3/2/1/3/3 4/2/2/0/1/3/6 +4/3/2/1/4/3 4/2/2/0/1/3/6 +4/3/2/1/8/3 4/2/2/0/1/3/6 +4/3/2/1/10/3 4/2/2/0/1/3/6 +4/3/2/1/11/3 4/2/2/0/1/3/6 +4/3/2/1/15/3 4/2/2/0/1/3/6 +4/3/2/1/16/3 4/2/2/0/1/3/6 +4/3/2/1/17/3 4/2/2/0/1/3/6 +4/3/2/1/20/3 4/2/2/0/1/3/6 +4/3/2/1/21/3 4/2/2/0/1/3/6 +4/3/2/1/5/3 4/2/2/0/1/3/7 +4/3/2/1/6/3 4/2/2/0/1/3/7 +4/3/2/1/7/3 4/2/2/0/1/3/7 +4/3/2/1/9/3 4/2/2/0/1/3/7 +4/3/2/1/12/3 4/2/2/0/1/3/7 +4/3/2/1/13/3 4/2/2/0/1/3/7 +4/3/2/1/14/3 4/2/2/0/1/3/7 +4/3/2/1/18/3 4/2/2/0/1/3/7 +4/3/2/1/19/3 4/2/2/0/1/3/7 +4/3/2/1/6/4 4/2/2/0/1/3/8 +4/3/2/1/7/4 4/2/2/0/1/3/8 +4/3/2/1/8/4 4/2/2/0/1/3/8 +4/3/2/1/9/4 4/2/2/0/1/3/8 +4/3/2/1/12/4 4/2/2/0/1/3/8 +4/3/2/1/13/4 4/2/2/0/1/3/8 +4/3/2/1/14/4 4/2/2/0/1/3/8 +4/3/2/1/18/4 4/2/2/0/1/3/8 +4/3/2/1/19/4 4/2/2/0/1/3/8 +4/3/2/1/2/4 4/2/2/0/1/3/9 +4/3/2/1/3/4 4/2/2/0/1/3/9 +4/3/2/1/4/4 4/2/2/0/1/3/9 +4/3/2/1/5/4 4/2/2/0/1/3/9 +4/3/2/1/10/4 4/2/2/0/1/3/9 +4/3/2/1/11/4 4/2/2/0/1/3/9 +4/3/2/1/15/4 4/2/2/0/1/3/9 +4/3/2/1/16/4 4/2/2/0/1/3/9 +4/3/2/1/17/4 4/2/2/0/1/3/9 +4/3/2/1/20/4 4/2/2/0/1/3/9 +4/3/2/1/21/4 4/2/2/0/1/3/9 +4/3/2/1/2/5 4/2/2/0/1/3/10 +4/3/2/1/4/5 4/2/2/0/1/3/10 +4/3/2/1/5/5 4/2/2/0/1/3/10 +4/3/2/1/9/5 4/2/2/0/1/3/10 +4/3/2/1/10/5 4/2/2/0/1/3/10 +4/3/2/1/13/5 4/2/2/0/1/3/10 +4/3/2/1/14/5 4/2/2/0/1/3/10 +4/3/2/1/17/5 4/2/2/0/1/3/10 +4/3/2/1/18/5 4/2/2/0/1/3/10 +4/3/2/1/21/5 4/2/2/0/1/3/10 +4/3/2/1/1/5 4/2/2/0/1/3/11 +4/3/2/1/3/5 4/2/2/0/1/3/11 +4/3/2/1/6/5 4/2/2/0/1/3/11 +4/3/2/1/7/5 4/2/2/0/1/3/11 +4/3/2/1/8/5 4/2/2/0/1/3/11 +4/3/2/1/11/5 4/2/2/0/1/3/11 +4/3/2/1/12/5 4/2/2/0/1/3/11 +4/3/2/1/15/5 4/2/2/0/1/3/11 +4/3/2/1/16/5 4/2/2/0/1/3/11 +4/3/2/1/19/5 4/2/2/0/1/3/11 +4/3/2/1/20/5 4/2/2/0/1/3/11 +4/3/2/1/4/6 4/2/2/0/1/3/12 +4/3/2/1/6/6 4/2/2/0/1/3/12 +4/3/2/1/8/6 4/2/2/0/1/3/12 +4/3/2/1/10/6 4/2/2/0/1/3/12 +4/3/2/1/12/6 4/2/2/0/1/3/12 +4/3/2/1/15/6 4/2/2/0/1/3/12 +4/3/2/1/17/6 4/2/2/0/1/3/12 +4/3/2/1/18/6 4/2/2/0/1/3/12 +4/3/2/1/20/6 4/2/2/0/1/3/12 +4/3/2/1/2/6 4/2/2/0/1/3/13 +4/3/2/1/3/6 4/2/2/0/1/3/13 +4/3/2/1/5/6 4/2/2/0/1/3/13 +4/3/2/1/7/6 4/2/2/0/1/3/13 +4/3/2/1/9/6 4/2/2/0/1/3/13 +4/3/2/1/11/6 4/2/2/0/1/3/13 +4/3/2/1/13/6 4/2/2/0/1/3/13 +4/3/2/1/14/6 4/2/2/0/1/3/13 +4/3/2/1/16/6 4/2/2/0/1/3/13 +4/3/2/1/19/6 4/2/2/0/1/3/13 +4/3/2/1/22/6 4/2/2/0/1/3/13 +4/3/2/1/0/7 4/2/2/0/1/3/14 +4/3/2/1/3/7 4/2/2/0/1/3/14 +4/3/2/1/5/7 4/2/2/0/1/3/14 +4/3/2/1/7/7 4/2/2/0/1/3/14 +4/3/2/1/8/7 4/2/2/0/1/3/14 +4/3/2/1/13/7 4/2/2/0/1/3/14 +4/3/2/1/14/7 4/2/2/0/1/3/14 +4/3/2/1/18/7 4/2/2/0/1/3/14 +4/3/2/1/19/7 4/2/2/0/1/3/14 +4/3/2/1/20/7 4/2/2/0/1/3/14 +4/3/2/1/21/6 4/2/2/0/1/3/14 +4/3/2/1/24/7 4/2/2/0/1/3/14 +4/3/2/1/1/7 4/2/2/0/1/3/15 +4/3/2/1/2/7 4/2/2/0/1/3/15 +4/3/2/1/4/7 4/2/2/0/1/3/15 +4/3/2/1/6/7 4/2/2/0/1/3/15 +4/3/2/1/9/7 4/2/2/0/1/3/15 +4/3/2/1/10/7 4/2/2/0/1/3/15 +4/3/2/1/11/7 4/2/2/0/1/3/15 +4/3/2/1/12/7 4/2/2/0/1/3/15 +4/3/2/1/15/7 4/2/2/0/1/3/15 +4/3/2/1/16/7 4/2/2/0/1/3/15 +4/3/2/1/17/7 4/2/2/0/1/3/15 +4/3/2/1/21/7 4/2/2/0/1/3/15 +4/3/2/1/22/7 4/2/2/0/1/3/15 +4/3/2/1/23/7 4/2/2/0/1/3/15 +4/3/2/1/1/8 4/2/2/0/1/3/16 +4/3/2/1/2/8 4/2/2/0/1/3/16 +4/3/2/1/3/8 4/2/2/0/1/3/16 +4/3/2/1/5/8 4/2/2/0/1/3/16 +4/3/2/1/6/8 4/2/2/0/1/3/16 +4/3/2/1/9/8 4/2/2/0/1/3/16 +4/3/2/1/10/8 4/2/2/0/1/3/16 +4/3/2/1/11/8 4/2/2/0/1/3/16 +4/3/2/1/14/8 4/2/2/0/1/3/16 +4/3/2/1/15/8 4/2/2/0/1/3/16 +4/3/2/1/16/8 4/2/2/0/1/3/16 +4/3/2/1/20/8 4/2/2/0/1/3/16 +4/3/2/1/21/8 4/2/2/0/1/3/16 +4/3/2/1/22/8 4/2/2/0/1/3/16 +4/3/2/1/0/8 4/2/2/0/1/3/17 +4/3/2/1/4/8 4/2/2/0/1/3/17 +4/3/2/1/7/8 4/2/2/0/1/3/17 +4/3/2/1/8/8 4/2/2/0/1/3/17 +4/3/2/1/12/8 4/2/2/0/1/3/17 +4/3/2/1/13/8 4/2/2/0/1/3/17 +4/3/2/1/17/8 4/2/2/0/1/3/17 +4/3/2/1/18/8 4/2/2/0/1/3/17 +4/3/2/1/19/8 4/2/2/0/1/3/17 +4/3/2/1/21/9 4/2/2/0/1/3/17 +4/3/2/1/23/8 4/2/2/0/1/3/17 +4/3/2/1/1/9 4/2/2/0/1/3/18 +4/3/2/1/2/9 4/2/2/0/1/3/18 +4/3/2/1/3/9 4/2/2/0/1/3/18 +4/3/2/1/5/9 4/2/2/0/1/3/18 +4/3/2/1/7/9 4/2/2/0/1/3/18 +4/3/2/1/9/9 4/2/2/0/1/3/18 +4/3/2/1/11/9 4/2/2/0/1/3/18 +4/3/2/1/13/9 4/2/2/0/1/3/18 +4/3/2/1/14/9 4/2/2/0/1/3/18 +4/3/2/1/16/9 4/2/2/0/1/3/18 +4/3/2/1/19/9 4/2/2/0/1/3/18 +4/3/2/1/22/9 4/2/2/0/1/3/18 +4/3/2/1/0/9 4/2/2/0/1/3/19 +4/3/2/1/4/9 4/2/2/0/1/3/19 +4/3/2/1/6/9 4/2/2/0/1/3/19 +4/3/2/1/8/9 4/2/2/0/1/3/19 +4/3/2/1/10/9 4/2/2/0/1/3/19 +4/3/2/1/12/9 4/2/2/0/1/3/19 +4/3/2/1/15/9 4/2/2/0/1/3/19 +4/3/2/1/17/9 4/2/2/0/1/3/19 +4/3/2/1/18/9 4/2/2/0/1/3/19 +4/3/2/1/20/9 4/2/2/0/1/3/19 +4/3/2/1/3/10 4/2/2/0/1/3/20 +4/3/2/1/6/10 4/2/2/0/1/3/20 +4/3/2/1/8/10 4/2/2/0/1/3/20 +4/3/2/1/9/10 4/2/2/0/1/3/20 +4/3/2/1/12/10 4/2/2/0/1/3/20 +4/3/2/1/13/10 4/2/2/0/1/3/20 +4/3/2/1/16/10 4/2/2/0/1/3/20 +4/3/2/1/17/10 4/2/2/0/1/3/20 +4/3/2/1/20/10 4/2/2/0/1/3/20 +4/3/2/1/21/10 4/2/2/0/1/3/20 +4/3/2/1/1/10 4/2/2/0/1/3/21 +4/3/2/1/2/10 4/2/2/0/1/3/21 +4/3/2/1/4/10 4/2/2/0/1/3/21 +4/3/2/1/5/10 4/2/2/0/1/3/21 +4/3/2/1/7/10 4/2/2/0/1/3/21 +4/3/2/1/10/10 4/2/2/0/1/3/21 +4/3/2/1/11/10 4/2/2/0/1/3/21 +4/3/2/1/14/10 4/2/2/0/1/3/21 +4/3/2/1/15/10 4/2/2/0/1/3/21 +4/3/2/1/18/10 4/2/2/0/1/3/21 +4/3/2/1/19/10 4/2/2/0/1/3/21 +4/3/2/1/22/10 4/2/2/0/1/3/21 +4/3/2/1/2/11 4/2/2/0/1/3/22 +4/3/2/1/3/11 4/2/2/0/1/3/22 +4/3/2/1/4/11 4/2/2/0/1/3/22 +4/3/2/1/8/11 4/2/2/0/1/3/22 +4/3/2/1/10/11 4/2/2/0/1/3/22 +4/3/2/1/11/11 4/2/2/0/1/3/22 +4/3/2/1/15/11 4/2/2/0/1/3/22 +4/3/2/1/16/11 4/2/2/0/1/3/22 +4/3/2/1/17/11 4/2/2/0/1/3/22 +4/3/2/1/20/11 4/2/2/0/1/3/22 +4/3/2/1/21/11 4/2/2/0/1/3/22 +4/3/2/1/5/11 4/2/2/0/1/3/23 +4/3/2/1/6/11 4/2/2/0/1/3/23 +4/3/2/1/7/11 4/2/2/0/1/3/23 +4/3/2/1/9/11 4/2/2/0/1/3/23 +4/3/2/1/12/11 4/2/2/0/1/3/23 +4/3/2/1/13/11 4/2/2/0/1/3/23 +4/3/2/1/14/11 4/2/2/0/1/3/23 +4/3/2/1/18/11 4/2/2/0/1/3/23 +4/3/2/1/19/11 4/2/2/0/1/3/23 +4/3/2/1/6/12 4/2/2/0/1/3/24 +4/3/2/1/7/12 4/2/2/0/1/3/24 +4/3/2/1/8/12 4/2/2/0/1/3/24 +4/3/2/1/9/12 4/2/2/0/1/3/24 +4/3/2/1/12/12 4/2/2/0/1/3/24 +4/3/2/1/13/12 4/2/2/0/1/3/24 +4/3/2/1/14/12 4/2/2/0/1/3/24 +4/3/2/1/18/12 4/2/2/0/1/3/24 +4/3/2/1/19/12 4/2/2/0/1/3/24 +4/3/2/1/2/12 4/2/2/0/1/3/25 +4/3/2/1/3/12 4/2/2/0/1/3/25 +4/3/2/1/4/12 4/2/2/0/1/3/25 +4/3/2/1/5/12 4/2/2/0/1/3/25 +4/3/2/1/10/12 4/2/2/0/1/3/25 +4/3/2/1/11/12 4/2/2/0/1/3/25 +4/3/2/1/15/12 4/2/2/0/1/3/25 +4/3/2/1/16/12 4/2/2/0/1/3/25 +4/3/2/1/17/12 4/2/2/0/1/3/25 +4/3/2/1/20/12 4/2/2/0/1/3/25 +4/3/2/1/21/12 4/2/2/0/1/3/25 +4/3/2/1/2/13 4/2/2/0/1/3/26 +4/3/2/1/4/13 4/2/2/0/1/3/26 +4/3/2/1/5/13 4/2/2/0/1/3/26 +4/3/2/1/9/13 4/2/2/0/1/3/26 +4/3/2/1/10/13 4/2/2/0/1/3/26 +4/3/2/1/13/13 4/2/2/0/1/3/26 +4/3/2/1/14/13 4/2/2/0/1/3/26 +4/3/2/1/17/13 4/2/2/0/1/3/26 +4/3/2/1/18/13 4/2/2/0/1/3/26 +4/3/2/1/21/13 4/2/2/0/1/3/26 +4/3/2/1/1/13 4/2/2/0/1/3/27 +4/3/2/1/3/13 4/2/2/0/1/3/27 +4/3/2/1/6/13 4/2/2/0/1/3/27 +4/3/2/1/7/13 4/2/2/0/1/3/27 +4/3/2/1/8/13 4/2/2/0/1/3/27 +4/3/2/1/11/13 4/2/2/0/1/3/27 +4/3/2/1/12/13 4/2/2/0/1/3/27 +4/3/2/1/15/13 4/2/2/0/1/3/27 +4/3/2/1/16/13 4/2/2/0/1/3/27 +4/3/2/1/19/13 4/2/2/0/1/3/27 +4/3/2/1/20/13 4/2/2/0/1/3/27 +4/3/2/1/4/14 4/2/2/0/1/3/28 +4/3/2/1/6/14 4/2/2/0/1/3/28 +4/3/2/1/8/14 4/2/2/0/1/3/28 +4/3/2/1/10/14 4/2/2/0/1/3/28 +4/3/2/1/12/14 4/2/2/0/1/3/28 +4/3/2/1/15/14 4/2/2/0/1/3/28 +4/3/2/1/17/14 4/2/2/0/1/3/28 +4/3/2/1/18/14 4/2/2/0/1/3/28 +4/3/2/1/20/14 4/2/2/0/1/3/28 +4/3/2/1/2/14 4/2/2/0/1/3/29 +4/3/2/1/3/14 4/2/2/0/1/3/29 +4/3/2/1/5/14 4/2/2/0/1/3/29 +4/3/2/1/7/14 4/2/2/0/1/3/29 +4/3/2/1/9/14 4/2/2/0/1/3/29 +4/3/2/1/11/14 4/2/2/0/1/3/29 +4/3/2/1/13/14 4/2/2/0/1/3/29 +4/3/2/1/14/14 4/2/2/0/1/3/29 +4/3/2/1/16/14 4/2/2/0/1/3/29 +4/3/2/1/19/14 4/2/2/0/1/3/29 +4/3/2/1/22/14 4/2/2/0/1/3/29 +4/3/2/1/0/15 4/2/2/0/1/3/30 +4/3/2/1/3/15 4/2/2/0/1/3/30 +4/3/2/1/5/15 4/2/2/0/1/3/30 +4/3/2/1/7/15 4/2/2/0/1/3/30 +4/3/2/1/8/15 4/2/2/0/1/3/30 +4/3/2/1/13/15 4/2/2/0/1/3/30 +4/3/2/1/14/15 4/2/2/0/1/3/30 +4/3/2/1/18/15 4/2/2/0/1/3/30 +4/3/2/1/19/15 4/2/2/0/1/3/30 +4/3/2/1/20/15 4/2/2/0/1/3/30 +4/3/2/1/21/14 4/2/2/0/1/3/30 +4/3/2/1/24/15 4/2/2/0/1/3/30 +4/3/2/1/1/15 4/2/2/0/1/3/31 +4/3/2/1/2/15 4/2/2/0/1/3/31 +4/3/2/1/4/15 4/2/2/0/1/3/31 +4/3/2/1/6/15 4/2/2/0/1/3/31 +4/3/2/1/9/15 4/2/2/0/1/3/31 +4/3/2/1/10/15 4/2/2/0/1/3/31 +4/3/2/1/11/15 4/2/2/0/1/3/31 +4/3/2/1/12/15 4/2/2/0/1/3/31 +4/3/2/1/15/15 4/2/2/0/1/3/31 +4/3/2/1/16/15 4/2/2/0/1/3/31 +4/3/2/1/17/15 4/2/2/0/1/3/31 +4/3/2/1/21/15 4/2/2/0/1/3/31 +4/3/2/1/22/15 4/2/2/0/1/3/31 +4/3/2/1/23/15 4/2/2/0/1/3/31 + +nextSuperCalo HEC10/TILEE 4/2/-2,2/1/0/0/0:63 5/2/-1,1/0:63/15/0 calcSide(2,2) calcPhi(6,3) +4/2/2/1/0/0/0 5/2/1/0/15/0 + +prevSuperCalo HEC10/TILEE 5/2/-1,1/0:63/15/0 4/2/-2,2/1/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15/0 4/2/2/1/0/0/0 + +nextSuperCalo FCAL1/HEC21 4/3/-2,2/1/0,1/2:14 4/2/-2,2/2/1/2/0:31 calcSide(2,2) +4/3/2/1/0/2 4/2/2/2/1/2/4 +4/3/2/1/1/3 4/2/2/2/1/2/6 +4/3/2/1/0/3 4/2/2/2/1/2/7 +4/3/2/1/0/4 4/2/2/2/1/2/8 +4/3/2/1/1/4 4/2/2/2/1/2/9 +4/3/2/1/0/5 4/2/2/2/1/2/10 +4/3/2/1/1/6 4/2/2/2/1/2/12 +4/3/2/1/0/6 4/2/2/2/1/2/13 +4/3/2/1/0/10 4/2/2/2/1/2/20 +4/3/2/1/1/11 4/2/2/2/1/2/22 +4/3/2/1/0/11 4/2/2/2/1/2/23 +4/3/2/1/0/12 4/2/2/2/1/2/24 +4/3/2/1/1/12 4/2/2/2/1/2/25 +4/3/2/1/0/13 4/2/2/2/1/2/26 +4/3/2/1/1/14 4/2/2/2/1/2/28 +4/3/2/1/0/14 4/2/2/2/1/2/29 + +prevSuperCalo HEC21/FCAL1 4/2/-2,2/2/1/2/0:31 4/3/-2,2/1/0,1/2:14 calcSide(2,2) +4/2/2/2/1/2/4 4/3/2/1/0/2 +4/2/2/2/1/2/6 4/3/2/1/1/3 +4/2/2/2/1/2/7 4/3/2/1/0/3 +4/2/2/2/1/2/8 4/3/2/1/0/4 +4/2/2/2/1/2/9 4/3/2/1/1/4 +4/2/2/2/1/2/10 4/3/2/1/0/5 +4/2/2/2/1/2/12 4/3/2/1/1/6 +4/2/2/2/1/2/13 4/3/2/1/0/6 +4/2/2/2/1/2/20 4/3/2/1/0/10 +4/2/2/2/1/2/22 4/3/2/1/1/11 +4/2/2/2/1/2/23 4/3/2/1/0/11 +4/2/2/2/1/2/24 4/3/2/1/0/12 +4/2/2/2/1/2/25 4/3/2/1/1/12 +4/2/2/2/1/2/26 4/3/2/1/0/13 +4/2/2/2/1/2/28 4/3/2/1/1/14 +4/2/2/2/1/2/29 4/3/2/1/0/14 + +nextSuperCalo FCAL2/HEC31 4/3/-2,2/2/0:9/0:15 4/2/-2,2/3/1/3/0:31 calcSide(2,2) +4/3/2/2/0/0 4/2/2/3/1/3/0 +4/3/2/2/1/0 4/2/2/3/1/3/0 +4/3/2/2/2/0 4/2/2/3/1/3/0 +4/3/2/2/5/0 4/2/2/3/1/3/0 +4/3/2/2/6/0 4/2/2/3/1/3/0 +4/3/2/2/3/0 4/2/2/3/1/3/1 +4/3/2/2/4/0 4/2/2/3/1/3/1 +4/3/2/2/7/0 4/2/2/3/1/3/1 +4/3/2/2/2/1 4/2/2/3/1/3/2 +4/3/2/2/4/1 4/2/2/3/1/3/2 +4/3/2/2/0/1 4/2/2/3/1/3/3 +4/3/2/2/1/1 4/2/2/3/1/3/3 +4/3/2/2/3/1 4/2/2/3/1/3/3 +4/3/2/2/5/1 4/2/2/3/1/3/3 +4/3/2/2/6/1 4/2/2/3/1/3/3 +4/3/2/2/0/2 4/2/2/3/1/3/4 +4/3/2/2/3/2 4/2/2/3/1/3/4 +4/3/2/2/5/2 4/2/2/3/1/3/4 +4/3/2/2/6/2 4/2/2/3/1/3/4 +4/3/2/2/9/2 4/2/2/3/1/3/4 +4/3/2/2/1/2 4/2/2/3/1/3/5 +4/3/2/2/2/2 4/2/2/3/1/3/5 +4/3/2/2/4/2 4/2/2/3/1/3/5 +4/3/2/2/7/2 4/2/2/3/1/3/5 +4/3/2/2/8/2 4/2/2/3/1/3/5 +4/3/2/2/1/3 4/2/2/3/1/3/6 +4/3/2/2/2/3 4/2/2/3/1/3/6 +4/3/2/2/3/3 4/2/2/3/1/3/6 +4/3/2/2/0/3 4/2/2/3/1/3/7 +4/3/2/2/4/3 4/2/2/3/1/3/7 +4/3/2/2/5/3 4/2/2/3/1/3/7 +4/3/2/2/0/4 4/2/2/3/1/3/8 +4/3/2/2/4/4 4/2/2/3/1/3/8 +4/3/2/2/5/4 4/2/2/3/1/3/8 +4/3/2/2/1/4 4/2/2/3/1/3/9 +4/3/2/2/2/4 4/2/2/3/1/3/9 +4/3/2/2/3/4 4/2/2/3/1/3/9 +4/3/2/2/0/5 4/2/2/3/1/3/10 +4/3/2/2/2/5 4/2/2/3/1/3/10 +4/3/2/2/4/5 4/2/2/3/1/3/10 +4/3/2/2/7/5 4/2/2/3/1/3/10 +4/3/2/2/8/5 4/2/2/3/1/3/10 +4/3/2/2/1/5 4/2/2/3/1/3/11 +4/3/2/2/3/5 4/2/2/3/1/3/11 +4/3/2/2/5/5 4/2/2/3/1/3/11 +4/3/2/2/6/5 4/2/2/3/1/3/11 +4/3/2/2/9/5 4/2/2/3/1/3/11 +4/3/2/2/0/6 4/2/2/3/1/3/12 +4/3/2/2/1/6 4/2/2/3/1/3/12 +4/3/2/2/3/6 4/2/2/3/1/3/12 +4/3/2/2/5/6 4/2/2/3/1/3/12 +4/3/2/2/6/6 4/2/2/3/1/3/12 +4/3/2/2/2/6 4/2/2/3/1/3/13 +4/3/2/2/4/6 4/2/2/3/1/3/13 +4/3/2/2/3/7 4/2/2/3/1/3/14 +4/3/2/2/4/7 4/2/2/3/1/3/14 +4/3/2/2/7/7 4/2/2/3/1/3/14 +4/3/2/2/0/7 4/2/2/3/1/3/15 +4/3/2/2/1/7 4/2/2/3/1/3/15 +4/3/2/2/2/7 4/2/2/3/1/3/15 +4/3/2/2/5/7 4/2/2/3/1/3/15 +4/3/2/2/6/7 4/2/2/3/1/3/15 +4/3/2/2/0/8 4/2/2/3/1/3/16 +4/3/2/2/1/8 4/2/2/3/1/3/16 +4/3/2/2/2/8 4/2/2/3/1/3/16 +4/3/2/2/5/8 4/2/2/3/1/3/16 +4/3/2/2/6/8 4/2/2/3/1/3/16 +4/3/2/2/3/8 4/2/2/3/1/3/17 +4/3/2/2/4/8 4/2/2/3/1/3/17 +4/3/2/2/7/8 4/2/2/3/1/3/17 +4/3/2/2/2/9 4/2/2/3/1/3/18 +4/3/2/2/4/9 4/2/2/3/1/3/18 +4/3/2/2/0/9 4/2/2/3/1/3/19 +4/3/2/2/1/9 4/2/2/3/1/3/19 +4/3/2/2/3/9 4/2/2/3/1/3/19 +4/3/2/2/5/9 4/2/2/3/1/3/19 +4/3/2/2/6/9 4/2/2/3/1/3/19 +4/3/2/2/0/10 4/2/2/3/1/3/20 +4/3/2/2/3/10 4/2/2/3/1/3/20 +4/3/2/2/5/10 4/2/2/3/1/3/20 +4/3/2/2/6/10 4/2/2/3/1/3/20 +4/3/2/2/9/10 4/2/2/3/1/3/20 +4/3/2/2/1/10 4/2/2/3/1/3/21 +4/3/2/2/2/10 4/2/2/3/1/3/21 +4/3/2/2/4/10 4/2/2/3/1/3/21 +4/3/2/2/7/10 4/2/2/3/1/3/21 +4/3/2/2/8/10 4/2/2/3/1/3/21 +4/3/2/2/1/11 4/2/2/3/1/3/22 +4/3/2/2/2/11 4/2/2/3/1/3/22 +4/3/2/2/3/11 4/2/2/3/1/3/22 +4/3/2/2/0/11 4/2/2/3/1/3/23 +4/3/2/2/4/11 4/2/2/3/1/3/23 +4/3/2/2/5/11 4/2/2/3/1/3/23 +4/3/2/2/0/12 4/2/2/3/1/3/24 +4/3/2/2/4/12 4/2/2/3/1/3/24 +4/3/2/2/5/12 4/2/2/3/1/3/24 +4/3/2/2/1/12 4/2/2/3/1/3/25 +4/3/2/2/2/12 4/2/2/3/1/3/25 +4/3/2/2/3/12 4/2/2/3/1/3/25 +4/3/2/2/0/13 4/2/2/3/1/3/26 +4/3/2/2/2/13 4/2/2/3/1/3/26 +4/3/2/2/4/13 4/2/2/3/1/3/26 +4/3/2/2/7/13 4/2/2/3/1/3/26 +4/3/2/2/8/13 4/2/2/3/1/3/26 +4/3/2/2/1/13 4/2/2/3/1/3/27 +4/3/2/2/3/13 4/2/2/3/1/3/27 +4/3/2/2/5/13 4/2/2/3/1/3/27 +4/3/2/2/6/13 4/2/2/3/1/3/27 +4/3/2/2/9/13 4/2/2/3/1/3/27 +4/3/2/2/0/14 4/2/2/3/1/3/28 +4/3/2/2/1/14 4/2/2/3/1/3/28 +4/3/2/2/3/14 4/2/2/3/1/3/28 +4/3/2/2/5/14 4/2/2/3/1/3/28 +4/3/2/2/6/14 4/2/2/3/1/3/28 +4/3/2/2/2/14 4/2/2/3/1/3/29 +4/3/2/2/4/14 4/2/2/3/1/3/29 +4/3/2/2/3/15 4/2/2/3/1/3/30 +4/3/2/2/4/15 4/2/2/3/1/3/30 +4/3/2/2/7/15 4/2/2/3/1/3/30 +4/3/2/2/0/15 4/2/2/3/1/3/31 +4/3/2/2/1/15 4/2/2/3/1/3/31 +4/3/2/2/2/15 4/2/2/3/1/3/31 +4/3/2/2/5/15 4/2/2/3/1/3/31 +4/3/2/2/6/15 4/2/2/3/1/3/31 + +prevSuperCalo HEC31/FCAL2 4/2/-2,2/3/1/3/0:31 4/3/-2,2/2/0:9/0:15 calcSide(2,2) +4/2/2/3/1/3/0 4/3/2/2/0/0 4/3/2/2/1/0 4/3/2/2/2/0 4/3/2/2/5/0 4/3/2/2/6/0 +4/2/2/3/1/3/1 4/3/2/2/3/0 4/3/2/2/4/0 4/3/2/2/7/0 +4/2/2/3/1/3/2 4/3/2/2/2/1 4/3/2/2/4/1 +4/2/2/3/1/3/3 4/3/2/2/0/1 4/3/2/2/1/1 4/3/2/2/3/1 4/3/2/2/5/1 4/3/2/2/6/1 +4/2/2/3/1/3/4 4/3/2/2/0/2 4/3/2/2/3/2 4/3/2/2/5/2 4/3/2/2/6/2 4/3/2/2/9/2 +4/2/2/3/1/3/5 4/3/2/2/1/2 4/3/2/2/2/2 4/3/2/2/4/2 4/3/2/2/7/2 4/3/2/2/8/2 +4/2/2/3/1/3/6 4/3/2/2/1/3 4/3/2/2/2/3 4/3/2/2/3/3 +4/2/2/3/1/3/7 4/3/2/2/0/3 4/3/2/2/4/3 4/3/2/2/5/3 +4/2/2/3/1/3/8 4/3/2/2/0/4 4/3/2/2/4/4 4/3/2/2/5/4 +4/2/2/3/1/3/9 4/3/2/2/1/4 4/3/2/2/2/4 4/3/2/2/3/4 +4/2/2/3/1/3/10 4/3/2/2/0/5 4/3/2/2/2/5 4/3/2/2/4/5 4/3/2/2/7/5 4/3/2/2/8/5 +4/2/2/3/1/3/11 4/3/2/2/1/5 4/3/2/2/3/5 4/3/2/2/5/5 4/3/2/2/6/5 4/3/2/2/9/5 +4/2/2/3/1/3/12 4/3/2/2/0/6 4/3/2/2/1/6 4/3/2/2/3/6 4/3/2/2/5/6 4/3/2/2/6/6 +4/2/2/3/1/3/13 4/3/2/2/2/6 4/3/2/2/4/6 +4/2/2/3/1/3/14 4/3/2/2/3/7 4/3/2/2/4/7 4/3/2/2/7/7 +4/2/2/3/1/3/15 4/3/2/2/0/7 4/3/2/2/1/7 4/3/2/2/2/7 4/3/2/2/5/7 4/3/2/2/6/7 +4/2/2/3/1/3/16 4/3/2/2/0/8 4/3/2/2/1/8 4/3/2/2/2/8 4/3/2/2/5/8 4/3/2/2/6/8 +4/2/2/3/1/3/17 4/3/2/2/3/8 4/3/2/2/4/8 4/3/2/2/7/8 +4/2/2/3/1/3/18 4/3/2/2/2/9 4/3/2/2/4/9 +4/2/2/3/1/3/19 4/3/2/2/0/9 4/3/2/2/1/9 4/3/2/2/3/9 4/3/2/2/5/9 4/3/2/2/6/9 +4/2/2/3/1/3/20 4/3/2/2/0/10 4/3/2/2/3/10 4/3/2/2/5/10 4/3/2/2/6/10 4/3/2/2/9/10 +4/2/2/3/1/3/21 4/3/2/2/1/10 4/3/2/2/2/10 4/3/2/2/4/10 4/3/2/2/7/10 4/3/2/2/8/10 +4/2/2/3/1/3/22 4/3/2/2/1/11 4/3/2/2/2/11 4/3/2/2/3/11 +4/2/2/3/1/3/23 4/3/2/2/0/11 4/3/2/2/4/11 4/3/2/2/5/11 +4/2/2/3/1/3/24 4/3/2/2/0/12 4/3/2/2/4/12 4/3/2/2/5/12 +4/2/2/3/1/3/25 4/3/2/2/1/12 4/3/2/2/2/12 4/3/2/2/3/12 +4/2/2/3/1/3/26 4/3/2/2/0/13 4/3/2/2/2/13 4/3/2/2/4/13 4/3/2/2/7/13 4/3/2/2/8/13 +4/2/2/3/1/3/27 4/3/2/2/1/13 4/3/2/2/3/13 4/3/2/2/5/13 4/3/2/2/6/13 4/3/2/2/9/13 +4/2/2/3/1/3/28 4/3/2/2/0/14 4/3/2/2/1/14 4/3/2/2/3/14 4/3/2/2/5/14 4/3/2/2/6/14 +4/2/2/3/1/3/29 4/3/2/2/2/14 4/3/2/2/4/14 +4/2/2/3/1/3/30 4/3/2/2/3/15 4/3/2/2/4/15 4/3/2/2/7/15 +4/2/2/3/1/3/31 4/3/2/2/0/15 4/3/2/2/1/15 4/3/2/2/2/15 4/3/2/2/5/15 4/3/2/2/6/15 diff --git a/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours.dat b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours.dat new file mode 100755 index 0000000000000000000000000000000000000000..da3b47dff56d4293f23a16239878eb8874d265da --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours.dat @@ -0,0 +1,781 @@ +# File and Version Information: +# $Id: SuperCaloNeighbours.dat,v 1.1 2004-05-04 17:29:11 menke Exp $ +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Tue May 04 18:52:50 2004 +# +# ranges of expanded calorimeter identifiers are mapped to create lookup +# tables for the super calo neighbours. The mapping in eta has to be given +# explicitely, while side symmetry and the mapping in phi can be automated. +# The automation in phi works only on contigous ranges. +# +# Syntax: +# for each mapped region: Header and Entry lines until an empty line +# denotes the end of the block. The Header consists of: +# <Type> <Name> <SourceRange> <TargetRange> [<SideDirective>] [<PhiDirective>] +# <Type>: nextSuperCalo or prevSuperCalo denotes the direction of the map +# <Name>: any string without blanks, white-space etc. +# <Source/TargetRange>: A cell-level ExpandedIdentifier Range +# <SideDirective>: calcSide(i1,i2) maps sign of the field i1 in SourceRange to +# the sign of field i2 in TargetRange. +# <PhiDirective>: calcPhi(i1,i2) maps the field i1 in SourceRange to +# the field i2 in TargetRange by scaling. +# +nextSuperCalo EMB3/TILEB 4/1/-1,1/3/0/0:19/0:255 5/1/-1,1/0:63/0:9/0 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/0/0 5/1/1/0/0/0 +4/1/1/3/0/1/0 5/1/1/0/0/0 +4/1/1/3/0/2/0 5/1/1/0/1/0 +4/1/1/3/0/3/0 5/1/1/0/1/0 +4/1/1/3/0/4/0 5/1/1/0/2/0 +4/1/1/3/0/5/0 5/1/1/0/2/0 +4/1/1/3/0/6/0 5/1/1/0/3/0 +4/1/1/3/0/7/0 5/1/1/0/3/0 +4/1/1/3/0/8/0 5/1/1/0/4/0 +4/1/1/3/0/9/0 5/1/1/0/4/0 +4/1/1/3/0/10/0 5/1/1/0/5/0 +4/1/1/3/0/11/0 5/1/1/0/5/0 +4/1/1/3/0/12/0 5/1/1/0/6/0 +4/1/1/3/0/13/0 5/1/1/0/6/0 +4/1/1/3/0/14/0 5/1/1/0/7/0 +4/1/1/3/0/15/0 5/1/1/0/7/0 +4/1/1/3/0/16/0 5/1/1/0/8/0 +4/1/1/3/0/17/0 5/1/1/0/8/0 +4/1/1/3/0/18/0 5/1/1/0/9/0 +4/1/1/3/0/19/0 5/1/1/0/9/0 + +prevSuperCalo TILEB/EMB3 5/1/-1,1/0:63/0:9/0 4/1/-1,1/3/0/0:19/0:255 calcSide(2,2) calcPhi(3,6) +5/1/1/0/0/0 4/1/1/3/0/0/0 4/1/1/3/0/0/1 4/1/1/3/0/0/2 4/1/1/3/0/0/3 4/1/1/3/0/1/0 4/1/1/3/0/1/1 4/1/1/3/0/1/2 4/1/1/3/0/1/3 +5/1/1/0/1/0 4/1/1/3/0/2/0 4/1/1/3/0/2/1 4/1/1/3/0/2/2 4/1/1/3/0/2/3 4/1/1/3/0/3/0 4/1/1/3/0/3/1 4/1/1/3/0/3/2 4/1/1/3/0/3/3 +5/1/1/0/2/0 4/1/1/3/0/4/0 4/1/1/3/0/4/1 4/1/1/3/0/4/2 4/1/1/3/0/4/3 4/1/1/3/0/5/0 4/1/1/3/0/5/1 4/1/1/3/0/5/2 4/1/1/3/0/5/3 +5/1/1/0/3/0 4/1/1/3/0/6/0 4/1/1/3/0/6/1 4/1/1/3/0/6/2 4/1/1/3/0/6/3 4/1/1/3/0/7/0 4/1/1/3/0/7/1 4/1/1/3/0/7/2 4/1/1/3/0/7/3 +5/1/1/0/4/0 4/1/1/3/0/8/0 4/1/1/3/0/8/1 4/1/1/3/0/8/2 4/1/1/3/0/8/3 4/1/1/3/0/9/0 4/1/1/3/0/9/1 4/1/1/3/0/9/2 4/1/1/3/0/9/3 +5/1/1/0/5/0 4/1/1/3/0/10/0 4/1/1/3/0/10/1 4/1/1/3/0/10/2 4/1/1/3/0/10/3 4/1/1/3/0/11/0 4/1/1/3/0/11/1 4/1/1/3/0/11/2 4/1/1/3/0/11/3 +5/1/1/0/6/0 4/1/1/3/0/12/0 4/1/1/3/0/12/1 4/1/1/3/0/12/2 4/1/1/3/0/12/3 4/1/1/3/0/13/0 4/1/1/3/0/13/1 4/1/1/3/0/13/2 4/1/1/3/0/13/3 +5/1/1/0/7/0 4/1/1/3/0/14/0 4/1/1/3/0/14/1 4/1/1/3/0/14/2 4/1/1/3/0/14/3 4/1/1/3/0/15/0 4/1/1/3/0/15/1 4/1/1/3/0/15/2 4/1/1/3/0/15/3 +5/1/1/0/8/0 4/1/1/3/0/16/0 4/1/1/3/0/16/1 4/1/1/3/0/16/2 4/1/1/3/0/16/3 4/1/1/3/0/17/0 4/1/1/3/0/17/1 4/1/1/3/0/17/2 4/1/1/3/0/17/3 +5/1/1/0/9/0 4/1/1/3/0/18/0 4/1/1/3/0/18/1 4/1/1/3/0/18/2 4/1/1/3/0/18/3 4/1/1/3/0/19/0 4/1/1/3/0/19/1 4/1/1/3/0/19/2 4/1/1/3/0/19/3 + +nextSuperCalo EMB3/TILEG 4/1/-1,1/3/0/20,21,22,23,25,26/0:255 5/3/-1,1/0:63/10,11,13/3 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/20/0 5/3/1/0/10/3 +4/1/1/3/0/21/0 5/3/1/0/10/3 +4/1/1/3/0/22/0 5/3/1/0/11/3 +4/1/1/3/0/23/0 5/3/1/0/11/3 +4/1/1/3/0/25/0 5/3/1/0/13/3 +4/1/1/3/0/26/0 5/3/1/0/13/3 + +prevSuperCalo TILEG/EMB3 5/3/-1,1/0:63/10,11,13/3 4/1/-1,1/3/0/20,21,22,23,25,26/0:255 calcSide(2,2) calcPhi(3,6) +5/3/1/0/10/3 4/1/1/3/0/20/0 4/1/1/3/0/20/1 4/1/1/3/0/20/2 4/1/1/3/0/20/3 4/1/1/3/0/21/0 4/1/1/3/0/21/1 4/1/1/3/0/21/2 4/1/1/3/0/21/3 +5/3/1/0/11/3 4/1/1/3/0/22/0 4/1/1/3/0/22/1 4/1/1/3/0/22/2 4/1/1/3/0/22/3 4/1/1/3/0/23/0 4/1/1/3/0/23/1 4/1/1/3/0/23/2 4/1/1/3/0/23/3 +5/3/1/0/13/3 4/1/1/3/0/25/0 4/1/1/3/0/25/1 4/1/1/3/0/25/2 4/1/1/3/0/25/3 4/1/1/3/0/26/0 4/1/1/3/0/26/1 4/1/1/3/0/26/2 4/1/1/3/0/26/3 + +nextSuperCalo EMB3/TILEE 4/1/-1,1/3/0/22:26/0:255 5/2/-1,1/0:63/11:13/0 calcSide(2,2) calcPhi(6,3) +4/1/1/3/0/22/0 5/2/1/0/11/0 +4/1/1/3/0/23/0 5/2/1/0/11/0 +4/1/1/3/0/24/0 5/2/1/0/12/0 +4/1/1/3/0/25/0 5/2/1/0/12/0 +4/1/1/3/0/26/0 5/2/1/0/13/0 + +prevSuperCalo TILEE/EMB3 5/2/-1,1/0:63/11:13/0 4/1/-1,1/3/0/22:26/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/11/0 4/1/1/3/0/22/0 4/1/1/3/0/22/1 4/1/1/3/0/22/2 4/1/1/3/0/22/3 4/1/1/3/0/23/0 4/1/1/3/0/23/1 4/1/1/3/0/23/2 4/1/1/3/0/23/3 +5/2/1/0/12/0 4/1/1/3/0/24/0 4/1/1/3/0/24/1 4/1/1/3/0/24/2 4/1/1/3/0/24/3 4/1/1/3/0/25/0 4/1/1/3/0/25/1 4/1/1/3/0/25/2 4/1/1/3/0/25/3 +5/2/1/0/13/0 4/1/1/3/0/26/0 4/1/1/3/0/26/1 4/1/1/3/0/26/2 4/1/1/3/0/26/3 + +nextSuperCalo EME2OW0/TILEE 4/1/-2,2/2/0/0/0:255 5/2/-1,1/0:63/14/0 calcSide(2,2) calcPhi(6,3) +4/1/2/2/0/0/0 5/2/1/0/14/0 + +prevSuperCalo TILEE/EME2OW0 5/2/-1,1/0:63/14/0 4/1/-2,2/2/0/0/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14/0 4/1/2/2/0/0/0 4/1/2/2/0/0/1 4/1/2/2/0/0/2 4/1/2/2/0/0/3 + +nextSuperCalo EME2OW1/TILEE 4/1/-2,2/2/1/0:2/0:255 5/2/-1,1/0:63/14/0 calcSide(2,2) calcPhi(6,3) +4/1/2/2/1/0/0 5/2/1/0/14/0 +4/1/2/2/1/1/0 5/2/1/0/14/0 +4/1/2/2/1/2/0 5/2/1/0/14/0 + +prevSuperCalo TILEE/EME2OW1 5/2/-1,1/0:63/14/0 4/1/-2,2/2/1/0:2/0:255 calcSide(2,2) calcPhi(3,6) +5/2/1/0/14/0 4/1/2/2/1/0/0 4/1/2/2/1/1/0 4/1/2/2/1/2/0 4/1/2/2/1/0/1 4/1/2/2/1/1/1 4/1/2/2/1/2/1 4/1/2/2/1/0/2 4/1/2/2/1/1/2 4/1/2/2/1/2/2 4/1/2/2/1/0/3 4/1/2/2/1/1/3 4/1/2/2/1/2/3 + +nextSuperCalo EME3OW/HEC00 4/1/-2,2/3/0/0:19/0:255 4/2/-2,2/0/0/0:9/0:63 calcSide(2,2) calcPhi(6,6) +4/1/2/3/0/0/0 4/2/2/0/0/0/0 +4/1/2/3/0/1/0 4/2/2/0/0/0/0 +4/1/2/3/0/2/0 4/2/2/0/0/1/0 +4/1/2/3/0/3/0 4/2/2/0/0/1/0 +4/1/2/3/0/4/0 4/2/2/0/0/2/0 +4/1/2/3/0/5/0 4/2/2/0/0/2/0 +4/1/2/3/0/6/0 4/2/2/0/0/3/0 +4/1/2/3/0/7/0 4/2/2/0/0/3/0 +4/1/2/3/0/8/0 4/2/2/0/0/4/0 +4/1/2/3/0/9/0 4/2/2/0/0/4/0 +4/1/2/3/0/10/0 4/2/2/0/0/5/0 +4/1/2/3/0/11/0 4/2/2/0/0/5/0 +4/1/2/3/0/12/0 4/2/2/0/0/6/0 +4/1/2/3/0/13/0 4/2/2/0/0/6/0 +4/1/2/3/0/14/0 4/2/2/0/0/7/0 +4/1/2/3/0/15/0 4/2/2/0/0/7/0 +4/1/2/3/0/16/0 4/2/2/0/0/8/0 +4/1/2/3/0/17/0 4/2/2/0/0/8/0 +4/1/2/3/0/18/0 4/2/2/0/0/9/0 +4/1/2/3/0/19/0 4/2/2/0/0/9/0 + +prevSuperCalo HEC00/EME3OW 4/2/-2,2/0/0/0:9/0:63 4/1/-2,2/3/0/0:19/0:255 calcSide(2,2) calcPhi(6,6) +4/2/2/0/0/0/0 4/1/2/3/0/0/0 4/1/2/3/0/0/1 4/1/2/3/0/0/2 4/1/2/3/0/0/3 4/1/2/3/0/1/0 4/1/2/3/0/1/1 4/1/2/3/0/1/2 4/1/2/3/0/1/3 +4/2/2/0/0/1/0 4/1/2/3/0/2/0 4/1/2/3/0/2/1 4/1/2/3/0/2/2 4/1/2/3/0/2/3 4/1/2/3/0/3/0 4/1/2/3/0/3/1 4/1/2/3/0/3/2 4/1/2/3/0/3/3 +4/2/2/0/0/2/0 4/1/2/3/0/4/0 4/1/2/3/0/4/1 4/1/2/3/0/4/2 4/1/2/3/0/4/3 4/1/2/3/0/5/0 4/1/2/3/0/5/1 4/1/2/3/0/5/2 4/1/2/3/0/5/3 +4/2/2/0/0/3/0 4/1/2/3/0/6/0 4/1/2/3/0/6/1 4/1/2/3/0/6/2 4/1/2/3/0/6/3 4/1/2/3/0/7/0 4/1/2/3/0/7/1 4/1/2/3/0/7/2 4/1/2/3/0/7/3 +4/2/2/0/0/4/0 4/1/2/3/0/8/0 4/1/2/3/0/8/1 4/1/2/3/0/8/2 4/1/2/3/0/8/3 4/1/2/3/0/9/0 4/1/2/3/0/9/1 4/1/2/3/0/9/2 4/1/2/3/0/9/3 +4/2/2/0/0/5/0 4/1/2/3/0/10/0 4/1/2/3/0/10/1 4/1/2/3/0/10/2 4/1/2/3/0/10/3 4/1/2/3/0/11/0 4/1/2/3/0/11/1 4/1/2/3/0/11/2 4/1/2/3/0/11/3 +4/2/2/0/0/6/0 4/1/2/3/0/12/0 4/1/2/3/0/12/1 4/1/2/3/0/12/2 4/1/2/3/0/12/3 4/1/2/3/0/13/0 4/1/2/3/0/13/1 4/1/2/3/0/13/2 4/1/2/3/0/13/3 +4/2/2/0/0/7/0 4/1/2/3/0/14/0 4/1/2/3/0/14/1 4/1/2/3/0/14/2 4/1/2/3/0/14/3 4/1/2/3/0/15/0 4/1/2/3/0/15/1 4/1/2/3/0/15/2 4/1/2/3/0/15/3 +4/2/2/0/0/8/0 4/1/2/3/0/16/0 4/1/2/3/0/16/1 4/1/2/3/0/16/2 4/1/2/3/0/16/3 4/1/2/3/0/17/0 4/1/2/3/0/17/1 4/1/2/3/0/17/2 4/1/2/3/0/17/3 +4/2/2/0/0/9/0 4/1/2/3/0/18/0 4/1/2/3/0/18/1 4/1/2/3/0/18/2 4/1/2/3/0/18/3 4/1/2/3/0/19/0 4/1/2/3/0/19/1 4/1/2/3/0/19/2 4/1/2/3/0/19/3 + +nextSuperCalo EME2IW/HEC01 4/1/-3,3/2/0/0:6/0:63 4/2/-2,2/0/1/0:3/0:31 calcSide(2,2) calcPhi(6,6) +4/1/3/2/0/0/0 4/2/2/0/1/0/0 +4/1/3/2/0/1/0 4/2/2/0/1/0/0 +4/1/3/2/0/2/0 4/2/2/0/1/1/0 +4/1/3/2/0/3/0 4/2/2/0/1/1/0 +4/1/3/2/0/4/0 4/2/2/0/1/2/0 +4/1/3/2/0/5/0 4/2/2/0/1/2/0 +4/1/3/2/0/6/0 4/2/2/0/1/3/0 + +prevSuperCalo HEC01/EME2IW 4/2/-2,2/0/1/0:3/0:31 4/1/-3,3/2/0/0:6/0:63 calcSide(2,2) calcPhi(6,6) +4/2/2/0/1/0/0 4/1/3/2/0/0/0 4/1/3/2/0/0/1 4/1/3/2/0/1/0 4/1/3/2/0/1/1 +4/2/2/0/1/1/0 4/1/3/2/0/2/0 4/1/3/2/0/2/1 4/1/3/2/0/3/0 4/1/3/2/0/3/1 +4/2/2/0/1/2/0 4/1/3/2/0/4/0 4/1/3/2/0/4/1 4/1/3/2/0/5/0 4/1/3/2/0/5/1 +4/2/2/0/1/3/0 4/1/3/2/0/6/0 4/1/3/2/0/6/1 + +nextSuperCalo HEC00/TILEE 4/2/-2,2/0/0/0/0:63 5/2/-1,1/0:63/15/0 calcSide(2,2) calcPhi(6,3) +4/2/2/0/0/0/0 5/2/1/0/15/0 + +prevSuperCalo TILEE/HEC00 5/2/-1,1/0:63/15/0 4/2/-2,2/0/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15/0 4/2/2/0/0/0/0 + +nextSuperCalo HEC01/FCAL1 4/2/-2,2/0/1/2:3/0:31 4/3/-2,2/1/0:24/0:15 calcSide(2,2) +4/2/2/0/1/2/1 4/3/2/1/0/0 +4/2/2/0/1/2/2 4/3/2/1/0/1 +4/2/2/0/1/2/3 4/3/2/1/1/1 +4/2/2/0/1/2/5 4/3/2/1/0/2 +4/2/2/0/1/2/6 4/3/2/1/1/3 4/3/2/1/2/3 +4/2/2/0/1/2/7 4/3/2/1/0/3 +4/2/2/0/1/2/8 4/3/2/1/0/4 +4/2/2/0/1/2/9 4/3/2/1/1/4 +4/2/2/0/1/2/11 4/3/2/1/0/5 +4/2/2/0/1/2/12 4/3/2/1/0/6 +4/2/2/0/1/2/13 4/3/2/1/1/6 +4/2/2/0/1/2/14 4/3/2/1/0/7 +4/2/2/0/1/2/17 4/3/2/1/0/8 +4/2/2/0/1/2/18 4/3/2/1/0/9 +4/2/2/0/1/2/19 4/3/2/1/1/9 +4/2/2/0/1/2/21 4/3/2/1/0/10 +4/2/2/0/1/2/22 4/3/2/1/1/11 4/3/2/1/2/11 +4/2/2/0/1/2/23 4/3/2/1/0/11 +4/2/2/0/1/2/24 4/3/2/1/0/12 +4/2/2/0/1/2/25 4/3/2/1/1/12 4/3/2/1/2/12 +4/2/2/0/1/2/27 4/3/2/1/0/13 +4/2/2/0/1/2/28 4/3/2/1/0/14 +4/2/2/0/1/2/29 4/3/2/1/1/14 +4/2/2/0/1/2/30 4/3/2/1/0/15 +4/2/2/0/1/3/0 4/3/2/1/1/0 4/3/2/1/2/0 4/3/2/1/4/0 4/3/2/1/6/0 4/3/2/1/9/0 4/3/2/1/10/0 4/3/2/1/11/0 4/3/2/1/12/0 4/3/2/1/15/0 4/3/2/1/16/0 4/3/2/1/17/0 4/3/2/1/21/0 4/3/2/1/22/0 4/3/2/1/23/0 +4/2/2/0/1/3/1 4/3/2/1/3/0 4/3/2/1/5/0 4/3/2/1/7/0 4/3/2/1/8/0 4/3/2/1/13/0 4/3/2/1/14/0 4/3/2/1/18/0 4/3/2/1/19/0 4/3/2/1/20/0 4/3/2/1/21/1 4/3/2/1/24/0 +4/2/2/0/1/3/2 4/3/2/1/2/1 4/3/2/1/3/1 4/3/2/1/5/1 4/3/2/1/7/1 4/3/2/1/9/1 4/3/2/1/11/1 4/3/2/1/13/1 4/3/2/1/14/1 4/3/2/1/16/1 4/3/2/1/19/1 4/3/2/1/22/1 +4/2/2/0/1/3/3 4/3/2/1/4/1 4/3/2/1/6/1 4/3/2/1/8/1 4/3/2/1/10/1 4/3/2/1/12/1 4/3/2/1/15/1 4/3/2/1/17/1 4/3/2/1/18/1 4/3/2/1/20/1 +4/2/2/0/1/3/4 4/3/2/1/1/2 4/3/2/1/3/2 4/3/2/1/6/2 4/3/2/1/7/2 4/3/2/1/8/2 4/3/2/1/11/2 4/3/2/1/12/2 4/3/2/1/15/2 4/3/2/1/16/2 4/3/2/1/19/2 4/3/2/1/20/2 +4/2/2/0/1/3/5 4/3/2/1/2/2 4/3/2/1/4/2 4/3/2/1/5/2 4/3/2/1/9/2 4/3/2/1/10/2 4/3/2/1/13/2 4/3/2/1/14/2 4/3/2/1/17/2 4/3/2/1/18/2 4/3/2/1/21/2 +4/2/2/0/1/3/6 4/3/2/1/3/3 4/3/2/1/4/3 4/3/2/1/5/3 4/3/2/1/10/3 4/3/2/1/11/3 4/3/2/1/15/3 4/3/2/1/16/3 4/3/2/1/17/3 4/3/2/1/20/3 4/3/2/1/21/3 +4/2/2/0/1/3/7 4/3/2/1/6/3 4/3/2/1/7/3 4/3/2/1/8/3 4/3/2/1/9/3 4/3/2/1/12/3 4/3/2/1/13/3 4/3/2/1/14/3 4/3/2/1/18/3 4/3/2/1/19/3 +4/2/2/0/1/3/8 4/3/2/1/5/4 4/3/2/1/6/4 4/3/2/1/7/4 4/3/2/1/9/4 4/3/2/1/12/4 4/3/2/1/13/4 4/3/2/1/14/4 4/3/2/1/18/4 4/3/2/1/19/4 +4/2/2/0/1/3/9 4/3/2/1/2/4 4/3/2/1/3/4 4/3/2/1/4/4 4/3/2/1/8/4 4/3/2/1/10/4 4/3/2/1/11/4 4/3/2/1/15/4 4/3/2/1/16/4 4/3/2/1/17/4 4/3/2/1/20/4 4/3/2/1/21/4 +4/2/2/0/1/3/10 4/3/2/1/1/5 4/3/2/1/2/5 4/3/2/1/4/5 4/3/2/1/5/5 4/3/2/1/7/5 4/3/2/1/10/5 4/3/2/1/11/5 4/3/2/1/14/5 4/3/2/1/15/5 4/3/2/1/18/5 4/3/2/1/19/5 4/3/2/1/22/5 +4/2/2/0/1/3/11 4/3/2/1/3/5 4/3/2/1/6/5 4/3/2/1/8/5 4/3/2/1/9/5 4/3/2/1/12/5 4/3/2/1/13/5 4/3/2/1/16/5 4/3/2/1/17/5 4/3/2/1/20/5 4/3/2/1/21/5 +4/2/2/0/1/3/12 4/3/2/1/4/6 4/3/2/1/6/6 4/3/2/1/8/6 4/3/2/1/10/6 4/3/2/1/12/6 4/3/2/1/15/6 4/3/2/1/17/6 4/3/2/1/18/6 4/3/2/1/20/6 +4/2/2/0/1/3/13 4/3/2/1/2/6 4/3/2/1/3/6 4/3/2/1/5/6 4/3/2/1/7/6 4/3/2/1/9/6 4/3/2/1/11/6 4/3/2/1/13/6 4/3/2/1/14/6 4/3/2/1/16/6 4/3/2/1/19/6 4/3/2/1/22/6 +4/2/2/0/1/3/14 4/3/2/1/4/7 4/3/2/1/7/7 4/3/2/1/8/7 4/3/2/1/12/7 4/3/2/1/13/7 4/3/2/1/17/7 4/3/2/1/18/7 4/3/2/1/19/7 4/3/2/1/21/6 4/3/2/1/23/7 +4/2/2/0/1/3/15 4/3/2/1/1/7 4/3/2/1/2/7 4/3/2/1/3/7 4/3/2/1/5/7 4/3/2/1/6/7 4/3/2/1/9/7 4/3/2/1/10/7 4/3/2/1/11/7 4/3/2/1/14/7 4/3/2/1/15/7 4/3/2/1/16/7 4/3/2/1/20/7 4/3/2/1/21/7 4/3/2/1/22/7 +4/2/2/0/1/3/16 4/3/2/1/1/8 4/3/2/1/2/8 4/3/2/1/4/8 4/3/2/1/6/8 4/3/2/1/9/8 4/3/2/1/10/8 4/3/2/1/11/8 4/3/2/1/12/8 4/3/2/1/15/8 4/3/2/1/16/8 4/3/2/1/17/8 4/3/2/1/21/8 4/3/2/1/22/8 4/3/2/1/23/8 +4/2/2/0/1/3/17 4/3/2/1/3/8 4/3/2/1/5/8 4/3/2/1/7/8 4/3/2/1/8/8 4/3/2/1/13/8 4/3/2/1/14/8 4/3/2/1/18/8 4/3/2/1/19/8 4/3/2/1/20/8 4/3/2/1/21/9 4/3/2/1/24/8 +4/2/2/0/1/3/18 4/3/2/1/2/9 4/3/2/1/3/9 4/3/2/1/5/9 4/3/2/1/7/9 4/3/2/1/9/9 4/3/2/1/11/9 4/3/2/1/13/9 4/3/2/1/14/9 4/3/2/1/16/9 4/3/2/1/19/9 4/3/2/1/22/9 +4/2/2/0/1/3/19 4/3/2/1/4/9 4/3/2/1/6/9 4/3/2/1/8/9 4/3/2/1/10/9 4/3/2/1/12/9 4/3/2/1/15/9 4/3/2/1/17/9 4/3/2/1/18/9 4/3/2/1/20/9 +4/2/2/0/1/3/20 4/3/2/1/1/10 4/3/2/1/3/10 4/3/2/1/6/10 4/3/2/1/7/10 4/3/2/1/8/10 4/3/2/1/11/10 4/3/2/1/12/10 4/3/2/1/15/10 4/3/2/1/16/10 4/3/2/1/19/10 4/3/2/1/20/10 +4/2/2/0/1/3/21 4/3/2/1/2/10 4/3/2/1/4/10 4/3/2/1/5/10 4/3/2/1/9/10 4/3/2/1/10/10 4/3/2/1/13/10 4/3/2/1/14/10 4/3/2/1/17/10 4/3/2/1/18/10 4/3/2/1/21/10 +4/2/2/0/1/3/22 4/3/2/1/3/11 4/3/2/1/4/11 4/3/2/1/5/11 4/3/2/1/10/11 4/3/2/1/11/11 4/3/2/1/15/11 4/3/2/1/16/11 4/3/2/1/17/11 4/3/2/1/20/11 4/3/2/1/21/11 +4/2/2/0/1/3/23 4/3/2/1/6/11 4/3/2/1/7/11 4/3/2/1/8/11 4/3/2/1/9/11 4/3/2/1/12/11 4/3/2/1/13/11 4/3/2/1/14/11 4/3/2/1/18/11 4/3/2/1/19/11 +4/2/2/0/1/3/24 4/3/2/1/5/12 4/3/2/1/6/12 4/3/2/1/7/12 4/3/2/1/9/12 4/3/2/1/12/12 4/3/2/1/13/12 4/3/2/1/14/12 4/3/2/1/18/12 4/3/2/1/19/12 +4/2/2/0/1/3/25 4/3/2/1/3/12 4/3/2/1/4/12 4/3/2/1/8/12 4/3/2/1/10/12 4/3/2/1/11/12 4/3/2/1/15/12 4/3/2/1/16/12 4/3/2/1/17/12 4/3/2/1/20/12 4/3/2/1/21/12 +4/2/2/0/1/3/26 4/3/2/1/1/13 4/3/2/1/2/13 4/3/2/1/4/13 4/3/2/1/5/13 4/3/2/1/7/13 4/3/2/1/10/13 4/3/2/1/11/13 4/3/2/1/14/13 4/3/2/1/15/13 4/3/2/1/18/13 4/3/2/1/19/13 4/3/2/1/22/13 +4/2/2/0/1/3/27 4/3/2/1/3/13 4/3/2/1/6/13 4/3/2/1/8/13 4/3/2/1/9/13 4/3/2/1/12/13 4/3/2/1/13/13 4/3/2/1/16/13 4/3/2/1/17/13 4/3/2/1/20/13 4/3/2/1/21/13 +4/2/2/0/1/3/28 4/3/2/1/4/14 4/3/2/1/6/14 4/3/2/1/8/14 4/3/2/1/10/14 4/3/2/1/12/14 4/3/2/1/15/14 4/3/2/1/17/14 4/3/2/1/18/14 4/3/2/1/20/14 +4/2/2/0/1/3/29 4/3/2/1/2/14 4/3/2/1/3/14 4/3/2/1/5/14 4/3/2/1/7/14 4/3/2/1/9/14 4/3/2/1/11/14 4/3/2/1/13/14 4/3/2/1/14/14 4/3/2/1/16/14 4/3/2/1/19/14 4/3/2/1/22/14 +4/2/2/0/1/3/30 4/3/2/1/4/15 4/3/2/1/7/15 4/3/2/1/8/15 4/3/2/1/12/15 4/3/2/1/13/15 4/3/2/1/17/15 4/3/2/1/18/15 4/3/2/1/19/15 4/3/2/1/21/14 4/3/2/1/23/15 +4/2/2/0/1/3/31 4/3/2/1/1/15 4/3/2/1/2/15 4/3/2/1/3/15 4/3/2/1/5/15 4/3/2/1/6/15 4/3/2/1/9/15 4/3/2/1/10/15 4/3/2/1/11/15 4/3/2/1/14/15 4/3/2/1/15/15 4/3/2/1/16/15 4/3/2/1/20/15 4/3/2/1/21/15 4/3/2/1/22/15 + +prevSuperCalo FCAL1/HEC01 4/3/-2,2/1/0:24/0:15 4/2/-2,2/0/1/2:3/0:31 calcSide(2,2) +4/3/2/1/0/0 4/2/2/0/1/2/1 +4/3/2/1/0/1 4/2/2/0/1/2/2 +4/3/2/1/1/1 4/2/2/0/1/2/3 +4/3/2/1/0/2 4/2/2/0/1/2/5 +4/3/2/1/1/3 4/2/2/0/1/2/6 +4/3/2/1/2/3 4/2/2/0/1/2/6 +4/3/2/1/0/3 4/2/2/0/1/2/7 +4/3/2/1/0/4 4/2/2/0/1/2/8 +4/3/2/1/1/4 4/2/2/0/1/2/9 +4/3/2/1/0/5 4/2/2/0/1/2/11 +4/3/2/1/0/6 4/2/2/0/1/2/12 +4/3/2/1/1/6 4/2/2/0/1/2/13 +4/3/2/1/0/7 4/2/2/0/1/2/14 +4/3/2/1/0/8 4/2/2/0/1/2/17 +4/3/2/1/0/9 4/2/2/0/1/2/18 +4/3/2/1/1/9 4/2/2/0/1/2/19 +4/3/2/1/0/10 4/2/2/0/1/2/21 +4/3/2/1/1/11 4/2/2/0/1/2/22 +4/3/2/1/2/11 4/2/2/0/1/2/22 +4/3/2/1/0/11 4/2/2/0/1/2/23 +4/3/2/1/0/12 4/2/2/0/1/2/24 +4/3/2/1/1/12 4/2/2/0/1/2/25 +4/3/2/1/2/12 4/2/2/0/1/2/25 +4/3/2/1/0/13 4/2/2/0/1/2/27 +4/3/2/1/0/14 4/2/2/0/1/2/28 +4/3/2/1/1/14 4/2/2/0/1/2/29 +4/3/2/1/0/15 4/2/2/0/1/2/30 +4/3/2/1/1/0 4/2/2/0/1/3/0 +4/3/2/1/2/0 4/2/2/0/1/3/0 +4/3/2/1/4/0 4/2/2/0/1/3/0 +4/3/2/1/6/0 4/2/2/0/1/3/0 +4/3/2/1/9/0 4/2/2/0/1/3/0 +4/3/2/1/10/0 4/2/2/0/1/3/0 +4/3/2/1/11/0 4/2/2/0/1/3/0 +4/3/2/1/12/0 4/2/2/0/1/3/0 +4/3/2/1/15/0 4/2/2/0/1/3/0 +4/3/2/1/16/0 4/2/2/0/1/3/0 +4/3/2/1/17/0 4/2/2/0/1/3/0 +4/3/2/1/21/0 4/2/2/0/1/3/0 +4/3/2/1/22/0 4/2/2/0/1/3/0 +4/3/2/1/23/0 4/2/2/0/1/3/0 +4/3/2/1/3/0 4/2/2/0/1/3/1 +4/3/2/1/5/0 4/2/2/0/1/3/1 +4/3/2/1/7/0 4/2/2/0/1/3/1 +4/3/2/1/8/0 4/2/2/0/1/3/1 +4/3/2/1/13/0 4/2/2/0/1/3/1 +4/3/2/1/14/0 4/2/2/0/1/3/1 +4/3/2/1/18/0 4/2/2/0/1/3/1 +4/3/2/1/19/0 4/2/2/0/1/3/1 +4/3/2/1/20/0 4/2/2/0/1/3/1 +4/3/2/1/21/1 4/2/2/0/1/3/1 +4/3/2/1/24/0 4/2/2/0/1/3/1 +4/3/2/1/2/1 4/2/2/0/1/3/2 +4/3/2/1/3/1 4/2/2/0/1/3/2 +4/3/2/1/5/1 4/2/2/0/1/3/2 +4/3/2/1/7/1 4/2/2/0/1/3/2 +4/3/2/1/9/1 4/2/2/0/1/3/2 +4/3/2/1/11/1 4/2/2/0/1/3/2 +4/3/2/1/13/1 4/2/2/0/1/3/2 +4/3/2/1/14/1 4/2/2/0/1/3/2 +4/3/2/1/16/1 4/2/2/0/1/3/2 +4/3/2/1/19/1 4/2/2/0/1/3/2 +4/3/2/1/22/1 4/2/2/0/1/3/2 +4/3/2/1/4/1 4/2/2/0/1/3/3 +4/3/2/1/6/1 4/2/2/0/1/3/3 +4/3/2/1/8/1 4/2/2/0/1/3/3 +4/3/2/1/10/1 4/2/2/0/1/3/3 +4/3/2/1/12/1 4/2/2/0/1/3/3 +4/3/2/1/15/1 4/2/2/0/1/3/3 +4/3/2/1/17/1 4/2/2/0/1/3/3 +4/3/2/1/18/1 4/2/2/0/1/3/3 +4/3/2/1/20/1 4/2/2/0/1/3/3 +4/3/2/1/1/2 4/2/2/0/1/3/4 +4/3/2/1/3/2 4/2/2/0/1/3/4 +4/3/2/1/6/2 4/2/2/0/1/3/4 +4/3/2/1/7/2 4/2/2/0/1/3/4 +4/3/2/1/8/2 4/2/2/0/1/3/4 +4/3/2/1/11/2 4/2/2/0/1/3/4 +4/3/2/1/12/2 4/2/2/0/1/3/4 +4/3/2/1/15/2 4/2/2/0/1/3/4 +4/3/2/1/16/2 4/2/2/0/1/3/4 +4/3/2/1/19/2 4/2/2/0/1/3/4 +4/3/2/1/20/2 4/2/2/0/1/3/4 +4/3/2/1/2/2 4/2/2/0/1/3/5 +4/3/2/1/4/2 4/2/2/0/1/3/5 +4/3/2/1/5/2 4/2/2/0/1/3/5 +4/3/2/1/9/2 4/2/2/0/1/3/5 +4/3/2/1/10/2 4/2/2/0/1/3/5 +4/3/2/1/13/2 4/2/2/0/1/3/5 +4/3/2/1/14/2 4/2/2/0/1/3/5 +4/3/2/1/17/2 4/2/2/0/1/3/5 +4/3/2/1/18/2 4/2/2/0/1/3/5 +4/3/2/1/21/2 4/2/2/0/1/3/5 +4/3/2/1/3/3 4/2/2/0/1/3/6 +4/3/2/1/4/3 4/2/2/0/1/3/6 +4/3/2/1/5/3 4/2/2/0/1/3/6 +4/3/2/1/10/3 4/2/2/0/1/3/6 +4/3/2/1/11/3 4/2/2/0/1/3/6 +4/3/2/1/15/3 4/2/2/0/1/3/6 +4/3/2/1/16/3 4/2/2/0/1/3/6 +4/3/2/1/17/3 4/2/2/0/1/3/6 +4/3/2/1/20/3 4/2/2/0/1/3/6 +4/3/2/1/21/3 4/2/2/0/1/3/6 +4/3/2/1/6/3 4/2/2/0/1/3/7 +4/3/2/1/7/3 4/2/2/0/1/3/7 +4/3/2/1/8/3 4/2/2/0/1/3/7 +4/3/2/1/9/3 4/2/2/0/1/3/7 +4/3/2/1/12/3 4/2/2/0/1/3/7 +4/3/2/1/13/3 4/2/2/0/1/3/7 +4/3/2/1/14/3 4/2/2/0/1/3/7 +4/3/2/1/18/3 4/2/2/0/1/3/7 +4/3/2/1/19/3 4/2/2/0/1/3/7 +4/3/2/1/5/4 4/2/2/0/1/3/8 +4/3/2/1/6/4 4/2/2/0/1/3/8 +4/3/2/1/7/4 4/2/2/0/1/3/8 +4/3/2/1/9/4 4/2/2/0/1/3/8 +4/3/2/1/12/4 4/2/2/0/1/3/8 +4/3/2/1/13/4 4/2/2/0/1/3/8 +4/3/2/1/14/4 4/2/2/0/1/3/8 +4/3/2/1/18/4 4/2/2/0/1/3/8 +4/3/2/1/19/4 4/2/2/0/1/3/8 +4/3/2/1/2/4 4/2/2/0/1/3/9 +4/3/2/1/3/4 4/2/2/0/1/3/9 +4/3/2/1/4/4 4/2/2/0/1/3/9 +4/3/2/1/8/4 4/2/2/0/1/3/9 +4/3/2/1/10/4 4/2/2/0/1/3/9 +4/3/2/1/11/4 4/2/2/0/1/3/9 +4/3/2/1/15/4 4/2/2/0/1/3/9 +4/3/2/1/16/4 4/2/2/0/1/3/9 +4/3/2/1/17/4 4/2/2/0/1/3/9 +4/3/2/1/20/4 4/2/2/0/1/3/9 +4/3/2/1/21/4 4/2/2/0/1/3/9 +4/3/2/1/1/5 4/2/2/0/1/3/10 +4/3/2/1/2/5 4/2/2/0/1/3/10 +4/3/2/1/4/5 4/2/2/0/1/3/10 +4/3/2/1/5/5 4/2/2/0/1/3/10 +4/3/2/1/7/5 4/2/2/0/1/3/10 +4/3/2/1/10/5 4/2/2/0/1/3/10 +4/3/2/1/11/5 4/2/2/0/1/3/10 +4/3/2/1/14/5 4/2/2/0/1/3/10 +4/3/2/1/15/5 4/2/2/0/1/3/10 +4/3/2/1/18/5 4/2/2/0/1/3/10 +4/3/2/1/19/5 4/2/2/0/1/3/10 +4/3/2/1/22/5 4/2/2/0/1/3/10 +4/3/2/1/3/5 4/2/2/0/1/3/11 +4/3/2/1/6/5 4/2/2/0/1/3/11 +4/3/2/1/8/5 4/2/2/0/1/3/11 +4/3/2/1/9/5 4/2/2/0/1/3/11 +4/3/2/1/12/5 4/2/2/0/1/3/11 +4/3/2/1/13/5 4/2/2/0/1/3/11 +4/3/2/1/16/5 4/2/2/0/1/3/11 +4/3/2/1/17/5 4/2/2/0/1/3/11 +4/3/2/1/20/5 4/2/2/0/1/3/11 +4/3/2/1/21/5 4/2/2/0/1/3/11 +4/3/2/1/4/6 4/2/2/0/1/3/12 +4/3/2/1/6/6 4/2/2/0/1/3/12 +4/3/2/1/8/6 4/2/2/0/1/3/12 +4/3/2/1/10/6 4/2/2/0/1/3/12 +4/3/2/1/12/6 4/2/2/0/1/3/12 +4/3/2/1/15/6 4/2/2/0/1/3/12 +4/3/2/1/17/6 4/2/2/0/1/3/12 +4/3/2/1/18/6 4/2/2/0/1/3/12 +4/3/2/1/20/6 4/2/2/0/1/3/12 +4/3/2/1/2/6 4/2/2/0/1/3/13 +4/3/2/1/3/6 4/2/2/0/1/3/13 +4/3/2/1/5/6 4/2/2/0/1/3/13 +4/3/2/1/7/6 4/2/2/0/1/3/13 +4/3/2/1/9/6 4/2/2/0/1/3/13 +4/3/2/1/11/6 4/2/2/0/1/3/13 +4/3/2/1/13/6 4/2/2/0/1/3/13 +4/3/2/1/14/6 4/2/2/0/1/3/13 +4/3/2/1/16/6 4/2/2/0/1/3/13 +4/3/2/1/19/6 4/2/2/0/1/3/13 +4/3/2/1/22/6 4/2/2/0/1/3/13 +4/3/2/1/4/7 4/2/2/0/1/3/14 +4/3/2/1/7/7 4/2/2/0/1/3/14 +4/3/2/1/8/7 4/2/2/0/1/3/14 +4/3/2/1/12/7 4/2/2/0/1/3/14 +4/3/2/1/13/7 4/2/2/0/1/3/14 +4/3/2/1/17/7 4/2/2/0/1/3/14 +4/3/2/1/18/7 4/2/2/0/1/3/14 +4/3/2/1/19/7 4/2/2/0/1/3/14 +4/3/2/1/21/6 4/2/2/0/1/3/14 +4/3/2/1/23/7 4/2/2/0/1/3/14 +4/3/2/1/1/7 4/2/2/0/1/3/15 +4/3/2/1/2/7 4/2/2/0/1/3/15 +4/3/2/1/3/7 4/2/2/0/1/3/15 +4/3/2/1/5/7 4/2/2/0/1/3/15 +4/3/2/1/6/7 4/2/2/0/1/3/15 +4/3/2/1/9/7 4/2/2/0/1/3/15 +4/3/2/1/10/7 4/2/2/0/1/3/15 +4/3/2/1/11/7 4/2/2/0/1/3/15 +4/3/2/1/14/7 4/2/2/0/1/3/15 +4/3/2/1/15/7 4/2/2/0/1/3/15 +4/3/2/1/16/7 4/2/2/0/1/3/15 +4/3/2/1/20/7 4/2/2/0/1/3/15 +4/3/2/1/21/7 4/2/2/0/1/3/15 +4/3/2/1/22/7 4/2/2/0/1/3/15 +4/3/2/1/1/8 4/2/2/0/1/3/16 +4/3/2/1/2/8 4/2/2/0/1/3/16 +4/3/2/1/4/8 4/2/2/0/1/3/16 +4/3/2/1/6/8 4/2/2/0/1/3/16 +4/3/2/1/9/8 4/2/2/0/1/3/16 +4/3/2/1/10/8 4/2/2/0/1/3/16 +4/3/2/1/11/8 4/2/2/0/1/3/16 +4/3/2/1/12/8 4/2/2/0/1/3/16 +4/3/2/1/15/8 4/2/2/0/1/3/16 +4/3/2/1/16/8 4/2/2/0/1/3/16 +4/3/2/1/17/8 4/2/2/0/1/3/16 +4/3/2/1/21/8 4/2/2/0/1/3/16 +4/3/2/1/22/8 4/2/2/0/1/3/16 +4/3/2/1/23/8 4/2/2/0/1/3/16 +4/3/2/1/3/8 4/2/2/0/1/3/17 +4/3/2/1/5/8 4/2/2/0/1/3/17 +4/3/2/1/7/8 4/2/2/0/1/3/17 +4/3/2/1/8/8 4/2/2/0/1/3/17 +4/3/2/1/13/8 4/2/2/0/1/3/17 +4/3/2/1/14/8 4/2/2/0/1/3/17 +4/3/2/1/18/8 4/2/2/0/1/3/17 +4/3/2/1/19/8 4/2/2/0/1/3/17 +4/3/2/1/20/8 4/2/2/0/1/3/17 +4/3/2/1/21/9 4/2/2/0/1/3/17 +4/3/2/1/24/8 4/2/2/0/1/3/17 +4/3/2/1/2/9 4/2/2/0/1/3/18 +4/3/2/1/3/9 4/2/2/0/1/3/18 +4/3/2/1/5/9 4/2/2/0/1/3/18 +4/3/2/1/7/9 4/2/2/0/1/3/18 +4/3/2/1/9/9 4/2/2/0/1/3/18 +4/3/2/1/11/9 4/2/2/0/1/3/18 +4/3/2/1/13/9 4/2/2/0/1/3/18 +4/3/2/1/14/9 4/2/2/0/1/3/18 +4/3/2/1/16/9 4/2/2/0/1/3/18 +4/3/2/1/19/9 4/2/2/0/1/3/18 +4/3/2/1/22/9 4/2/2/0/1/3/18 +4/3/2/1/4/9 4/2/2/0/1/3/19 +4/3/2/1/6/9 4/2/2/0/1/3/19 +4/3/2/1/8/9 4/2/2/0/1/3/19 +4/3/2/1/10/9 4/2/2/0/1/3/19 +4/3/2/1/12/9 4/2/2/0/1/3/19 +4/3/2/1/15/9 4/2/2/0/1/3/19 +4/3/2/1/17/9 4/2/2/0/1/3/19 +4/3/2/1/18/9 4/2/2/0/1/3/19 +4/3/2/1/20/9 4/2/2/0/1/3/19 +4/3/2/1/1/10 4/2/2/0/1/3/20 +4/3/2/1/3/10 4/2/2/0/1/3/20 +4/3/2/1/6/10 4/2/2/0/1/3/20 +4/3/2/1/7/10 4/2/2/0/1/3/20 +4/3/2/1/8/10 4/2/2/0/1/3/20 +4/3/2/1/11/10 4/2/2/0/1/3/20 +4/3/2/1/12/10 4/2/2/0/1/3/20 +4/3/2/1/15/10 4/2/2/0/1/3/20 +4/3/2/1/16/10 4/2/2/0/1/3/20 +4/3/2/1/19/10 4/2/2/0/1/3/20 +4/3/2/1/20/10 4/2/2/0/1/3/20 +4/3/2/1/2/10 4/2/2/0/1/3/21 +4/3/2/1/4/10 4/2/2/0/1/3/21 +4/3/2/1/5/10 4/2/2/0/1/3/21 +4/3/2/1/9/10 4/2/2/0/1/3/21 +4/3/2/1/10/10 4/2/2/0/1/3/21 +4/3/2/1/13/10 4/2/2/0/1/3/21 +4/3/2/1/14/10 4/2/2/0/1/3/21 +4/3/2/1/17/10 4/2/2/0/1/3/21 +4/3/2/1/18/10 4/2/2/0/1/3/21 +4/3/2/1/21/10 4/2/2/0/1/3/21 +4/3/2/1/3/11 4/2/2/0/1/3/22 +4/3/2/1/4/11 4/2/2/0/1/3/22 +4/3/2/1/5/11 4/2/2/0/1/3/22 +4/3/2/1/10/11 4/2/2/0/1/3/22 +4/3/2/1/11/11 4/2/2/0/1/3/22 +4/3/2/1/15/11 4/2/2/0/1/3/22 +4/3/2/1/16/11 4/2/2/0/1/3/22 +4/3/2/1/17/11 4/2/2/0/1/3/22 +4/3/2/1/20/11 4/2/2/0/1/3/22 +4/3/2/1/21/11 4/2/2/0/1/3/22 +4/3/2/1/6/11 4/2/2/0/1/3/23 +4/3/2/1/7/11 4/2/2/0/1/3/23 +4/3/2/1/8/11 4/2/2/0/1/3/23 +4/3/2/1/9/11 4/2/2/0/1/3/23 +4/3/2/1/12/11 4/2/2/0/1/3/23 +4/3/2/1/13/11 4/2/2/0/1/3/23 +4/3/2/1/14/11 4/2/2/0/1/3/23 +4/3/2/1/18/11 4/2/2/0/1/3/23 +4/3/2/1/19/11 4/2/2/0/1/3/23 +4/3/2/1/5/12 4/2/2/0/1/3/24 +4/3/2/1/6/12 4/2/2/0/1/3/24 +4/3/2/1/7/12 4/2/2/0/1/3/24 +4/3/2/1/9/12 4/2/2/0/1/3/24 +4/3/2/1/12/12 4/2/2/0/1/3/24 +4/3/2/1/13/12 4/2/2/0/1/3/24 +4/3/2/1/14/12 4/2/2/0/1/3/24 +4/3/2/1/18/12 4/2/2/0/1/3/24 +4/3/2/1/19/12 4/2/2/0/1/3/24 +4/3/2/1/3/12 4/2/2/0/1/3/25 +4/3/2/1/4/12 4/2/2/0/1/3/25 +4/3/2/1/8/12 4/2/2/0/1/3/25 +4/3/2/1/10/12 4/2/2/0/1/3/25 +4/3/2/1/11/12 4/2/2/0/1/3/25 +4/3/2/1/15/12 4/2/2/0/1/3/25 +4/3/2/1/16/12 4/2/2/0/1/3/25 +4/3/2/1/17/12 4/2/2/0/1/3/25 +4/3/2/1/20/12 4/2/2/0/1/3/25 +4/3/2/1/21/12 4/2/2/0/1/3/25 +4/3/2/1/1/13 4/2/2/0/1/3/26 +4/3/2/1/2/13 4/2/2/0/1/3/26 +4/3/2/1/4/13 4/2/2/0/1/3/26 +4/3/2/1/5/13 4/2/2/0/1/3/26 +4/3/2/1/7/13 4/2/2/0/1/3/26 +4/3/2/1/10/13 4/2/2/0/1/3/26 +4/3/2/1/11/13 4/2/2/0/1/3/26 +4/3/2/1/14/13 4/2/2/0/1/3/26 +4/3/2/1/15/13 4/2/2/0/1/3/26 +4/3/2/1/18/13 4/2/2/0/1/3/26 +4/3/2/1/19/13 4/2/2/0/1/3/26 +4/3/2/1/22/13 4/2/2/0/1/3/26 +4/3/2/1/3/13 4/2/2/0/1/3/27 +4/3/2/1/6/13 4/2/2/0/1/3/27 +4/3/2/1/8/13 4/2/2/0/1/3/27 +4/3/2/1/9/13 4/2/2/0/1/3/27 +4/3/2/1/12/13 4/2/2/0/1/3/27 +4/3/2/1/13/13 4/2/2/0/1/3/27 +4/3/2/1/16/13 4/2/2/0/1/3/27 +4/3/2/1/17/13 4/2/2/0/1/3/27 +4/3/2/1/20/13 4/2/2/0/1/3/27 +4/3/2/1/21/13 4/2/2/0/1/3/27 +4/3/2/1/4/14 4/2/2/0/1/3/28 +4/3/2/1/6/14 4/2/2/0/1/3/28 +4/3/2/1/8/14 4/2/2/0/1/3/28 +4/3/2/1/10/14 4/2/2/0/1/3/28 +4/3/2/1/12/14 4/2/2/0/1/3/28 +4/3/2/1/15/14 4/2/2/0/1/3/28 +4/3/2/1/17/14 4/2/2/0/1/3/28 +4/3/2/1/18/14 4/2/2/0/1/3/28 +4/3/2/1/20/14 4/2/2/0/1/3/28 +4/3/2/1/2/14 4/2/2/0/1/3/29 +4/3/2/1/3/14 4/2/2/0/1/3/29 +4/3/2/1/5/14 4/2/2/0/1/3/29 +4/3/2/1/7/14 4/2/2/0/1/3/29 +4/3/2/1/9/14 4/2/2/0/1/3/29 +4/3/2/1/11/14 4/2/2/0/1/3/29 +4/3/2/1/13/14 4/2/2/0/1/3/29 +4/3/2/1/14/14 4/2/2/0/1/3/29 +4/3/2/1/16/14 4/2/2/0/1/3/29 +4/3/2/1/19/14 4/2/2/0/1/3/29 +4/3/2/1/22/14 4/2/2/0/1/3/29 +4/3/2/1/4/15 4/2/2/0/1/3/30 +4/3/2/1/7/15 4/2/2/0/1/3/30 +4/3/2/1/8/15 4/2/2/0/1/3/30 +4/3/2/1/12/15 4/2/2/0/1/3/30 +4/3/2/1/13/15 4/2/2/0/1/3/30 +4/3/2/1/17/15 4/2/2/0/1/3/30 +4/3/2/1/18/15 4/2/2/0/1/3/30 +4/3/2/1/19/15 4/2/2/0/1/3/30 +4/3/2/1/21/14 4/2/2/0/1/3/30 +4/3/2/1/23/15 4/2/2/0/1/3/30 +4/3/2/1/1/15 4/2/2/0/1/3/31 +4/3/2/1/2/15 4/2/2/0/1/3/31 +4/3/2/1/3/15 4/2/2/0/1/3/31 +4/3/2/1/5/15 4/2/2/0/1/3/31 +4/3/2/1/6/15 4/2/2/0/1/3/31 +4/3/2/1/9/15 4/2/2/0/1/3/31 +4/3/2/1/10/15 4/2/2/0/1/3/31 +4/3/2/1/11/15 4/2/2/0/1/3/31 +4/3/2/1/14/15 4/2/2/0/1/3/31 +4/3/2/1/15/15 4/2/2/0/1/3/31 +4/3/2/1/16/15 4/2/2/0/1/3/31 +4/3/2/1/20/15 4/2/2/0/1/3/31 +4/3/2/1/21/15 4/2/2/0/1/3/31 +4/3/2/1/22/15 4/2/2/0/1/3/31 + +nextSuperCalo HEC10/TILEE 4/2/-2,2/1/0/0/0:63 5/2/-1,1/0:63/15/0 calcSide(2,2) calcPhi(6,3) +4/2/2/1/0/0/0 5/2/1/0/15/0 + +prevSuperCalo HEC10/TILEE 5/2/-1,1/0:63/15/0 4/2/-2,2/1/0/0/0:63 calcSide(2,2) calcPhi(3,6) +5/2/1/0/15/0 4/2/2/1/0/0/0 + +nextSuperCalo FCAL1/HEC21 4/3/-2,2/1/0,1/1:13 4/2/-2,2/2/1/2/0:31 calcSide(2,2) +4/3/2/1/0/1 4/2/2/2/1/2/2 +4/3/2/1/1/1 4/2/2/2/1/2/3 +4/3/2/1/0/2 4/2/2/2/1/2/5 +4/3/2/1/1/3 4/2/2/2/1/2/6 +4/3/2/1/0/3 4/2/2/2/1/2/7 +4/3/2/1/0/4 4/2/2/2/1/2/8 +4/3/2/1/1/4 4/2/2/2/1/2/9 +4/3/2/1/0/5 4/2/2/2/1/2/11 +4/3/2/1/0/9 4/2/2/2/1/2/18 +4/3/2/1/1/9 4/2/2/2/1/2/19 +4/3/2/1/0/10 4/2/2/2/1/2/21 +4/3/2/1/1/11 4/2/2/2/1/2/22 +4/3/2/1/0/11 4/2/2/2/1/2/23 +4/3/2/1/0/12 4/2/2/2/1/2/24 +4/3/2/1/1/12 4/2/2/2/1/2/25 +4/3/2/1/0/13 4/2/2/2/1/2/27 + +prevSuperCalo HEC21/FCAL1 4/2/-2,2/2/1/2/0:31 4/3/-2,2/1/0,1/1:13 calcSide(2,2) +4/2/2/2/1/2/2 4/3/2/1/0/1 +4/2/2/2/1/2/3 4/3/2/1/1/1 +4/2/2/2/1/2/5 4/3/2/1/0/2 +4/2/2/2/1/2/6 4/3/2/1/1/3 +4/2/2/2/1/2/7 4/3/2/1/0/3 +4/2/2/2/1/2/8 4/3/2/1/0/4 +4/2/2/2/1/2/9 4/3/2/1/1/4 +4/2/2/2/1/2/11 4/3/2/1/0/5 +4/2/2/2/1/2/18 4/3/2/1/0/9 +4/2/2/2/1/2/19 4/3/2/1/1/9 +4/2/2/2/1/2/21 4/3/2/1/0/10 +4/2/2/2/1/2/22 4/3/2/1/1/11 +4/2/2/2/1/2/23 4/3/2/1/0/11 +4/2/2/2/1/2/24 4/3/2/1/0/12 +4/2/2/2/1/2/25 4/3/2/1/1/12 +4/2/2/2/1/2/27 4/3/2/1/0/13 + +nextSuperCalo FCAL2/HEC31 4/3/-2,2/2/0:9/0:15 4/2/-2,2/3/1/3/0:31 calcSide(2,2) +4/3/2/2/0/0 4/2/2/3/1/3/0 +4/3/2/2/1/0 4/2/2/3/1/3/0 +4/3/2/2/2/0 4/2/2/3/1/3/0 +4/3/2/2/5/0 4/2/2/3/1/3/0 +4/3/2/2/6/0 4/2/2/3/1/3/0 +4/3/2/2/3/0 4/2/2/3/1/3/1 +4/3/2/2/4/0 4/2/2/3/1/3/1 +4/3/2/2/7/0 4/2/2/3/1/3/1 +4/3/2/2/2/1 4/2/2/3/1/3/2 +4/3/2/2/4/1 4/2/2/3/1/3/2 +4/3/2/2/0/1 4/2/2/3/1/3/3 +4/3/2/2/1/1 4/2/2/3/1/3/3 +4/3/2/2/3/1 4/2/2/3/1/3/3 +4/3/2/2/5/1 4/2/2/3/1/3/3 +4/3/2/2/6/1 4/2/2/3/1/3/3 +4/3/2/2/0/2 4/2/2/3/1/3/4 +4/3/2/2/3/2 4/2/2/3/1/3/4 +4/3/2/2/5/2 4/2/2/3/1/3/4 +4/3/2/2/6/2 4/2/2/3/1/3/4 +4/3/2/2/9/2 4/2/2/3/1/3/4 +4/3/2/2/1/2 4/2/2/3/1/3/5 +4/3/2/2/2/2 4/2/2/3/1/3/5 +4/3/2/2/4/2 4/2/2/3/1/3/5 +4/3/2/2/7/2 4/2/2/3/1/3/5 +4/3/2/2/8/2 4/2/2/3/1/3/5 +4/3/2/2/1/3 4/2/2/3/1/3/6 +4/3/2/2/2/3 4/2/2/3/1/3/6 +4/3/2/2/3/3 4/2/2/3/1/3/6 +4/3/2/2/0/3 4/2/2/3/1/3/7 +4/3/2/2/4/3 4/2/2/3/1/3/7 +4/3/2/2/5/3 4/2/2/3/1/3/7 +4/3/2/2/0/4 4/2/2/3/1/3/8 +4/3/2/2/4/4 4/2/2/3/1/3/8 +4/3/2/2/5/4 4/2/2/3/1/3/8 +4/3/2/2/1/4 4/2/2/3/1/3/9 +4/3/2/2/2/4 4/2/2/3/1/3/9 +4/3/2/2/3/4 4/2/2/3/1/3/9 +4/3/2/2/0/5 4/2/2/3/1/3/10 +4/3/2/2/2/5 4/2/2/3/1/3/10 +4/3/2/2/4/5 4/2/2/3/1/3/10 +4/3/2/2/7/5 4/2/2/3/1/3/10 +4/3/2/2/8/5 4/2/2/3/1/3/10 +4/3/2/2/1/5 4/2/2/3/1/3/11 +4/3/2/2/3/5 4/2/2/3/1/3/11 +4/3/2/2/5/5 4/2/2/3/1/3/11 +4/3/2/2/6/5 4/2/2/3/1/3/11 +4/3/2/2/9/5 4/2/2/3/1/3/11 +4/3/2/2/0/6 4/2/2/3/1/3/12 +4/3/2/2/1/6 4/2/2/3/1/3/12 +4/3/2/2/3/6 4/2/2/3/1/3/12 +4/3/2/2/5/6 4/2/2/3/1/3/12 +4/3/2/2/6/6 4/2/2/3/1/3/12 +4/3/2/2/2/6 4/2/2/3/1/3/13 +4/3/2/2/4/6 4/2/2/3/1/3/13 +4/3/2/2/3/7 4/2/2/3/1/3/14 +4/3/2/2/4/7 4/2/2/3/1/3/14 +4/3/2/2/7/7 4/2/2/3/1/3/14 +4/3/2/2/0/7 4/2/2/3/1/3/15 +4/3/2/2/1/7 4/2/2/3/1/3/15 +4/3/2/2/2/7 4/2/2/3/1/3/15 +4/3/2/2/5/7 4/2/2/3/1/3/15 +4/3/2/2/6/7 4/2/2/3/1/3/15 +4/3/2/2/0/8 4/2/2/3/1/3/16 +4/3/2/2/1/8 4/2/2/3/1/3/16 +4/3/2/2/2/8 4/2/2/3/1/3/16 +4/3/2/2/5/8 4/2/2/3/1/3/16 +4/3/2/2/6/8 4/2/2/3/1/3/16 +4/3/2/2/3/8 4/2/2/3/1/3/17 +4/3/2/2/4/8 4/2/2/3/1/3/17 +4/3/2/2/7/8 4/2/2/3/1/3/17 +4/3/2/2/2/9 4/2/2/3/1/3/18 +4/3/2/2/4/9 4/2/2/3/1/3/18 +4/3/2/2/0/9 4/2/2/3/1/3/19 +4/3/2/2/1/9 4/2/2/3/1/3/19 +4/3/2/2/3/9 4/2/2/3/1/3/19 +4/3/2/2/5/9 4/2/2/3/1/3/19 +4/3/2/2/6/9 4/2/2/3/1/3/19 +4/3/2/2/0/10 4/2/2/3/1/3/20 +4/3/2/2/3/10 4/2/2/3/1/3/20 +4/3/2/2/5/10 4/2/2/3/1/3/20 +4/3/2/2/6/10 4/2/2/3/1/3/20 +4/3/2/2/9/10 4/2/2/3/1/3/20 +4/3/2/2/1/10 4/2/2/3/1/3/21 +4/3/2/2/2/10 4/2/2/3/1/3/21 +4/3/2/2/4/10 4/2/2/3/1/3/21 +4/3/2/2/7/10 4/2/2/3/1/3/21 +4/3/2/2/8/10 4/2/2/3/1/3/21 +4/3/2/2/1/11 4/2/2/3/1/3/22 +4/3/2/2/2/11 4/2/2/3/1/3/22 +4/3/2/2/3/11 4/2/2/3/1/3/22 +4/3/2/2/0/11 4/2/2/3/1/3/23 +4/3/2/2/4/11 4/2/2/3/1/3/23 +4/3/2/2/5/11 4/2/2/3/1/3/23 +4/3/2/2/0/12 4/2/2/3/1/3/24 +4/3/2/2/4/12 4/2/2/3/1/3/24 +4/3/2/2/5/12 4/2/2/3/1/3/24 +4/3/2/2/1/12 4/2/2/3/1/3/25 +4/3/2/2/2/12 4/2/2/3/1/3/25 +4/3/2/2/3/12 4/2/2/3/1/3/25 +4/3/2/2/0/13 4/2/2/3/1/3/26 +4/3/2/2/2/13 4/2/2/3/1/3/26 +4/3/2/2/4/13 4/2/2/3/1/3/26 +4/3/2/2/7/13 4/2/2/3/1/3/26 +4/3/2/2/8/13 4/2/2/3/1/3/26 +4/3/2/2/1/13 4/2/2/3/1/3/27 +4/3/2/2/3/13 4/2/2/3/1/3/27 +4/3/2/2/5/13 4/2/2/3/1/3/27 +4/3/2/2/6/13 4/2/2/3/1/3/27 +4/3/2/2/9/13 4/2/2/3/1/3/27 +4/3/2/2/0/14 4/2/2/3/1/3/28 +4/3/2/2/1/14 4/2/2/3/1/3/28 +4/3/2/2/3/14 4/2/2/3/1/3/28 +4/3/2/2/5/14 4/2/2/3/1/3/28 +4/3/2/2/6/14 4/2/2/3/1/3/28 +4/3/2/2/2/14 4/2/2/3/1/3/29 +4/3/2/2/4/14 4/2/2/3/1/3/29 +4/3/2/2/3/15 4/2/2/3/1/3/30 +4/3/2/2/4/15 4/2/2/3/1/3/30 +4/3/2/2/7/15 4/2/2/3/1/3/30 +4/3/2/2/0/15 4/2/2/3/1/3/31 +4/3/2/2/1/15 4/2/2/3/1/3/31 +4/3/2/2/2/15 4/2/2/3/1/3/31 +4/3/2/2/5/15 4/2/2/3/1/3/31 +4/3/2/2/6/15 4/2/2/3/1/3/31 + +prevSuperCalo HEC31/FCAL2 4/2/-2,2/3/1/3/0:31 4/3/-2,2/2/0:9/0:15 calcSide(2,2) +4/2/2/3/1/3/0 4/3/2/2/0/0 4/3/2/2/1/0 4/3/2/2/2/0 4/3/2/2/5/0 4/3/2/2/6/0 +4/2/2/3/1/3/1 4/3/2/2/3/0 4/3/2/2/4/0 4/3/2/2/7/0 +4/2/2/3/1/3/2 4/3/2/2/2/1 4/3/2/2/4/1 +4/2/2/3/1/3/3 4/3/2/2/0/1 4/3/2/2/1/1 4/3/2/2/3/1 4/3/2/2/5/1 4/3/2/2/6/1 +4/2/2/3/1/3/4 4/3/2/2/0/2 4/3/2/2/3/2 4/3/2/2/5/2 4/3/2/2/6/2 4/3/2/2/9/2 +4/2/2/3/1/3/5 4/3/2/2/1/2 4/3/2/2/2/2 4/3/2/2/4/2 4/3/2/2/7/2 4/3/2/2/8/2 +4/2/2/3/1/3/6 4/3/2/2/1/3 4/3/2/2/2/3 4/3/2/2/3/3 +4/2/2/3/1/3/7 4/3/2/2/0/3 4/3/2/2/4/3 4/3/2/2/5/3 +4/2/2/3/1/3/8 4/3/2/2/0/4 4/3/2/2/4/4 4/3/2/2/5/4 +4/2/2/3/1/3/9 4/3/2/2/1/4 4/3/2/2/2/4 4/3/2/2/3/4 +4/2/2/3/1/3/10 4/3/2/2/0/5 4/3/2/2/2/5 4/3/2/2/4/5 4/3/2/2/7/5 4/3/2/2/8/5 +4/2/2/3/1/3/11 4/3/2/2/1/5 4/3/2/2/3/5 4/3/2/2/5/5 4/3/2/2/6/5 4/3/2/2/9/5 +4/2/2/3/1/3/12 4/3/2/2/0/6 4/3/2/2/1/6 4/3/2/2/3/6 4/3/2/2/5/6 4/3/2/2/6/6 +4/2/2/3/1/3/13 4/3/2/2/2/6 4/3/2/2/4/6 +4/2/2/3/1/3/14 4/3/2/2/3/7 4/3/2/2/4/7 4/3/2/2/7/7 +4/2/2/3/1/3/15 4/3/2/2/0/7 4/3/2/2/1/7 4/3/2/2/2/7 4/3/2/2/5/7 4/3/2/2/6/7 +4/2/2/3/1/3/16 4/3/2/2/0/8 4/3/2/2/1/8 4/3/2/2/2/8 4/3/2/2/5/8 4/3/2/2/6/8 +4/2/2/3/1/3/17 4/3/2/2/3/8 4/3/2/2/4/8 4/3/2/2/7/8 +4/2/2/3/1/3/18 4/3/2/2/2/9 4/3/2/2/4/9 +4/2/2/3/1/3/19 4/3/2/2/0/9 4/3/2/2/1/9 4/3/2/2/3/9 4/3/2/2/5/9 4/3/2/2/6/9 +4/2/2/3/1/3/20 4/3/2/2/0/10 4/3/2/2/3/10 4/3/2/2/5/10 4/3/2/2/6/10 4/3/2/2/9/10 +4/2/2/3/1/3/21 4/3/2/2/1/10 4/3/2/2/2/10 4/3/2/2/4/10 4/3/2/2/7/10 4/3/2/2/8/10 +4/2/2/3/1/3/22 4/3/2/2/1/11 4/3/2/2/2/11 4/3/2/2/3/11 +4/2/2/3/1/3/23 4/3/2/2/0/11 4/3/2/2/4/11 4/3/2/2/5/11 +4/2/2/3/1/3/24 4/3/2/2/0/12 4/3/2/2/4/12 4/3/2/2/5/12 +4/2/2/3/1/3/25 4/3/2/2/1/12 4/3/2/2/2/12 4/3/2/2/3/12 +4/2/2/3/1/3/26 4/3/2/2/0/13 4/3/2/2/2/13 4/3/2/2/4/13 4/3/2/2/7/13 4/3/2/2/8/13 +4/2/2/3/1/3/27 4/3/2/2/1/13 4/3/2/2/3/13 4/3/2/2/5/13 4/3/2/2/6/13 4/3/2/2/9/13 +4/2/2/3/1/3/28 4/3/2/2/0/14 4/3/2/2/1/14 4/3/2/2/3/14 4/3/2/2/5/14 4/3/2/2/6/14 +4/2/2/3/1/3/29 4/3/2/2/2/14 4/3/2/2/4/14 +4/2/2/3/1/3/30 4/3/2/2/3/15 4/3/2/2/4/15 4/3/2/2/7/15 +4/2/2/3/1/3/31 4/3/2/2/0/15 4/3/2/2/1/15 4/3/2/2/2/15 4/3/2/2/5/15 4/3/2/2/6/15 + diff --git a/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours_H6.dat b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours_H6.dat new file mode 100755 index 0000000000000000000000000000000000000000..2aafd04b4320de04dcfba07aa75a09b94dcc5dee --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours_H6.dat @@ -0,0 +1,142 @@ +# File and Version Information: +# $Id: SuperCaloNeighbours_H6.dat,v 1.1 2004-09-25 12:18:12 menke Exp $ +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Sat Sep 25 13:48:50 2004 +# +# ranges of expanded calorimeter identifiers are mapped to create lookup +# tables for the super calo neighbours. The mapping in eta has to be given +# explicitely, while side symmetry and the mapping in phi can be automated. +# The automation in phi works only on contigous ranges. This file is for +# the combined testbeam 2004 in H6 +# +# Syntax: +# for each mapped region: Header and Entry lines until an empty line +# denotes the end of the block. The Header consists of: +# <Type> <Name> <SourceRange> <TargetRange> [<SideDirective>] [<PhiDirective>] +# <Type>: nextSuperCalo or prevSuperCalo denotes the direction of the map +# <Name>: any string without blanks, white-space etc. +# <Source/TargetRange>: A cell-level ExpandedIdentifier Range +# <SideDirective>: calcSide(i1,i2) maps sign of the field i1 in SourceRange to +# the sign of field i2 in TargetRange. +# <PhiDirective>: calcPhi(i1,i2) maps the field i1 in SourceRange to +# the field i2 in TargetRange by scaling. +# +nextSuperCalo EME2IW/HEC01 4/1/3/2/0/0:6/20:27 4/2/2/0/1/0:3/10:13 calcPhi(6,6) +4/1/3/2/0/0/20 4/2/2/0/1/0/10 +4/1/3/2/0/1/20 4/2/2/0/1/0/10 +4/1/3/2/0/2/20 4/2/2/0/1/1/10 +4/1/3/2/0/3/20 4/2/2/0/1/1/10 +4/1/3/2/0/4/20 4/2/2/0/1/2/10 +4/1/3/2/0/5/20 4/2/2/0/1/2/10 +4/1/3/2/0/6/20 4/2/2/0/1/3/10 + +prevSuperCalo HEC01/EME2IW 4/2/2/0/1/0:3/10:13 4/1/3/2/0/0:6/20:27 calcPhi(6,6) +4/2/2/0/1/0/10 4/1/3/2/0/0/20 4/1/3/2/0/0/21 4/1/3/2/0/1/20 4/1/3/2/0/1/21 +4/2/2/0/1/1/10 4/1/3/2/0/2/20 4/1/3/2/0/2/21 4/1/3/2/0/3/20 4/1/3/2/0/3/21 +4/2/2/0/1/2/10 4/1/3/2/0/4/20 4/1/3/2/0/4/21 4/1/3/2/0/5/20 4/1/3/2/0/5/21 +4/2/2/0/1/3/10 4/1/3/2/0/6/20 4/1/3/2/0/6/21 + +nextSuperCalo HEC01/FCAL1 4/2/2/0/1/2:3/9:14 4/3/2/1/0:22/4:7 +4/2/2/0/1/2/9 4/3/2/1/0/4 +4/2/2/0/1/2/10 4/3/2/1/0/5 4/3/2/1/1/5 +4/2/2/0/1/2/11 4/3/2/1/7/5 4/3/2/1/8/5 +4/2/2/0/1/2/12 4/3/2/1/0/6 +4/2/2/0/1/2/13 4/3/2/1/6/6 +4/2/2/0/1/2/14 4/3/2/1/0/7 +4/2/2/0/1/3/9 4/3/2/1/1/4 4/3/2/1/2/4 4/3/2/1/3/4 4/3/2/1/4/4 4/3/2/1/5/4 4/3/2/1/6/4 4/3/2/1/7/4 4/3/2/1/8/4 4/3/2/1/9/4 4/3/2/1/10/4 4/3/2/1/11/4 +4/2/2/0/1/3/10 4/3/2/1/2/5 4/3/2/1/3/5 4/3/2/1/9/5 4/3/2/1/10/5 4/3/2/1/13/5 4/3/2/1/15/5 4/3/2/1/18/5 4/3/2/1/19/5 4/3/2/1/22/5 +4/2/2/0/1/3/11 4/3/2/1/4/5 4/3/2/1/5/5 4/3/2/1/6/5 4/3/2/1/11/5 4/3/2/1/12/5 4/3/2/1/14/5 4/3/2/1/16/5 4/3/2/1/17/5 4/3/2/1/20/5 4/3/2/1/21/5 +4/2/2/0/1/3/12 4/3/2/1/1/6 4/3/2/1/2/6 4/3/2/1/9/6 4/3/2/1/10/6 4/3/2/1/12/6 4/3/2/1/15/6 4/3/2/1/17/6 4/3/2/1/18/6 4/3/2/1/20/6 +4/2/2/0/1/3/13 4/3/2/1/3/6 4/3/2/1/4/6 4/3/2/1/5/6 4/3/2/1/7/6 4/3/2/1/8/6 4/3/2/1/11/6 4/3/2/1/13/6 4/3/2/1/14/6 4/3/2/1/16/6 4/3/2/1/19/6 4/3/2/1/22/6 +4/2/2/0/1/3/14 4/3/2/1/1/7 4/3/2/1/2/7 4/3/2/1/3/7 4/3/2/1/4/7 4/3/2/1/5/7 4/3/2/1/6/7 4/3/2/1/7/7 4/3/2/1/8/7 4/3/2/1/9/7 4/3/2/1/10/7 4/3/2/1/21/6 + +prevSuperCalo FCAL1/HEC01 4/3/2/1/0:22/4:7 4/2/2/0/1/2:3/9:14 +4/3/2/1/0/4 4/2/2/0/1/2/9 +4/3/2/1/0/5 4/2/2/0/1/2/10 +4/3/2/1/0/6 4/2/2/0/1/2/12 +4/3/2/1/0/7 4/2/2/0/1/2/14 +4/3/2/1/1/4 4/2/2/0/1/3/9 +4/3/2/1/1/5 4/2/2/0/1/2/10 +4/3/2/1/1/6 4/2/2/0/1/3/12 +4/3/2/1/1/7 4/2/2/0/1/3/14 +4/3/2/1/10/4 4/2/2/0/1/3/9 +4/3/2/1/10/5 4/2/2/0/1/3/10 +4/3/2/1/10/6 4/2/2/0/1/3/12 +4/3/2/1/10/7 4/2/2/0/1/3/14 +4/3/2/1/11/4 4/2/2/0/1/3/9 +4/3/2/1/11/5 4/2/2/0/1/3/11 +4/3/2/1/11/6 4/2/2/0/1/3/13 +4/3/2/1/12/5 4/2/2/0/1/3/11 +4/3/2/1/12/6 4/2/2/0/1/3/12 +4/3/2/1/13/5 4/2/2/0/1/3/10 +4/3/2/1/13/6 4/2/2/0/1/3/13 +4/3/2/1/14/5 4/2/2/0/1/3/11 +4/3/2/1/14/6 4/2/2/0/1/3/13 +4/3/2/1/15/5 4/2/2/0/1/3/10 +4/3/2/1/15/6 4/2/2/0/1/3/12 +4/3/2/1/16/5 4/2/2/0/1/3/11 +4/3/2/1/16/6 4/2/2/0/1/3/13 +4/3/2/1/17/5 4/2/2/0/1/3/11 +4/3/2/1/17/6 4/2/2/0/1/3/12 +4/3/2/1/18/5 4/2/2/0/1/3/10 +4/3/2/1/18/6 4/2/2/0/1/3/12 +4/3/2/1/19/5 4/2/2/0/1/3/10 +4/3/2/1/19/6 4/2/2/0/1/3/13 +4/3/2/1/2/4 4/2/2/0/1/3/9 +4/3/2/1/2/5 4/2/2/0/1/3/10 +4/3/2/1/2/6 4/2/2/0/1/3/12 +4/3/2/1/2/7 4/2/2/0/1/3/14 +4/3/2/1/20/5 4/2/2/0/1/3/11 +4/3/2/1/20/6 4/2/2/0/1/3/12 +4/3/2/1/21/5 4/2/2/0/1/3/11 +4/3/2/1/21/6 4/2/2/0/1/3/14 +4/3/2/1/22/5 4/2/2/0/1/3/10 +4/3/2/1/22/6 4/2/2/0/1/3/13 +4/3/2/1/3/4 4/2/2/0/1/3/9 +4/3/2/1/3/5 4/2/2/0/1/3/10 +4/3/2/1/3/6 4/2/2/0/1/3/13 +4/3/2/1/3/7 4/2/2/0/1/3/14 +4/3/2/1/4/4 4/2/2/0/1/3/9 +4/3/2/1/4/5 4/2/2/0/1/3/11 +4/3/2/1/4/6 4/2/2/0/1/3/13 +4/3/2/1/4/7 4/2/2/0/1/3/14 +4/3/2/1/5/4 4/2/2/0/1/3/9 +4/3/2/1/5/5 4/2/2/0/1/3/11 +4/3/2/1/5/6 4/2/2/0/1/3/13 +4/3/2/1/5/7 4/2/2/0/1/3/14 +4/3/2/1/6/4 4/2/2/0/1/3/9 +4/3/2/1/6/5 4/2/2/0/1/3/11 +4/3/2/1/6/6 4/2/2/0/1/2/13 +4/3/2/1/6/7 4/2/2/0/1/3/14 +4/3/2/1/7/4 4/2/2/0/1/3/9 +4/3/2/1/7/5 4/2/2/0/1/2/11 +4/3/2/1/7/6 4/2/2/0/1/3/13 +4/3/2/1/7/7 4/2/2/0/1/3/14 +4/3/2/1/8/4 4/2/2/0/1/3/9 +4/3/2/1/8/5 4/2/2/0/1/2/11 +4/3/2/1/8/6 4/2/2/0/1/3/13 +4/3/2/1/8/7 4/2/2/0/1/3/14 +4/3/2/1/9/4 4/2/2/0/1/3/9 +4/3/2/1/9/5 4/2/2/0/1/3/10 +4/3/2/1/9/6 4/2/2/0/1/3/12 +4/3/2/1/9/7 4/2/2/0/1/3/14 + +nextSuperCalo FCAL1/HEC21 4/3/2/1/0,1,6,7,8/4:7 4/2/2/2/1/2/9:14 +4/3/2/1/0/4 4/2/2/2/1/2/9 +4/3/2/1/0/5 4/2/2/2/1/2/10 +4/3/2/1/0/6 4/2/2/2/1/2/12 +4/3/2/1/0/7 4/2/2/2/1/2/14 +4/3/2/1/1/5 4/2/2/2/1/2/10 +4/3/2/1/6/6 4/2/2/2/1/2/13 +4/3/2/1/7/5 4/2/2/2/1/2/11 +4/3/2/1/8/5 4/2/2/2/1/2/11 + +prevSuperCalo HEC21/FCAL1 4/2/2/2/1/2/9:14 4/3/2/1/0,1,6,7,8/4:7 +4/2/2/2/1/2/9 4/3/2/1/0/4 +4/2/2/2/1/2/10 4/3/2/1/0/5 4/3/2/1/1/5 +4/2/2/2/1/2/11 4/3/2/1/7/5 4/3/2/1/8/5 +4/2/2/2/1/2/12 4/3/2/1/0/6 +4/2/2/2/1/2/13 4/3/2/1/6/6 +4/2/2/2/1/2/14 4/3/2/1/0/7 + diff --git a/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours_H8.dat b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours_H8.dat new file mode 100755 index 0000000000000000000000000000000000000000..2046fd2461dd54bb36d6e4128ead477862c39143 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/SuperCaloNeighbours_H8.dat @@ -0,0 +1,51 @@ +# File and Version Information: +# $Id: SuperCaloNeighbours_H8.dat,v 1.1 2004-09-25 12:18:12 menke Exp $ +# +# Author: Sven Menke <menke@mppmu.mpg.de> +# Date: Sat Sep 25 13:03:50 2004 +# +# ranges of expanded calorimeter identifiers are mapped to create lookup +# tables for the super calo neighbours. The mapping in eta has to be given +# explicitely, while side symmetry and the mapping in phi can be automated. +# The automation in phi works only on contigous ranges. This file is for +# the combined testbeam 2004 in H8 +# +# Syntax: +# for each mapped region: Header and Entry lines until an empty line +# denotes the end of the block. The Header consists of: +# <Type> <Name> <SourceRange> <TargetRange> [<SideDirective>] [<PhiDirective>] +# <Type>: nextSuperCalo or prevSuperCalo denotes the direction of the map +# <Name>: any string without blanks, white-space etc. +# <Source/TargetRange>: A cell-level ExpandedIdentifier Range +# <SideDirective>: calcSide(i1,i2) maps sign of the field i1 in SourceRange to +# the sign of field i2 in TargetRange. +# <PhiDirective>: calcPhi(i1,i2) maps the field i1 in SourceRange to +# the field i2 in TargetRange by scaling. +# +nextSuperCalo EMB3/TILEB 4/1/1/3/0/0:15/2:13 5/1/1/0:2/0:7/0 calcPhi(6,3) +4/1/1/3/0/0/2 5/1/1/0/0/0/0/0 +4/1/1/3/0/1/2 5/1/1/0/0/0/0/0 +4/1/1/3/0/2/2 5/1/1/0/1/0/0/0 +4/1/1/3/0/3/2 5/1/1/0/1/0/0/0 +4/1/1/3/0/4/2 5/1/1/0/2/0/0/0 +4/1/1/3/0/5/2 5/1/1/0/2/0/0/0 +4/1/1/3/0/6/2 5/1/1/0/3/0/0/0 +4/1/1/3/0/7/2 5/1/1/0/3/0/0/0 +4/1/1/3/0/8/2 5/1/1/0/4/0/0/0 +4/1/1/3/0/9/2 5/1/1/0/4/0/0/0 +4/1/1/3/0/10/2 5/1/1/0/5/0/0/0 +4/1/1/3/0/11/2 5/1/1/0/5/0/0/0 +4/1/1/3/0/12/2 5/1/1/0/6/0/0/0 +4/1/1/3/0/13/2 5/1/1/0/6/0/0/0 +4/1/1/3/0/14/2 5/1/1/0/7/0/0/0 +4/1/1/3/0/15/2 5/1/1/0/7/0/0/0 + +prevSuperCalo TILEB/EMB3 5/1/1/0:2/0:7/0 4/1/1/3/0/0:15/2:13 calcPhi(3,6) +5/1/1/0/0/0/0/0 4/1/1/3/0/0/2 4/1/1/3/0/0/3 4/1/1/3/0/0/4 4/1/1/3/0/0/5 4/1/1/3/0/1/2 4/1/1/3/0/1/3 4/1/1/3/0/1/4 4/1/1/3/0/1/5 +5/1/1/0/1/0/0/0 4/1/1/3/0/2/2 4/1/1/3/0/2/3 4/1/1/3/0/2/4 4/1/1/3/0/2/5 4/1/1/3/0/3/2 4/1/1/3/0/3/3 4/1/1/3/0/3/4 4/1/1/3/0/3/5 +5/1/1/0/2/0/0/0 4/1/1/3/0/4/2 4/1/1/3/0/4/3 4/1/1/3/0/4/4 4/1/1/3/0/4/5 4/1/1/3/0/5/2 4/1/1/3/0/5/3 4/1/1/3/0/5/4 4/1/1/3/0/5/5 +5/1/1/0/3/0/0/0 4/1/1/3/0/6/2 4/1/1/3/0/6/3 4/1/1/3/0/6/4 4/1/1/3/0/6/5 4/1/1/3/0/7/2 4/1/1/3/0/7/3 4/1/1/3/0/7/4 4/1/1/3/0/7/5 +5/1/1/0/4/0/0/0 4/1/1/3/0/8/2 4/1/1/3/0/8/3 4/1/1/3/0/8/4 4/1/1/3/0/8/5 4/1/1/3/0/9/2 4/1/1/3/0/9/3 4/1/1/3/0/9/4 4/1/1/3/0/9/5 +5/1/1/0/5/0/0/0 4/1/1/3/0/10/2 4/1/1/3/0/10/3 4/1/1/3/0/10/4 4/1/1/3/0/10/5 4/1/1/3/0/11/2 4/1/1/3/0/11/3 4/1/1/3/0/11/4 4/1/1/3/0/11/5 +5/1/1/0/6/0/0/0 4/1/1/3/0/12/2 4/1/1/3/0/12/3 4/1/1/3/0/12/4 4/1/1/3/0/12/5 4/1/1/3/0/13/2 4/1/1/3/0/13/3 4/1/1/3/0/13/4 4/1/1/3/0/13/5 +5/1/1/0/7/0/0/0 4/1/1/3/0/14/2 4/1/1/3/0/14/3 4/1/1/3/0/14/4 4/1/1/3/0/14/5 4/1/1/3/0/15/2 4/1/1/3/0/15/3 4/1/1/3/0/15/4 4/1/1/3/0/15/5 diff --git a/Calorimeter/CaloIdentifier/share/TileID_test.ref b/Calorimeter/CaloIdentifier/share/TileID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..59b708c07c32a181d7947f40934b15d26f7b68c8 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/TileID_test.ref @@ -0,0 +1,68 @@ +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +TileNeighbour INFO Reading file /home/sss/atlas/supercell2/build/share/TileNeighbour_reduced.txt +test_basic +[5.1.1.0.0.1.0.0] hex(4480001000000000) +[5.2.1.1.10.2.0.0] hex(48804a2000000000) +[5.3.1.2.11.3.0.0] hex(4c808b3000000000) +[5.1.-1.0.0.1.0.0] hex(4400001000000000) +[5.2.-1.1.10.2.0.0] hex(48004a2000000000) +[5.3.-1.2.11.3.0.0] hex(4c008b3000000000) +test_connected + ncell 5184 + nmodule 384 + nregion 6 + ntower 2816 + npmt 9856 + nadc 19712 +Sampling Barrel Ext Barrel Gap Other + 0 1280 640 0 0 + 1 1152 640 128 0 + 2 448 256 128 0 + 3 0 0 512 0 +Total 2880 1536 768 0 Grand total: 5184 +Region [5.1.-1.0.0.0.0.0] eta: 0 0 0 9 phi: 63 +Region [5.1.1.0.0.0.0.0] eta: 0 0 0 9 phi: 63 +Region [5.2.-1.0] eta: 10 15 10 15 phi: 63 +Region [5.2.1.0] eta: 10 15 10 15 phi: 63 +Region [5.3.-1.0] eta: 8 15 8 15 phi: 63 +Region [5.3.1.0] eta: 8 15 8 15 phi: 63 +test_exceptions +Exception 1: TileID_Exception - Error code: 1 +Tile_Base_ID::region_id() result is not OK: ID, range = 5/255/1 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 2: TileID_Exception - Error code: 1 +Tile_Base_ID::module_id() result is not OK: ID, range = 5/1/1/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 3: TileID_Exception - Error code: 1 +Tile_Base_ID::tower_id() result is not OK: ID, range = 5/1/1/0/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 4: TileID_Exception - Error code: 1 +Tile_Base_ID::cell_id() result is not OK: ID, range = 5/1/1/0/0/99 , 5/1/-1/0:63/0/0:1 | 5/1/1/0:63/0/0:2 | 5/1/-1/0:63/1/0:1 | 5/1/1/0:63/1/0:1 | 5/1/-1/0:63/2/0:2 | 5/1/1/0:63/2/0:2 | 5/1/-1/0:63/3/0:1 | 5/1/1/0:63/3/0:1 | 5/1/-1/0:63/4/0:2 | 5/1/1/0:63/4/0:2 | 5/1/-1/0:63/5/0:1 | 5/1/1/0:63/5/0:1 | 5/1/-1/0:63/6/0:2 | 5/1/1/0:63/6/0:2 | 5/1/-1/0:63/7/0:1 | 5/1/1/0:63/7/0:1 | 5/1/-1/0:63/8/0:1 | 5/1/1/0:63/8/0:1 | 5/1/-1/0:63/9/0 | 5/1/1/0:63/9/0 | 5/2/-1,1/0:63/10/1:2 | 5/2/-1,1/0:63/11/0:1 | 5/2/-1,1/0:63/12/0:2 | 5/2/-1,1/0:63/13/0:1 | 5/2/-1,1/0:63/14/0:1 | 5/2/-1,1/0:63/15/0 | 5/3/-1,1/0:63/8/2 | 5/3/-1,1/0:63/9/1 | 5/3/-1,1/0:63/10/3 | 5/3/-1,1/0:63/11/3 | 5/3/-1,1/0:63/13/3 | 5/3/-1,1/0:63/15/3 +Exception 5: TileID_Exception - Error code: 1 +Tile_Base_ID::pmt_id() result is not OK: ID, range = 5/1/1/0/1/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 6: TileID_Exception - Error code: 1 +Tile_Base_ID::pmt_id() result is not OK: ID, range = 5/1/1/0/0/0/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 7: TileID_Exception - Error code: 1 +Tile_Base_ID::adc_id() result is not OK: ID, range = 5/1/1/0/0/0/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 8: TileID_Exception - Error code: 1 +Tile_Base_ID::adc_id() result is not OK: ID, range = 5/1/1/0/0/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 9: TileID_Exception - Error code: 1 +Tile_Base_ID::adc_id() result is not OK: ID, range = 5/1/1/0/0/0/0/99 , 5/1/-1 | 5/1/1 | 5/2/-1,1 | 5/3/-1,1 +Exception 10: TileID_Exception - Error code: 1 +Tile_Base_ID::cell_id(hash_id) - hash_id out of range +Exception 11: TileID_Exception - Error code: 1 +Tile_Base_ID::cell_hash(cell_id) - cell_id out of range +test_neighbors +test_to_string +2 5/1/1 +2 5/1/1 +3 5/1/1/0 +3 5/1/1/0 +4 5/1/1/0/0 +4 5/1/1/0/0 +5 5/1/1/0/0/1 +5 5/1/1/0/0/1 +6 5/1/1/0/0/1/1 +6 5/1/1/0/0/1/1 +7 5/1/1/0/0/1/1/1 +7 5/1/1/0/0/1/1/1 diff --git a/Calorimeter/CaloIdentifier/share/TileNeighbour.txt b/Calorimeter/CaloIdentifier/share/TileNeighbour.txt new file mode 100755 index 0000000000000000000000000000000000000000..d3834453365fd031d8ea62d6180e79dfa44bbd8a --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/TileNeighbour.txt @@ -0,0 +1,54 @@ +# $Id: TileNeighbour.txt,v 1.4 2004-05-04 17:29:11 menke Exp $ +# $Name: not supported by cvs2svn $ +# +# format of the file: +# cell name: prev_eta cell1, ... celln; next_eta; prev_samp; next_samp; +# all cell names MUST be separated by space or <TAB> +# all neighbours of one kind for a given cell are ordered according to eta +# only negative eta side is given +# second one is obtained by mirroring +# +A-1: A-2; A+1; none; BC-1; +A-2: A-3; A-1; none; BC-1, BC-2; +A-3: A-4; A-2; none; BC-2, BC-3; +A-4: A-5; A-3; none; BC-3, BC-4; +A-5: A-6; A-4; none; BC-4, BC-5; +A-6: A-7; A-5; none; BC-5, BC-6; +A-7: A-8; A-6; none; BC-6, BC-7; +A-8: A-9; A-7; none; BC-7, BC-8; +A-9: A-10; A-8; none; BC-8, B-9; +A-10: E-2, A-12; A-9; none; B-9, C-10, B-11, E-1; +A-12: A-13; A-10, E-2; E-3; E-1, B-11; +A-13: A-14; A-12; E-3; B-11, B-12; +A-14: A-15; A-13; E-3, E-4; B-12, B-13; +A-15: A-16; A-14; E-4; B-13, B-14; +A-16: none; A-15; E-4; B-14, B-15; +# +BC-1: BC-2; BC+1; A-1, A-2; D*0; +BC-2: BC-3; BC-1; A-2, A-3; D*0, D-1; +BC-3: BC-4; BC-2; A-3, A-4; D-1; +BC-4: BC-5; BC-3; A-4, A-5; D-1, D-2; +BC-5: BC-6; BC-4; A-5, A-6; D-2; +BC-6: BC-7; BC-5; A-6, A-7; D-2, D-3; +BC-7: BC-8; BC-6; A-7, A-8; D-3; +BC-8: B-9, C-10; BC-7; A-8, A-9; D-3, D-4; +B-9: C-10, B-11, E-1; BC-8; A-9, A-10; D-4; +C-10: B-11; BC-8, B-9; A-10, E-1; D-4, D-5; +B-11: B-12; B-9, C-10, E-1; A-10, A-12, A-13; D-5; +B-12: B-13; B-11; A-13, A-14; D-5; +B-13: B-14; B-12; A-14, A-15; D-5, D-6; +B-14: B-15; B-13; A-15, A-16; D-6; +B-15: none; B-14; A-16; D-6; +# +D*0: D-1; D+1; BC+2, BC+1, BC-1, BC-2; none; +D-1: D-2; D*0; BC-2, BC-3, BC-4; none; +D-2: D-3; D-1; BC-4, BC-5, BC-6; none; +D-3: D-4; D-2; BC-6, BC-7, BC-8; none; +D-4: D-5; D-3; BC-8, B-9, C-10; none; +D-5: D-6; D-4; C-10, B-11, B-12, B-13; none; +D-6: none; D-5; B-13, B-14, B-15; none; +# +E-1: B-11; B-9; A-10, E-2, A-12; C-10; +E-2: A-12; A-10; E-3; E-1; +E-3: none; none; E-4; E-2, A-12, A-13, A-14; +E-4: none; none; none; E-3, A-14, A-15, A-16; diff --git a/Calorimeter/CaloIdentifier/share/TileNeighbour_reduced.txt b/Calorimeter/CaloIdentifier/share/TileNeighbour_reduced.txt new file mode 100755 index 0000000000000000000000000000000000000000..3fed31c601919fc8f1082dd2e255d3eb588018c8 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/TileNeighbour_reduced.txt @@ -0,0 +1,54 @@ +# $Id: TileNeighbour_reduced.txt,v 1.1 2004-01-16 16:43:56 solodkov Exp $ +# $Name: not supported by cvs2svn $ +# +# format of the file: +# cell name: prev_eta cell1, ... celln; next_eta; prev_samp; next_samp; +# all cell names MUST be separated by space or <TAB> +# all neighbours of one kind for a given cell are ordered according to eta +# only negative eta side is given +# second one is obtained by mirroring +# +A-1: A-2; A+1; none; BC-1; +A-2: A-3; A-1; none; BC-1, BC-2; +A-3: A-4; A-2; none; BC-2, BC-3; +A-4: A-5; A-3; none; BC-3, BC-4; +A-5: A-6; A-4; none; BC-4, BC-5; +A-6: A-7; A-5; none; BC-5, BC-6; +A-7: A-8; A-6; none; BC-6, BC-7; +A-8: A-9; A-7; none; BC-7, BC-8; +A-9: A-10; A-8; none; BC-8, B-9; +A-10: E-2; A-9; none; B-9, C-10, E-1; +A-12: A-13; E-2; none; B-11; +A-13: A-14; A-12; none; B-11, B-12; +A-14: A-15; A-13; none; B-12, B-13; +A-15: A-16; A-14; none; B-13, B-14; +A-16: none; A-15; none; B-14, B-15; +# +BC-1: BC-2; BC+1; A-1, A-2; D*0; +BC-2: BC-3; BC-1; A-2, A-3; D*0, D-1; +BC-3: BC-4; BC-2; A-3, A-4; D-1; +BC-4: BC-5; BC-3; A-4, A-5; D-1, D-2; +BC-5: BC-6; BC-4; A-5, A-6; D-2; +BC-6: BC-7; BC-5; A-6, A-7; D-2, D-3; +BC-7: BC-8; BC-6; A-7, A-8; D-3; +BC-8: B-9, C-10; BC-7; A-8, A-9; D-3, D-4; +B-9: C-10, E-1; BC-8; A-9, A-10; D-4; +C-10: B-11; BC-8, B-9; A-10, E-1; D-4, D-5; +B-11: B-12; C-10, E-1; A-12, A-13; D-5; +B-12: B-13; B-11; A-13, A-14; D-5; +B-13: B-14; B-12; A-14, A-15; D-5, D-6; +B-14: B-15; B-13; A-15, A-16; D-6; +B-15: none; B-14; A-16; D-6; +# +D*0: D-1; D+1; BC+2, BC+1, BC-1, BC-2; none; +D-1: D-2; D*0; BC-2, BC-3, BC-4; none; +D-2: D-3; D-1; BC-4, BC-5, BC-6; none; +D-3: D-4; D-2; BC-6, BC-7, BC-8; none; +D-4: D-5; D-3; BC-8, B-9, C-10; none; +D-5: D-6; D-4; C-10, B-11, B-12, B-13; none; +D-6: none; D-5; B-13, B-14, B-15; none; +# +E-1: B-11; B-9; E-2; C-10; +E-2: A-12; A-10; E-3; E-1; +E-3: none; none; E-4; E-2; +E-4: none; none; none; E-3; diff --git a/Calorimeter/CaloIdentifier/share/TileSuperCellNeighbour.txt b/Calorimeter/CaloIdentifier/share/TileSuperCellNeighbour.txt new file mode 100644 index 0000000000000000000000000000000000000000..eedce418e37112176680dfe5cfa11eeb3e01143e --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/TileSuperCellNeighbour.txt @@ -0,0 +1,36 @@ +# $Id: TileSuperCellNeighbour.txt,v 1.0 2014-04-16 17:29:11 menke Exp $ +# $Name: not supported by cvs2svn $ +# +# format of the file: +# cell name: prev_eta cell1, ... celln; next_eta; prev_samp; next_samp; +# all cell names MUST be separated by space or <TAB> +# all neighbours of one kind for a given cell are ordered according to eta +# only negative eta side is given +# second one is obtained by mirroring +# +# super cells for the full towers are called 'S' while super cells +# corresponding to the 'D' layer of normal cells are called 'V' +# +S-1: S-2; S+1; none; none; +S-2: S-3; S-1; none; none; +S-3: S-4; S-2; none; none; +S-4: S-5; S-3; none; none; +S-5: S-6; S-4; none; none; +S-6: S-7; S-5; none; none; +S-7: S-8; S-6; none; none; +S-8: S-9; S-7; none; none; +S-9: S-10; S-8; none; none; +S-10: S-11; S-9; none; none; +S-11: S-12; S-10; none; none; +S-12: S-13; S-11; none; none; +S-13: S-14; S-12; none; none; +S-14: S-15; S-13; none; none; +S-15: S-16; S-14; none; none; +S-16: none; S-15; none; none; +# +V*0: V-1; V+1; none; none; +V-1: V-2; V*0; none; none; +V-2: V-3; V-1; none; none; +V-3: none; V-2; none; none; +V-5: V-6; none; none; none; +V-6: none; V-5; none; none; diff --git a/Calorimeter/CaloIdentifier/share/Tile_SuperCell_ID_test.ref b/Calorimeter/CaloIdentifier/share/Tile_SuperCell_ID_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..bb2e01f0507427ca3f511629136a5bc72fd59515 --- /dev/null +++ b/Calorimeter/CaloIdentifier/share/Tile_SuperCell_ID_test.ref @@ -0,0 +1,64 @@ +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0 +AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0 +AtlasDetectorID::initLevelsFromDict - there are no sTGC entries in the dictionary! +AtlasDetectorID::initLevelsFromDict - there are no MM entries in the dictionary! +AtlasDetectorID DEBUG Could not get value for label 'no_side' of field 'DetZside' in dictionary Calorimeter + AtlasDetectorID::initialize_from_dictionary - OK +test_basic +[5.5.1.0.0.0.0.0] hex(5600000000000000) +[5.6.1.1.10.2.0.0] hex(5a0d400000000000) +[5.5.-1.0.0.0.0.0] hex(5400000000000000) +[5.6.-1.1.10.2.0.0] hex(580d400000000000) +test_connected + ncell 2752 + nmodule 256 + nregion 4 + ntower 2048 + npmt 2752 + nadc 2752 +Sampling Barrel Ext Barrel Gap Other + 0 1152 896 0 0 + 1 0 0 0 0 + 2 448 256 0 0 + 3 0 0 0 0 +Total 1600 1152 0 0 Grand total: 2752 +Region [5.5.-1.0.0.0.0.0] eta: 0 0 0 8 phi: 63 +Region [5.5.1.0.0.0.0.0] eta: 0 0 0 8 phi: 63 +Region [5.6.-1.0] eta: 9 15 9 15 phi: 63 +Region [5.6.1.0] eta: 9 15 9 15 phi: 63 +test_exceptions +Exception 1: TileID_Exception - Error code: 1 +Tile_Base_ID::region_id() result is not OK: ID, range = 5/255/1 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 2: TileID_Exception - Error code: 1 +Tile_Base_ID::module_id() result is not OK: ID, range = 5/5/1/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 3: TileID_Exception - Error code: 1 +Tile_Base_ID::tower_id() result is not OK: ID, range = 5/5/1/0/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 4: TileID_Exception - Error code: 1 +Tile_Base_ID::cell_id() result is not OK: ID, range = 5/5/1/0/0/99 , 5/5/-1/0:63/0/0 | 5/5/1/0:63/0/0,2 | 5/5/-1/0:63/1/0 | 5/5/1/0:63/1/0 | 5/5/-1/0:63/2/0,2 | 5/5/1/0:63/2/0,2 | 5/5/-1/0:63/3/0 | 5/5/1/0:63/3/0 | 5/5/-1/0:63/4/0,2 | 5/5/1/0:63/4/0,2 | 5/5/-1/0:63/5/0 | 5/5/1/0:63/5/0 | 5/5/-1/0:63/6/0,2 | 5/5/1/0:63/6/0,2 | 5/5/-1/0:63/7/0 | 5/5/1/0:63/7/0 | 5/5/-1/0:63/8/0 | 5/5/1/0:63/8/0 | 5/6/-1,1/0:63/9/0 | 5/6/-1,1/0:63/10/0,2 | 5/6/-1,1/0:63/11/0 | 5/6/-1,1/0:63/12/0,2 | 5/6/-1,1/0:63/13/0 | 5/6/-1,1/0:63/14/0 | 5/6/-1,1/0:63/15/0 +Exception 5: TileID_Exception - Error code: 1 +Tile_Base_ID::pmt_id() result is not OK: ID, range = 5/5/1/1/8/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 6: TileID_Exception - Error code: 1 +Tile_Base_ID::pmt_id() result is not OK: ID, range = 5/5/1/0/0/0/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 7: TileID_Exception - Error code: 1 +Tile_Base_ID::adc_id() result is not OK: ID, range = 5/5/1/0/0/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 8: TileID_Exception - Error code: 1 +Tile_Base_ID::adc_id() result is not OK: ID, range = 5/5/1/0/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 9: TileID_Exception - Error code: 1 +Tile_Base_ID::adc_id() result is not OK: ID, range = 5/5/1/0/0/0/0/99 , 5/5/-1 | 5/5/1 | 5/6/-1,1 +Exception 10: TileID_Exception - Error code: 1 +Tile_Base_ID::cell_id(hash_id) - hash_id out of range +Exception 11: TileID_Exception - Error code: 1 +Tile_Base_ID::cell_hash(cell_id) - cell_id out of range +test_to_string +2 5/5/1 +2 5/5/1 +3 5/5/1/0 +3 5/5/1/0 +4 5/5/1/0/4 +4 5/5/1/0/4 +5 5/5/1/0/4/2 +5 5/5/1/0/4/2 +6 5/5/1/0/4/2/0 +6 5/5/1/0/4/2/0 +7 5/5/1/0/4/2/0/0 +7 5/5/1/0/4/2/0/0 diff --git a/Calorimeter/CaloIdentifier/src/CaloCellGroup.cxx b/Calorimeter/CaloIdentifier/src/CaloCellGroup.cxx new file mode 100644 index 0000000000000000000000000000000000000000..af715288c8f3908781603344ae85429c6ed3684d --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloCellGroup.cxx @@ -0,0 +1,329 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/CaloCellGroup.h" +#include <stdlib.h> +#include <ctype.h> +#include <limits> + +CaloCellGroup::CaloCellGroup() : + m_pos(false), + m_neg(false), + m_emb(false), + m_emecow(false), + m_emeciw(false), + m_hec(false), + m_fcal(false), + m_caloCellId(NULL) +{ +} + + +bool CaloCellGroup::setDefinition(const CaloCell_ID* caloCellId, const std::string& definition, MsgStream& logStr) { + m_caloCellId=caloCellId; + m_fieldBoundaries.clear(); + m_values.clear(); + m_emb=false; + m_emecow=false; + m_emeciw=false; + m_hec=false; + m_fcal=false; + m_pos=false; + m_neg=false; + + std::vector<std::string> subdefs(2+NFIELDS); + std::string valuesStr; + + std::size_t pos1,pos2; + pos1=definition.find("["); + if( pos1==std::string::npos) { + complain(logStr,definition); + return false; + } + + std::size_t i,iField=0; + for (i=1+pos1;i<definition.size();i++) { + char c=definition[i]; + if (isspace(c)) continue; + if (c==']') break; + if (c=='/') { + //std::cout << "Subfield " << iField << ": " << subdefs[iField] << std::endl; + iField++; + if (iField >= subdefs.size()) break; + } + else + subdefs[iField].push_back(c); + } + + if (iField!=subdefs.size()-1 || i==definition.size()) { + logStr << MSG::ERROR << "Definition String [" << definition << "] malformed. Expect " + << NFIELDS << " fileds separated by '/'" << endreq; + return false; + } + + valuesStr=definition.substr(i+1); + //std::cout << "ValueStr " << valuesStr << std::endl; + + //Interpret subcalo-string (first field) + std::string& subCaloStr=subdefs[0]; + size_t len; + pos1=0; + do { + pos2=subCaloStr.find(",",pos1); + if (pos2==std::string::npos) + len=subCaloStr.size(); + else + len=pos2-pos1; + if (subCaloStr.compare(pos1,len,"EMB")==0) + m_emb=true; + else if(subCaloStr.compare(pos1,len,"EMECIW")==0) + m_emeciw=true; + else if(subCaloStr.compare(pos1,len,"EMECOW")==0) + m_emecow=true; + else if(subCaloStr.compare(pos1,len,"HEC")==0) + m_hec=true; + else if(subCaloStr.compare(pos1,len,"FCAL")==0) + m_fcal=true; + else { + logStr << MSG::ERROR << "Unknown sub-calo name '"<< subCaloStr.substr(pos1,len) <<"'found. " + << "Allowed values are EMB, EMECIW, EMECOW, HEC and FCAL" << endreq; + return false; + } + pos1=pos2+1; + } + while(pos2!=std::string::npos); + + //Interpret side-field (second field) + if (subdefs[1].size()!=1) { + complain(logStr,subdefs[1]); + return false; + } + + if (subdefs[1][0]=='A') + m_pos=true; + else if (subdefs[1][0]=='C') + m_neg=true; + else if (subdefs[1][0]=='*') + m_pos=m_neg=true; + else { + logStr << MSG::ERROR << "Allowed values for side are: A,C or * (means both), found " << subdefs[1] << endreq; + return false; + } + //Interpret remaining fields + for (std::size_t i=0;i<NFIELDS;i++) { + std::string& subdef=subdefs[i+2]; + int lower=std::numeric_limits<int>::min(); + int upper=std::numeric_limits<int>::max(); + if (subdef.compare("*")!=0) { + std::size_t pos1=subdef.find('-'); + if (pos1==std::string::npos) { + if (isdigit(subdef[0])) + lower=upper=atol(subdef.c_str()); + else + logStr << MSG::ERROR << "Malformed string [" << subdef << "], expected numerical value!" << endreq; + } + else {//Found '-' + std::string lStr=subdef.substr(0,pos1); + std::string uStr=subdef.substr(pos1+1); + if (lStr.size()>0) { + if (isdigit(lStr[0])) + lower=atol(lStr.c_str()); + else + logStr << MSG::ERROR << "Malformed string [" << subdef << "], expected numerical value!" << endreq; + } + if (uStr.size()>0) { + if (isdigit(uStr[0])) + upper=atol(uStr.c_str()); + else + logStr << MSG::ERROR << "Malformed string [" << subdef << "], expected numerical value!" << endreq; + } + } + }//end not * + m_fieldBoundaries.push_back(std::make_pair(lower,upper)); + }//end loop over fields + + + const char* ptr1=valuesStr.c_str(); + char* ptr2; + float val; + //errno=0; + do { + val=strtof(ptr1,&ptr2); + if (ptr1!=ptr2) + m_values.push_back(val); + ptr1=const_cast<const char*>(ptr2+1); + } + while(*ptr2!='\0'); + + logStr << MSG::INFO << "Sussefully parsed defintion string" << endreq; + return true; +} + + + +bool CaloCellGroup::inGroup(const Identifier id) const { + //std::cout << "Check if in Group.."; + if (!m_caloCellId) { + //throw exception; + //std::cout << "No Calo Cell Id" << std::endl; + return false; + }; + + if (!m_caloCellId->is_lar(id)) + return false; //Not a lar cell + + //std::cout << "have calo.."; + + if (m_caloCellId->is_em_barrel(id) && !m_emb) return false; + if (m_caloCellId->is_em_endcap_inner(id) && !m_emeciw) return false; + if (m_caloCellId->is_em_endcap_outer(id) && !m_emecow) return false; + if (m_caloCellId->is_hec(id) && !m_hec) return false; + if (m_caloCellId->is_fcal(id) && !m_fcal) return false; + + //std::cout << "have subcalo.."; + + //Check side + const int pn=m_caloCellId->pos_neg(id); + if (pn<0 && !m_neg) return false; + if (pn>0 && !m_pos) return false; + + //std::cout << "have side.."; + + const int layer=m_caloCellId->sampling(id); + if (layer<m_fieldBoundaries[0].first || layer>m_fieldBoundaries[0].second) return false; + + //std::cout << "have layer.."; + + const int region=m_caloCellId->region(id); + if (region<m_fieldBoundaries[1].first || region>m_fieldBoundaries[1].second) return false; + + //std::cout << "have region.."; + + const int eta=m_caloCellId->eta(id); + if (eta<m_fieldBoundaries[2].first || eta>m_fieldBoundaries[2].second) return false; + + + //std::cout << "have eta.."; + + const int phi=m_caloCellId->phi(id); + if (phi<m_fieldBoundaries[3].first || phi>m_fieldBoundaries[3].second) return false; + + //std::cout << "have phi..match! "; + return true; +} + + + +void CaloCellGroup::complain(MsgStream& logStr, const std::string problem) const { + logStr << MSG::ERROR << "Malformed definition string '"<<problem << "'" << endreq; + return; +} + + + + +bool CaloCellGroupList::setDefinition(const CaloCell_ID* caloCellId, const std::vector<std::string>& definitions, + MsgStream& logStr){ + + m_groups.clear(); + m_defaults.clear(); + + if (definitions.size()==0) { + logStr << MSG::WARNING << "No definition string found" << endreq; + return true; + } + + + const std::string& defaultValueStr=definitions[0]; + + const char* ptr1=defaultValueStr.c_str(); + char* ptr2; + float val; + //errno=0; + do { + val=strtof(ptr1,&ptr2); + if (ptr1!=ptr2) + m_defaults.push_back(val); + ptr1=const_cast<const char*>(ptr2+1); + } + while(*ptr2!='\0'); + + + m_groups.resize(definitions.size()-1); + for (size_t i=0;i<m_groups.size();i++) { + bool s=m_groups[i].setDefinition(caloCellId,definitions[i+1],logStr); + if (!s) return false; + if (m_groups[i].getValue().size()!=m_defaults.size()) { + logStr << MSG::ERROR << "Incosistent number of values!" << endreq; + return false; + } + } + m_initialized=true; + return true; +} + + +const std::vector<float>& CaloCellGroupList::valuesForCell(const Identifier id) { + if (!m_initialized) { + //throw exception + return m_defaults; + } + + const std::vector<float>* result=&m_defaults; + + std::vector<CaloCellGroup>::const_iterator it=m_groups.begin(); + std::vector<CaloCellGroup>::const_iterator it_e=m_groups.end(); + for(;it!=it_e;++it) { + //std::cout << " G " << i++; + if (it->inGroup(id)) result=&(it->getValue()); + } + return *result; +} + +void CaloCellGroupList::dump(const CaloCell_ID* caloCellId) { + + std::cout << "Definitions: " << std::endl; + for (size_t i=0;i<m_groups.size();i++) { + std::cout << "Group " << i << ":" << std::endl; + m_groups[i].printDef(); + } + std::cout << "Results: "<< std::endl; + std::vector<Identifier>::const_iterator it=caloCellId->cell_begin(); + std::vector<Identifier>::const_iterator it_e=caloCellId->cell_end(); + for(;it!=it_e;it++) { + const Identifier id=(*it); + std::cout << "Values for " << caloCellId->show_to_string(id); + const std::vector<float>& x=this->valuesForCell(id); + std::cout << " ["; + for (std::size_t i=0;i<x.size();i++) + std::cout << x[i] << " "; + std::cout << "]" << std::endl; + } + return; +} + +void CaloCellGroupList::printDef() const { + std::cout << "Definitions: " << std::endl; + for (size_t i=0;i<m_groups.size();i++) { + std::cout << "Group " << i << ":" << std::endl; + m_groups[i].printDef(); + } + + + +} + +void CaloCellGroup::printDef() const { + + std::cout << "Values"; + for (std::size_t i=0;i<m_values.size();i++) + std::cout << " " << m_values[i]; + std::cout << " will be used for the following region:" << std::endl; + std::cout << "SubCalos: " <<m_emb<<m_emecow<<m_emeciw<<m_hec <<m_fcal <<std::endl; + std::cout << "pos=" << m_pos << " neg=" << m_neg << std::endl; + std::cout << "Layer [" << m_fieldBoundaries[0].first << " - " << m_fieldBoundaries[0].second << "]" << std::endl; + std::cout << "Region [" << m_fieldBoundaries[1].first << " - " << m_fieldBoundaries[1].second << "]" << std::endl; + std::cout << "Eta [" << m_fieldBoundaries[2].first << " - " << m_fieldBoundaries[2].second << "]" << std::endl; + std::cout << "Phi [" << m_fieldBoundaries[3].first << " - " << m_fieldBoundaries[3].second << "]" << std::endl << std::endl; +} diff --git a/Calorimeter/CaloIdentifier/src/CaloCell_Base_ID.cxx b/Calorimeter/CaloIdentifier/src/CaloCell_Base_ID.cxx new file mode 100644 index 0000000000000000000000000000000000000000..6235e5ecf27dbe26afaa050aad75ba9113c216ff --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloCell_Base_ID.cxx @@ -0,0 +1,268 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/CaloCell_Base_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2012 + * @brief + */ + + +#include "CaloIdentifier/CaloCell_Base_ID.h" +#include "CaloIdentifier/CaloNeighbours.h" + + +CaloCell_Base_ID::CaloCell_Base_ID(const LArEM_Base_ID* em_id, + const LArHEC_Base_ID* hec_id, + const LArFCAL_Base_ID* fcal_id, + const LArMiniFCAL_ID* minifcal_id, + const Tile_Base_ID* tile_id, + bool supercell) + : m_emHelper(em_id), + m_hecHelper(hec_id), + m_fcalHelper(fcal_id), + m_minifcalHelper(minifcal_id), + m_tileHelper(tile_id), + m_cell_hash_max(0), + m_region_hash_max(0), + m_caloNeighbours (0), + m_supercell(supercell ? 1 : 0) +{ + m_helpers[LAREM] = em_id; + m_helpers[LARHEC] = hec_id; + m_helpers[LARFCAL] = fcal_id; + m_helpers[TILE] = tile_id; + m_helpers[LARMINIFCAL] = minifcal_id; + + for (int i=0; i < NSUBCALO; i++) { + if (i == 0) { + m_cell_min[i] = 0; + m_reg_min[i] = 0; + } + else { + m_cell_min[i] = m_cell_max[i-1]; + m_reg_min[i] = m_reg_max[i-1]; + } + + m_cell_max[i] = m_cell_min[i] + m_helpers[i]->channels().hash_max(); + m_reg_max[i] = m_reg_min[i] + m_helpers[i]->regions().hash_max(); + } + + m_cell_hash_max = m_cell_max[NSUBCALO-1]; + m_region_hash_max = m_reg_max[NSUBCALO-1]; + + // count number of helpers with enabled neighbors and instantiate + // super neighbors in case this is more than 1 + + int nNeigh(0); + + if ( m_emHelper->do_neighbours() ) nNeigh++; + if ( m_hecHelper->do_neighbours() ) nNeigh++; + if ( m_fcalHelper->do_neighbours() ) nNeigh++; + if ( m_minifcalHelper->do_neighbours() ) nNeigh++; + if ( m_tileHelper->do_neighbours() ) nNeigh++; + + if ( nNeigh > 1 ) { + m_caloNeighbours = new CaloNeighbours(); + } +} + + +CaloCell_Base_ID::~CaloCell_Base_ID() +{ + if ( m_caloNeighbours ) delete m_caloNeighbours; +} + + +int CaloCell_Base_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +{ + + MsgStream log(m_msgSvc, "CaloCell_Base_ID"); + if(m_msgSvc)log << MSG::DEBUG << "Initialize" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)) return (1); + + // Register version of the different dictionaries + if (register_dict_tag(dict_mgr, "LArCalorimeter")) return(1); + if (register_dict_tag(dict_mgr, "TileCalorimeter")) return(1); + + // + // ... initialize cell / region vectors + // + m_region_vec.clear(); + m_region_vec.reserve(m_region_hash_max); + + m_cell_vec.clear(); + m_cell_vec.reserve(m_cell_hash_max); + + for (int i=0; i < NSUBCALO; i++) { + m_region_vec.insert (m_region_vec.end(), + m_helpers[i]->regions().begin(), + m_helpers[i]->regions().end()); + m_cell_vec.insert (m_cell_vec.end(), + m_helpers[i]->channels().begin(), + m_helpers[i]->channels().end()); + } + assert (m_region_vec.size() == m_region_hash_max); + assert (m_cell_vec.size() == m_cell_hash_max); + + // initialize CaloCell neighbours + if(m_caloNeighbours) { + std::string neighbourFile; + if ( !m_supercell ) { + neighbourFile = dict_mgr.find_metadata("FULLATLASNEIGHBORS"); + } + else { + // use this file name for Super Cells - should be replaced by db tag ... + neighbourFile = "SuperCaloNeighborsSuperCells-April2014.dat"; + } + if (!neighbourFile.size()) throw std::runtime_error("CaloCell_ID: Cannot find the CaloNeighbour file name"); + if(m_msgSvc)log << MSG::DEBUG << "Initializing Super3D Neighbors from file " << neighbourFile << endreq; + m_caloNeighbours->initialize(this, neighbourFile); + } + + return 0; +} + + +bool +CaloCell_Base_ID::do_checks(void) const +{ + return(m_emHelper->do_checks()) ; +} + + +void +CaloCell_Base_ID::set_do_checks (bool do_checks) const +{ + for (int i=0; i < NSUBCALO; i++) + m_helpers[i]->set_do_checks(do_checks); +} + + +int CaloCell_Base_ID::calo_sample (const Identifier id) const +{ + int calo_sampl = (int) Unknown; + + if(m_emHelper->is_em_barrel(id)) { + calo_sampl = m_emHelper->sampling(id)+(int)PreSamplerB; + } + else if (m_emHelper->is_em_endcap_outer(id)) { + calo_sampl = m_emHelper->sampling(id)+(int)PreSamplerE; + } + else if (m_emHelper->is_em_endcap_inner(id)) { + calo_sampl = m_emHelper->sampling(id)+(int)EME1; + } + + else if(m_hecHelper->is_lar_hec(id)) { + calo_sampl = m_hecHelper->sampling(id) + (int) HEC0; + } + + else if(m_minifcalHelper->is_lar_minifcal(id)) { + // must do minifcal before fcal because miniFCAL IS FCAL + calo_sampl = m_minifcalHelper->depth(id) - 1 + (int) MINIFCAL0; + } + else if(m_fcalHelper->is_lar_fcal(id)) { + calo_sampl = m_fcalHelper->module(id) - 1 + (int) FCAL0; + } + + else if (m_tileHelper->is_tile_barrel( id )) { + calo_sampl = TileBar0 + m_tileHelper->sample(id); + } + + else if (m_tileHelper->is_tile_extbarrel( id )) { + calo_sampl = TileExt0 + m_tileHelper->sample(id); + } + + else if (m_tileHelper->is_tile_gap( id )) { + calo_sampl = TileGap1 - 1 + m_tileHelper->sample(id); + } + + return calo_sampl; +} + +int CaloCell_Base_ID::calo_sample (const IdentifierHash caloHash) const +{ + Identifier id = cell_id (caloHash); + return calo_sample(id); +} + + +int +CaloCell_Base_ID::get_neighbours(const IdentifierHash caloHashId, + const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const +{ + int result = 1; + + int subCalo = NOT_VALID; + IdentifierHash subHash = subcalo_cell_hash (caloHashId, subCalo); + + switch (subCalo) { + case LAREM: + em_idHelper()->get_neighbours(subHash, option, neighbourList); + break; + + case LARHEC: + hec_idHelper()->get_neighbours(subHash, option, neighbourList); + break; + + case LARFCAL: + fcal_idHelper()->get_neighbours(subHash, option, neighbourList); + break; + + case TILE: + tile_idHelper()->get_neighbours(subHash, option, neighbourList); + break; + + case LARMINIFCAL: + minifcal_idHelper()->get_neighbours(subHash, option, neighbourList); + break; + + default: + neighbourList.resize(0); + return result; + } + + unsigned int shift = caloHashId - subHash; + int neighbourIndex = neighbourList.size(); + + if (neighbourIndex > 0) { + if (shift != 0) { + for (int iN = 0 ; iN <neighbourIndex ; ++iN) { + neighbourList[iN] += shift; + } + } + result = 0 ; + } + + if ( m_caloNeighbours ) { + if ( (option & LArNeighbours::prevSuperCalo) ){ + result = m_caloNeighbours->get_prevInCalo(caloHashId,neighbourList); + if ( result != 0 ) + return result; + } + + if ( (option & LArNeighbours::nextSuperCalo) ){ + result = m_caloNeighbours->get_nextInCalo(caloHashId,neighbourList); + if ( result != 0 ) + return result; + } + } + + return result; +} + diff --git a/Calorimeter/CaloIdentifier/src/CaloCell_ID.cxx b/Calorimeter/CaloIdentifier/src/CaloCell_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..094f5639721b3ddc1bd3c0664f560e4090d18e45 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloCell_ID.cxx @@ -0,0 +1,51 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/CaloCell_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" + +#include "GaudiKernel/MsgStream.h" + +#include <set> +#include <iostream> +#include <stdexcept> + +CaloCell_ID::CaloCell_ID(const LArEM_ID* em_id, + const LArHEC_ID* hec_id, + const LArFCAL_ID* fcal_id, + const LArMiniFCAL_ID* minifcal_id, + const TileID* tile_id) : + CaloCell_Base_ID (em_id, hec_id, fcal_id, minifcal_id, tile_id, false) +{ +} + + +CaloCell_ID::~CaloCell_ID(void) +{ +} + + +int +CaloCell_ID::initialize_from_dictionary(const IdDictMgr& dict_mgr) +{ + + MsgStream log(m_msgSvc, "CaloCell_ID"); + if(m_msgSvc)log << MSG::DEBUG << "Initialize" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(CaloCell_Base_ID::initialize_from_dictionary(dict_mgr)) return (1); + + return (0); +} + diff --git a/Calorimeter/CaloIdentifier/src/CaloCell_SuperCell_ID.cxx b/Calorimeter/CaloIdentifier/src/CaloCell_SuperCell_ID.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d61771a6e1e11391dde6817d2e2e72c6e56a4720 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloCell_SuperCell_ID.cxx @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/CaloCell_SuperCell_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Jul, 2012 + * @brief + */ + + +#include "CaloIdentifier/CaloCell_SuperCell_ID.h" + + +CaloCell_SuperCell_ID::CaloCell_SuperCell_ID(const LArEM_SuperCell_ID* em_id, + const LArHEC_SuperCell_ID* hec_id, + const LArFCAL_SuperCell_ID* fcal_id, + const LArMiniFCAL_ID* minifcal_id, + const Tile_SuperCell_ID* tile_id) : + CaloCell_Base_ID (em_id, hec_id, fcal_id, minifcal_id, tile_id, true) +{ +} + + +CaloCell_SuperCell_ID::~CaloCell_SuperCell_ID(void) +{ +} + + diff --git a/Calorimeter/CaloIdentifier/src/CaloDM_ID.cxx b/Calorimeter/CaloIdentifier/src/CaloDM_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..5263a3a1f40059475f26d94364c676219acef248 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloDM_ID.cxx @@ -0,0 +1,1204 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/CaloDM_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "CxxUtils/StrFormat.h" +#include "GaudiKernel/MsgStream.h" +#include <algorithm> +#include <string> +#include <set> +#include <stdio.h> +#include <iostream> +#include <math.h> +#include <assert.h> + + +using CxxUtils::strformat; + + +CaloDM_ID::CaloDM_ID(void) : + m_calodm_region_index(0) + , m_CALO_INDEX(999) + , m_DETZSIDE_INDEX(999) + , m_DMAT_INDEX(999) + , m_SAMPLING_INDEX(999) + , m_REGION_INDEX(999) + , m_ETA_INDEX(999) + , m_PHI_INDEX(999) + , m_dict(0) + , m_lar_zone_hash_max(0) + , m_lar_region_hash_max(0) + , m_tile_zone_hash_max(0) + , m_tile_region_hash_max(0) + +{ + +} + +CaloDM_ID:: ~CaloDM_ID(){} + + +int CaloDM_ID::eta_min(const Identifier& id) const +{ + ExpandedIdentifier expId; + IdContext cntxt = region_context(); + if(!get_expanded_id(id, expId, &cntxt)) { + int result = -999; + const MultiRange * zoneRange = 0 ; + if ( is_lar(id) ) { + zoneRange = &(m_full_lar_zone_range) ; + } else if ( is_tile(id) ) { + zoneRange = &(m_full_tile_zone_range) ; + } + for (unsigned int i = 0; i < (*zoneRange).size(); ++i) { + const Range& range = (*zoneRange)[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int CaloDM_ID::eta_max(const Identifier& id) const +{ + ExpandedIdentifier expId; + IdContext cntxt = region_context(); + if(!get_expanded_id(id, expId, &cntxt)) { + int result = -999; + const MultiRange * zoneRange = 0 ; + if ( is_lar(id) ) { + zoneRange = &(m_full_lar_zone_range) ; + } else if ( is_tile(id) ) { + zoneRange = &(m_full_tile_zone_range) ; + } + for (unsigned int i = 0; i < (*zoneRange).size(); ++i) { + const Range& range = (*zoneRange)[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int CaloDM_ID::phi_min(const Identifier& id) const +{ + ExpandedIdentifier expId; + IdContext cntxt = region_context(); + if(!get_expanded_id(id, expId, &cntxt)) { + int result = -999; + const MultiRange * zoneRange = 0 ; + if ( is_lar(id) ) { + zoneRange = &(m_full_lar_zone_range) ; + } else if ( is_tile(id) ) { + zoneRange = &(m_full_tile_zone_range) ; + } + for (unsigned int i = 0; i < (*zoneRange).size(); ++i) { + const Range& range = (*zoneRange)[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_minimum()) { + int phimin = phi_field.get_minimum(); + if (-999 == result) { + result = phimin; + } + else { + if (phimin < result) result = phimin; + } + } + } + } + return (result); + } + return (-999); +} + +int CaloDM_ID::phi_max(const Identifier& id) const +{ + ExpandedIdentifier expId; + IdContext cntxt = zone_context(); + if(!get_expanded_id(id, expId, &cntxt)) { + int result = -999; + const MultiRange * zoneRange = 0 ; + if ( is_lar(id) ) { + zoneRange = &(m_full_lar_zone_range) ; + } else if ( is_tile(id) ) { + zoneRange = &(m_full_tile_zone_range) ; + } + for (unsigned int i = 0; i < (*zoneRange).size(); ++i) { + const Range& range = (*zoneRange)[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + + +/*===================================================================*/ +int CaloDM_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*===================================================================*/ +{ + // Msg Service + MsgStream log(m_msgSvc, "CaloDM_ID" ); + std::string strg = "initialize_from_dictionary"; + if(m_msgSvc) { + log << MSG::INFO << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + std::stringstream strm; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::INFO << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)) return (1); + + // Register version of the Calorimeter dictionary + if (register_dict_tag(dict_mgr, "Calorimeter")) return(1); + + m_dict = dict_mgr.find_dictionary ("Calorimeter"); + if(!m_dict) { + if(m_msgSvc) + { + log << MSG::ERROR << " initialize_from_dict - cannot access Calorimeter dictionary " << endreq; + } + else + { + std::cout << " CaloDM_ID::initialize_from_dict - cannot access Calorimeter dictionary " + << std::endl; + } + return 1; + } + + // Initialize the field indices + if(initLevelsFromDict()) return (1); + + + // Find values for the calo, LArDM (neg) and TileDM (neg) fields + int caloValue = -1; + if (m_dict->get_label_value("subdet", "Calorimeter", caloValue)) + { + if(m_msgSvc) + { + log << MSG::ERROR << "Could not get value for label 'Calorimeter' of field 'subdet' in dictionary " + << m_dict->m_name << endreq; + } + else + { + std::cout << "Could not get value for label 'Calorimeter' of field 'subdet' in dictionary " + << m_dict->m_name + << std::endl; + } + return (1); + } + + int lardmCaloValue = -1; + // negative half + if (m_dict->get_label_value("DetZside", "negative_DMLar_side", lardmCaloValue)) + { + if(m_msgSvc) + { + log << MSG::ERROR << "Could not get value for label 'negative_DMLar_side' of field 'DetZside' in dictionary " + << m_dict->m_name << endreq; + } + else + { + std::cout << "Could not get value for label 'negative_DMLar_side' of field 'DetZside' in dictionary " + << m_dict->m_name + << std::endl; + } + return (1); + } + + int tiledmCaloValue = -1; + // negative half + if (m_dict->get_label_value("DetZside", "negative_DMTile_side", tiledmCaloValue)) + { + if(m_msgSvc) + { + log << MSG::ERROR << "Could not get value for label 'negative_DMTile_side' of field 'DetZside' in dictionary " + << m_dict->m_name + << endreq; + } + else + { + std::cout << "Could not get value for label 'negative_DMTile_side' of field 'DetZside' in dictionary " + << m_dict->m_name + << std::endl; + } + return (1); + } + + + // Set up id for region and range prefix + + // NOTE: negative value is good enough to get multirange since the + // regions are symmetric in +/-eta + + // LAr + ExpandedIdentifier reg_id; + reg_id.add(caloValue); + reg_id.add(lardmCaloValue); + Range prefix; + m_full_lar_region_range = m_dict->build_multirange(reg_id, prefix, "DMregion"); + m_full_lar_zone_range = m_dict->build_multirange(reg_id, prefix, "phivalue"); + + // Tile + ExpandedIdentifier reg_id2; + reg_id2.add(caloValue); + reg_id2.add(tiledmCaloValue); + Range prefix2; + m_full_tile_region_range = m_dict->build_multirange(reg_id2, prefix2, "DMregion"); + m_full_tile_zone_range = m_dict->build_multirange(reg_id2, prefix2, "phivalue"); + + + if(m_msgSvc) + { + log << MSG::DEBUG << " initialize_from_dict : " << endreq; + log << MSG::DEBUG << " LAr zone range -> " << (std::string)m_full_lar_zone_range << endreq; + log << MSG::DEBUG << " LAr region range -> " << (std::string)m_full_lar_region_range << endreq; + log << MSG::DEBUG << " Tile zone range -> " << (std::string)m_full_tile_zone_range << endreq; + log << MSG::DEBUG << " Tile region range -> " << (std::string)m_full_tile_region_range << endreq; + } + else + { + std::cout << " CaloDM_ID::initialize_from_dict : " + << std::endl; + std::cout << " LAr zone range -> " << (std::string)m_full_lar_zone_range + << std::endl; + std::cout << " LAr region range -> " << (std::string)m_full_lar_region_range + << std::endl; + std::cout << " Tile zone range -> " << (std::string)m_full_tile_zone_range + << std::endl; + std::cout << " Tile region range -> " << (std::string)m_full_tile_region_range + << std::endl; + } + + + // Setup the hash tables + if(init_lar_hashes()) return (1); + if(init_tile_hashes()) return (1); + + // Setup for hash calculation + + // Regions have uniform eta/phi granularity + // The lookup table only needs to contain the + // hash offset for each region, the first eta index + // and the number of phi cells. + + // The implementation requires: + + // 1) a lookup table for each region containing hash offset, + // etamin and nphi + // 2) a decoder to access the "index" corresponding to the + // pnz/samp/reg fields. These fields use 6 bits, so the + // vector has a length of 64 for 16 regions. + + + // Create decoder for fields pnz to region + IdDictFieldImplementation::size_type bits = + m_calodm_impl.bits() + + m_dmat_impl.bits() + + m_sampling_impl.bits() + + m_region_impl.bits(); + IdDictFieldImplementation::size_type bits_offset = m_calodm_impl.bits_offset(); + m_pnz_reg_impl.set_bits(bits, bits_offset); + int size = (1 << bits); + + // std::cout << "pnz_reg " + // << m_pnz_reg_impl.show_to_string() << std::endl; + // std::cout << "size " << size << std::endl; + + // std::cout << "pnz_reg " << m_pnz_reg_impl.decode_index() << " " + // << (std::string)m_pnz_reg_impl.ored_field() << " " + // << std::hex << m_pnz_reg_impl.mask() << " " + // << m_pnz_reg_impl.zeroing_mask() << " " + // << std::dec << m_pnz_reg_impl.shift() + // << " " << m_pnz_reg_impl.bits() << " " <<m_pnz_reg_impl.bits_offset() + // << std::endl; + + + // Set up vector as lookup table for lar hash calculation. + m_lar_hash_calcs.resize(size); + + for (unsigned int i = 0; i < m_lar_region_hash_max; ++i) { + Identifier regId = lar_region_id(i) ; + HashCalc hc; + int etamin = eta_min(regId); + if(etamin < 0) + { + etamin = 0; + if(m_msgSvc) + { + log << MSG::WARNING << " seting etamin to 0 because actual value not found for regId " << show_to_string(regId) << endreq; + } + else + { + std::cout << "WARNING !!! seting etamin to 0 because actual value not found for regId " << show_to_string(regId) << std::endl; + } + } + Identifier min = zone_id ( regId, etamin, 0); + IdentifierHash min_hash = lar_zone_hash_binary_search(min); + hc.m_hash = min_hash; + hc.m_etamin = etamin; + hc.m_nphi = phi_max(min)+1 ; + m_lar_hash_calcs[m_pnz_reg_impl.unpack(min)] = hc; + + if (m_pnz_reg_impl.unpack(min) >= size) + { + if( m_msgSvc) + { + log << MSG::WARNING << "min > " << size << " " + << i << " " + << show_to_string(min) << " " + << m_pnz_reg_impl.unpack(min) << " " + << endreq; + } + else + { + std::cout << "min > " << size << " " + << i << " " + << show_to_string(min) << " " + << m_pnz_reg_impl.unpack(min) << " " + << std::endl; + } + } + } + + // Check lar hash calculation + for (unsigned int i = 0; i < m_lar_zone_hash_max; ++i) { + Identifier id = lar_zone_id(i); + if (lar_zone_hash(id) != i) + { + if( m_msgSvc) + { + log << MSG::ERROR << "lar zone ranges, id, hash, i = " + << show_to_string(id) << ", " + << lar_zone_hash(id) << ", " + << i + << endreq; + } + else + { + std::cout << " ***** Error "; + std::cout << "lar zone ranges, id, hash, i = " + << show_to_string(id) << ", " + << lar_zone_hash(id) << ", " + << i + << std::endl; + } + } + } + + // Set up vector as lookup table for tile hash calculation. + m_tile_hash_calcs.resize(size); + + for (unsigned int i = 0; i < m_tile_region_hash_max; ++i) { + Identifier regId = tile_region_id(i) ; + HashCalc hc; + int etamin = eta_min(regId); + if(etamin < 0) + { + etamin = 0; + if( m_msgSvc) + { + log << MSG::WARNING << "seting etamin to 0 because actual value not found for regId " << show_to_string(regId) << endreq; + } + else + { + std::cout << "WARNING !!! seting etamin to 0 because actual value not found for regId " << show_to_string(regId) << std::endl; + } + } + Identifier min = zone_id ( regId, etamin, 0); + IdentifierHash min_hash = tile_zone_hash_binary_search(min); + hc.m_hash = min_hash; + hc.m_etamin = etamin; + hc.m_nphi = phi_max(min)+1 ; + m_tile_hash_calcs[m_pnz_reg_impl.unpack(min)] = hc; + + if (m_pnz_reg_impl.unpack(min) >= size) + { + if( m_msgSvc) + { + log << MSG::WARNING << "min > " << size << " " + << i << " " + << show_to_string(min) << " " + << m_pnz_reg_impl.unpack(min) << " " + << endreq; + } + else + { + std::cout << "min > " << size << " " + << i << " " + << show_to_string(min) << " " + << m_pnz_reg_impl.unpack(min) << " " + << std::endl; + } + } + } + + // Check tile hash calculation + for (unsigned int i = 0; i < m_tile_zone_hash_max; ++i) { + Identifier id = tile_zone_id(i); + if (tile_zone_hash(id) != i) + { + if( m_msgSvc) + { + log << MSG::ERROR << "tile zone ranges, id, hash, i = " + << show_to_string(id) << ", " + << tile_zone_hash(id) << ", " + << i + << endreq; + } + else + { + std::cout << " ***** Error "; + std::cout << "tile zone ranges, id, hash, i = " + << show_to_string(id) << ", " + << tile_zone_hash(id) << ", " + << i + << std::endl; + } + } + } + return 0; + +} + + int CaloDM_ID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << calo_field_value() + << pos_neg_z(id) + << dmat(id) + << sampling(id) + << region(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + } + } + return (0); +} + +IdContext +CaloDM_ID::region_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_REGION_INDEX)); +} + +IdContext +CaloDM_ID::zone_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_PHI_INDEX)); +} + + +void CaloDM_ID::lar_region_id_checks (int pos_neg_z, int dmat, int sampling, int region)const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << dmat << sampling << region ; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloDM_ID::lar_region_id(field values), did not build, " + + strformat ("pos_neg_z: %d , dmat: %d, sampling: %d, region: %d ", + pos_neg_z , dmat, sampling , region); + throw CaloID_Exception(errorMessage , 3); + } + + if (!m_full_lar_region_range.match(id)) { + std::string errorMessage = "CaloDM_ID::lar_region_id() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_lar_zone_range; + throw CaloID_Exception(errorMessage , 3); + } +} + +void CaloDM_ID::tile_region_id_checks (int pos_neg_z, int dmat, int sampling, int region)const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << dmat << sampling << region ; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloDM_ID::tile_region_id(field values), did not build, " + + strformat ("pos_neg_z: %d , dmat: %d, sampling: %d, region: %d ", + pos_neg_z , dmat, sampling , region); + throw CaloID_Exception(errorMessage , 3); + } + + if (!m_full_tile_region_range.match(id)) { + std::string errorMessage = "CaloDM_ID::tile_region_id() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_tile_zone_range; + throw CaloID_Exception(errorMessage , 3); + } +} + + + + void CaloDM_ID::lar_zone_id_checks ( int pos_neg_z, int dmat, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << dmat << sampling << region << eta << phi; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloDM_ID::lar_zone_id(field values), did not build, " + + strformat ("pos_neg_z: %d , dmat: %d, sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg_z , dmat, sampling , region, eta, phi); + throw CaloID_Exception(errorMessage , 4); + } + + if (!m_full_lar_zone_range.match(id)) { + std::string errorMessage = "CaloDM_ID::lar_zone_id() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_lar_zone_range; + throw CaloID_Exception(errorMessage , 4); + } +} + + void CaloDM_ID::tile_zone_id_checks ( int pos_neg_z, int dmat, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << dmat << sampling << region << eta << phi; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloDM_ID::tile_zone_id(field values), did not build, " + + strformat ("pos_neg_z: %d , dmat: %d, sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg_z , dmat, sampling , region, eta, phi); + throw CaloID_Exception(errorMessage , 4); + } + + if (!m_full_tile_zone_range.match(id)) { + std::string errorMessage = "CaloDM_ID::tile_zone_id() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_tile_zone_range; + throw CaloID_Exception(errorMessage , 4); + } +} + + +void CaloDM_ID::zone_id_checks ( const Identifier& regionId, + int eta, int phi ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id; + + IdContext context = region_context(); + if (get_expanded_id(regionId, id, &context)) { + std::string errorMessage = "CaloDM_ID::zone_id(regionId) result is not OK: ID= " + + show_to_string(regionId) ; + throw CaloID_Exception(errorMessage , 4); + } + + id << eta << phi; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloDM_ID::zone_id(regionId,field values), values ok but did not build, " + + strformat ("eta: %d , phi: %d ", eta, phi); + throw CaloID_Exception(errorMessage , 4); + } + + if(is_lar(regionId)) { + if (!m_full_lar_zone_range.match(id)) { + std::string errorMessage = "CaloDM_ID::zone_id(regionId) result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_lar_zone_range; + throw CaloID_Exception(errorMessage , 4); + } + } else if(is_tile(regionId)) { + if (!m_full_tile_zone_range.match(id)) { + std::string errorMessage = "CaloDM_ID::zone_id(regionId) result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_tile_zone_range; + throw CaloID_Exception(errorMessage , 4); + } + } +} + + +/*=======================================*/ +int CaloDM_ID::initLevelsFromDict(void) +/*=======================================*/ +{ + // Msg Service + MsgStream log(m_msgSvc, "CaloDM_ID" ); + std::string strg; + std::stringstream strm; + if(!m_dict) { + if( m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - dictionary NOT initialized " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - dictionary NOT initialized " + << std::endl ; + } + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_CALO_INDEX = 999 ; + m_DETZSIDE_INDEX = 999 ; + m_DMAT_INDEX = 999 ; + m_SAMPLING_INDEX = 999 ; + m_REGION_INDEX = 999 ; + m_ETA_INDEX = 999 ; + m_PHI_INDEX = 999 ; + + // Save index to a LArDM region for unpacking - search with region name + IdDictRegion* reg = m_dict->find_region("DM_4_1_0_0"); + if (reg) + { + m_calodm_region_index = reg->m_index; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find lardm region " << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find lardm region " + << std::endl; + } + return (1); + } + + + // Fing a CaloDM region + IdDictField* field = m_dict->find_field("subdet") ; + if (field) { + m_CALO_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'subdet' field " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'subdet' field " + << std::endl ; + } + return (1); + } + + field = m_dict->find_field("DetZside") ; + if (field) + { + m_DETZSIDE_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'DetZside' field " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'DetZside' field " + << std::endl ; + } + return (1); + } + + field = m_dict->find_field("DMvalue") ; + if (field) + { + m_DMAT_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'DMvalue' field " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'DMvalue' field " + << std::endl ; + } + return (1); + } + + + field = m_dict->find_field("samplingvalue") ; + if (field) + { + m_SAMPLING_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'samplingvalue' field " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'samplingvalue' field " + << std::endl ; + } + return (1); + } + + field = m_dict->find_field("DMregion") ; + if (field) + { + m_REGION_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'DMregion' field " << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'DMregion' field " + << std::endl ; + } + return (1); + } + + /* std::cout << "m_region= " << m_REGION_INDEX << std::endl; */ + + field = m_dict->find_field("DMEta") ; + if (field) { + m_ETA_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'DMEta' field " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'DMEta' field " + << std::endl ; + } + return (1); + } + + field = m_dict->find_field("phivalue") ; + if (field) + { + m_PHI_INDEX = field->m_index ; + } + else + { + if(m_msgSvc) + { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'phivalue' field " + << endreq; + } + else + { + std::cout << "CaloDM_ID::initLevelsFromDict - unable to find 'phivalue' field " + << std::endl ; + } + return (1); + } + + + // Set the field implementations + + const IdDictRegion& region = *m_dict->m_regions[m_calodm_region_index]; + + m_calo_impl = region.m_implementation[m_CALO_INDEX]; + m_calodm_impl = region.m_implementation[m_DETZSIDE_INDEX]; + m_dmat_impl = region.m_implementation[m_DMAT_INDEX]; + m_sampling_impl = region.m_implementation[m_SAMPLING_INDEX]; + m_region_impl = region.m_implementation[m_REGION_INDEX]; + m_eta_impl = region.m_implementation[m_ETA_INDEX]; + m_phi_impl = region.m_implementation[m_PHI_INDEX]; + + if(m_msgSvc) + { + // log << MSG::DEBUG << "CaloDM_ID::initLevelsFromDict - found levels " << endreq ; + // log << MSG::DEBUG << "subdet " << m_CALO_INDEX << endreq ; + // log << MSG::DEBUG << "detzside " << m_DETZSIDE_INDEX << endreq ; + // log << MSG::DEBUG << "Dmat " << m_DMAT_INDEX << endreq ; + // log << MSG::DEBUG << "sampling " << m_SAMPLING_INDEX << endreq ; + // log << MSG::DEBUG << "region " << m_REGION_INDEX << endreq ; + // log << MSG::DEBUG << "eta " << m_ETA_INDEX << endreq ; + // log << MSG::DEBUG << "phi " << m_PHI_INDEX << endreq ; + log << MSG::DEBUG << "decode index and bit fields for each level: " << endreq; + log << MSG::DEBUG << "calo " << m_calo_impl.show_to_string() << endreq; + log << MSG::DEBUG << "detzside " << m_calodm_impl.show_to_string() << endreq; + log << MSG::DEBUG << "dmat " << m_dmat_impl.show_to_string() << endreq; + log << MSG::DEBUG << "samp " << m_sampling_impl.show_to_string() << endreq; + log << MSG::DEBUG << "reg " << m_region_impl.show_to_string() << endreq; + log << MSG::DEBUG << "eta " << m_eta_impl.show_to_string() << endreq; + log << MSG::DEBUG << "phi " << m_phi_impl.show_to_string() << endreq; + } + else + { + // std::cout << "CaloDM_ID::initLevelsFromDict - found levels " << std::endl ; + // std::cout << "subdet " << m_CALO_INDEX << std::endl ; + // std::cout << "detzside " << m_DETZSIDE_INDEX << std::endl ; + // std::cout << "Dmat " << m_DMAT_INDEX << std::endl ; + // std::cout << "sampling " << m_SAMPLING_INDEX << std::endl ; + // std::cout << "region " << m_REGION_INDEX << std::endl ; + // std::cout << "eta " << m_ETA_INDEX << std::endl ; + // std::cout << "phi " << m_PHI_INDEX << std::endl ; + std::cout << "decode index and bit fields for each level: " << std::endl; + std::cout << "calo " << m_calo_impl.show_to_string() << std::endl; + std::cout << "detzside " << m_calodm_impl.show_to_string() << std::endl; + std::cout << "dmat " << m_dmat_impl.show_to_string() << std::endl; + std::cout << "samp " << m_sampling_impl.show_to_string() << std::endl; + std::cout << "reg " << m_region_impl.show_to_string() << std::endl; + std::cout << "eta " << m_eta_impl.show_to_string() << std::endl; + std::cout << "phi " << m_phi_impl.show_to_string() << std::endl; + } + return(0) ; +} + +/*=======================================*/ +int CaloDM_ID::init_lar_hashes(void) +/*=======================================*/ +{ + // Msg Service + MsgStream log(m_msgSvc, "CaloDM_ID" ); + std::string strg; + std::stringstream strm; + + // zone hash + m_lar_zone_hash_max = m_full_lar_zone_range.cardinality(); + m_lar_zone_vec.resize(m_lar_zone_hash_max); + unsigned int nids = 0; + std::set<Identifier> ids; + for (unsigned int i = 0; i < m_full_lar_zone_range.size(); ++i) { + const Range& range = m_full_lar_zone_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier zon_id = zone_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_DMAT_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] , + exp_id[m_ETA_INDEX] , + exp_id[m_PHI_INDEX] ) ; + if(!(ids.insert(zon_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_lar_hashes " + << " duplicated id for lardm id. nids= " << nids + << " compact Id " << show_to_string(zon_id) + << endreq; + } + else + { + std::cout << " CaloDM_ID::init_lar_hashes " + << " Error: duplicated id for lardm id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_lar_zone_hash_max) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_lar_hashes " + << " set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_lar_zone_hash_max << endreq; + } + else + { + std::cout << " CaloDM_ID::init_lar_hashes " + << " Error: set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_lar_zone_hash_max + << std::endl; + } + return (1); + } + + nids=0; + std::set<Identifier>::const_iterator first = ids.begin(); + std::set<Identifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_lar_zone_vec.size(); ++first) { + m_lar_zone_vec[nids] = (*first) ; + nids++; + } + + // region hash + m_lar_region_hash_max = m_full_lar_region_range.cardinality(); + m_lar_region_vec.resize(m_lar_region_hash_max); + nids = 0; + ids.clear(); + for (unsigned int i = 0; i < m_full_lar_region_range.size(); ++i) { + const Range& range = m_full_lar_region_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + // std::cout << "exp_id = " << (std::string)exp_id << std::endl; + Identifier reg_id = region_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_DMAT_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); + if(!(ids.insert(reg_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_lar_hashes (regions) " + << " duplicated id for region id. nids= " << nids + << " compact Id " << show_to_string(reg_id) + << endreq; + } + else + { + std::cout << " CaloDM_ID::init_lar_hashes (regions) " + << " Error: duplicated id for region id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << " " << show_to_string(reg_id) << std::endl; + std::cout << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_lar_region_hash_max) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_lar_hashes " + << " set size NOT EQUAL to region hash max. size " << ids.size() + << " region hash max " << m_lar_region_hash_max << endreq; + } + else + { + std::cout << " CaloDM_ID::init_lar_hashes " + << " Error: set size NOT EQUAL to region hash max. size " << ids.size() + << " region hash max " << m_lar_region_hash_max + << std::endl; + } + return (1); + } + + nids=0; + first = ids.begin(); + last = ids.end(); + for (;first != last && nids < m_lar_region_vec.size(); ++first) { + m_lar_region_vec[nids] = (*first) ; + nids++; + } + + return (0); + +} + +/*=====================================*/ +int CaloDM_ID::init_tile_hashes(void) +/*=====================================*/ +{ + // Msg Service + MsgStream log(m_msgSvc, "CaloDM_ID" ); + std::string strg; + std::stringstream strm; + + // zone hash + m_tile_zone_hash_max = m_full_tile_zone_range.cardinality(); + m_tile_zone_vec.resize(m_tile_zone_hash_max); + unsigned int nids = 0; + std::set<Identifier> ids; + for (unsigned int i = 0; i < m_full_tile_zone_range.size(); ++i) { + const Range& range = m_full_tile_zone_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier zon_id = zone_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_DMAT_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] , + exp_id[m_ETA_INDEX] , + exp_id[m_PHI_INDEX] ) ; + /* + std::cout << "detZside,dmat,samp,reg,eta,phi= " + <<exp_id[m_DETZSIDE_INDEX] << ", " + <<exp_id[m_DMAT_INDEX] << ", " + <<exp_id[m_SAMPLING_INDEX] << ", " + <<exp_id[m_REGION_INDEX] << ", " + <<exp_id[m_ETA_INDEX] << ", " + <<exp_id[m_PHI_INDEX]; + std::cout << std::endl; + std::cout << "tile zon_id= " << show_to_string(zon_id) << std::endl; + */ + if(!(ids.insert(zon_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_tile_hashes " + << " duplicated id for tiledm id. nids= " << nids + << " compact Id " << show_to_string(zon_id) + << endreq; + } + else + { + std::cout << " CaloDM_ID::init_tile_hashes " + << " Error: duplicated id for tiledm id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_tile_zone_hash_max) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_tile_hashes " + << " set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_tile_zone_hash_max << endreq; + } + else + { + std::cout << " CaloDM_ID::init_tile_hashes " + << " Error: set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_tile_zone_hash_max + << std::endl; + } + return (1); + } + + nids=0; + std::set<Identifier>::const_iterator first = ids.begin(); + std::set<Identifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_tile_zone_vec.size(); ++first) { + m_tile_zone_vec[nids] = (*first) ; + nids++; + } + + // region hash + m_tile_region_hash_max = m_full_tile_region_range.cardinality(); + m_tile_region_vec.resize(m_tile_region_hash_max); + nids = 0; + ids.clear(); + for (unsigned int i = 0; i < m_full_tile_region_range.size(); ++i) { + const Range& range = m_full_tile_region_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + // std::cout << "exp_id = " << (std::string)exp_id << std::endl; + Identifier reg_id = region_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_DMAT_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); + if(!(ids.insert(reg_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_tile_hashes (regions) " + << " duplicated id for region id. nids= " << nids + << " compact Id " << show_to_string(reg_id) + << endreq; + } + else + { + std::cout << " CaloDM_ID::init_tile_hashes (regions) " + << " Error: duplicated id for region id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << " " << show_to_string(reg_id) << std::endl; + std::cout << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_tile_region_hash_max) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_tile_hashes " + << " set size NOT EQUAL to region hash max. size " << ids.size() + << " region hash max " << m_tile_region_hash_max << endreq; + } + else + { + std::cout << " CaloDM_ID::init_tile_hashes " + << " Error: set size NOT EQUAL to region hash max. size " << ids.size() + << " region hash max " << m_tile_region_hash_max + << std::endl; + } + return (1); + } + + nids=0; + first = ids.begin(); + last = ids.end(); + for (;first != last && nids < m_tile_region_vec.size(); ++first) { + m_tile_region_vec[nids] = (*first) ; + nids++; + } + + return (0); + +} + + diff --git a/Calorimeter/CaloIdentifier/src/CaloIDHelper.cxx b/Calorimeter/CaloIdentifier/src/CaloIDHelper.cxx new file mode 100644 index 0000000000000000000000000000000000000000..66e477acfd08caa32ed2e88f50e0adb98b66ee78 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloIDHelper.cxx @@ -0,0 +1,275 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/CaloIDHelper.cxx + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Base class to factor out code common among Calo ID helpers. + */ + + +#include "CaloIdentifier/CaloIDHelper.h" +#include "IdDict/IdDictDefs.h" +#include "Identifier/Range.h" +#include "GaudiKernel/MsgStream.h" +#include "boost/foreach.hpp" + + + +/** + * @brief Constructor. + * Starts in an uninitialized state. + */ +CaloIDHelper::HashGroup::HashGroup () + : m_end_index(99999) +{ +} + + +/** + * @brief Initialize. + * @param name Name of this group (only for error reporting). + * @param ids Set of Identifiers comprising this group. + * @param end_index The ending index for the context for this group. + * @parma msgSvc The global message service + * (may be 0, only for error reporting). + * @param full_range The @c MultiRange corresponding to this group. + * If supplied, the side of the @c ids set is checked + * against the range's cardinality. + * @return 0 on success; non-zero on failure. + */ +int CaloIDHelper::HashGroup::init (const std::string& name, + const std::set<Identifier>& ids, + size_type end_index, + IMessageSvc* msgSvc, + const MultiRange* full_range) +{ + m_end_index = end_index; + if (full_range && full_range->cardinality() != ids.size()) { + MsgStream log (msgSvc, "CaloIDHelper"); + log << MSG::ERROR << name << " set size " << ids.size() + << " not equal to hash max " << full_range->cardinality() << endreq; + return 1; + } + m_id_vec.assign (ids.begin(), ids.end()); + return 0; +} + + +/** + * @brief Look up the hash code corresponding ot an Identifier. + * Uses binary search. + * @param id The identifier to look up. + * @param[out] hash_id The corresponding hash code. + * @return 0 if the Identifier was found; non-zero otherwise. + */ +int CaloIDHelper::HashGroup::get_hash (Identifier id, + IdentifierHash& hash_id) const +{ + std::vector<Identifier>::const_iterator it = std::lower_bound(m_id_vec.begin(),m_id_vec.end(),id); + if ( it != m_id_vec.end() ){ + hash_id = it - m_id_vec.begin(); + return 0; + } + return 1; +} + + +/** + * @brief Return the context for this group. + */ +IdContext CaloIDHelper::HashGroup::context() const +{ + ExpandedIdentifier id; + return IdContext (id, 0, m_end_index); +} + + +//************************************************************************* + + +/** + * @brief Constructor. Makes an uninitialized helper. + * To initialize, call @c initialize_base_from_dictionary, + * followed by @c init_channels and @c init_regions. + * @param name Name of this helper (for error reporting). + */ +CaloIDHelper::CaloIDHelper (const std::string& name) + : m_name (name), + m_dict(0) +{ +} + + +/** + * @brief Convert a hash code to an Identifier for either channels or regions, + * depending on the context. + * If you know the context at compile-time, @c channel_id and + * @c region_id will be faster (but they don't do range checking). + * @param hash_id The hash code to convert. + * @param[out] id The resulting Identifier. Will be invalid if there + * was an error. + * @param context The context in which to do the conversion + * (specifies whether we want channels or regions). + * @return 0 for success, non-zero for failure (unrecognized context, + * or hash code out of range). + */ +int CaloIDHelper::get_id (const IdentifierHash& hash_id, + Identifier& id, + const IdContext* context ) const +{ + int result = 1; + id.clear(); + + size_t begin = (context) ? context->begin_index(): 0; + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + const HashGroup* hg = 0; + if (m_channels.end_index() == end) hg = &m_channels; + else if (m_regions.end_index() == end) hg = &m_regions; + + if (hg) { + if (hash_id < hg->hash_max()) { + id = hg->id (hash_id); + result = 0; + } + } + } + + return(result); +} + + +/** + * @brief Convert an Identifier to a hash code for either channels or regions, + * depending on the context. + * Uses binary search. + * Some of the subdetector-specific helpers define faster + * versions of @c channel_hash and @c region_hash (that, + * however, do less checking). + * @param id The identifier to convert. + * @param[out] hash_id The resulting hash code. Will be invalid if there + * was an error. + * @param context The context in which to do the conversion + * (specifies whether we want channels or regions). + * @return 0 for success, non-zero for failure (unrecognized context + * or Identifier. + */ +int CaloIDHelper::get_hash (const Identifier& id, IdentifierHash& hash_id, const IdContext* context ) const +{ + hash_id = IdentifierHash(); + + size_t begin = (context) ? context->begin_index(): 0; + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + const HashGroup* hg = 0; + if (m_channels.end_index() == end) hg = &m_channels; + else if (m_regions.end_index() == end) hg = &m_regions; + + if (hg) + return hg->get_hash (id, hash_id); + } + + return 1; +} + + +/** + * @brief Return the eta granularity of a region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ +float CaloIDHelper::etaGranularity(const IdentifierHash regHash) const +{ + if (regHash >= m_vecOfDictRegions.size()) return NOT_VALID; + return m_vecOfDictRegions[regHash]->m_deta; +} + + +/** + * @brief Return the phi granularity of a region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ +float CaloIDHelper::phiGranularity(const IdentifierHash regHash) const +{ + if (regHash >= m_vecOfDictRegions.size()) return NOT_VALID; + return 2. * M_PI / m_vecOfDictRegions[regHash]->m_dphi ; +} + + +/** + * @brief Return the minimum eta of region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ +float CaloIDHelper::eta0(const IdentifierHash regHash) const +{ + if (regHash >= m_vecOfDictRegions.size()) return NOT_VALID; + return (m_vecOfDictRegions[regHash]->m_eta0); +} + + +/** + * @brief Return the minimum phi of region, or @c NOT_VALID. + * @param regHash REGION hash code. + */ +float CaloIDHelper::phi0(const IdentifierHash regHash) const +{ + if (regHash >= m_vecOfDictRegions.size()) return NOT_VALID; + return (m_vecOfDictRegions[regHash]->m_phi0); +} + + +/** + * @brief Do basic initialization of the helper. + * @param dict_mgr The dictionary manager returned from the parser. + * @param dict_name The dictionary name (eg, `LArCalorimeter'). + * @return 0 on success, non-zero on failure. + */ +int +CaloIDHelper::initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& dict_name) +{ + // init base object + if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)) return (1); + + // Register version of dictionary + if (register_dict_tag(dict_mgr, dict_name)) return(1); + + m_dict = dict_mgr.find_dictionary (dict_name); + if(!m_dict) { + MsgStream log(m_msgSvc, "CaloIDHelper" ); + log << MSG::ERROR << " cannot access " << dict_name << "dictionary" + << endreq; + return 1; + } + return 0; +} + + +/** + * @brief Initialize the list of detector regions. + * @c init_regions should have been called first. + * @param group_name The group for this helper. + * @return 0 on success; non-zero on failure. + */ +int +CaloIDHelper::fill_vec_of_dict_regions (const std::string& group_name /*= ""*/) +{ + m_vecOfDictRegions.clear(); + m_vecOfDictRegions.reserve (regions().hash_max()); + IdContext region_cntxt = region_context(); + ExpandedIdentifier expRegId; + BOOST_FOREACH (Identifier id, regions().range()) { + if(!get_expanded_id(id, expRegId, ®ion_cntxt)) { + m_vecOfDictRegions.push_back (m_dict->find_region(expRegId,group_name)); + } + } + assert (m_vecOfDictRegions.size() == regions().hash_max()); + return 0; +} + + diff --git a/Calorimeter/CaloIdentifier/src/CaloID_Exception.cxx b/Calorimeter/CaloIdentifier/src/CaloID_Exception.cxx new file mode 100755 index 0000000000000000000000000000000000000000..f485e21f222004ccc801ec8255d715cfef5fabeb --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloID_Exception.cxx @@ -0,0 +1,39 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/CaloID_Exception.h" +#include "CxxUtils/StrFormat.h" + +using CxxUtils::strformat; + + +CaloID_Exception::CaloID_Exception() : +m_message("No error message") , m_code( 999 ) +{ } + +CaloID_Exception::CaloID_Exception(std::string lMessage , int lCode) : +m_message ( lMessage ) , m_code ( lCode ) +{ } + +void CaloID_Exception::message(std::string lMessage) +{ m_message = lMessage ;} + +std::string CaloID_Exception::message() const +{ return m_message;} + +void CaloID_Exception::code(int lCode) +{ m_code = lCode ;} + +int CaloID_Exception::code() const +{ return m_code;} + +CaloID_Exception::operator std::string () + +{ + return + strformat ("CaloID_Exception - Error code: %d \n ", this->code()) + + this->message(); +} + +CaloID_Exception:: ~CaloID_Exception() {} diff --git a/Calorimeter/CaloIdentifier/src/CaloIdManager.cxx b/Calorimeter/CaloIdentifier/src/CaloIdManager.cxx new file mode 100755 index 0000000000000000000000000000000000000000..6a3a2d93ad5d41dcb8b5ea6ecc36d43759dc7040 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloIdManager.cxx @@ -0,0 +1,308 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Calorimeter identifier package + ----------------------------------------- + Copyright (C) 2003 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: CaloIdManager.cxx,v 1.3 2007-02-08 16:18:23 prieur Exp $ +//<version> $Name: not supported by cvs2svn $ + + +// Calo includes +#include "CaloIdentifier/CaloIdManager.h" +#include "CaloIdentifier/CaloCell_ID.h" +#include "CaloIdentifier/CaloLVL1_ID.h" +#include "CaloIdentifier/LArEM_ID.h" +#include "CaloIdentifier/LArFCAL_ID.h" +#include "CaloIdentifier/LArMiniFCAL_ID.h" +#include "CaloIdentifier/LArHEC_ID.h" +#include "CaloIdentifier/TileID.h" +#include "CaloIdentifier/TTOnlineID.h" +#include "CaloIdentifier/CaloCell_SuperCell_ID.h" +#include "CaloIdentifier/LArEM_SuperCell_ID.h" +#include "CaloIdentifier/LArHEC_SuperCell_ID.h" +#include "CaloIdentifier/LArFCAL_SuperCell_ID.h" +#include "CaloIdentifier/Tile_SuperCell_ID.h" + +// Athena/Gaudi includes +#include "GaudiKernel/Bootstrap.h" +#include "GaudiKernel/ISvcLocator.h" +#include "GaudiKernel/IMessageSvc.h" +#include "StoreGate/StoreGateSvc.h" + +CaloIdManager * CaloIdManager::s_instance = 0; + +CaloIdManager::CaloIdManager(void) + : + m_isInitialized(false), + m_cell_id(0), + m_dm_id(0), + m_lvl1_id(0), + m_em_id(0), + m_fcal_id(0), + m_minifcal_id(0), + m_hec_id(0), + m_tile_id(0), + m_ttonline_id(0), + m_cell_supercell_id(0), + m_em_supercell_id(0), + m_hec_supercell_id(0), + m_fcal_supercell_id(0), + m_tile_supercell_id(0) +{ +} + +CaloIdManager::~CaloIdManager(void) +{ +} + + +const CaloIdManager* +CaloIdManager::instance (void) +{ + if (s_instance == 0) { + + // The following code can be removed once all useage the singleton has + // been removed and replaced by accessing this object via the transient + // detector store. Use the instance that's in the transient detector + // store if it exists. Otherwise create a new instance, register it in + // the store and return that. First, locate the StoreGate instance that's + // managing the transient detector store. + + StoreGateSvc* detStore = 0; + IMessageSvc* msgSvc; + const CaloIdManager* theMgr; + + ISvcLocator* svcLoc = Gaudi::svcLocator( ); + StatusCode status = svcLoc->service( "MessageSvc", msgSvc ); + + if ( status.isSuccess( ) ) { + + MsgStream log(msgSvc, "CaloIdManager" ); + status = svcLoc->service( "DetectorStore", detStore ); + + if ( status.isSuccess( ) ) { + + // Test whether the instance already exists in the transient + // detector store + if ( detStore->contains<CaloIdManager>("CaloIdManager") ) { + + // The instance already exists - retrieve it and save it locally. + + status = detStore->retrieve( theMgr ); + if ( status.isSuccess( ) ) { + s_instance = const_cast<CaloIdManager*>(theMgr); + } + else + { + log << MSG::ERROR << " Failed to retrieve CaloIdManager " << endreq; + } + } + + } else { + log << MSG::ERROR << "Could not locate DetectorStore" << endreq; + } + + } else { + std::cerr << "CaloIdManager: Could not locate the MessageSvc!!!" + << std::endl; + } + + if (s_instance == 0) { + s_instance = new CaloIdManager; + + // Register this instance in the transient detector store if it + // hasn't already been done. + if ( 0 != detStore ) { + status = detStore->record( s_instance, "CaloIdManager" ); + if ( ! status.isSuccess( ) ) { + std::cerr << "CaloIdManager: Failed to record CaloIdManager " + << std::endl; + } + } + } + + } + + return s_instance; +} + + +const CaloCell_ID* +CaloIdManager::getCaloCell_ID (void) const +{ + return (m_cell_id); +} + +const CaloDM_ID* +CaloIdManager::getDM_ID (void) const +{ + return (m_dm_id); +} + +const CaloLVL1_ID* +CaloIdManager::getLVL1_ID (void) const +{ + return (m_lvl1_id); +} +const LArEM_ID* +CaloIdManager::getEM_ID (void) const +{ + return (m_em_id); +} +const LArFCAL_ID* +CaloIdManager::getFCAL_ID (void) const +{ + return (m_fcal_id); +} +const LArMiniFCAL_ID* +CaloIdManager::getMiniFCAL_ID (void) const +{ + return (m_minifcal_id); +} +const LArHEC_ID* +CaloIdManager::getHEC_ID (void) const +{ + return (m_hec_id); +} +const TileID* +CaloIdManager::getTileID (void) const +{ + return (m_tile_id); +} +const TTOnlineID* +CaloIdManager::getTTOnlineID (void) const +{ + return (m_ttonline_id); +} +const CaloCell_SuperCell_ID* +CaloIdManager::getCaloCell_SuperCell_ID(void) const +{ + return (m_cell_supercell_id); +} +const LArEM_SuperCell_ID* +CaloIdManager::getEM_SuperCell_ID (void) const +{ + return (m_em_supercell_id); +} +const LArHEC_SuperCell_ID* +CaloIdManager::getHEC_SuperCell_ID (void) const +{ + return (m_hec_supercell_id); +} +const LArFCAL_SuperCell_ID* +CaloIdManager::getFCAL_SuperCell_ID (void) const +{ + return (m_fcal_supercell_id); +} +const Tile_SuperCell_ID* +CaloIdManager::getTile_SuperCell_ID (void) const +{ + return (m_tile_supercell_id); +} + + +void +CaloIdManager::initialize (void) +{ + m_isInitialized = true; +} + +bool +CaloIdManager::isInitialized (void) const +{ + return (m_isInitialized); +} + + +void +CaloIdManager::set_helper (const CaloCell_ID* idHelper) +{ + m_cell_id = idHelper; +} + +void +CaloIdManager::set_helper (const CaloDM_ID* idHelper) +{ + m_dm_id = idHelper; +} + +void +CaloIdManager::set_helper (const CaloLVL1_ID* idHelper) +{ + m_lvl1_id = idHelper; +} + +void +CaloIdManager::set_helper (const LArEM_ID* idHelper) +{ + m_em_id = idHelper; +} + +void +CaloIdManager::set_helper (const LArFCAL_ID* idHelper) +{ + m_fcal_id = idHelper; +} + +void +CaloIdManager::set_helper (const LArMiniFCAL_ID* idHelper) +{ + m_minifcal_id = idHelper; +} + +void +CaloIdManager::set_helper (const LArHEC_ID* idHelper) +{ + m_hec_id = idHelper; +} + +void +CaloIdManager::set_helper (const TileID* idHelper) +{ + m_tile_id = idHelper; +} +void + +CaloIdManager::set_helper (const TTOnlineID* idHelper) +{ + m_ttonline_id = idHelper; +} + +void +CaloIdManager::set_helper (const CaloCell_SuperCell_ID* idHelper) +{ + m_cell_supercell_id = idHelper; +} + + +void +CaloIdManager::set_helper (const LArEM_SuperCell_ID* idHelper) +{ + m_em_supercell_id = idHelper; +} + + +void +CaloIdManager::set_helper (const LArHEC_SuperCell_ID* idHelper) +{ + m_hec_supercell_id = idHelper; +} + + +void +CaloIdManager::set_helper (const LArFCAL_SuperCell_ID* idHelper) +{ + m_fcal_supercell_id = idHelper; +} + + +void +CaloIdManager::set_helper (const Tile_SuperCell_ID* idHelper) +{ + m_tile_supercell_id = idHelper; +} diff --git a/Calorimeter/CaloIdentifier/src/CaloLVL1_ID.cxx b/Calorimeter/CaloIdentifier/src/CaloLVL1_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..82393b830ff67e77e7ca77ee1d2a66af67a72e5a --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloLVL1_ID.cxx @@ -0,0 +1,1343 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/CaloLVL1_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "CxxUtils/StrFormat.h" +#include "GaudiKernel/MsgStream.h" +#include <algorithm> +#include <string> +#include <set> +#include <stdio.h> +#include <iostream> +#include <math.h> +#include <assert.h> + + +using CxxUtils::strformat; + + +CaloLVL1_ID::CaloLVL1_ID(void) : + m_lvl1_region_index(0) + , m_CALO_INDEX(999) + , m_DETZSIDE_INDEX(999) + , m_SAMPLING_INDEX(999) + , m_REGION_INDEX(999) + , m_ETA_INDEX(999) + , m_PHI_INDEX(999) + , m_LAYER_INDEX(999) + , m_dict(0) + , m_tower_hash_max(0) + , m_layer_hash_max(0) + , m_region_hash_max(0) + +{ + +} + +CaloLVL1_ID:: ~CaloLVL1_ID(){} + + + +IdContext +CaloLVL1_ID::region_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_REGION_INDEX)); +} + +IdContext +CaloLVL1_ID::tower_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_PHI_INDEX)); +} + +IdContext +CaloLVL1_ID::layer_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_LAYER_INDEX)); +} + + + +int CaloLVL1_ID::get_id (const IdentifierHash& hash_id, Identifier& id, const IdContext* context) const +{ + MsgStream log(m_msgSvc, "CaloLVL1_ID" ); + std::stringstream strm; + std::string strg; + int result = 1; + id.clear(); + + size_t begin = (context) ? context->begin_index(): 0; + // cannot get hash if end is 0: + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + if (m_REGION_INDEX == end) { + if (hash_id < (unsigned int)(m_region_vec.end() - m_region_vec.begin())) + { + id = m_region_vec[hash_id]; + result = 0; + } + else + { + strm << hash_id; + strg = " hash_id out of range "+strm.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + } + } + else if (m_PHI_INDEX == end) { + if (hash_id < (unsigned int)(m_tower_vec.end() - m_tower_vec.begin())) { + id = m_tower_vec[hash_id]; + result = 0; + } + else + { + strm << hash_id; + strg = " hash_id out of range "+strm.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + } + } + else if(m_LAYER_INDEX == end) { + if (hash_id < (unsigned int)(m_layer_vec.end() - m_layer_vec.begin())) { + id = m_layer_vec[hash_id]; + result = 0; + } + else + { + strm << hash_id; + strg = " hash_id out of range "+strm.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + } + } + } + return(result); +} + +int CaloLVL1_ID::get_hash (const Identifier& id, IdentifierHash& hash_id, const IdContext* context) const +{ + hash_id = 0; + int result = 1; + + size_t begin = (context) ? context->begin_index(): 0; + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + if (m_REGION_INDEX == end) { + Identifier redId = region_id (id); + std::vector<Identifier>::const_iterator it = std::lower_bound(m_region_vec.begin(),m_region_vec.end(),redId); + if ( it != m_region_vec.end() ){ + hash_id = it - m_region_vec.begin(); + result = 0; + } + } + else if (m_PHI_INDEX == end) { + + Identifier redId = tower_id (id); + + std::vector<Identifier>::const_iterator it = std::lower_bound(m_tower_vec.begin(),m_tower_vec.end(),redId); + if ( it != m_tower_vec.end() ){ + hash_id = it - m_tower_vec.begin(); + result = 0; + } + } + else if (m_LAYER_INDEX == end) { + + std::vector<Identifier>::const_iterator it = std::lower_bound(m_layer_vec.begin(),m_layer_vec.end(),id); + if ( it != m_layer_vec.end() ){ + hash_id = it - m_layer_vec.begin(); + result = 0; + } + } + + else { + std::string errorMessage = + "Error in CaloLVL1_ID::get_hash, invalid context "; + throw CaloID_Exception(errorMessage , 10); + } + } + + return (result); +} + + + + +int CaloLVL1_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +{ + MsgStream log(m_msgSvc, "CaloLVL1_ID" ); + std::string strg = "initialize_from_dictionary"; + if(m_msgSvc) { + log << MSG::INFO << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + std::stringstream strm; + std::stringstream strm1; + std::stringstream strm2; + std::string strg1; + std::string strg2; + + // init base object + if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)) return (1); + + // Register version of the Calorimeter dictionary + if (register_dict_tag(dict_mgr, "Calorimeter")) return(1); + + m_dict = dict_mgr.find_dictionary ("Calorimeter"); + if(!m_dict) + { + strg= " initialize_from_dict - cannot access LVL1Calorimeter dictionary "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return(1); + } + + // Initialize the field indices + if(initLevelsFromDict()) return (1); + + + // Find values for the calo and LVL1 (neg) fields + int caloValue = -1; + if (m_dict->get_label_value("subdet", "Calorimeter", caloValue)) + { + strm << m_dict->m_name; + strg= "Could not get value for label 'Calorimeter' of field 'subdet' in dictionary "+strm.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + int lvl1CaloValue = -1; + // negative half + // if (m_dict->get_label_value("DetZside", "negative_lvl1_side", lvl1CaloValue)) + // positive half FLG 12 Jul 07: negative side -> problem for test beam + if (m_dict->get_label_value("DetZside", "positive_lvl1_side", lvl1CaloValue)) + { + strm << m_dict->m_name; + // strg = " Could not get value for label 'negative_lvl1_side' of field 'DetZside in dictionary"+strm.str(); + strg = " Could not get value for label 'positive_lvl1_side' of field 'DetZside in dictionary"+strm.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + // Set up id for region and range prefix + // NOTE: negative value is good enough to get multirange since the + // regions are symmetric in +/-eta + // FLG Jul 07: EXCEPT FOR CTB !!!!!!!!!! + + ExpandedIdentifier reg_id; + reg_id.add(caloValue); + reg_id.add(lvl1CaloValue); + Range prefix; + m_full_region_range = m_dict->build_multirange(reg_id, prefix, "region"); + m_full_tower_range = m_dict->build_multirange(reg_id, prefix, "phi"); + m_full_layer_range = m_dict->build_multirange(reg_id, prefix); + + // Setup the hash tables + if(init_hashes()) return (1); + + // Setup hash tables for finding neighbors + if(init_neighbors()) return (1); + + strm1 << (std::string)m_full_tower_range; + strm2 << (std::string)m_full_layer_range; + strg = " CaloLVL1_ID::initialize_from_dict : "; + strg1 = " tower range -> "+strm1.str(); + strg2 = " layer range -> "+strm2.str(); + if(m_msgSvc) + { + log << MSG::DEBUG << strg << endreq; + log << MSG::DEBUG << strg1 << endreq; + log << MSG::DEBUG << strg2 << endreq; + } + else + { + std::cout << strg << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + } + + //std::cout << " CaloLVL1_ID::initialize_from_dict : " + // << std::endl; + //std::cout << " tower range -> " << (std::string)m_full_tower_range + // << std::endl; + //std::cout << " layer range -> " << (std::string)m_full_layer_range + // << std::endl; + + + // Setup for hash calculation + + // Regions have uniform eta/phi granularity + // The lookup table only needs to contain the + // hash offset for each region, the first eta index + // and the number of phi cells. + + // The implementation requires: + + // 1) a lookup table for each region containing hash offset, + // etamin and nphi + // 2) a decoder to access the "index" corresponding to the + // pnz/samp/reg fields. These fields use 6 bits, so the + // vector has a length of 64 for 16 regions. + + + // Create decoder for fields pnz to region + IdDictFieldImplementation::size_type bits = + m_lvl1_impl.bits() + + m_sampling_impl.bits() + + m_region_impl.bits(); + IdDictFieldImplementation::size_type bits_offset = m_lvl1_impl.bits_offset(); + m_pnz_reg_impl.set_bits(bits, bits_offset); + int size = (1 << bits); + +// std::cout << "pnz_reg " +// << m_pnz_reg_impl.show_to_string() << std::endl; +// std::cout << "size " << size << std::endl; + + + // std::cout << "pnz_reg " << m_pnz_reg_impl.decode_index() << " " + // << (std::string)m_pnz_reg_impl.ored_field() << " " + // << std::hex << m_pnz_reg_impl.mask() << " " + // << m_pnz_reg_impl.zeroing_mask() << " " + // << std::dec << m_pnz_reg_impl.shift() + // << " " << m_pnz_reg_impl.bits() << " " <<m_pnz_reg_impl.bits_offset() + // << std::endl; + + + // Set up vector as lookup table for hash calculation. + m_hash_calcs.resize(size); + + for (unsigned int i = 0; i < m_region_hash_max; ++i) { + + Identifier regId = region_id(i) ; + + HashCalc hc; + + int etamin = eta_min(regId); + Identifier min = tower_id ( regId, etamin, 0); + IdentifierHash min_hash = tower_hash_binary_search(min); + hc.m_hash = min_hash; + hc.m_etamin = etamin; + hc.m_nphi = phi_max(min)+1 ; + m_hash_calcs[m_pnz_reg_impl.unpack(min)] = hc; + + if (m_pnz_reg_impl.unpack(min) >= size) + { + strm << size; + strm1 << show_to_string(min); + strm2 << m_pnz_reg_impl.unpack(min); + strg = "Min > "+strm.str(); + strg1= " "+strm1.str(); + strg2= " "+strm2.str(); + if(m_msgSvc) + { + log << MSG::DEBUG << strg << endreq; + log << MSG::DEBUG << strg1 << endreq; + log << MSG::DEBUG << strg2 << endreq; + } + else + { + std::cout << strg << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + } + //std::cout << "min > " << size << " " + // << i << " " + // << show_to_string(min) << " " + // << m_pnz_reg_impl.unpack(min) << " " + // << std::endl; + } + } + + // Check hash calculation + for (unsigned int i = 0; i < m_tower_hash_max; ++i) { + Identifier id = tower_id(i); + if (tower_hash(id) != i) + { + strm << show_to_string(id); + strm1 << tower_hash(id); + strm2 << i; + strg = " ***** Error tower ranges, id, hash, i = "+strm.str(); + strg1= " , "+strm1.str(); + strg2= " , "+strm2.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg2 << endreq; + } + else + { + std::cout << strg << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + } + + //std::cout << "tower ranges, id, hash, i = " + // << show_to_string(id) << ", " + // << tower_hash(id) << ", " + // << i + // << std::endl; + } + } + + return 0; + +} + + + + +int CaloLVL1_ID::eta_min(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_tower_range.size(); ++i) { + const Range& range = m_full_tower_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int CaloLVL1_ID::eta_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_tower_range.size(); ++i) { + const Range& range = m_full_tower_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int CaloLVL1_ID::phi_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_tower_range.size(); ++i) { + const Range& range = m_full_tower_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + +int CaloLVL1_ID::layer_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_layer_range.size(); ++i) { + const Range& range = m_full_layer_range[i]; + if (range.match(expId)) { + const Range::field& lay_field = range[m_LAYER_INDEX]; + if (lay_field.has_maximum()) { + int laymax = lay_field.get_maximum(); + if (result < laymax) result = laymax; + } + } + } + return (result); + } + return (-999); // default +} + +int +CaloLVL1_ID::get_prev_in_phi(const IdentifierHash& id, IdentifierHash& prev) const +{ + unsigned short index = id; + if (index < m_prev_phi_vec.size()) { + if (m_prev_phi_vec[index] == NOT_VALID_HASH) return (1); + prev = m_prev_phi_vec[index]; + return (0); + } + return (1); +} + +int +CaloLVL1_ID::get_next_in_phi(const IdentifierHash& id, IdentifierHash& next) const +{ + unsigned short index = id; + if (index < m_next_phi_vec.size()) { + if (m_next_phi_vec[index] == NOT_VALID_HASH) return (1); + next = m_next_phi_vec[index]; + return (0); + } + return (1); +} + +int +CaloLVL1_ID::get_prev_in_eta(const IdentifierHash& id, IdentifierHash& prev) const +{ + unsigned short index = id; + if (index < m_prev_eta_vec.size()) { + if (m_prev_eta_vec[index] == NOT_VALID_HASH) return (1); + prev = m_prev_eta_vec[index]; + return (0); + } + return (1); +} + +int +CaloLVL1_ID::get_next_in_eta(const IdentifierHash& id, IdentifierHash& next) const +{ + unsigned short index = id; + if (index < m_next_eta_vec.size()) { + if (m_next_eta_vec[index] == NOT_VALID_HASH) return (1); + next = m_next_eta_vec[index]; + return (0); + } + return (1); +} + + + int CaloLVL1_ID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << calo_field_value() + << pos_neg_z(id) + << sampling(id) + << region(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if(context->end_index() >= m_LAYER_INDEX) { + exp_id << layer(id); + } + } + } + return (0); +} + +void CaloLVL1_ID::tower_id_checks ( int pos_neg_z, int sampling, int region, + int eta, int phi ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << sampling << region << eta << phi; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloLVL1_ID::tower_id(field values), did not build, " + + strformat("pos_neg_z: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg_z, sampling, region, eta, phi); + throw CaloID_Exception(errorMessage , 2); + } + + if (!m_full_tower_range.match(id)) { + std::string errorMessage = "CaloLVL1_ID::tower_id() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_tower_range; + throw CaloID_Exception(errorMessage , 2); + } +} + + +void CaloLVL1_ID::tower_id_checks ( const Identifier regionId, + int eta, int phi ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id; + + IdContext context = region_context(); + if (get_expanded_id(regionId, id, &context)) { + std::string errorMessage = "CaloLVL1_ID::tower_id(regionId) result is not OK: ID= " + + show_to_string(regionId) ; + throw CaloID_Exception(errorMessage , 2); + } + + id << eta << phi; + + if( id.last_error () != ExpandedIdentifier::none) { + + std::string errorMessage = + "Error in CaloLVL1_ID::tower_id(regionId,field values), values ok but did not build, " + + strformat ("eta: %d , phi: %d ", + eta, phi); + throw CaloID_Exception(errorMessage , 2); + } + + + if (!m_full_tower_range.match(id)) { + std::string errorMessage = "CaloLVL1_ID::tower_id(regionId,field values) result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_tower_range; + throw CaloID_Exception(errorMessage , 2); + } +} + +void CaloLVL1_ID::region_id_checks (int pos_neg_z, int sampling, int region)const + throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << sampling << region ; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloLVL1_ID::region_id(field values), did not build, " + + strformat ("pos_neg_z: %d , sampling: %d, region: %d ", + pos_neg_z , sampling , region); + throw CaloID_Exception(errorMessage , 2); + } + + if (!m_full_region_range.match(id)) { + std::string errorMessage = "CaloLVL1_ID::region_id() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_region_range; + throw CaloID_Exception(errorMessage , 2); + } +} + +void CaloLVL1_ID::layer_id_checks ( int pos_neg_z, int sampling, int region, + int eta, int phi, int layer ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << pos_neg_z << sampling << region << eta << phi << layer; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloLVL1_ID::layer_id(field values), did not build, " + + strformat ("pos_neg_z: %d , sampling: %d, region: %d , eta: %d , phi: %d , layer: %d ", + pos_neg_z , sampling , region, eta, phi, layer); + throw CaloID_Exception(errorMessage , 2); + } + + if (!m_full_layer_range.match(id)) { + std::string errorMessage = "CaloLVL1_ID::layer_id(field values) result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_layer_range; + throw CaloID_Exception(errorMessage , 2); + } +} + +void CaloLVL1_ID::layer_id_checks ( const Identifier towerId, + int layer ) const throw(CaloID_Exception) +{ + // Fill expanded id + ExpandedIdentifier id; + + IdContext context = layer_context(); + if (get_expanded_id(towerId, id, &context)) { + std::string errorMessage = "CaloLVL1_ID::layer_id(towerId, layer) result is not OK: ID= " + + show_to_string(towerId) ; + throw CaloID_Exception(errorMessage , 2); + } + + id << layer; + + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in CaloLVL1_ID::layer_id(towerId,layer), values ok but did not build, " + + strformat ("layer: %d ", layer); + throw CaloID_Exception(errorMessage , 2); + } + + if (!m_full_layer_range.match(id)) { + std::string errorMessage = "CaloLVL1_ID::layer_id(towerId) result is not OK: ID, range = " + + (std::string)id + " , " + (std::string)m_full_layer_range; + throw CaloID_Exception(errorMessage , 2); + } +} + + +int CaloLVL1_ID::initLevelsFromDict(void) +{ + MsgStream log(m_msgSvc, "CaloLVL1_ID" ); + std::stringstream strm; + std::stringstream strm1; + std::stringstream strm2; + std::stringstream strm3; + std::stringstream strm4; + std::stringstream strm5; + std::stringstream strm6; + std::stringstream strm7; + std::string strg; + std::string strg1; + std::string strg2; + std::string strg3; + std::string strg4; + std::string strg5; + std::string strg6; + std::string strg7; + if(!m_dict) + { + strg= "initLevelsFromDict - dictionary NOT initialized "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_CALO_INDEX = 999 ; + m_DETZSIDE_INDEX = 999 ; + m_SAMPLING_INDEX = 999 ; + m_REGION_INDEX = 999 ; + m_ETA_INDEX = 999 ; + m_PHI_INDEX = 999 ; + m_LAYER_INDEX = 999 ; + + // Save index to a LVL1 region for unpacking - search with region name + IdDictRegion* reg = m_dict->find_region("Lvl1_0"); + if (reg) + { + m_lvl1_region_index = reg->m_index; + } + else + { + strg = "initLevelsFromDict - unable to find lvl1 region "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + // Fing a LVL1 region + IdDictField* field = m_dict->find_field("subdet") ; + if (field) { + m_CALO_INDEX = field->m_index ; + } + else + { + strg= "initLevelsFromDict - unable to find 'subdet' field "; + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + field = m_dict->find_field("DetZside") ; + if (field) { + m_DETZSIDE_INDEX = field->m_index ; + } + else + { + strg= "initLevelsFromDict - unable to find 'DetZside' field "; + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + field = m_dict->find_field("LVL1sampling") ; + if (field) { + m_SAMPLING_INDEX = field->m_index ; + } + else + { + strg= "initLevelsFromDict - unable to find 'LVL1sampling' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + field = m_dict->find_field("region") ; + if (field) { + m_REGION_INDEX = field->m_index ; + } + else + { + + strg="initLevelsFromDict - unable to find 'region' field "; + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + /* std::cout << "m_region= " << m_REGION_INDEX << std::endl; */ + + field = m_dict->find_field("eta") ; + if (field) { + m_ETA_INDEX = field->m_index ; + } + else + { + strg= "initLevelsFromDict - unable to find 'eta' field "; + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + field = m_dict->find_field("phi") ; + if (field) { + m_PHI_INDEX = field->m_index ; + } + else + { + + strg= "initLevelsFromDict - unable to find 'phi' field "; + if(m_msgSvc) + { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + field = m_dict->find_field("layer") ; + if (field) { + m_LAYER_INDEX = field->m_index ; + } + else + { + strg= "initLevelsFromDict - unable to find 'layer' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << strg << std::endl; + } + return (1); + } + + // Set the field implementations + + const IdDictRegion& region = *m_dict->m_regions[m_lvl1_region_index]; + + m_calo_impl = region.m_implementation[m_CALO_INDEX]; + m_lvl1_impl = region.m_implementation[m_DETZSIDE_INDEX]; + m_sampling_impl = region.m_implementation[m_SAMPLING_INDEX]; + m_region_impl = region.m_implementation[m_REGION_INDEX]; + m_eta_impl = region.m_implementation[m_ETA_INDEX]; + m_phi_impl = region.m_implementation[m_PHI_INDEX]; + m_layer_impl = region.m_implementation[m_LAYER_INDEX]; + + strm1 << m_calo_impl.show_to_string(); + strm2 << m_lvl1_impl.show_to_string(); + strm3 << m_sampling_impl.show_to_string(); + strm4 << m_region_impl.show_to_string(); + strm5 << m_eta_impl.show_to_string(); + strm6 << m_phi_impl.show_to_string(); + strm7 << m_layer_impl.show_to_string(); + strg = "decode index and bit fields for each level: "; + strg1= "calo "+strm1.str(); + strg2= "detzside "+strm2.str(); + strg3= "samp "+strm3.str(); + strg4= "reg "+strm4.str(); + strg5= "eta "+strm5.str(); + strg6= "phi "+strm6.str(); + strg7= "layer "+strm7.str(); + if(m_msgSvc) + { + log << MSG::DEBUG << strg << endreq; + log << MSG::DEBUG << strg1 << endreq; + log << MSG::DEBUG << strg2 << endreq; + log << MSG::DEBUG << strg3 << endreq; + log << MSG::DEBUG << strg4 << endreq; + log << MSG::DEBUG << strg5 << endreq; + log << MSG::DEBUG << strg6 << endreq; + log << MSG::DEBUG << strg7 << endreq; + } + else + { + std::cout << strg << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + std::cout << strg3 << std::endl; + std::cout << strg4 << std::endl; + std::cout << strg5 << std::endl; + std::cout << strg6 << std::endl; + std::cout << strg7 << std::endl; + } + + return(0) ; +} + + +int CaloLVL1_ID::init_hashes(void) +{ + MsgStream log(m_msgSvc, "CaloLVL1_ID" ); + std::stringstream strm; + std::stringstream strm1; + std::stringstream strm2; + std::string strg; + std::string strg1; + std::string strg2; + // tower hash + m_tower_hash_max = m_full_tower_range.cardinality(); + m_tower_vec.resize(m_tower_hash_max); + unsigned int nids = 0; + std::set<Identifier> ids; + for (unsigned int i = 0; i < m_full_tower_range.size(); ++i) { + const Range& range = m_full_tower_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier tow_id = tower_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] , + exp_id[m_ETA_INDEX] , + exp_id[m_PHI_INDEX] ) ; + if(!(ids.insert(tow_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_hashes " + << " duplicated id for TT id. nids= " << nids + << " compact Id " << endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_hashes " + << " Error: duplicated id for TT id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << " " << show_to_string(tow_id) << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_tower_hash_max) + { + if( m_msgSvc) + { + log << MSG::ERROR << " init_hashes " + << " set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_tower_hash_max + << endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_hashes " + << " Error: set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_tower_hash_max + << std::endl; + } + return (1); + } + + nids=0; + std::set<Identifier>::const_iterator first = ids.begin(); + std::set<Identifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_tower_vec.size(); ++first) { + m_tower_vec[nids] = (*first) ; + nids++; + } + + // layer hash + m_layer_hash_max = m_full_layer_range.cardinality(); + m_layer_vec.resize(m_layer_hash_max); + nids = 0; + ids.clear(); + for (unsigned int i = 0; i < m_full_layer_range.size(); ++i) + { + const Range& range = m_full_layer_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) + { + const ExpandedIdentifier& exp_id = (*first); + Identifier lay_id = layer_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] , + exp_id[m_ETA_INDEX] , + exp_id[m_PHI_INDEX] , + exp_id[m_LAYER_INDEX] ); + if(!(ids.insert(lay_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_hashes " + << " duplicated id for extended TT id. nids= " << nids + << " compact Id " << show_to_string(lay_id) << endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_hashes " + << " Error: duplicated id for extended TT id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << show_to_string(lay_id) << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_layer_hash_max) + { + if( m_msgSvc) + { + log << MSG::ERROR << " init_hashes " + << " set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_layer_hash_max + << endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_hashes " + << " Error: set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << m_layer_hash_max + << std::endl; + } + return (1); + } + + nids=0; + first = ids.begin(); + last = ids.end(); + for (;first != last && nids < m_layer_vec.size(); ++first) { + m_layer_vec[nids] = (*first) ; + nids++; + } + + + // region hash + m_region_hash_max = m_full_region_range.cardinality(); + m_region_vec.resize(m_region_hash_max); + nids = 0; + ids.clear(); + for (unsigned int i = 0; i < m_full_region_range.size(); ++i) { + const Range& range = m_full_region_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier reg_id = region_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); + if(!(ids.insert(reg_id)).second) + { + if(m_msgSvc) + { + log << MSG::ERROR << " LArEM_ID::init_hashes " + << " duplicated id for region id. nids= " << nids + << " compact Id " << endreq; + } + else + { + std::cout << " LArEM_ID::init_hashes " + << " Error: duplicated id for region id. nids= " << nids + << " compact Id " ; + (*first).show(); + std::cout << " " << show_to_string(reg_id) << std::endl; + std::cout << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_region_hash_max) + { + if(m_msgSvc) + { + log << MSG::ERROR << " LArEM_ID::init_hashes " + << " set size NOT EQUAL to region hash max. size " << ids.size() + << " region hash max " << m_region_hash_max + << endreq; + } + else + { + std::cout << " LArEM_ID::init_hashes " + << " Error: set size NOT EQUAL to region hash max. size " << ids.size() + << " region hash max " << m_region_hash_max + << std::endl; + } + return (1); + } + nids=0; + first = ids.begin(); + last = ids.end(); + for (;first != last && nids < m_region_vec.size(); ++first) { + m_region_vec[nids] = (*first) ; + nids++; + } + + return (0); +} + + + +int CaloLVL1_ID::init_neighbors(void) +{ + MsgStream log(m_msgSvc, "CaloLVL1_ID" ); + // std::cout << " CaloLVL1_ID::init_neighbors " << std::endl; + // std::cout << " m_tower_hash_max, NOT_VALID_HASH = " << m_tower_hash_max << " " << NOT_VALID_HASH << std::endl; + + m_prev_phi_vec.resize(m_tower_hash_max, NOT_VALID_HASH); + m_next_phi_vec.resize(m_tower_hash_max, NOT_VALID_HASH); + m_prev_eta_vec.resize(m_tower_hash_max, NOT_VALID_HASH); + m_next_eta_vec.resize(m_tower_hash_max, NOT_VALID_HASH); + for (unsigned int i = 0; i < m_full_tower_range.size(); ++i) { + const Range& range = m_full_tower_range[i]; + const Range::field& eta_field = range[m_ETA_INDEX]; + const Range::field& phi_field = range[m_PHI_INDEX]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + ExpandedIdentifier::element_type previous_eta; + ExpandedIdentifier::element_type next_eta; + ExpandedIdentifier::element_type previous_phi; + ExpandedIdentifier::element_type next_phi; + bool peta = eta_field.get_previous(exp_id[m_ETA_INDEX], previous_eta); + bool neta = eta_field.get_next (exp_id[m_ETA_INDEX], next_eta); + bool pphi = phi_field.get_previous(exp_id[m_PHI_INDEX], previous_phi); + bool nphi = phi_field.get_next (exp_id[m_PHI_INDEX], next_phi); + + IdContext tcontext = tower_context(); + + // Get and save region id to speed things up + Identifier reg_id = region_id ( exp_id[m_DETZSIDE_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX] ); + + // First get primary hash id + IdentifierHash hash_id; + Identifier id = tower_id (reg_id, + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); + if (get_hash(id, hash_id,&tcontext)) + { + if( m_msgSvc ) + { + log << MSG::ERROR << " init_neighbors - unable to get hash, compact = " << endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_neighbors - unable to get hash, compact = "; + exp_id.show(); + std::cout << std::endl; + } + return (1); + } + + // index for the subsequent arrays + unsigned short index = hash_id; + assert (hash_id < m_prev_phi_vec.size()); + assert (hash_id < m_next_phi_vec.size()); + assert (hash_id < m_prev_eta_vec.size()); + assert (hash_id < m_next_eta_vec.size()); + + if (pphi) { + // Get previous phi hash id + id = tower_id (reg_id, + exp_id[m_ETA_INDEX], + previous_phi); + // forward to compact -> hash + if (get_hash(id, hash_id,&tcontext)) + { + if( m_msgSvc ) + { + log << MSG::ERROR << " init_neighbors - unable to get previous phi hash, exp/compact " << endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_neighbors - unable to get previous phi hash, exp/compact "; + exp_id.show(); + std::cout << " " + << std::endl; + } + return (1); + } + m_prev_phi_vec[index] = hash_id; + } + + if (nphi) { + // Get next phi hash id + id = tower_id (reg_id, + exp_id[m_ETA_INDEX], + next_phi); + // forward to compact -> hash + if (get_hash(id, hash_id,&tcontext)) + { + if(m_msgSvc) + { + log << MSG::ERROR << " init_neighbors - unable to get next phi hash, exp/compact "<<endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_neighbors - unable to get next phi hash, exp/compact "; + exp_id.show(); + std::cout << " " + << std::endl; + } + return (1); + } + m_next_phi_vec[index] = hash_id; + } + if (peta) { + // Get previous eta hash id + id = tower_id (reg_id, + previous_eta, + exp_id[m_PHI_INDEX]); + // forward to compact -> hash + if (get_hash(id, hash_id,&tcontext)) + { + if( m_msgSvc ) + { + log << MSG::ERROR << " init_neighbors - unable to get previous eta hash, exp/compact "<< endreq; + } + else + { + std::cout << " CaloLVL1_ID::init_neighbors - unable to get previous eta hash, exp/compact "; + exp_id.show(); + std::cout << " " + << std::endl; + } + return (1); + } + m_prev_eta_vec[index] = hash_id; + } + + if (neta) { + // Get next eta hash id + id = tower_id (reg_id, + next_eta, + exp_id[m_PHI_INDEX]); + // forward to compact -> hash + if (get_hash(id, hash_id,&tcontext)) + { + if( m_msgSvc ) + { + log << MSG::ERROR << " init_neighbors - unable to get next eta hash, exp/compact "; + } + else + { + std::cout << " CaloLVL1_ID::init_neighbors - unable to get next eta hash, exp/compact "; + exp_id.show(); + std::cout << " " + << std::endl; + } + return (1); + } + m_next_eta_vec[index] = hash_id; + } // end neta cond + } // end loop on identifiers + } // end loop on ranges + return (0); +} + + diff --git a/Calorimeter/CaloIdentifier/src/CaloNeighbours.cxx b/Calorimeter/CaloIdentifier/src/CaloNeighbours.cxx new file mode 100755 index 0000000000000000000000000000000000000000..ca2bd808565314c0175c66d8244a72fef631ccd8 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/CaloNeighbours.cxx @@ -0,0 +1,516 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +//----------------------------------------------------------------------- +// File and Version Information: +// $Id: CaloNeighbours.cxx,v 1.2 2006-04-28 12:08:07 menke Exp $ +// +// Description: see CaloNeighbours.h +// +// Environment: +// Software developed for the ATLAS Detector at CERN LHC +// +// Author List: +// Sven Menke +// +//----------------------------------------------------------------------- + +//----------------------- +// This Class's Header -- +//----------------------- +#include "CaloIdentifier/CaloNeighbours.h" +//--------------- +// C++ Headers -- +//--------------- +#include <fstream> +#include <iomanip> +#include <iostream> +#include <iterator> +#include <sstream> + +#include "Identifier/ExpandedIdentifier.h" +#include "Identifier/Identifier.h" +#include "Identifier/IdentifierHash.h" +#include "Identifier/Range.h" +#include "PathResolver/PathResolver.h" + +#define MAX_BUFFER_LEN 1024 + +//############################################################################### + +CaloNeighbourRegion::CaloNeighbourRegion(const std::string name, + const CaloCell_Base_ID *theCaloId) : + m_type(nextInCalo), + m_calo_id(0), + m_hasPhi(false), + m_iPhiSource(0), + m_iPhiTarget(0), + m_hasSide(false), + m_iSideSource(0), + m_iSideTarget(0), + m_isValidMinus(false), + m_isValidPlus(false) +{ + m_name = name; + m_calo_id = theCaloId; +} + +//############################################################################### + +CaloNeighbourRegion::~CaloNeighbourRegion() +{ + std::vector< std::vector<IdentifierHash>* >::iterator nIter = m_neighbours_plus.begin(); + std::vector< std::vector<IdentifierHash>* >::iterator nIterEnd = m_neighbours_plus.end(); + for(; nIter != nIterEnd; nIter++ ) { + if ( (*nIter) ) { + delete (*nIter); + (*nIter) = 0; + } + } + nIter = m_neighbours_minus.begin(); + nIterEnd = m_neighbours_minus.end(); + for(; nIter != nIterEnd; nIter++ ) { + if ( (*nIter) ) { + delete (*nIter); + (*nIter) = 0; + } + } +} + +//############################################################################### + +void CaloNeighbourRegion::setType(const NEIGHBOURTYPE type) +{ + m_type = type; +} + +//############################################################################### + +void CaloNeighbourRegion::setSourceRange(const Range & theRange) +{ + m_sourceRange = theRange; + for(unsigned int i=0;i<theRange[SIDE].get_indices();i++) { + if ( theRange[SIDE].get_value_at(i) < 0 ) + m_isValidMinus = true; + else + m_isValidPlus = true; + } +} + +//############################################################################### + +void CaloNeighbourRegion::setTargetRange(const Range & theRange) +{ + m_targetRange = theRange; +} + +//############################################################################### + +void CaloNeighbourRegion::setSide(const int side1, const int side2) +{ + m_hasSide = true; + m_iSideSource = side1; + m_iSideTarget = side2; +} + +//############################################################################### + +void CaloNeighbourRegion::setPhi(const int phi1, const int phi2) +{ + m_hasPhi = true; + m_iPhiSource = phi1; + m_iPhiTarget = phi2; + +} + +//############################################################################### + +int CaloNeighbourRegion::getId(ExpandedIdentifier& id, Identifier &rID, const Range &theRange, const int side, const int dphi) const +{ + // modify id for side and phi + // ExpandedIdentifier id(oid); + if ( m_hasSide && side != 1 ) + id[SIDE] = side*id[SIDE]; + if ( m_hasPhi && dphi != 0 ) { + if ( m_calo_id->is_lar_em(id) || m_calo_id->is_lar_hec(id) ) + id[PHI] = id[PHI]+dphi; + else if ( m_calo_id->is_lar_fcal(id) ) + id[FCALPHI] = id[FCALPHI]+dphi; + else + id[TILEPHI] = id[TILEPHI]+dphi; + } + + // first check if id is in the specified range + if ( !theRange.match(id) ) { + std::cout << "CaloNeighbours::set_neighbours ERROR: " << (std::string)id << " is not within the Range " << (std::string)theRange << std::endl; + return 1; + } + + CaloCell_ID::SUBCALO subCalo; + if ( m_calo_id->is_lar_em(id) ) { + subCalo = CaloCell_ID::LAREM; + rID = m_calo_id->cell_id(subCalo, + id[SIDE], + id[SAMPL], + id[REGION], + id[ETA], + id[PHI]); + } + else if ( m_calo_id->is_lar_hec(id) ) { + subCalo = CaloCell_ID::LARHEC; + rID = m_calo_id->cell_id(subCalo, + id[SIDE], + id[SAMPL], + id[REGION], + id[ETA], + id[PHI]); + } + else if ( m_calo_id->is_lar_fcal(id) ) { + subCalo = CaloCell_ID::LARFCAL; + rID = m_calo_id->cell_id(subCalo, + id[SIDE], + id[SAMPL], + 0, + id[FCALETA], + id[FCALPHI]); + } + else if ( m_calo_id->is_tile(id) ) { + subCalo = CaloCell_ID::TILE; + rID = m_calo_id->cell_id(subCalo, + id[TILESECTION], + id[SIDE], + id[TILEPHI], + id[TILEETA], + id[TILESAMPL]); + } + else { + std::cout << "CaloNeighbours::get_id ERROR: " << (std::string)id << " is not in the LAr or Tile calorimeters" << std::endl; + return 1; + } + return 0; +} + +//############################################################################### + +int CaloNeighbourRegion::setNeighbours(ExpandedIdentifier& id1, + std::vector<ExpandedIdentifier>& id2, + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapPlus, + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapMinus) +{ + int result = 0; + + // build an Identifier from the ExpandedIdentifier + int nMaxSides=1; + int nMaxPhi=1; + float rPhi=1; + if ( m_hasSide ) + nMaxSides = 2; + if ( m_hasPhi ) { + nMaxPhi = m_sourceRange[m_iPhiSource].get_indices(); + rPhi = ((float)m_targetRange[m_iPhiTarget].get_indices())/((float)nMaxPhi); + } + + for (int theSide = 0;theSide<nMaxSides;theSide++) { + for (int theDPhi = 0;theDPhi<nMaxPhi;theDPhi++) { + int side = +1; + int dphi2 = (int)(theDPhi*rPhi+0.05); + if ( theSide > 0 ) { + side = -1; + } + // only continous region mapping in phi is supported - + // therefore theDPhi = delta phi ... + Identifier myId; + ExpandedIdentifier myExpID(id1); + if ( getId(myExpID,myId,m_sourceRange,side,theDPhi) ) { + return 1; + } + // get hash ID's for the source + IdentifierHash myHash = m_calo_id->calo_cell_hash (myId); + // get ID's and hash ID's for the target + std::vector<ExpandedIdentifier>::const_iterator idIter = id2.begin(); + std::vector<ExpandedIdentifier>::const_iterator idIterEnd = id2.end(); + std::vector<IdentifierHash> theTargetHashIDs; + for ( ; idIter != idIterEnd; idIter++ ) { + Identifier myTargetId; + ExpandedIdentifier myNExpID(*idIter); + if ( getId(myNExpID,myTargetId,m_targetRange,side,dphi2) ) { + return 1; + } + // get hash ID's for the target + IdentifierHash myTargetHash = m_calo_id->calo_cell_hash (myTargetId); + theTargetHashIDs.push_back(myTargetHash); + } + if ( id1[SIDE]*side > 0 ) { + neighbourMapPlus[myHash] = theTargetHashIDs; + } + else { + neighbourMapMinus[myHash] = theTargetHashIDs; + } + } + } + return result; +} + +//############################################################################### + +void CaloNeighbourRegion::initializeVectors(std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapPlus, std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>& neighbourMapMinus) +{ + if ( m_isValidMinus ) { + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>::const_iterator first = neighbourMapMinus.begin(); + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>::const_iterator end = neighbourMapMinus.end(); + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>::const_reverse_iterator last = neighbourMapMinus.rbegin(); + m_minHashMinus = (*first).first; + m_maxHashMinus = (*last).first; + m_neighbours_minus.resize((unsigned int)(m_maxHashMinus-m_minHashMinus+1),0); + for(;first != end;first++) { + m_neighbours_minus[(unsigned int)((*first).first-m_minHashMinus)] = new std::vector<IdentifierHash>((*first).second); + } + } + if ( m_isValidPlus ) { + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>::const_iterator first = neighbourMapPlus.begin(); + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>::const_iterator end = neighbourMapPlus.end(); + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash>::const_reverse_iterator last = neighbourMapPlus.rbegin(); + m_minHashPlus = (*first).first; + m_maxHashPlus = (*last).first; + m_neighbours_plus.resize((unsigned int)(m_maxHashPlus-m_minHashPlus+1),0); + for(;first != end;first++) { + m_neighbours_plus[(unsigned int)((*first).first-m_minHashPlus)] = new std::vector<IdentifierHash>((*first).second); + } + } + +} + +//############################################################################### + +int CaloNeighbourRegion::getNeighbours(const IdentifierHash caloHash, std::vector<IdentifierHash>& neighbourList) const +{ + int result = 0; + + if ( m_isValidMinus && caloHash >= m_minHashMinus && caloHash <= m_maxHashMinus && m_neighbours_minus[(unsigned int)(caloHash-m_minHashMinus)] ) { + neighbourList.insert(neighbourList.end(), + m_neighbours_minus[(unsigned int)(caloHash-m_minHashMinus)]->begin(), + m_neighbours_minus[(unsigned int)(caloHash-m_minHashMinus)]->end()); + } + else if ( m_isValidPlus && caloHash >= m_minHashPlus && caloHash <= m_maxHashPlus && m_neighbours_plus[(unsigned int)(caloHash-m_minHashPlus)] ) { + neighbourList.insert(neighbourList.end(), + m_neighbours_plus[(unsigned int)(caloHash-m_minHashPlus)]->begin(), + m_neighbours_plus[(unsigned int)(caloHash-m_minHashPlus)]->end()); + } + + return result; +} + + +//############################################################################### + +CaloNeighbours::CaloNeighbours() : + m_calo_id(0) +{ } + +//############################################################################### + +CaloNeighbours::~CaloNeighbours() +{ + std::vector<CaloNeighbourRegion*>::iterator rIter = m_next_regions.begin(); + std::vector<CaloNeighbourRegion*>::iterator rIterEnd = m_next_regions.end(); + for(; rIter != rIterEnd; rIter++ ) { + if ((*rIter)) { + delete (*rIter); + (*rIter) = 0; + } + } + + rIter = m_prev_regions.begin(); + rIterEnd = m_prev_regions.end(); + for(; rIter != rIterEnd; rIter++ ) { + if ((*rIter)) { + delete (*rIter); + (*rIter) = 0; + } + } +} + +//############################################################################### + +int CaloNeighbours::initialize(const CaloCell_Base_ID* caloID, + std::string filename) +{ + int result =0; + // std::cout << " CaloNeighbours::initialize " << std::endl; + m_calo_id = caloID; + m_next_regions.resize(0); + m_prev_regions.resize(0); + // Find the full path to filename: + std::string file = PathResolver::find_file (filename, "DATAPATH"); + // std::cout << "Reading file " << file << std::endl; + std::ifstream fin; + if (file != "") { + fin.open(file.c_str()); + } + else { + std::cout << "CaloNeighbours::initialize ERROR Could not find input file " << filename << std::endl; + return 1; + } + if (fin.bad()) { + std::cout << "CaloNeighbours::initialize ERROR Could not open file " << file << std::endl; + return 1; + } + + // + // Parse the input file + // + + char aLine[MAX_BUFFER_LEN],dummy; + std::string sLine; + std::string cPrevOrNext,cName,cSourceRange,cTargetRange; + std::string cExpId; + Range mySourceRange,myTargetRange; + std::string oArg; + bool isComment = true; + bool isNext = false; + bool isPrev = false; + const std::string cmdNext("nextSuperCalo"); + const std::string cmdPrev("prevSuperCalo"); + const std::string cmdPhi("calcPhi("); + const std::string cmdSide("calcSide("); + + while( isComment ) { + sLine.resize( 0 ); + do { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + } while (sLine == "" && !fin.eof()); + isComment = ( sLine.find("#") != std::string::npos ); + } + do { + while ( sLine == "" && !fin.eof()) { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + } + std::istringstream header( sLine.c_str() ); + bool hasPhi=false; + bool hasSide=false; + int iPhiSource,iPhiTarget; + int iSideSource,iSideTarget; + if ( header >> cPrevOrNext >> cName >> cSourceRange >> cTargetRange) { + mySourceRange.build(cSourceRange); + myTargetRange.build(cTargetRange); + while ( header >> oArg ) { + if (oArg.find(cmdSide) != std::string::npos ) { + hasSide = true; + oArg.erase(0,cmdSide.size()); + std::istringstream iside( oArg.c_str() ); + iside >> iSideSource >> dummy >> iSideTarget; + } + else if ( oArg.find(cmdPhi) != std::string::npos ) { + hasPhi = true; + oArg.erase(0,cmdPhi.size()); + std::istringstream iphi( oArg.c_str() ); + iphi >> iPhiSource >> dummy >> iPhiTarget; + } + } + sLine.resize(0); + bool endOfBlock = false; + isNext = (cPrevOrNext.find(cmdNext) != std::string::npos); + isPrev = (cPrevOrNext.find(cmdPrev) != std::string::npos); + if ( isNext^isPrev ) { +// std::cout << (isNext?cmdNext:cmdPrev) << " " +// << cName << " " +// << (std::string)mySourceRange << " " +// << (std::string)myTargetRange; +// if ( hasSide ) { +// std::cout << " hasSide(" << iSideSource << "," << iSideTarget << ")"; +// } +// if ( hasPhi ) { +// std::cout << " hasPhi(" << iPhiSource << "," << iPhiTarget << ")"; +// } +// std::cout << std::endl; + // create new CaloNeighbourRegion + CaloNeighbourRegion * myRegion = new CaloNeighbourRegion(cName,m_calo_id); + if ( isNext ) + myRegion->setType(nextInCalo); + else + myRegion->setType(prevInCalo); + if ( hasSide ) + myRegion->setSide(iSideSource,iSideTarget); + if ( hasPhi ) + myRegion->setPhi(iPhiSource,iPhiTarget); + myRegion->setSourceRange(mySourceRange); + myRegion->setTargetRange(myTargetRange); + // create temporary neighbour maps + std::map<IdentifierHash, std::vector<IdentifierHash>, ltIdHash> neighbourMapPlus,neighbourMapMinus; + + do { + while ( !endOfBlock && sLine == "" && !fin.eof()) { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + if ( sLine == "" || fin.eof() ) + endOfBlock = true; + } + if (!endOfBlock) { + std::istringstream neighbour( sLine.c_str() ); + ExpandedIdentifier myCell,myNeighbourCell; + std::vector<ExpandedIdentifier> myNeighbourCells; + if ( neighbour >> cExpId ) { + myCell = ExpandedIdentifier(cExpId); + // std::cout << (std::string)myCell << ":"; + while ( neighbour >> cExpId ) { + myNeighbourCell = ExpandedIdentifier(cExpId); + // std::cout << " " << (std::string)myNeighbourCell; + myNeighbourCells.push_back(myNeighbourCell); + } + // std::cout << std::endl; + sLine.resize(0); + result = myRegion->setNeighbours(myCell,myNeighbourCells,neighbourMapPlus,neighbourMapMinus); + if ( result != 0 ) + return result; + } + } + } while (!fin.eof() && !endOfBlock); + myRegion->initializeVectors(neighbourMapPlus,neighbourMapMinus); + if (isNext) + m_next_regions.push_back(myRegion); + else + m_prev_regions.push_back(myRegion); + } + else { + std::cout << "CaloNeighbours::initialize ERROR Invalid neighbour dat file, exiting ... " << std::endl; + return 1; + } + } + }while (!fin.eof()) ; + fin.close(); + + return 0; +} + +//############################################################################### + +int CaloNeighbours::get_nextInCalo(const IdentifierHash &id,std::vector<IdentifierHash>& neighbourList) const +{ + return get_neighbours(id,m_next_regions,neighbourList); +} + +//############################################################################### + +int CaloNeighbours::get_prevInCalo(const IdentifierHash &id,std::vector<IdentifierHash>& neighbourList) const +{ + return get_neighbours(id,m_prev_regions,neighbourList); +} + +//############################################################################### + +int CaloNeighbours::get_neighbours(const IdentifierHash &id, const std::vector<CaloNeighbourRegion*> ®ions, std::vector<IdentifierHash>& neighbourList) const +{ + int result = 0; + std::vector<CaloNeighbourRegion*>::const_iterator rIter = regions.begin(); + std::vector<CaloNeighbourRegion*>::const_iterator rIterEnd = regions.end(); + for(; rIter != rIterEnd; rIter++ ) { + result = (*rIter)->getNeighbours(id,neighbourList); + if ( result != 0 ) + return result; + } + return result; +} + diff --git a/Calorimeter/CaloIdentifier/src/LArEM_Base_ID.cxx b/Calorimeter/CaloIdentifier/src/LArEM_Base_ID.cxx new file mode 100644 index 0000000000000000000000000000000000000000..6a83e252711eb00f722df721a7aa9d06fd41731c --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArEM_Base_ID.cxx @@ -0,0 +1,1703 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/LArEM_Base_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Aug, 2012 + * @brief Factor out code common between LArEM_ID and LArEM_SuperCell_ID. + */ + +#include "CaloIdentifier/LArEM_Base_ID.h" +#include "LArEM_region.h" +#include "IdDict/IdDictDefs.h" +#include "CxxUtils/StrFormat.h" + +using CxxUtils::strformat; + + +LArEM_Base_ID::LArEM_Base_ID (const std::string& name, bool supercell) + : CaloIDHelper (name), + m_slar (supercell ? 1 : 0) +{ + m_REGION_INDEX = 999; + m_ETA_INDEX = 999; + m_PHI_INDEX = 999; + m_SLAR_INDEX = 999; + m_LAR_INDEX = 999; + m_EM_INDEX = 999; + m_BEC_INDEX = 999; + m_SAMPLING_INDEX = 999; + m_em_region_index = 0; + m_two_sym_sides = 1; +} + + +LArEM_Base_ID::~LArEM_Base_ID(void) +{ + std::vector<LArEM_region*>::iterator first = m_vecOfRegions.begin(); + std::vector<LArEM_region*>::iterator last = m_vecOfRegions.end(); + for (; first != last; ++first) delete (*first); +} + + +bool LArEM_Base_ID::is_connected ( int barrel_ec, int sampling, int region, int eta, int phi ) const throw(LArID_Exception) +{ + bool result = false; + + // Fill expanded id + ExpandedIdentifier expId(lar_em_exp()); + expId << barrel_ec << sampling << region << eta << phi << m_slar; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArEM_Base_ID::is_connected(field values), " + + strformat ("barrel_ec: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + barrel_ec , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 6); + } + + if (m_full_em_range.match(expId)) { + result = true; + } + return (result); +} + +bool LArEM_Base_ID::is_disconnected ( int barrel_ec, int sampling, int region, int eta, int phi ) const throw(LArID_Exception) +{ + bool result = false; + + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -1 << barrel_ec << sampling << region << eta << phi << m_slar; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArEM_Base_ID::is_disconnected(field values), " + + strformat ("barrel_ec: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + barrel_ec , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 6); + } + + if (m_full_disc_em_range.match(expId)) { + result = true; + } + return (result); +} + + +bool LArEM_Base_ID::is_supercell (const Identifier id)const +{ + return(m_slar_impl.unpack(id)) != 0; +} + + +int LArEM_Base_ID::eta_min(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext context = region_context(); + if(!get_expanded_id(regId, expId, &context)) { + int result = -999; + for (unsigned int i = 0; i < m_full_em_range.size(); ++i) { + const Range& range = m_full_em_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int LArEM_Base_ID::eta_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext context = region_context(); + if(!get_expanded_id(regId, expId, &context)) { + int result = -999; + for (unsigned int i = 0; i < m_full_em_range.size(); ++i) { + const Range& range = m_full_em_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArEM_Base_ID::phi_min_init(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_em_range.size(); ++i) { + const Range& range = m_full_em_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_minimum()) { + int phimin = phi_field.get_minimum(); + if (-999 == result) { + result = phimin; + } + else { + if (phimin < result) result = phimin; + } + } + } + } + return (result); + } + return (-999); // default +} + +int LArEM_Base_ID::phi_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext context = region_context(); + if(!get_expanded_id(regId, expId, &context)) { + int result = -999; + for (unsigned int i = 0; i < m_full_em_range.size(); ++i) { + const Range& range = m_full_em_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArEM_Base_ID::disc_eta (const Identifier id)const +{ + return(m_eta_impl.unpack(id)); +} + +int LArEM_Base_ID::disc_phi (const Identifier id)const +{ + return(m_phi_impl.unpack(id)); +} + +void LArEM_Base_ID::region_id_checks ( int barrel_ec, int sampling, int region ) const throw(LArID_Exception) +{ + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(lar_em_exp()); + expId << barrel_ec << sampling << region ; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArEM_Base_ID::region_id_checks, " + + strformat ("barrel_ec: %d , sampling: %d, region: %d ", + barrel_ec , sampling , region); + throw LArID_Exception(errorMessage , 5); + } + + if (!m_full_region_range.match(expId)) { + std::string errorMessage = "LArEM_Base_ID::region_id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw LArID_Exception(errorMessage , 5); + } +} + + +void LArEM_Base_ID::channel_id_checks ( int barrel_ec, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception) +{ + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(lar_em_exp()); + expId << barrel_ec << sampling << region << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArEM_Base_ID::channel_id_checks(field values), " + + strformat ("barrel_ec: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + barrel_ec , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 6); + } + + if (!m_full_em_range.match(expId)) { + std::string errorMessage = "LArEM_Base_ID::channel_id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_em_range; + throw LArID_Exception(errorMessage , 6); + } +} + +void LArEM_Base_ID::channel_id_checks ( const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception) +{ + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = region_context(); + if (get_expanded_id(regionId, expId, &context)) { + std::string errorMessage = "LArEM_Base_ID::channel_id_checks(regId) result is not OK: ID = " + + show_to_string(regionId) ; + throw LArID_Exception(errorMessage , 6); + } + + expId << eta << phi << m_slar; + + if (!m_full_em_range.match(expId)) { + std::string errorMessage = "LArEM_Base_ID::channel_id_checks(regId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_em_range; + throw LArID_Exception(errorMessage , 6); + } +} + + +void LArEM_Base_ID::disc_region_id_checks ( int barrel_ec, int sampling, int region ) const throw(LArID_Exception) +{ + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -1 << barrel_ec << sampling << region; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArEM_Base_ID::region_id_checks, " + + strformat ("barrel_ec: %d , sampling: %d, region: %d ", + barrel_ec , sampling , region); + throw LArID_Exception(errorMessage , 5); + } + + if (!m_full_disc_region_range.match(expId)) { + std::string errorMessage = "LArEM_Base_ID::region_id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_region_range; + throw LArID_Exception(errorMessage , 5); + } +} + + +void LArEM_Base_ID::disc_channel_id_checks ( int barrel_ec, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception) +{ + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -1 << barrel_ec << sampling << region << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArEM_Base_ID::disc_channel_id_checks(field values), " + + strformat ("barrel_ec: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + barrel_ec , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 6); + } + + if (!m_full_disc_em_range.match(expId)) { + std::string errorMessage = "LArEM_Base_ID::disc_channel_id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_em_range; + throw LArID_Exception(errorMessage , 6); + } +} + +void LArEM_Base_ID::disc_channel_id_checks ( const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception) +{ + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = region_context(); + if (get_disc_expanded_id(regionId, expId, &context)) { + std::string errorMessage = "LArEM_Base_ID::disc_channel_id_checks(regId) result is not OK: ID = " + + show_to_string(regionId) ; + throw LArID_Exception(errorMessage , 6); + } + + expId << eta << phi << m_slar; + + if (!m_full_disc_em_range.match(expId)) { + std::string errorMessage = "LArEM_Base_ID::disc_channel_id_checks(regId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_em_range; + throw LArID_Exception(errorMessage , 6); + } +} + + +int LArEM_Base_ID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << lar_em_field_value() + << barrel_ec(id) + << sampling(id) + << region(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if ( context->end_index() >= m_SLAR_INDEX) { + exp_id << (unsigned)is_supercell(id); + } + } + } + return (0); +} + + +int LArEM_Base_ID::get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << -1 + << barrel_ec(id) + << sampling(id) + << region(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if (context->end_index() >= m_SLAR_INDEX) { + exp_id << (unsigned)is_supercell(id); + } + } + } + return (0); +} + + +int LArEM_Base_ID::initLevelsFromDict (const std::string& group_name) +{ + MsgStream log(m_msgSvc, "LArEM_Base_ID" ); + if(!dict()) { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - dictionary NOT initialized " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - dictionary NOT initialized " + << std::endl ; + } + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_LAR_INDEX = 999 ; + m_EM_INDEX = 999 ; + m_BEC_INDEX = 999 ; + m_SAMPLING_INDEX = 999 ; + m_REGION_INDEX = 999 ; + m_ETA_INDEX = 999 ; + m_PHI_INDEX = 999 ; + m_SLAR_INDEX = 999 ; + + // Find a EM region + IdDictField* field = dict()->find_field("subdet") ; + if (field) { + m_LAR_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'subdet' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'subdet' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("part") ; + if (field) { + m_EM_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'part' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'part' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("barrel-endcap") ; + if (field) { + m_BEC_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'barrel-endcap' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'barrel-endcap' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("sampling") ; + if (field) { + m_SAMPLING_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'sampling' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'sampling' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("region") ; + if (field) { + m_REGION_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'region' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'region' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("eta") ; + if (field) { + m_ETA_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'eta' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'eta' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("phi") ; + if (field) { + m_PHI_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'phi' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'phi' field " + << std::endl ; + } + return (1); + } + + field = dict()->find_field("is-slar") ; + if (field) { + m_SLAR_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'is-slar' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'is-slar' field " + << std::endl ; + } + return (1); + } + + // Set the field implementations + + IdDictGroup* group = dict()->find_group(group_name); + if ( !group ){ + log << MSG::ERROR << "initLevelsFromDict - cannot find " << group_name + << " group' field " << endreq; + } + else { + m_em_region_index = group->regions()[0]->m_index; + } + const IdDictRegion& region = *dict()->m_regions[m_em_region_index]; + + m_lar_impl = region.m_implementation[m_LAR_INDEX]; + m_em_impl = region.m_implementation[m_EM_INDEX]; + m_bec_impl = region.m_implementation[m_BEC_INDEX]; + m_sampling_impl = region.m_implementation[m_SAMPLING_INDEX]; + m_region_impl = region.m_implementation[m_REGION_INDEX]; + m_eta_impl = region.m_implementation[m_ETA_INDEX]; + m_phi_impl = region.m_implementation[m_PHI_INDEX]; + m_slar_impl = region.m_implementation[m_SLAR_INDEX]; + + if(m_msgSvc) { + log << MSG::DEBUG << "decode index and bit fields for each level: " << endreq; + log << MSG::DEBUG << "lar " << m_lar_impl.show_to_string() << endreq; + log << MSG::DEBUG << "em " << m_em_impl.show_to_string() << endreq; + log << MSG::DEBUG << "bec " << m_bec_impl.show_to_string() << endreq; + log << MSG::DEBUG << "samp " << m_sampling_impl.show_to_string() << endreq; + log << MSG::DEBUG << "reg " << m_region_impl.show_to_string() << endreq; + log << MSG::DEBUG << "eta " << m_eta_impl.show_to_string() << endreq; + log << MSG::DEBUG << "phi " << m_phi_impl.show_to_string() << endreq; + log << MSG::DEBUG << "is-slar " << m_slar_impl.show_to_string() << endreq; + } + else { + std::cout << "decode index and bit fields for each level: " << std::endl; + std::cout << "lar " << m_lar_impl.show_to_string() << std::endl; + std::cout << "em " << m_em_impl.show_to_string() << std::endl; + std::cout << "bec " << m_bec_impl.show_to_string() << std::endl; + std::cout << "samp " << m_sampling_impl.show_to_string() << std::endl; + std::cout << "reg " << m_region_impl.show_to_string() << std::endl; + std::cout << "eta " << m_eta_impl.show_to_string() << std::endl; + std::cout << "phi " << m_phi_impl.show_to_string() << std::endl; + std::cout << "is-slar " << m_slar_impl.show_to_string() << std::endl; + } + + + return(0) ; +} + + +int LArEM_Base_ID::init_hashes(void) +{ + if (channels().init (*this, "channels", + m_full_em_range, &LArEM_Base_ID::channel_id, + m_SLAR_INDEX)) + return 1; + if (regions().init (*this, "regions", + m_full_region_range, &LArEM_Base_ID::region_id, + m_REGION_INDEX)) + return 1; + + return (0); +} + + +int LArEM_Base_ID::init_disc_hashes(void) +{ + if (m_disc_channels.init (*this, "channels", + m_full_disc_em_range, + &LArEM_Base_ID::disc_channel_id, + m_SLAR_INDEX)) + return 1; + + return (0); +} + + +int +LArEM_Base_ID::initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArEM_Base_ID" ); + + log << MSG::DEBUG << "initialize_base_from_dictionary" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(CaloIDHelper::initialize_base_from_dictionary(dict_mgr, + "LArCalorimeter")) + return (1); + + // initialize dictionary version + AtlasDetectorID::setDictVersion(dict_mgr, "LArCalorimeter"); + + // Initialize the field indices + if (initLevelsFromDict(group_name)) return (1); + + // Find value for the field LAr Calorimeter + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int larField = -1; + if (atlasDict->get_label_value("subdet", "LArCalorimeter", larField)) { + if(m_msgSvc) { + log << MSG::ERROR << "Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary " + << atlasDict->m_name + << endreq; + } + else { + std::cout << "Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary " + << atlasDict->m_name + << std::endl; + } + return (1); + } + + // Find value for the field LArEM + int larEmField = -1; + if (dict()->get_label_value("part", "LArEM", larEmField)) { + if(m_msgSvc) { + log << MSG::ERROR << "Could not get value for label 'LArEM' of field 'part' in dictionary " + << dict()->m_name + << endreq; + } + else { + std::cout << "Could not get value for label 'LArEM' of field 'part' in dictionary " + << dict()->m_name + << std::endl; + } + return (1); + } + + int larEmDiscField = -1; + // Find value for the field LArEMdisc + if (dict()->get_label_value("part", "LArEMdisc", larEmDiscField)) { + if(m_msgSvc) { + log << MSG::ERROR << "Could not get value for label 'LArEMdisc' of field 'part' in dictionary " + << dict()->m_name + << endreq; + } + else { + std::cout << "Could not get value for label 'LArEMdisc' of field 'part' in dictionary " + << dict()->m_name + << std::endl; + } + return (1); + } + + // Set up id for region and range prefix + ExpandedIdentifier reg_id; + reg_id.add(larField); + reg_id.add(larEmField); + Range prefix; + ExpandedIdentifier reg_id2; + reg_id2.add(larField); + reg_id2.add(larEmDiscField); + Range prefix2; + + // (1) Connected channels + m_full_em_range = dict()->build_multirange(reg_id, group_name, prefix); + m_full_region_range = dict()->build_multirange(reg_id, group_name, prefix, "region"); + + // (2) disconnected channels + m_full_disc_em_range = dict()->build_multirange(reg_id2,group_name, prefix2); + m_full_disc_region_range = dict()->build_multirange(reg_id2,group_name, prefix2, "region"); + + if(m_msgSvc) { + log << MSG::DEBUG << " initialize_from_dict : " + << endreq; + log << MSG::DEBUG << " region range -> " << (std::string)m_full_region_range + << endreq; + log << MSG::DEBUG << " channel range -> " << (std::string)m_full_em_range + << endreq; + log << MSG::DEBUG << " disconected region range -> " << (std::string)m_full_disc_region_range + << endreq; + log << MSG::DEBUG << " disconnected channel range -> " << (std::string)m_full_disc_em_range + << endreq; + } + else { + std::cout << " LArEM_Base_ID::initialize_from_dict : " + << std::endl; + std::cout << " region range -> " << (std::string)m_full_region_range + << std::endl; + std::cout << " channel range -> " << (std::string)m_full_em_range + << std::endl; + std::cout << " disconected region range -> " << (std::string)m_full_disc_region_range + << std::endl; + std::cout << " disconnected channel range -> " << (std::string)m_full_disc_em_range + << std::endl; + } + + // initialize m_two_sym_sides + m_two_sym_sides = ( dictionaryVersion() == "fullAtlas" ); + + + // Setup the hash tables + if(init_hashes()) return (1); + + // initialize dictionary regions + if (fill_vec_of_dict_regions (group_name)) return 1; + + // added nov 2005 to speed up CaloNoiseTool initialisation + m_vecOfPhiMin.resize(regions().hash_max()); + for (unsigned int i = 0; i < regions().hash_max(); ++i) { + Identifier regId = region_id(i); + m_vecOfPhiMin[i] = phi_min_init(regId); + } + + + // Setup for hash calculation + + // We use the structure of the region definitions in the + // dictionary to optimize. Specifically, each dict region + // corresponds to two regions of uniform eta/phi granularity (+/- + // in barrel/endcap). The lookup table only needs to contain the + // hash offset for each region and the number of phi cells. + + // The implementation requires: + + // 1) a lookup table for each region containing hash offset and + // nphi + // 2) a decoder to access the "index" corresponding to the + // bec/samp/reg fields. These fields use 8 bits, so the + // vector has a length of 256 for only 36 regions. + + + // Create decoder for fields bec to region + IdDictFieldImplementation::size_type bits = + m_bec_impl.bits() + + m_sampling_impl.bits() + + m_region_impl.bits(); + IdDictFieldImplementation::size_type bits_offset = m_bec_impl.bits_offset(); + m_bec_reg_impl.set_bits(bits, bits_offset); + + // std::cout << "bec_reg " << m_bec_reg_impl.decode_index() << " " + // << (std::string)m_bec_reg_impl.ored_field() << " " + // << std::hex << m_bec_reg_impl.mask() << " " + // << m_bec_reg_impl.zeroing_mask() << " " + // << std::dec << m_bec_reg_impl.shift() + // << " " << m_bec_reg_impl.bits() << " " <<m_bec_reg_impl.bits_offset() + // << std::endl; + + + // Set up vector as lookup table for hash calculation. + m_hash_calcs.resize(256); + for (unsigned int i = 0; i < m_full_em_range.size(); ++i) { + const Range* range = &m_full_em_range[i]; + ExpandedIdentifier exp_id = range->minimum (); + HashCalc hc; + + Identifier min = channel_id (exp_id[m_BEC_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); + IdentifierHash min_neg = channel_hash_binary_search(min); + hc.m_hash = min_neg; + Identifier minReg = region_id(min) ; + hc.m_etamin = eta_min(minReg); + hc.m_phimin = phi_min(minReg); + hc.m_nphi = (*range)[m_PHI_INDEX].get_indices(); + m_hash_calcs[m_bec_reg_impl.unpack(min)] = hc; + + // Flip sign for bec if 2 symmetric sides (ATLAS case, not TB) + if(m_two_sym_sides) { + Identifier min1 = channel_id (-exp_id[m_BEC_INDEX], + exp_id[m_SAMPLING_INDEX], + exp_id[m_REGION_INDEX], + exp_id[m_ETA_INDEX], + exp_id[m_PHI_INDEX]); + IdentifierHash min_pos = channel_hash_binary_search(min1); + hc.m_hash = min_pos; + m_hash_calcs[m_bec_reg_impl.unpack(min1)] = hc; + } + + + if (m_bec_reg_impl.unpack(min) > 255) { + if(m_msgSvc) { + log << MSG::WARNING << "min > 255 " + << i << " " + << show_to_string(min) << " " + << m_bec_reg_impl.unpack(min) << " " + << endreq; + } + else { + std::cout << "min > 255 " + << i << " " + << show_to_string(min) << " " + << m_bec_reg_impl.unpack(min) << " " + << std::endl; + } + } + } + +// Some detailed printout +// ExpandedIdentifier exp_id = range->maximum (); +// Identifier max = channel_id (exp_id[m_BEC_INDEX], +// exp_id[m_SAMPLING_INDEX], +// exp_id[m_REGION_INDEX], +// exp_id[m_ETA_INDEX], +// exp_id[m_PHI_INDEX]); +// Identifier max0 = channel_id (-exp_id[m_BEC_INDEX], +// exp_id[m_SAMPLING_INDEX], +// exp_id[m_REGION_INDEX], +// exp_id[m_ETA_INDEX], +// exp_id[m_PHI_INDEX]); +// std::cout << "channel ranges, id, hash " +// << i << " " +// << show_to_string(min) << " " +// << show_to_string(max0) << " " +// << show_to_string(min1) << " " +// << show_to_string(max) << " " +// << channel_hash_binary_search(min) << " " +// << channel_hash_binary_search(min1) << " " +// << min_pos << " " +// << range->cardinality() << " " +// << std::endl; +// } + + // Check hash calculation + for (unsigned int i = 0; i < channels().hash_max(); ++i) { + Identifier id = channel_id(i); + if (channel_hash(id) != i) { + if(m_msgSvc) { + log << MSG::ERROR << "channel ranges, id, hash " + << show_to_string(id) << " " + << channel_hash(id) << " " + << i + << endreq; + } + else { + std::cout << " ***** Error "; + std::cout << "channel ranges, id, hash " + << show_to_string(id) << " " + << channel_hash(id) << " " + << i + << std::endl; + } + } + } + + if(init_disc_hashes()) return (1); + + // Setup hash tables for finding neighbors (at the end of initialisation, + // to benefit from optimization + if(m_do_neighbours) { + if(init_neighbors()) return (1); + } + + return 0; +} + + +int LArEM_Base_ID::get_neighbours(const IdentifierHash id, const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const +{ + int result = 1; + + neighbourList.clear(); + + if(!m_do_neighbours) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArEM_Base_ID" ); + log << MSG::WARNING << "neighbours not initialized !!! returning empty list" << endreq; + } + else { + std::cout << " WARNING: neighbours not initialized !!! returning empty list " << std::endl; + } + return result; + } + + if(id>=channel_hash_max()) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArEM_Base_ID" ); + log << MSG::WARNING << "neighbours requested for unconnected channel -- this is not implemented" << endreq; + } + else { + std::cout << " neighbours requested for unconnected channel -- this is not implemented" << std::endl; + } + return result; + } + + const short int maxNeighb=22; + IdentifierHash neighbList[maxNeighb]; + int neighbourIndex = 0; + + // cell index + unsigned int index=id; + + // + // .... find in which region is the cell + // + auto itr = std::upper_bound(m_cells.begin(), m_cells.end(), index); + unsigned short int regionN = (itr - m_cells.begin()) - 1; + assert (regionN < m_vecOfRegions.size()); + // get pointer to this region + LArEM_region* emRegion = m_vecOfRegions[regionN]; + // retrieve characteristic numbers for this region + short int nPhi = emRegion->phiN(); + float gPhi = emRegion->phiGranularity(); + unsigned int minHash = emRegion->hashMin(); + unsigned int maxHash = emRegion->hashMax(); + + bool corners2DOnly = ( (option & LArNeighbours::all2D) + == LArNeighbours::corners2D ); + // + // .... previous neighbour in phi + // + IdentifierHash prevNeighbInPhi=NOT_VALID_HASH; + if( (option & LArNeighbours::prevInPhi) + || corners2DOnly ){ + if(!get_prevInPhi(emRegion, index, nPhi, minHash, neighbourIndex, neighbList)){ + // always 1 and only 1 neighbour in phi in ATLAS, but 0 or 1 neighbour in phi in TB + prevNeighbInPhi=neighbList[neighbourIndex-1]; + if( corners2DOnly ){ + neighbourIndex--; + } + } + } + + // + // ....next neighbour in phi + // + IdentifierHash nextNeighbInPhi=NOT_VALID_HASH; + if( (option & LArNeighbours::nextInPhi) + || corners2DOnly ){ + if(!get_nextInPhi(emRegion, index, nPhi, minHash, neighbourIndex, neighbList)){ + // always 1 and only 1 neighbour in phi in ATLAS, but 0 or 1 neighbour in phi in TB + nextNeighbInPhi=neighbList[neighbourIndex-1]; + if( corners2DOnly ){ + neighbourIndex--; + } + } + } + + // + // ....previous neighbours in eta + // + unsigned int nPrevBiggerCell=NOT_VALID_HASH; + if( (option & LArNeighbours::prevInEta) ){ + get_prevInEta(emRegion, index, nPhi, gPhi, minHash, neighbourIndex, neighbList, nPrevBiggerCell); + } + + // + // ....next neighbours in eta + // + unsigned int nNextBiggerCell=NOT_VALID_HASH; + if( (option & LArNeighbours::nextInEta) ){ + get_nextInEta(emRegion, index, nPhi, gPhi, maxHash, neighbourIndex, neighbList, nNextBiggerCell); + } + + // + // ....corners in the same sampling + // + if( (option & LArNeighbours::corners2D) ){ + if(prevNeighbInPhi != NOT_VALID_HASH){ + unsigned int index1=prevNeighbInPhi; + int oldNeighbourIndex = neighbourIndex; + // allow only 1 corner cell in order to avoid the problem of + // non-mutual neighbourness + // since the cells come ordered in phi it should be the last cell for + // prevNeighbInPhi as starting points + get_prevInEta(emRegion, index1, nPhi, gPhi, minHash, neighbourIndex, neighbList, nPrevBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbList[oldNeighbourIndex] = neighbList[neighbourIndex-1]; + neighbourIndex = oldNeighbourIndex+1; + } + oldNeighbourIndex = neighbourIndex; + get_nextInEta(emRegion, index1, nPhi, gPhi, maxHash, neighbourIndex, neighbList, nNextBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbList[oldNeighbourIndex] = neighbList[neighbourIndex-1]; + neighbourIndex = oldNeighbourIndex+1; + } + } + + if(nextNeighbInPhi != NOT_VALID_HASH){ + unsigned int index2=nextNeighbInPhi; + int oldNeighbourIndex = neighbourIndex; + // allow only 1 corner cell in order to avoid the problem of + // non-mutual neighbourness + // since the cells come ordered in phi it should be the 1st cell for + // nextNeighbInPhi + get_prevInEta(emRegion, index2, nPhi, gPhi, minHash, neighbourIndex, neighbList, nPrevBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbourIndex = oldNeighbourIndex+1; + } + oldNeighbourIndex = neighbourIndex; + get_nextInEta(emRegion, index2, nPhi, gPhi, maxHash, neighbourIndex, neighbList, nNextBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbourIndex = oldNeighbourIndex+1; + } + } + } + + // + // .... neighbours in sampling (common code) + // EM caracteristics = granularity changes in both eta and phi + partial overlap of samplings + // + if( (option & LArNeighbours::upAndDown) ) { + // granularity of the initial region + double gEta = (double)(emRegion->etaGranularity()); + // initial eta + int nEta = int( (index-minHash) / nPhi); + double absEta = (double)(emRegion->etaMin()) + (double)(nEta * gEta); + + // previous neighbours in sampling + if( (option & LArNeighbours::prevInSamp) ){ + get_prevInSamp(emRegion, index, nPhi, minHash, gEta, gPhi, absEta, neighbourIndex, neighbList); + } + + // next neighbours in sampling + if( (option & LArNeighbours::nextInSamp) ){ + get_nextInSamp(emRegion, index, nPhi, minHash, gEta, gPhi, absEta, neighbourIndex, neighbList); + } + } + + // + // .... neighbours across subdet + // + if( (option & (LArNeighbours::prevSubDet | LArNeighbours::nextSubDet)) ){ + // granularity of the initial region + double gEta = (double)(emRegion->etaGranularity()); + // initial eta + int nEta = int( (index-minHash) / nPhi); + double absEta = (double)(emRegion->etaMin()) + (double)(nEta * gEta); + + // prev neighbours in subdet + if( (option & LArNeighbours::prevSubDet) ){ + get_prevInSubdet(emRegion, index, nPhi, minHash, gEta, gPhi, absEta, neighbourIndex, neighbList); + } + // next neighbours in subdet + if( (option & LArNeighbours::nextSubDet) ){ + get_nextInSubdet(emRegion, index, nPhi, minHash, gEta, gPhi, absEta, neighbourIndex, neighbList); + } + } + + + neighbourList.resize(neighbourIndex); + if (neighbourIndex > 0) { + if (neighbourIndex <= maxNeighb) { + std::copy (&neighbList[0], &neighbList[neighbourIndex], neighbourList.begin()); + result = 0 ; + } else { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArEM_Base_ID" ); + log << MSG::WARNING << " more than 22 neighbours for this cell, NONE will be retained" << endreq; + } + else { + std::cout << "WARNING: more than 22 neighbours for this cell, NONE will be retained " << neighbourIndex << std::endl; + } + } + } + + return result; +} + + +int LArEM_Base_ID::get_prevInPhi(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + unsigned int nIndex = index-1; + if(!emRegion->isPhiMin(index)) { + if( ((index-minHash)%(nPhi)) == 0 ) nIndex=index+nPhi-1; + IdentifierHash nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArEM_Base_ID::get_nextInPhi(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + if(!emRegion->isPhiMax(index)) { + unsigned int nIndex = index+1; + if( ((index-minHash+1)%(nPhi)) == 0 ) nIndex=index-nPhi+1; + IdentifierHash nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArEM_Base_ID::get_prevInEta(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, + const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const +{ + int result = 1; + + unsigned int nIndex = 0; + IdentifierHash nHash = 0; + + if( emRegion->isEtaMin(index)){ + // eta == etaMin -> go to previous region in eta + short int nPrevEtaRegion = emRegion->prevEtaRegion(); + // no neighbour if no previous region in eta + if( nPrevEtaRegion != NOT_VALID_REGION ) { + LArEM_region* prevEmRegion = m_vecOfRegions[nPrevEtaRegion]; + if(emRegion->isFirstBarrelRegion()) { + // special case: barrel middle + unsigned int minHashMinus = prevEmRegion->hashMin(); + nIndex = minHashMinus + index-minHash ; + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + else { + short int nPhiMinus = prevEmRegion->phiN(); + float gPhiMinus= prevEmRegion->phiGranularity(); + unsigned int maxHashMinus = prevEmRegion->hashMax(); + float phiMargin = 0.5*std::min(gPhi,gPhiMinus); + float rPhi = (index-minHash)*gPhi+emRegion->phiMin(); + int nPhiMinusFirst = int(floor((rPhi -prevEmRegion->phiMin()) + /gPhiMinus+phiMargin)) + +maxHashMinus-nPhiMinus; + int nPhiMinusNext = int(floor((rPhi+gPhi-prevEmRegion->phiMin()) + /gPhiMinus+phiMargin)) + +maxHashMinus-nPhiMinus; + if ( nPhiMinusNext == nPhiMinusFirst ) nPhiMinusNext++; + + for(int i=nPhiMinusFirst; i<nPhiMinusNext; i++){ + nIndex = i ; + if(nIndex != nBiggerCell) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + // to avoid duplicated cells in corners + if(gPhi < gPhiMinus && nBiggerCell == NOT_VALID_HASH) nBiggerCell=nIndex; + } + } + } + } + else { + // stay in same region (1 neighbour) + nIndex = index - nPhi; + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArEM_Base_ID::get_nextInEta(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, + const unsigned int& maxHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const +{ + int result = 1; + + unsigned int nIndex = 0; + IdentifierHash nHash = 0; + + if( emRegion->isEtaMax(index)){ + // eta == etaMax -> go to next region in eta + short int nNextEtaRegion = emRegion->nextEtaRegion(); + // no neighbour if no next region in eta + if( nNextEtaRegion != NOT_VALID_REGION ) { + LArEM_region* nextEmRegion = m_vecOfRegions[nNextEtaRegion]; + float gPhiPlus= nextEmRegion->phiGranularity(); + unsigned int minHashPlus = nextEmRegion->hashMin(); + float phiMargin = 0.5*std::min(gPhi,gPhiPlus); + float rPhi = (index+nPhi-maxHash)*gPhi+emRegion->phiMin(); + int nPhiPlusFirst = int(floor((rPhi -nextEmRegion->phiMin()) + /gPhiPlus+phiMargin))+minHashPlus; + int nPhiPlusNext = int(floor((rPhi+gPhi-nextEmRegion->phiMin()) + /gPhiPlus+phiMargin))+minHashPlus; + if ( nPhiPlusNext == nPhiPlusFirst ) nPhiPlusNext++; + + for(int i=nPhiPlusFirst; i<nPhiPlusNext; i++){ + nIndex = i ; + if(nIndex != nBiggerCell) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + // to avoid duplicated cells in corners + if(gPhi < gPhiPlus && nBiggerCell == NOT_VALID_HASH) nBiggerCell=nIndex; + } + } + } + else { + // stay in same region (1 neighbour) + nIndex = index + nPhi; + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArEM_Base_ID::get_prevInSamp(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + + // neighbours' indices + unsigned int nIndex=0; + // neighbours' hash + IdentifierHash nHash=0; + + // previous region in sampling + const std::vector<short int>& prevSampRegion= emRegion->prevSamplingRegion(); + int nPrevSampReg = prevSampRegion.size(); + if(nPrevSampReg > 0) { + for(int ireg=0; ireg<nPrevSampReg; ireg++) { + LArEM_region* prevEmRegion = m_vecOfRegions[prevSampRegion[ireg]]; + // eta granularity of previous region in sampling + double gEtaMinus= (double)(prevEmRegion->etaGranularity()); + // starting eta of prev region + double minEtaMinus = (double)(prevEmRegion->etaMin()); + double maxEtaMinus = (double)(prevEmRegion->etaMax()); + double margin = 0.5*std::min(gEta,gEtaMinus); + if((minEtaMinus < absEta+gEta-margin) && (absEta+margin < maxEtaMinus)) { + + // phi granularity of previous region in sampling + float gPhiMinus= prevEmRegion->phiGranularity(); + // max phi of previous region in sampling + short int nPhiMinus = prevEmRegion->phiN(); + // first hash of previous region in sampling + unsigned int minHashMinus = prevEmRegion->hashMin(); + float phiMargin = 0.5*std::min(gPhi,gPhiMinus); + // phi 'coordinate' in initial region + float rPhi = ((index-minHash)%nPhi)*gPhi+emRegion->phiMin(); + int nPhiMinusFirst = int(floor((rPhi -prevEmRegion->phiMin()) + /gPhiMinus+phiMargin)); + int nPhiMinusNext = int(floor((rPhi+gPhi-prevEmRegion->phiMin()) + /gPhiMinus+phiMargin)); + if ( nPhiMinusNext == nPhiMinusFirst ) nPhiMinusNext++; + + // eta 'coordinate' in initial region + double fEtaMinus = (absEta-minEtaMinus) / gEtaMinus + margin ; + // eta 'coordinate' in initial region + 1 + double fEtaMaxMinus = (absEta+gEta-minEtaMinus) / gEtaMinus + margin ; + int nEtaMinus = int(fEtaMinus); + int nEtaMaxMinus = int(fEtaMaxMinus); + if ( nEtaMaxMinus == nEtaMinus ) nEtaMaxMinus++; + for(int i=nEtaMinus; i<nEtaMaxMinus; i++) { + for (int j=nPhiMinusFirst; j<nPhiMinusNext;j++) { + nIndex = minHashMinus + i * nPhiMinus + j; + if( (nIndex >= prevEmRegion->hashMin()) && (nIndex < prevEmRegion->hashMax()) ) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + } + } + } // end eta condition + } // loop on ireg + } + return result; +} + +int LArEM_Base_ID::get_nextInSamp(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + + // neighbours' indices + unsigned int nIndex=0; + // neighbours' hash + IdentifierHash nHash=0; + + const std::vector<short int>& nextSampRegion= emRegion->nextSamplingRegion(); + int nNextSampReg = nextSampRegion.size(); + if(nNextSampReg > 0) { + for(int ireg=0; ireg<nNextSampReg; ireg++) { + LArEM_region* nextEmRegion = m_vecOfRegions[nextSampRegion[ireg]]; + double gEtaPlus = (double)(nextEmRegion->etaGranularity()); + float gPhiPlus= nextEmRegion->phiGranularity(); + double minEtaPlus = (double)(nextEmRegion->etaMin()); + double maxEtaPlus = (double)(nextEmRegion->etaMax()); + double margin = 0.5*std::min(gEta,gEtaPlus); + if((minEtaPlus < absEta+gEta-margin) && (absEta+margin < maxEtaPlus)) { + + short int nPhiPlus = nextEmRegion->phiN(); + unsigned int minHashPlus = nextEmRegion->hashMin(); + float phiMargin = 0.5*std::min(gPhi,gPhiPlus); + // phi 'coordinate' in initial region + float rPhi = ((index-minHash)%nPhi)*gPhi+emRegion->phiMin(); + int nPhiPlusFirst = int(floor((rPhi -nextEmRegion->phiMin()) + /gPhiPlus+phiMargin)); + int nPhiPlusNext = int(floor((rPhi+gPhi-nextEmRegion->phiMin()) + /gPhiPlus+phiMargin)); + if ( nPhiPlusNext == nPhiPlusFirst ) nPhiPlusNext++; + + double fEtaPlus = (absEta-minEtaPlus) / gEtaPlus + margin ; + // eta 'coordinate' in initial region + 1 + double fEtaMaxPlus = (absEta+gEta-minEtaPlus) / gEtaPlus + margin ; + int nEtaPlus = int(fEtaPlus) ; + int nEtaMaxPlus = int(fEtaMaxPlus) ; + if (nEtaMaxPlus == nEtaPlus) nEtaMaxPlus++; + + for(int i=nEtaPlus; i<nEtaMaxPlus; i++){ + for(int j=nPhiPlusFirst; j<nPhiPlusNext; j++){ + nIndex = minHashPlus + i * nPhiPlus + j; + if( (nIndex >= nextEmRegion->hashMin()) && (nIndex < nextEmRegion->hashMax()) ) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + } + } + } // end eta condition + } // end loop on regions + } + return result; +} + + +int LArEM_Base_ID::get_prevInSubdet(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + + // neighbours' indices + unsigned int nIndex=0; + // neighbours' hash + IdentifierHash nHash=0; + + // previous region in sampling + const std::vector<short int>& prevSubdetRegion= emRegion->prevSubdetRegion(); + int nPrevSubdetReg = prevSubdetRegion.size(); + if(nPrevSubdetReg > 0) { + for(int ireg=0; ireg<nPrevSubdetReg; ireg++) { + LArEM_region* prevEmRegion = m_vecOfRegions[prevSubdetRegion[ireg]]; + // eta granularity of previous region in sampling + double gEtaMinus= (double)(prevEmRegion->etaGranularity()); + // starting eta of prev region + double minEtaMinus = (double)(prevEmRegion->etaMin()); + double maxEtaMinus = (double)(prevEmRegion->etaMax()); + double margin = 0.5*std::min(gEta,gEtaMinus); + if((minEtaMinus < absEta+gEta-margin) && (absEta+margin < maxEtaMinus)) { + + // phi granularity of previous region in sampling + float gPhiMinus= prevEmRegion->phiGranularity(); + // max phi of previous region in sampling + short int nPhiMinus = prevEmRegion->phiN(); + // first hash of previous region in sampling + unsigned int minHashMinus = prevEmRegion->hashMin(); + float phiMargin = 0.5*std::min(gPhi,gPhiMinus); + // phi 'coordinate' in initial region + float rPhi = ((index-minHash)%nPhi)*gPhi+emRegion->phiMin(); + int nPhiMinusFirst = int(floor((rPhi -prevEmRegion->phiMin()) + /gPhiMinus+phiMargin)); + int nPhiMinusNext = int(floor((rPhi+gPhi-prevEmRegion->phiMin()) + /gPhiMinus+phiMargin)); + if ( nPhiMinusNext == nPhiMinusFirst ) nPhiMinusNext++; + // eta 'coordinate' in initial region + double fEtaMinus = (absEta-minEtaMinus) / gEtaMinus + margin ; + // eta 'coordinate' in initial region + 1 + double fEtaMaxMinus = (absEta+gEta-minEtaMinus) / gEtaMinus + margin ; + int nEtaMinus = int(fEtaMinus); + int nEtaMaxMinus = int(fEtaMaxMinus); + if ( nEtaMaxMinus == nEtaMinus ) nEtaMaxMinus++; + + for(int i=nEtaMinus; i<nEtaMaxMinus; i++) { + for (int j=nPhiMinusFirst; j<nPhiMinusNext;j++) { + nIndex = minHashMinus + i * nPhiMinus + j; + if( (nIndex >= prevEmRegion->hashMin()) && (nIndex < prevEmRegion->hashMax()) ) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + } + } + } // end eta condition + } // loop on ireg + } + return result; +} + +int LArEM_Base_ID::get_nextInSubdet(const LArEM_region* emRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& gEta, const float& gPhi, const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + + // neighbours' indices + unsigned int nIndex=0; + // neighbours' hash + IdentifierHash nHash=0; + + const std::vector<short int>& nextSubdetRegion= emRegion->nextSubdetRegion(); + int nNextSubdetReg = nextSubdetRegion.size(); + if(nNextSubdetReg > 0) { + for(int ireg=0; ireg<nNextSubdetReg; ireg++) { + LArEM_region* nextEmRegion = m_vecOfRegions[nextSubdetRegion[ireg]]; + double gEtaPlus = (double)(nextEmRegion->etaGranularity()); + float gPhiPlus= nextEmRegion->phiGranularity(); + double minEtaPlus = (double)(nextEmRegion->etaMin()); + double maxEtaPlus = (double)(nextEmRegion->etaMax()); + double margin = 0.5*std::min(gEta,gEtaPlus); + if((minEtaPlus < absEta+gEta-margin) && (absEta+margin < maxEtaPlus)) { + + short int nPhiPlus = nextEmRegion->phiN(); + unsigned int minHashPlus = nextEmRegion->hashMin(); + float phiMargin = 0.5*std::min(gPhi,gPhiPlus); + // phi 'coordinate' in initial region + float rPhi = ((index-minHash)%nPhi)*gPhi+emRegion->phiMin(); + int nPhiPlusFirst = int(floor((rPhi -nextEmRegion->phiMin()) + /gPhiPlus+phiMargin)); + int nPhiPlusNext = int(floor((rPhi+gPhi-nextEmRegion->phiMin()) + /gPhiPlus+phiMargin)); + if ( nPhiPlusNext == nPhiPlusFirst ) nPhiPlusNext++; + + double fEtaPlus = (absEta-minEtaPlus) / gEtaPlus + margin ; + // eta 'coordinate' in initial region + 1 + double fEtaMaxPlus = (absEta+gEta-minEtaPlus) / gEtaPlus + margin ; + int nEtaPlus = int(fEtaPlus) ; + int nEtaMaxPlus = int(fEtaMaxPlus) ; + if (nEtaMaxPlus == nEtaPlus) nEtaMaxPlus++; + + for(int i=nEtaPlus; i<nEtaMaxPlus; i++) { + for(int j=nPhiPlusFirst; j<nPhiPlusNext; j++) { + nIndex = minHashPlus + i * nPhiPlus + j; + if( (nIndex >= nextEmRegion->hashMin()) && (nIndex < nextEmRegion->hashMax()) ) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + } + } + } // end eta condition + } // end loop on regions + } + return result; +} + + +int LArEM_Base_ID::init_neighbors(void) +{ + MsgStream log(m_msgSvc, "LArEM_Base_ID" ); + if(m_msgSvc) { + log << MSG::DEBUG << "init_neighbors" << endreq; + } + else { + std::cout << " LArEM_Base_ID::init_neighbors " << std::endl; + } + + const std::vector<const IdDictRegion*>& vecOfDictRegions = dictRegions(); + + // + // ..... loop on regions -> store vector of LArEM_region* + // + m_vecOfRegions.resize(region_hash_max()); + short int reg=0; + std::vector<Identifier>::const_iterator debut=reg_begin() ; + std::vector<Identifier>::const_iterator fin =reg_end() ; + for (; debut != fin; ++debut) { + const Identifier& regId = (*debut); + + bool phiWrapAround = (dictionaryVersion() == "fullAtlas" ); + bool isBarrelMiddle = false; + + // + // ..... translate regId to chanId and get hash + // + + Identifier id ; + unsigned int index0 = NOT_VALID_HASH; + int etaMin = eta_min(regId); + int phiMin = phi_min(regId); + if(etaMin >= 0 && phiMin >= 0) { + try{ + id = channel_id (regId, eta_min(regId), phi_min(regId) ); + } + catch(LArID_Exception & except){ + if(m_msgSvc) { + log << MSG::ERROR << " LArId exception " + << (std::string)except + << endreq; + } + else { + std::cout + << " LArId exception " + << (std::string)except + << std::endl; + } + } + IdentifierHash hashId = channel_hash (id) ; + index0=hashId; + } + else { + if(m_msgSvc) { + log << MSG::WARNING << " could not find non negative etaMin and phiMin for region " + << show_to_string(regId) + << endreq; + } + else { + std::cout << "WARNING !! could not find non negative etaMin and phiMin for region " + << show_to_string(regId) + << std::endl; + } + index0 = 0; + } + + short int deltaEta = eta_max(regId) - eta_min(regId) + 1 ; + short int nPhi = phi_max(regId) - phi_min(regId) + 1 ; + // starting eta + float eta0 = this->eta0(reg); + // eta granularity + float deta = etaGranularity(reg); + // starting phi + float phi0 = this->phi0(reg); + // phi granularity + float dphi = phiGranularity(reg); + + // full range of regions + unsigned int ireg0=0; + unsigned int ireg1=region_hash_max(); + // if 2 symetric sides, in which side is the current reg. + if(twoSymSides()) { + if(reg < (short int)region_hash_max()/2) { + ireg0=0; + ireg1=region_hash_max()/2; + } else { + ireg0=region_hash_max()/2; + ireg1=region_hash_max(); + } + } + + // + // .... compute prev/next regions in eta + // + short int regForPrevEta=NOT_VALID_REGION; + IdDictRegion* prevEtaDicReg = vecOfDictRegions[reg]->m_prev_abs_eta; + short int regForNextEta=NOT_VALID_REGION; + IdDictRegion* nextEtaDicReg = vecOfDictRegions[reg]->m_next_abs_eta; + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == prevEtaDicReg) regForPrevEta = ireg; + if(vecOfDictRegions[ireg] == nextEtaDicReg) regForNextEta = ireg; + } + // .... special case of barrel middle + if(twoSymSides()) { + if(eta0 < 0.1 ) { + isBarrelMiddle = true; + if(barrel_ec(regId) < 0) { + regForPrevEta = reg+6; + } else { + regForPrevEta = reg-6; + } + } + } + + // + // .... compute prev/next regions in sampling + // + std::vector<short int> regForPrevSamp; + std::vector<IdDictRegion*> prevSampDicReg = vecOfDictRegions[reg]->m_prev_samp; + for(unsigned int isam=0;isam<prevSampDicReg.size();isam++){ + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == prevSampDicReg[isam]) regForPrevSamp.push_back(ireg); + } + } + + std::vector<short int> regForNextSamp; + std::vector<IdDictRegion*> nextSampDicReg = vecOfDictRegions[reg]->m_next_samp; + for(unsigned int isam=0;isam<nextSampDicReg.size();isam++){ + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == nextSampDicReg[isam]) regForNextSamp.push_back(ireg); + } + } + + // + // .... compute prev/next regions in subdet + // + std::vector<short int> regForPrevSubdet; + std::vector<IdDictRegion*> prevSubdetDicReg = vecOfDictRegions[reg]->m_prev_subdet; + for(unsigned int isubdet=0;isubdet<prevSubdetDicReg.size();isubdet++){ + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == prevSubdetDicReg[isubdet]) regForPrevSubdet.push_back(ireg); + } + } + + std::vector<short int> regForNextSubdet; + std::vector<IdDictRegion*> nextSubdetDicReg = vecOfDictRegions[reg]->m_next_subdet; + for(unsigned int isubdet=0;isubdet<nextSubdetDicReg.size();isubdet++){ + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == nextSubdetDicReg[isubdet]) regForNextSubdet.push_back(ireg); + } + } + + // + // ....now ready to build region object + // + + LArEM_region * emRegion = new LArEM_region(index0,deltaEta,nPhi,eta0,deta,phi0,dphi,phiWrapAround,isBarrelMiddle, + regForPrevEta,regForNextEta, + regForPrevSamp,regForNextSamp, + regForPrevSubdet,regForNextSubdet); + // save in a vector for further use in get_neighbours method + // optimized nov 2005 + // m_vecOfRegions.push_back(emRegion); + m_vecOfRegions[reg]=emRegion; + reg++; + } // end of loop on regions + + // + // ..... loop on channels + // + // optimized nov 2005 + m_cells.reserve(64); + unsigned int i=0; + reg=0; + Identifier lastRegId; + for (Identifier chanId : em_range()) { + const Identifier& regId = region_id(chanId); + if(regId != lastRegId) { + m_cells.push_back(i); + reg++; + } + ++i; + + if(m_do_checks) { + // for cross check only + IdentifierHash hashReg = region_hash (regId) ; + if ((short int)hashReg != reg) { + if(m_msgSvc) { + log << MSG::ERROR << " init_neighbors: problem reg, hashReg = " << reg << " " << hashReg + << endreq; + } + else { + std::cout << " init_neighbors: problem reg, hashReg = " << reg << " " << hashReg + << std::endl; + } + } + } + + lastRegId=regId; + } + + return (0); +} + + + diff --git a/Calorimeter/CaloIdentifier/src/LArEM_ID.cxx b/Calorimeter/CaloIdentifier/src/LArEM_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..f10da3631f3f7e712f358abdc74b9fbd6a886c3d --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArEM_ID.cxx @@ -0,0 +1,53 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArEM_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <math.h> + + + +LArEM_ID::LArEM_ID(void) : + LArEM_Base_ID("LArEM_ID", 0) +{ +} + +LArEM_ID::~LArEM_ID(void) +{ +} + +int LArEM_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArEM_ID" ); + + log << MSG::DEBUG << "initialize_from_dictionary" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (LArEM_Base_ID::initialize_base_from_dictionary(dict_mgr, + "lar_em")) + return (1); + + + return 0; +} + + diff --git a/Calorimeter/CaloIdentifier/src/LArEM_SuperCell_ID.cxx b/Calorimeter/CaloIdentifier/src/LArEM_SuperCell_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..4e9cf0240be2a9ee62c5969fd6d7eefb25d34600 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArEM_SuperCell_ID.cxx @@ -0,0 +1,61 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/LArEM_SuperCell_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Aug, 2012 + * @brief Helper class for LArEM offline identifiers for supercells + */ + + +#include "CaloIdentifier/LArEM_SuperCell_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "LArEM_region.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <math.h> + + + +LArEM_SuperCell_ID::LArEM_SuperCell_ID(void) : + LArEM_Base_ID("LArEM_SuperCell_ID", 1) +{ +} + +LArEM_SuperCell_ID::~LArEM_SuperCell_ID(void) +{ +} + +int LArEM_SuperCell_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArEM_SuperCell_ID" ); + + log << MSG::DEBUG << "initialize_from_dictionary" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (LArEM_Base_ID::initialize_base_from_dictionary(dict_mgr, + "slar_em")) + return (1); + + return 0; +} + diff --git a/Calorimeter/CaloIdentifier/src/LArEM_region.cxx b/Calorimeter/CaloIdentifier/src/LArEM_region.cxx new file mode 100755 index 0000000000000000000000000000000000000000..9effee8da571b9fd570c81a7180fe7f0424d80cf --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArEM_region.cxx @@ -0,0 +1,54 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "LArEM_region.h" + +#include <iostream> +#include <math.h> +#include <vector> + + +LArEM_region::LArEM_region(): + m_hashMin(0) + ,m_nbEtaBins(0) + ,m_nPhi(0) + ,m_minEta(99) + ,m_granulEta(0) + ,m_minPhi(99) + ,m_granulPhi(0) + ,m_fullSym(true) + ,m_isFirstBarrelRegion(false) + ,m_prevEtaReg(63) + ,m_nextEtaReg(63) +{ +} + +LArEM_region::LArEM_region(unsigned int& minHash, short int& nbEtaBins, short int& nPhi, + float minEta, float granulEta, float minPhi, float granulPhi, bool fullSym, bool isBarrelMiddle, + short int& prevEtaReg, short int& nextEtaReg, + std::vector<short int>& prevSampReg, std::vector<short int>& nextSampReg, + std::vector<short int>& prevSubdetReg, std::vector<short int>& nextSubdetReg) +{ + + m_hashMin = minHash; + m_nbEtaBins = nbEtaBins; + m_minEta = minEta; + m_granulEta = granulEta; + m_minPhi = minPhi; + m_granulPhi = granulPhi; + m_nPhi = nPhi; + m_fullSym = fullSym; + m_isFirstBarrelRegion = isBarrelMiddle; + m_prevEtaReg = prevEtaReg; + m_nextEtaReg = nextEtaReg; + m_prevSampReg = prevSampReg; + m_nextSampReg = nextSampReg; + m_prevSubdetReg = prevSubdetReg; + m_nextSubdetReg = nextSubdetReg; + +} + +LArEM_region::~LArEM_region() +{ +} diff --git a/Calorimeter/CaloIdentifier/src/LArEM_region.h b/Calorimeter/CaloIdentifier/src/LArEM_region.h new file mode 100755 index 0000000000000000000000000000000000000000..12efda45174f981da8db96b8c86f7a35a1286cb3 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArEM_region.h @@ -0,0 +1,128 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LAREM_REGION_H +#define LAREM_REGION_H + + +#include <vector> + + enum { NOT_VALID_REGION = 63 }; + +/** +* +* @brief This class provides an interface to deal with regions in the neighbours finding +* +*/ + +class LArEM_region +{ +public: + + LArEM_region(); + + LArEM_region(unsigned int& minHash, short int& nbEtaBins, short int& nPhi, + float minEta, float granulEta, float minPhi, float granulPhi, bool fullSym, bool isBarrelMiddle, + short int& prevEtaReg, short int& nextEtaReg, + std::vector<short int>& prevSampReg, std::vector<short int>& nextSampReg, + std::vector<short int>& prevSubdetReg, std::vector<short int>& nextSubdetReg); + + ~LArEM_region(); + + /** number of eta bins in the whole region */ + short int numberOfEta() const { return m_nbEtaBins ; } + + /** number of phi bins */ + short int phiN() const { return m_nPhi ; } + + /** eta granularity */ + float etaGranularity() const { return m_granulEta ; } + + /** phi granularity */ + float phiGranularity() const { return m_granulPhi ; } + + /** true if detector covers full 2pi (== wraparound option in dictionary) */ + bool fullTwoPi() const { return m_fullSym ; } + + /** true if region close to barrel middle */ + bool isFirstBarrelRegion() const { return m_isFirstBarrelRegion ; } + + /** starting eta */ + float etaMin() const { return m_minEta ; } + + /** end eta */ + float etaMax() const { return (m_minEta + m_nbEtaBins*m_granulEta) ; } + + /** starting phi */ + float phiMin() const { return m_minPhi ; } + + /** end phi */ + float phiMax() const { return (m_minPhi + m_nPhi*m_granulPhi) ; } + + /** hash Id of the first cell of the region */ + unsigned int hashMin() const { return m_hashMin ; } + + /** hash Id of the last cell of the region +1 */ + unsigned int hashMax() const { return (m_hashMin + m_nbEtaBins * m_nPhi) ; } + + /** region number of the previous region in eta */ + short int prevEtaRegion() const { return m_prevEtaReg; } + + /** region number of the next region in eta */ + short int nextEtaRegion() const { return m_nextEtaReg; } + + /** is the considered cell in the first eta bin of the region ? */ + bool isEtaMin(unsigned int index) const { + return ((m_hashMin<=index) && (index<(m_hashMin+m_nPhi))); + } + + /** is the considered cell in the last eta bin of the region ? */ + bool isEtaMax(unsigned int index) const { + return ((hashMax()-m_nPhi)<=index) && (index<hashMax()); + } + + /** is the considered cell in the first phi bin of the region ? */ + bool isPhiMin(unsigned int index) const { + return !m_fullSym && (index-m_hashMin)%m_nPhi == 0; + } + + /** is the considered cell in the last phi bin of the region ? */ + bool isPhiMax(unsigned int index) const { + return !m_fullSym && (index-m_hashMin+1)%m_nPhi == 0; + } + + /** region number of the prev region in sampling */ + const std::vector<short int>& prevSamplingRegion() const { return m_prevSampReg; } + + /** region number of the next region in sampling */ + const std::vector<short int>& nextSamplingRegion() const { return m_nextSampReg; } + + /** region number of the prev region in subdet */ + const std::vector<short int>& prevSubdetRegion() const { return m_prevSubdetReg; } + + /** region number of the next region in subdet */ + const std::vector<short int>& nextSubdetRegion() const { return m_nextSubdetReg; } + +private: + + unsigned int m_hashMin; + short int m_nbEtaBins; + short int m_nPhi; + float m_minEta; + float m_granulEta; + float m_minPhi; + float m_granulPhi; + bool m_fullSym; + bool m_isFirstBarrelRegion; + + short int m_prevEtaReg; + short int m_nextEtaReg; + std::vector<short int> m_prevSampReg; + std::vector<short int> m_nextSampReg; + std::vector<short int> m_prevSubdetReg; + std::vector<short int> m_nextSubdetReg; + +}; + +#endif // LAREM_REGION_H diff --git a/Calorimeter/CaloIdentifier/src/LArFCAL_Base_ID.cxx b/Calorimeter/CaloIdentifier/src/LArFCAL_Base_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..b62419936bf7d84fd66ac5b7c69128b3d557f1f5 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArFCAL_Base_ID.cxx @@ -0,0 +1,942 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArFCAL_Base_ID.h" +#include "IdDict/IdDictDefs.h" +#include "PathResolver/PathResolver.h" + +#include "CxxUtils/StrFormat.h" +#include <iostream> +#include <fstream> + +using CxxUtils::strformat; + +#define MAX_BUFFER_LEN 1024 + + +LArFCAL_Base_ID::LArFCAL_Base_ID(const std::string& name, bool supercell) + : CaloIDHelper (name), + m_slar (supercell ? 1 : 0) +{ + m_fcal_region_index = 0; + m_LAR_INDEX = 999; + m_SLAR_INDEX = 999; + m_FCAL_INDEX = 999; + m_POSNEG_INDEX = 999; + m_MODULE_INDEX = 999; + m_ETA_INDEX = 999; + m_PHI_INDEX = 999; + m_two_sym_sides = 1; +} + +bool LArFCAL_Base_ID::is_connected ( int pos_neg, int module, int eta, int phi) const throw(LArID_Exception) +{ + bool result=false; + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_fcal_exp()); + expId << pos_neg << module << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArFCAL_Base_ID::is_connected, " + + strformat ("pos_neg: %d , module: %d, eta: %d, phi: %d ", + pos_neg , module , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (m_full_channel_range.match(expId)) { + result = true; + } + return(result); +} + +bool LArFCAL_Base_ID::is_disconnected ( int pos_neg, int module, int eta, int phi) const throw(LArID_Exception) +{ + bool result=false; + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -3 << pos_neg << module << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArFCAL_Base_ID::is_disconnected, " + + strformat ("pos_neg: %d , module: %d, eta: %d, phi: %d ", + pos_neg , module , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (m_full_disc_channel_range.match(expId)) { + result = true; + } + return(result); +} + +bool LArFCAL_Base_ID::is_supercell (const Identifier id)const +{ + return(m_slar_impl.unpack(id)) != 0; +} + +int LArFCAL_Base_ID::eta_min(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int LArFCAL_Base_ID::eta_max(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArFCAL_Base_ID::phi_min_init(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_minimum()) { + int phimin = phi_field.get_minimum(); + if (-999 == result) { + result = phimin; + } + else { + if (phimin < result) result = phimin; + } + } + } + } + return (result); + } + return (-999); // default +} + +int LArFCAL_Base_ID::phi_max(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArFCAL_Base_ID::disc_eta (const Identifier id)const +{ + return(m_eta_impl.unpack(id)); +} + +int LArFCAL_Base_ID::disc_phi (const Identifier id)const +{ + return(m_phi_impl.unpack(id)); +} + +IdContext +LArFCAL_Base_ID::module_context (void) const +{ + return region_context(); +} + +int LArFCAL_Base_ID::initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + + std::string strg = "initialize_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(CaloIDHelper::initialize_base_from_dictionary(dict_mgr, + "LArCalorimeter")) + return (1); + + // initialize dictionary version + AtlasDetectorID::setDictVersion(dict_mgr, "LArCalorimeter"); + + // Initialize the field indices + if (initLevelsFromDict(group_name)) return (1); + + // Find value for the field LAr Calorimeter + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int larField = -1; + if (atlasDict->get_label_value("subdet", "LArCalorimeter", larField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + + // Find value for the field LArFCAL + int larFcalField = -1; + if (dict()->get_label_value("part", "LArFCAL", larFcalField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArFCAL' of field 'part' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find value for the field LArFCALdisc + int larFcalDiscField = -1; + if (dict()->get_label_value("part", "LArFCALdisc", larFcalDiscField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArFCALdisc' of field 'part' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Set up id for region and range prefix + + // (1) Connected channels + ExpandedIdentifier region_id; + region_id.add(larField); + region_id.add(larFcalField); + Range prefix; + m_full_channel_range = dict()->build_multirange(region_id, group_name, prefix); + m_full_module_range = dict()->build_multirange(region_id, group_name, prefix, "module"); + + // (2) disconnected channels + ExpandedIdentifier region_id2; + region_id2.add(larField); + region_id2.add(larFcalDiscField); + Range prefix2; + + m_full_disc_channel_range = dict()->build_multirange(region_id2, group_name, prefix2); + m_full_disc_module_range = dict()->build_multirange(region_id2, group_name, prefix2, "module"); + + std::string strg0 = " initialize_from_dict : " ; + std::string strg1 = " channel range -> " + (std::string)m_full_channel_range; + std::string strg2 = " module range -> " + (std::string)m_full_module_range; + std::string strg3 = " disconnected channel range -> " + (std::string)m_full_disc_channel_range; + std::string strg4 = " disconnected module range -> " + (std::string)m_full_disc_module_range; + if(m_msgSvc) { + log << MSG::DEBUG << strg0 << endreq; + log << MSG::DEBUG << strg1 << endreq; + log << MSG::DEBUG << strg2 << endreq; + log << MSG::DEBUG << strg3 << endreq; + log << MSG::DEBUG << strg4 << endreq; + } + else { + std::cout << strg0 << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + std::cout << strg3 << std::endl; + std::cout << strg4 << std::endl; + } + + // Setup the hash tables + if(init_hashes()) return (1); + + // Setup the disc hash tables + if(init_disc_hashes()) return (1); + + // initilize m_two_sym_sides + m_two_sym_sides = ( dictionaryVersion() == "fullAtlas" ); + + if (fill_vec_of_dict_regions (group_name)) return 1; + + // added nov 2005 to speed up CaloNoiseTool initialisation + m_vecOfPhiMin.resize(regions().hash_max()); + for (unsigned int i = 1; i < regions().hash_max(); ++i) { + Identifier modId = module_id(i); + m_vecOfPhiMin[i] = phi_min_init(modId); + } + + // Setup hash tables for finding neighbours + if(m_do_neighbours) { + if(init_neighbours(dict_mgr)) return (1); + } + + return 0; + +} + +void LArFCAL_Base_ID::module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_fcal_exp()); + expId << pos_neg << module; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArFCAL_Base_ID::module_id, " + + strformat ("pos_neg: %d , module: %d", pos_neg , module); + throw LArID_Exception(errorMessage , 9); + } + + if (!m_full_module_range.match(expId)) { + std::string errorMessage = "LArFCAL_Base_ID::module_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_module_range; + throw LArID_Exception(errorMessage , 6); + } +} + +void LArFCAL_Base_ID::channel_id_checks ( int pos_neg, int module, int eta, int phi) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_fcal_exp()); + expId << pos_neg << module << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArFCAL_Base_ID::channel_id, " + + strformat ("pos_neg: %d , module: %d, eta: %d, phi: %d ", + pos_neg , module , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "LArFCAL_Base_ID::channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +void LArFCAL_Base_ID::channel_id_checks (const Identifier moduleId, + int eta, int phi) const throw(LArID_Exception) +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = module_context(); + if (get_expanded_id(moduleId, expId, &context)) { + std::string errorMessage = "LArFCAL_Base_ID::channel_id(modId) result is not OK: ID = " + + show_to_string(moduleId) ; + throw LArID_Exception(errorMessage , 10); + } + + expId << eta << phi << m_slar ; + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "LArFCAL_Base_ID::channel_id(modId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +void LArFCAL_Base_ID::disc_module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -3 << pos_neg << module; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArFCAL_Base_ID::module_id, " + + strformat ("pos_neg: %d , module: %d", pos_neg , module); + throw LArID_Exception(errorMessage , 9); + } + + if (!m_full_disc_module_range.match(expId)) { + std::string errorMessage = "LArFCAL_Base_ID::module_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_module_range; + throw LArID_Exception(errorMessage , 6); + } +} + +void LArFCAL_Base_ID::disc_channel_id_checks ( int pos_neg, int module, int eta, int phi) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -3 << pos_neg << module << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArFCAL_Base_ID::channel_id, " + + strformat ("pos_neg: %d , module: %d, eta: %d, phi: %d ", + pos_neg , module , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (!m_full_disc_channel_range.match(expId)) { + std::string errorMessage = "LArFCAL_Base_ID::channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +void LArFCAL_Base_ID::disc_channel_id_checks (const Identifier moduleId, + int eta, int phi) const throw(LArID_Exception) +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = module_context(); + if (get_disc_expanded_id(moduleId, expId, &context)) { + std::string errorMessage = "LArFCAL_Base_ID::channel_id(modId) result is not OK: ID = " + + show_to_string(moduleId) ; + throw LArID_Exception(errorMessage , 10); + } + + expId << eta << phi << m_slar ; + + if (!m_full_disc_channel_range.match(expId)) { + std::string errorMessage = "LArFCAL_Base_ID::channel_id(modId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +int LArFCAL_Base_ID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << lar_fcal_field_value() + << pos_neg(id) + << module(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if ( context->end_index() >= m_SLAR_INDEX) { + exp_id << (unsigned)is_supercell(id); + } + } + } + return (0); +} + +int LArFCAL_Base_ID::get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << -3 + << pos_neg(id) + << module(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if (context->end_index() >= m_SLAR_INDEX) { + exp_id << (unsigned)is_supercell(id); + } + } + } + return (0); +} + +int LArFCAL_Base_ID::initLevelsFromDict(const std::string& /*group_name*/) +{ + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + + if(!dict()) { + std::string strg = "initLevelsFromDict - dictionary NOT initialized "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_fcal_region_index = 999 ; + m_LAR_INDEX = 999 ; + m_FCAL_INDEX = 999 ; + m_POSNEG_INDEX = 999 ; + m_MODULE_INDEX = 999 ; + m_ETA_INDEX = 999 ; + m_PHI_INDEX = 999 ; + m_SLAR_INDEX = 999 ; + + // Save index to a FCAL region for unpacking + ExpandedIdentifier id(lar_fcal_exp()); + if (dict()->find_region(id,m_fcal_region_index)){ + std::stringstream strm ; + strm << m_fcal_region_index ; + std::string strg = "initLevelsFromDict - unable to find fcal region index: id, reg " + + (std::string)id + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + IdDictField* field = dict()->find_field("subdet") ; + if (field) { + m_LAR_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'subdet' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("part") ; + if (field) { + m_FCAL_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'part' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("barrel-endcap") ; + if (field) { + m_POSNEG_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'barrel-endcap' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("module") ; + if (field) { + m_MODULE_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'module' field "; + if(dictionaryVersion() != "H8TestBeam" ) { + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + } + return (1); + } + + field = dict()->find_field("eta-fcal") ; + if (field) { + m_ETA_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'eta' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("phi-fcal") ; + if (field) { + m_PHI_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'phi' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("is-slar-fcal") ; + if (field) { + m_SLAR_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'is-slar-fcal' field " + << endreq; + } + else { + std::cout << "LArFCAL_Base_ID::initLevelsFromDict - unable to find 'is-slar-fcal' field " + << std::endl ; + } + return (1); + } + + // Set the field implementations + + const IdDictRegion& region = *dict()->m_regions[m_fcal_region_index]; + + /* + std::cout << "LArFCAL_Base_ID::initLevelsFromDict - found levels " << std::endl ; + std::cout << "part " << m_FCAL_INDEX << std::endl ; + std::cout << "pos-neg " << m_POSNEG_INDEX << std::endl ; + std::cout << "module " << m_MODULE_INDEX << std::endl ; + std::cout << "eta " << m_ETA_INDEX << std::endl ; + std::cout << "phi " << m_PHI_INDEX << std::endl ; + */ + + m_lar_impl = region.m_implementation[m_LAR_INDEX]; + m_fcal_impl = region.m_implementation[m_FCAL_INDEX]; + m_pn_impl = region.m_implementation[m_POSNEG_INDEX]; + m_module_impl = region.m_implementation[m_MODULE_INDEX]; + m_eta_impl = region.m_implementation[m_ETA_INDEX]; + m_phi_impl = region.m_implementation[m_PHI_INDEX]; + m_slar_impl = region.m_implementation[m_SLAR_INDEX]; + + if(m_msgSvc) { + log << MSG::DEBUG << "decode index and bit fields for each level: " << endreq; + log << MSG::DEBUG << "lar " << m_lar_impl.show_to_string() << endreq; + log << MSG::DEBUG << "fcal " << m_fcal_impl.show_to_string() << endreq; + log << MSG::DEBUG << "pn " << m_pn_impl.show_to_string() << endreq; + log << MSG::DEBUG << "mod " << m_module_impl.show_to_string() << endreq; + log << MSG::DEBUG << "eta " << m_eta_impl.show_to_string() << endreq; + log << MSG::DEBUG << "phi " << m_phi_impl.show_to_string() << endreq; + log << MSG::DEBUG << "is-slar " << m_slar_impl.show_to_string() << endreq; + } + else { + std::cout << "decode index and bit fields for each level: " << std::endl; + std::cout << "lar " << m_lar_impl.show_to_string() << std::endl; + std::cout << "fcal " << m_fcal_impl.show_to_string() << std::endl; + std::cout << "pn " << m_pn_impl.show_to_string() << std::endl; + std::cout << "mod " << m_module_impl.show_to_string() << std::endl; + std::cout << "eta " << m_eta_impl.show_to_string() << std::endl; + std::cout << "phi " << m_phi_impl.show_to_string() << std::endl; + std::cout << "is-slar " << m_slar_impl.show_to_string() << std::endl; + } + + + return(0) ; +} + +int LArFCAL_Base_ID::init_hashes(void) +{ + if (channels().init (*this, "channels", + m_full_channel_range, + &LArFCAL_Base_ID::channel_id, + m_SLAR_INDEX)) + return 1; + if (regions().init (*this, "regions", + m_full_module_range, + &LArFCAL_Base_ID::module_id, + m_MODULE_INDEX)) + return 1; + + return (0); +} + +int LArFCAL_Base_ID::init_disc_hashes(void) +{ + if (m_disc_channels.init (*this, "channels", + m_full_disc_channel_range, + &LArFCAL_Base_ID::disc_channel_id, + m_SLAR_INDEX)) + return 1; + if (m_disc_modules.init (*this, "regions", + m_full_disc_module_range, + &LArFCAL_Base_ID::disc_module_id, + m_MODULE_INDEX)) + return 1; + + return (0); +} + + +int LArFCAL_Base_ID::get_neighbours(const IdentifierHash id, const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const +{ + int result = 1; + + neighbourList.clear(); + + if(!m_do_neighbours) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + log << MSG::WARNING << "neighbours not initialized !!! returning empty list" << endreq; + } + else { + std::cout << " neighbours not initialized !!! returning empty list " << std::endl; + } + return result; + } + + if(id>=channel_hash_max()) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + log << MSG::WARNING << "neighbours requested for unconnected channel -- this is not implemented" << endreq; + } + else { + std::cout << " neighbours requested for unconnected channel -- this is not implemente" << std::endl; + } + return result; + } + + if( dictionaryVersion() == "fullAtlas" || dictionaryVersion() == "H6TestBeam" ) { + + if ( (option & LArNeighbours::all2D) == LArNeighbours::all2D ){ + if ( m_neighbours_2d_vec[(unsigned int)id].size() > 0 ) { + neighbourList.insert(neighbourList.end(), + m_neighbours_2d_vec[(unsigned int)id].begin(), + m_neighbours_2d_vec[(unsigned int)id].end()); + } + } + + if ( (option & LArNeighbours::prevInSamp) ){ + if ( m_neighbours_3d_prev_vec[(unsigned int)id].size() > 0 ) { + neighbourList.insert(neighbourList.end(), + m_neighbours_3d_prev_vec[(unsigned int)id].begin(), + m_neighbours_3d_prev_vec[(unsigned int)id].end()); + } + } + + if ( (option & LArNeighbours::nextInSamp) ){ + if ( m_neighbours_3d_next_vec[(unsigned int)id].size() > 0 ) { + neighbourList.insert(neighbourList.end(), + m_neighbours_3d_next_vec[(unsigned int)id].begin(), + m_neighbours_3d_next_vec[(unsigned int)id].end()); + } + } + + } else { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + log << MSG::WARNING << " NO FCAL neighbours (yet) in the context of " << dictionaryVersion() << endreq; + } + else { + std::cout << " NO FCAL neighbours (yet) in the context of " << dictionaryVersion() << std::endl; + } + } + return result; +} + +int LArFCAL_Base_ID::init_neighbours_from_file(std::string filename, std::vector<std::set<IdentifierHash> > & vec) +{ + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + + log << MSG::DEBUG << "init_neighbours_from_file" << endreq; + // Find the full path to filename: + std::string file = PathResolver::find_file (filename, "DATAPATH"); + log << MSG::INFO << "Reading file " << file << endreq; + std::ifstream fin; + if (file != "") { + fin.open(file.c_str()); + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "Could not find input file " << filename << endreq; + } + else { + std::cout << "LarFCal_Base_ID::Could not find input file " << filename << std::endl; + } + return 1; + } + if (fin.bad()) { + if(m_msgSvc) { + log << MSG::ERROR << "Could not open file " << file << endreq; + } + else { + std::cout << "LarFCal_Base_ID::Could not open file " << file << std::endl; + } + return 1; + } + + // + // Parse the input file + // + + vec.resize(channel_hash_max()); + + char aLine[MAX_BUFFER_LEN]; + std::string sLine; + bool isComment = true; + char AorC,dot; + int isamp,iphi,ieta; + + while( isComment ) { + sLine.resize( 0 ); + do { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + } while (sLine == "" && !fin.eof()); + isComment = ( sLine.find("#") != std::string::npos ); + } + do { + unsigned int ic, inext; + Identifier thisCell,nextCell; + while ( sLine == "" && !fin.eof()) { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + } + std::istringstream es( sLine.c_str() ); + + if ( es >> AorC >> isamp >> dot >> iphi >> dot >> ieta ) { + thisCell = channel_id((AorC=='A'||AorC=='S'?2:-2),isamp,ieta,iphi); + ic = channel_hash(thisCell); + while ( es >> AorC >> isamp >> dot >> iphi >> dot >> ieta ) { + nextCell = channel_id((AorC=='A'||AorC=='S'?2:-2),isamp,ieta,iphi); + inext = channel_hash(nextCell); + vec[ic].insert(vec[ic].end(),inext); + } + sLine.resize(0); + } + }while (!fin.eof()) ; + fin.close(); + + return 0; +} + +int +LArFCAL_Base_ID::init_neighbours(const IdDictMgr& dict_mgr) +{ + + MsgStream log(m_msgSvc, "LArFCAL_Base_ID" ); + if(m_msgSvc) { + log << MSG::DEBUG << "init_neighbours" << endreq; + } + else { + std::cout << "LarFCal_Base_ID::init_neighbours " << std::endl; + } + + int status; + std::string f2d,f3dnext,f3dprev; + + if ( m_slar ) { + f2d = "FCalSuperCells2DNeighborsNew-April2014.txt"; + f3dnext = "FCalSuperCells3DNeighborsNextNew-April2014.txt"; + f3dprev = "FCalSuperCells3DNeighborsPrevNew-April2014.txt"; + } + else { + f2d = dict_mgr.find_metadata("FCAL2DNEIGHBORS"); + f3dnext = dict_mgr.find_metadata("FCAL3DNEIGHBORSNEXT"); + f3dprev = dict_mgr.find_metadata("FCAL3DNEIGHBORSPREV"); + } + if (!f2d.size() || !f3dnext.size() || !f3dprev.size()) { + if(m_msgSvc) { + log << MSG::ERROR << "init_neighbours: cannot find neighbours files: " + << " f2d: " << f2d << " f3dnext: " << f3dnext << " f3dprev: " << f3dprev + << endreq; + } + else { + std::cout << "LarFCal_Base_ID::init_neighbours cannot find neighbours files: " + << " f2d: " << f2d << " f3dnext: " << f3dnext << " f3dprev: " << f3dprev + << std::endl; + } + throw std::runtime_error("LArFCAL_Base_ID::init_neighbours: Cannot find the FCAL Neighbour file names"); + } + + status = init_neighbours_2d(f2d); + if ( status == 0 ) + status = init_neighbours_3d_next(f3dnext); + if ( status == 0 ) + status = init_neighbours_3d_prev(f3dprev); + + if(m_msgSvc) { + log << MSG::DEBUG << "init_neighbours status: " << status << endreq; + } + else { + std::cout << "LarFCal_Base_ID::init_neighbours status: " << status << std::endl; + } + + if ( status == 0 ) + return (0); + else + return (1); +} + diff --git a/Calorimeter/CaloIdentifier/src/LArFCAL_ID.cxx b/Calorimeter/CaloIdentifier/src/LArFCAL_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..4002a4bf13fa4aec27cbcb532563c120c006feea --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArFCAL_ID.cxx @@ -0,0 +1,62 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArFCAL_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "LArFCAL_region.h" +#include "PathResolver/PathResolver.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <fstream> +#include <sstream> +#include <math.h> +#include <stdexcept> + +#define MAX_BUFFER_LEN 1024 + +LArFCAL_ID::LArFCAL_ID(void) : + LArFCAL_Base_ID("LArFCAL_ID", 0) +{ +} + +LArFCAL_ID::~LArFCAL_ID(void) +{ +} + +int LArFCAL_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArFCAL_ID" ); + + std::string strg = "initialize_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (LArFCAL_Base_ID::initialize_base_from_dictionary(dict_mgr, + "lar_fcal")) + { + if(dictionaryVersion() == "H8TestBeam" ) + return 0; + return (1); + } + + return 0; + +} + diff --git a/Calorimeter/CaloIdentifier/src/LArFCAL_SuperCell_ID.cxx b/Calorimeter/CaloIdentifier/src/LArFCAL_SuperCell_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..76c0f0cf199819ab5aa05207ab56892e09ea3f65 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArFCAL_SuperCell_ID.cxx @@ -0,0 +1,49 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArFCAL_SuperCell_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <math.h> + +LArFCAL_SuperCell_ID::LArFCAL_SuperCell_ID(void) : + LArFCAL_Base_ID("LArFCAL_SuperCell_ID", 1) +{ +} + +LArFCAL_SuperCell_ID::~LArFCAL_SuperCell_ID(void) +{ +} + +int LArFCAL_SuperCell_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArFCAL_SuperCell_ID" ); + + log << MSG::DEBUG << "initialize_from_dictionary" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (LArFCAL_Base_ID::initialize_base_from_dictionary(dict_mgr, + "slar_fcal")) + return (1); + + return 0; +} + diff --git a/Calorimeter/CaloIdentifier/src/LArFCAL_region.cxx b/Calorimeter/CaloIdentifier/src/LArFCAL_region.cxx new file mode 100755 index 0000000000000000000000000000000000000000..7e8bea0c8dee7db5f7a93b73b56056fd389bb8ed --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArFCAL_region.cxx @@ -0,0 +1,144 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "LArFCAL_region.h" + +#include <iostream> +#include <math.h> +#include <vector> + + +LArFCAL_region::LArFCAL_region(): + m_hashMin(0) + ,m_nbEtaBins(0) + ,m_nPhi(0) + ,m_minEta(99) + ,m_granulEta(0) + ,m_minPhi(99) + ,m_granulPhi(0) + ,m_fullSym(true) + ,m_prevSampReg(63) + ,m_nextSampReg(63) +{ +} + +LArFCAL_region::LArFCAL_region(unsigned int& minHash, short int& nbEtaBins, short int& nPhi, + float minEta, float granulEta, float minPhi, float granulPhi, bool fullSym, + short int& prevSampReg, short int& nextSampReg) +{ + + m_hashMin = minHash; + m_nbEtaBins = nbEtaBins; + m_nPhi = nPhi; + m_minEta = minEta; + m_granulEta = granulEta; + m_minPhi = minPhi; + m_granulPhi = granulPhi; + m_fullSym = fullSym; + m_prevSampReg = prevSampReg; + m_nextSampReg = nextSampReg; + +} + +LArFCAL_region::~LArFCAL_region() +{ +} + +short int LArFCAL_region::numberOfEta() const +{ + return m_nbEtaBins ; +} + +short int LArFCAL_region::phiN() const +{ + return m_nPhi ; +} + +float LArFCAL_region::etaGranularity() const +{ + return m_granulEta ; +} + +float LArFCAL_region::phiGranularity() const +{ + return m_granulPhi ; +} + +bool LArFCAL_region::fullTwoPi() const +{ + return m_fullSym ; +} + +float LArFCAL_region::etaMin() const +{ + return m_minEta ; +} + +float LArFCAL_region::etaMax() const +{ + return (m_minEta + m_nbEtaBins*m_granulEta) ; +} + +float LArFCAL_region::phiMin() const +{ + return m_minPhi ; +} + +float LArFCAL_region::phiMax() const +{ + return (m_minPhi + m_nPhi*m_granulPhi) ; +} + +unsigned int LArFCAL_region::hashMin() const +{ + return m_hashMin ; +} + +unsigned int LArFCAL_region::hashMax() const +{ + return (m_hashMin + m_nbEtaBins * m_nPhi) ; +} + +bool LArFCAL_region::isEtaMin(const unsigned int& index) const +{ + bool result=false; + if( ((m_hashMin<=index) && (index<(m_hashMin+m_nPhi))))result=true; + return result; +} + +bool LArFCAL_region::isEtaMax(const unsigned int& index) const +{ + bool result=false; + if( ((hashMax()-m_nPhi)<=index) && (index<hashMax()))result=true; + return result; +} + +bool LArFCAL_region::isPhiMin(const unsigned int& index) const +{ + bool result=false; + if( !m_fullSym && (index-m_hashMin)%m_nPhi == 0 )result=true; + return result; +} + +bool LArFCAL_region::isPhiMax(const unsigned int& index) const +{ + bool result=false; + if( !m_fullSym && (index-m_hashMin+1)%m_nPhi == 0 )result=true; + return result; +} + +short int LArFCAL_region::nextSamplingRegion() const +{ + return m_nextSampReg; +} + +short int LArFCAL_region::prevSamplingRegion() const +{ + return m_prevSampReg; +} + + + + + diff --git a/Calorimeter/CaloIdentifier/src/LArFCAL_region.h b/Calorimeter/CaloIdentifier/src/LArFCAL_region.h new file mode 100755 index 0000000000000000000000000000000000000000..af68d043055b91037eeb0bfe80713e534433fac1 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArFCAL_region.h @@ -0,0 +1,99 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LARFCAL_REGION_H +#define LARFCAL_REGION_H + +#include <vector> + + enum { NOT_VALID_FCAL_REGION = 63 }; + +/** +* +* @brief This class provides an interface to deal with regions +* in the neighbours finding +* +*/ + +class LArFCAL_region +{ +public: + + LArFCAL_region(void); + + LArFCAL_region(unsigned int& minHash, short int& nbEtaBins, short int& nPhi, + float minEta, float granulEta, float minPhi, float granulPhi, bool fullSym, + short int& prevEtaSamp, short int& nextEtaSamp); + + ~LArFCAL_region(void); + + /** number of eta bins in the whole region */ + short int numberOfEta() const; + + /** number of phi bins */ + short int phiN() const; + + /** eta granularity */ + float etaGranularity() const; + + /** phi granularity */ + float phiGranularity() const; + + /** true if detector covers full 2pi (== wraparound option in dictionary) */ + bool fullTwoPi() const; + + /** starting eta */ + float etaMin() const; + + /** end eta */ + float etaMax() const; + + /** starting phi */ + float phiMin() const; + + /** end phi */ + float phiMax() const; + + /** hash Id of the first cell of the region */ + unsigned int hashMin() const; + + /** hash Id of the last cell of the region +1 */ + unsigned int hashMax() const; + + /** is the considered cell in the first eta bin of the region ? */ + bool isEtaMin(const unsigned int& index) const; + + /** is the considered cell in the last eta bin of the region ? */ + bool isEtaMax(const unsigned int& index) const; + + /** is the considered cell in the first phi bin of the region ? */ + bool isPhiMin(const unsigned int& index) const; + + /** is the considered cell in the last phi bin of the region ? */ + bool isPhiMax(const unsigned int& index) const; + + /** region number of the prev region in sampling */ + short int prevSamplingRegion() const; + + /** region number of the next region in sampling */ + short int nextSamplingRegion() const; + + +private: + + unsigned int m_hashMin; + short int m_nbEtaBins; + short int m_nPhi; + float m_minEta; + float m_granulEta; + float m_minPhi; + float m_granulPhi; + bool m_fullSym; + + short int m_prevSampReg; + short int m_nextSampReg; + +}; + +#endif // LARFCAL_REGION_H diff --git a/Calorimeter/CaloIdentifier/src/LArHEC_Base_ID.cxx b/Calorimeter/CaloIdentifier/src/LArHEC_Base_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..ac770fcc511e40f3eea951ceca5c971318dce1d8 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArHEC_Base_ID.cxx @@ -0,0 +1,1527 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/LArHEC_Base_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Factor out code common between LArHEC_ID and LArHEC_SuperCell_ID. + */ + + +#include "CaloIdentifier/LArHEC_Base_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "LArHEC_region.h" +#include "CxxUtils/StrFormat.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <math.h> + +using CxxUtils::strformat; + + +LArHEC_Base_ID::LArHEC_Base_ID (const std::string& name, bool supercell) : + CaloIDHelper (name) + , m_slar (supercell ? 1 : 0) + , m_hec_region_index(0) + , m_LAR_INDEX(999) + , m_HEC_INDEX(999) + , m_POSNEG_INDEX(999) + , m_SAMPLING_INDEX(999) + , m_REGION_INDEX(999) + , m_ETA_INDEX(999) + , m_PHI_INDEX(999) + , m_SLAR_INDEX(999) + , m_two_sym_sides(1) +{ +} + +LArHEC_Base_ID::~LArHEC_Base_ID(void) +{ + std::vector<LArHEC_region*>::iterator first = m_vecOfRegions.begin(); + std::vector<LArHEC_region*>::iterator last = m_vecOfRegions.end(); + for (; first != last; ++first) delete (*first); +} + +Identifier LArHEC_Base_ID::channel_id ( int pos_neg, int sampling, + int eta, int phi ) const throw(LArID_Exception) +{ + // must calculate region number and shift eta + int region=999; + if ( 0 <= eta && eta < 10 ) { region = 0;} + else if ( 10 <= eta && eta < 14 ) { region = 1; eta -= 10;} + + return (channel_id (pos_neg, sampling, region, eta, phi)); +} + + +Identifier LArHEC_Base_ID::channel_id ( int pos_neg, int sampling, int sector, int region, + int eta, int phi_sector ) const throw(LArID_Exception) +{ + int phi = ( region == 0 ? sector*2 + phi_sector : sector ); + return (channel_id (pos_neg, sampling, region, eta, phi )); +} + + +bool LArHEC_Base_ID::is_connected ( int pos_neg, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception) +{ + bool result=false; + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_hec_exp()); + expId << pos_neg << sampling << region << eta << phi << m_slar; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArHEC_Base_ID::is_connected(field values), " + + strformat ("pos_neg: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 8); + } + + if (m_full_channel_range.match(expId)) { + result=true; + } + return (result); +} + +bool LArHEC_Base_ID::is_disconnected ( int pos_neg, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception) +{ + bool result=false; + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -2 << pos_neg << sampling << region << eta << phi << m_slar; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArHEC_Base_ID::is_disconnected(field values), " + + strformat ("pos_neg: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 8); + } + + if (m_full_disc_channel_range.match(expId)) { + result=true; + } + return (result); +} + + +int LArHEC_Base_ID::eta_min(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int LArHEC_Base_ID::eta_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArHEC_Base_ID::phi_min_init(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_minimum()) { + int phimin = phi_field.get_minimum(); + if (-999 == result) { + result = phimin; + } + else { + if (phimin < result) result = phimin; + } + } + } + } + return (result); + } + return (-999); // default +} + +int LArHEC_Base_ID::phi_max(const Identifier regId) const +{ + ExpandedIdentifier expId; + IdContext region_cntxt = region_context(); + if(!get_expanded_id(regId, expId, ®ion_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArHEC_Base_ID::disc_eta (const Identifier id)const +{ + return(m_eta_impl.unpack(id)); +} + +int LArHEC_Base_ID::disc_phi (const Identifier id)const +{ + return(m_phi_impl.unpack(id)); +} + +int LArHEC_Base_ID::initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name) +/*===================================================================*/ +{ + MsgStream log(m_msgSvc, "LArHEC_Base_ID" ); + + std::string strg = "initialize_base_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(CaloIDHelper::initialize_base_from_dictionary(dict_mgr, + "LArCalorimeter")) + return (1); + + // initialize dictionary version + AtlasDetectorID::setDictVersion(dict_mgr, "LArCalorimeter"); + + // Initialize the field indices + if(initLevelsFromDict(group_name)) { + strg = " initialize_base_from_dict - cannot initialize HEC part of LArCalorimeter dictionary "; + if(m_msgSvc) { + log << MSG::WARNING << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + // return (1); // to allow TB dictionary (no HEC in H8) + } + else { + // Find value for the field LAr Calorimeter + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int larField = -1; + if (atlasDict->get_label_value("subdet", "LArCalorimeter", larField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find value for the field LArHEC + int larHecField = -1; + if (dict()->get_label_value("part", "LArHEC", larHecField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArHEC' of field 'part' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find value for the field LArHECdisc + int larHecDiscField = -1; + if (dict()->get_label_value("part", "LArHECdisc", larHecDiscField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArHECdisc' of field 'part' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + + // Set up id for region and range prefix + ExpandedIdentifier exp_region_id; + exp_region_id.add(larField); + exp_region_id.add(larHecField); + Range prefix; + ExpandedIdentifier exp_region_id2; + exp_region_id2.add(larField); + exp_region_id2.add(larHecDiscField); + Range prefix2; + + // (1) Connected channels + m_full_channel_range = dict()->build_multirange(exp_region_id, group_name, prefix); + m_full_region_range = dict()->build_multirange(exp_region_id, group_name, prefix, "region"); + + // (2) Disconnected channels + m_full_disc_channel_range = dict()->build_multirange(exp_region_id2, group_name, prefix2); + m_full_disc_region_range = dict()->build_multirange(exp_region_id2, group_name, prefix2, "region"); + + std::string strg0 = "initialize_from_dict : " ; + std::string strg1 = " channel range -> " + (std::string)m_full_channel_range; + std::string strg2 = " region range -> " + (std::string)m_full_region_range; + std::string strg3 = " disconnected channel range -> " + (std::string)m_full_disc_channel_range; + std::string strg4 = " disconnected region range -> " + (std::string)m_full_disc_region_range; + if(m_msgSvc) { + log << MSG::DEBUG << strg0 << endreq; + log << MSG::DEBUG << strg1 << endreq; + log << MSG::DEBUG << strg2 << endreq; + log << MSG::DEBUG << strg3 << endreq; + log << MSG::DEBUG << strg4 << endreq; + } + else { + std::cout << strg0 << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + std::cout << strg3 << std::endl; + std::cout << strg4 << std::endl; + } + + + // initilize m_two_sym_sides + m_two_sym_sides = ( dictionaryVersion() == "fullAtlas" ); + + // Setup the hash tables + if(init_hashes()) return (1); + if(init_disc_hashes()) return (1); + + // initialize dictionary regions + if (fill_vec_of_dict_regions (group_name)) return 1; + + // added nov 2005 to speed up CaloNoiseTool initialisation + m_vecOfPhiMin.resize(region_hash_max()); + for (unsigned int i = 0; i < region_hash_max(); ++i) { + Identifier regId = region_id(i); + m_vecOfPhiMin[i] = phi_min_init(regId); + } + + // Setup for hash calculation + // The regions have uniform eta/phi granularity. + // The lookup table only needs to contain the + // hash offset for each region, the first eta index + // and the number of phi cells. + + // The implementation requires: + + // 1) a lookup table for each region containing hash offset, + // etamin and nphi + // 2) a decoder to access the "index" corresponding to the + // pn/samp/reg fields. These fields use 4 bits, so the + // vector has a length of 16 for 16 regions. + + // Create decoder for fields pn to region + IdDictFieldImplementation::size_type bits = + m_pn_impl.bits() + + m_sampling_impl.bits() + + m_region_impl.bits(); + IdDictFieldImplementation::size_type bits_offset = m_pn_impl.bits_offset(); + m_pn_reg_impl.set_bits(bits, bits_offset); + + // std::cout << "pn_reg " << m_pn_reg_impl.decode_index() << " " + // << (std::string)m_pn_reg_impl.ored_field() << " " + // << std::hex << m_pn_reg_impl.mask() << " " + // << m_pn_reg_impl.zeroing_mask() << " " + // << std::dec << m_pn_reg_impl.shift() + // << " " << m_pn_reg_impl.bits() << " " <<m_pn_reg_impl.bits_offset() + // << std::endl; + + + // Set up vector as lookup table for hash calculation. + m_hash_calcs.resize(16); + + for (unsigned int i = 0; i < region_hash_max(); ++i) { + + Identifier regId = region_id(i) ; + HashCalc hc; + + int etamin = eta_min(regId); + if(etamin < 0) { + etamin = 0; + std::string strg = "setting etamin to 0 because actual value not found for regId " + + show_to_string(regId); + if(m_msgSvc) { + log << MSG::WARNING << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + } + int phimin = phi_min(regId); + if(phimin < 0) { + phimin = 0; + std::string strg = "setting phimin to 0 because actual value not found for regId " + + show_to_string(regId); + if(m_msgSvc) { + log << MSG::WARNING << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + } + Identifier min = channel_id ( regId, etamin, phimin); + IdentifierHash min_hash = channel_hash_binary_search(min); + hc.m_hash = min_hash; + hc.m_etamin = etamin; + hc.m_phimin = phimin; + hc.m_nphi = phi_max(min)-phimin+1 ; + m_hash_calcs[m_pn_reg_impl.unpack(min)] = hc; + + if (m_pn_reg_impl.unpack(min) > 15) { + std::stringstream strm ; + strm << i; + strm << m_pn_reg_impl.unpack(min); + std::string strg = "min > 15 " + + strm.str() + show_to_string(min) ; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + } + } + + // Check hash calculation + for (unsigned int i = 0; i < channel_hash_max(); ++i) { + Identifier id = channel_id(i); + if (channel_hash(id) != i) { + std::stringstream strm ; + strm << channel_hash(id); + strm << i; + std::string strg = "channel ranges, id, hash, i = " + + show_to_string(id) + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + } + } + } + + // Setup hash tables for finding neighbors + if(m_do_neighbours) { + if(init_neighbors()) return (1); + } + + return 0; +} + + + +void LArHEC_Base_ID::region_id_checks ( int pos_neg, int sampling, int region ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id (initially with 4/2/0/0/0/0/0) + ExpandedIdentifier expId(lar_hec_exp()); + expId << pos_neg << sampling << region ; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArHEC_Base_ID::region_id, " + + strformat ("pos_neg: %d , sampling: %d, region: %d ", + pos_neg , sampling , region); + throw LArID_Exception(errorMessage , 7); + } + + if (!m_full_region_range.match(expId)) { + std::string errorMessage = "LArHEC_Base_ID::region_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw LArID_Exception(errorMessage , 7); + } + +} + +void LArHEC_Base_ID::channel_id_checks ( int pos_neg, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_hec_exp()); + expId << pos_neg << sampling << region << eta << phi << m_slar ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArHEC_Base_ID::channel_id(field values), " + + strformat ("pos_neg: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 8); + } + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "LArHEC_Base_ID::channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw LArID_Exception(errorMessage , 8); + } +} + +void LArHEC_Base_ID::channel_id_checks ( const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = region_context(); + if (get_expanded_id(regionId, expId, &context)) { + std::string errorMessage = "LArHEC_Base_ID::channel_id(regId) result is not OK: ID = " + + show_to_string(regionId) ; + throw LArID_Exception(errorMessage , 8); + } + + expId << eta << phi << m_slar; + + if ( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArHEC_Base_ID::channel_id(region id , field values), " + + strformat ("pos_neg: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + this->pos_neg(regionId) , + this->sampling(regionId), + this->region(regionId), eta, phi); + throw LArID_Exception(errorMessage , 8); + } + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "LArHEC_Base_ID::channel_id(regId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw LArID_Exception(errorMessage , 8); + } +} + +void LArHEC_Base_ID::disc_region_id_checks ( int pos_neg, int sampling, int region ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + ExpandedIdentifier expId(lar_exp()); + expId << -2 << pos_neg << sampling << region ; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArHEC_Base_ID::region_id, " + + strformat ("pos_neg: %d , sampling: %d, region: %d ", + pos_neg , sampling , region); + throw LArID_Exception(errorMessage , 7); + } + + if (!m_full_disc_region_range.match(expId)) { + std::string errorMessage = "LArHEC_Base_ID::disc_region_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_region_range; + throw LArID_Exception(errorMessage , 7); + } + +} + +void LArHEC_Base_ID::disc_channel_id_checks ( int pos_neg, int sampling, int region, + int eta, int phi ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -2 << pos_neg << sampling << region << eta << phi << m_slar; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArHEC_Base_ID::disc_channel_id(field values), " + + strformat ("pos_neg: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + pos_neg , sampling , region, eta, phi); + throw LArID_Exception(errorMessage , 8); + } + + if (!m_full_disc_channel_range.match(expId)) { + std::string errorMessage = "LArHEC_Base_ID::disc_channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_channel_range; + throw LArID_Exception(errorMessage , 8); + } +} + +void LArHEC_Base_ID::disc_channel_id_checks ( const Identifier regionId, + int eta, int phi ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = region_context(); + if (get_disc_expanded_id(regionId, expId, &context)) { + std::string errorMessage = "LArHEC_Base_ID::disc_channel_id(regId) result is not OK: ID = " + + show_to_string(regionId) ; + throw LArID_Exception(errorMessage , 8); + } + + expId << eta << phi ; + + if ( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArHEC_Base_ID::disc_channel_id(region id , field values), " + + strformat ("pos_neg: %d , sampling: %d, region: %d , eta: %d , phi: %d ", + this->pos_neg(regionId) , + this->sampling(regionId), + this->region(regionId), eta, phi); + throw LArID_Exception(errorMessage , 8); + } + + if (!m_full_disc_channel_range.match(expId)) { + std::string errorMessage = "LArHEC_Base_ID::disc_channel_id(regId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_channel_range; + throw LArID_Exception(errorMessage , 8); + } +} + +int LArHEC_Base_ID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << lar_hec_field_value() + << pos_neg(id) + << sampling(id) + << region(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if ( context->end_index() >= m_SLAR_INDEX) { + exp_id << (unsigned)is_supercell(id); + } + } + } + return (0); +} + +int LArHEC_Base_ID::get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << -2 + << pos_neg(id) + << sampling(id) + << region(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + if (context->end_index() >= m_SLAR_INDEX) { + exp_id << (unsigned)is_supercell(id); + } + } + } + return (0); +} + + +int LArHEC_Base_ID::initLevelsFromDict (const std::string& /*group_name*/) +{ + MsgStream log(m_msgSvc, "LArHEC_Base_ID" ); + + if(!dict()) { + std::string strg = "initLevelsFromDict - dictionary NOT initialized "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_LAR_INDEX = 999 ; + m_HEC_INDEX = 999 ; + m_POSNEG_INDEX = 999 ; + m_SAMPLING_INDEX = 999 ; + m_REGION_INDEX = 999 ; + m_ETA_INDEX = 999 ; + m_PHI_INDEX = 999 ; + m_SLAR_INDEX = 999 ; + + // Save index to a HEC region for unpacking + ExpandedIdentifier expId(lar_hec_exp()); + if (dict()->find_region(expId,m_hec_region_index)){ + std::stringstream strm ; + strm << m_hec_region_index ; + std::string strg = "initLevelsFromDict - unable to find hec region index: id, reg " + + (std::string)expId + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + IdDictField* field = dict()->find_field("subdet") ; + if (field) { + m_LAR_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'subdet' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("part") ; + if (field) { + m_HEC_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'part' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("barrel-endcap") ; + if (field) { + m_POSNEG_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'barrel-endcap' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("sampling") ; + if (field) { + m_SAMPLING_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'sampling' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("region") ; + if (field) { + m_REGION_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'region' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("eta") ; + if (field) { + m_ETA_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'eta' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("phi") ; + if (field) { + m_PHI_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'phi' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("is-slar-hec") ; + if (field) { + m_SLAR_INDEX = field->m_index ; + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'is-slar-hec' field " + << endreq; + } + else { + std::cout << "LArEM_Base_ID::initLevelsFromDict - unable to find 'is-slar-hec' field " + << std::endl ; + } + return (1); + } + + + // Set the field implementations + + const IdDictRegion& region = *dict()->m_regions[m_hec_region_index]; + + /* + std::cout << "LArHEC_Base_ID::initLevelsFromDict - found levels " << std::endl ; + std::cout << "lar " << m_LAR_INDEX << std::endl ; + std::cout << "part " << m_HEC_INDEX << std::endl ; + std::cout << "pos-neg " << m_POSNEG_INDEX << std::endl ; + std::cout << "sampling " << m_SAMPLING_INDEX << std::endl ; + std::cout << "region " << m_REGION_INDEX << std::endl ; + std::cout << "eta " << m_ETA_INDEX << std::endl ; + std::cout << "phi " << m_PHI_INDEX << std::endl ; + std::cout << "slar " << m_SLAR_INDEX << std::endl ; + */ + + m_lar_impl = region.m_implementation[m_LAR_INDEX]; + m_hec_impl = region.m_implementation[m_HEC_INDEX]; + m_pn_impl = region.m_implementation[m_POSNEG_INDEX]; + m_sampling_impl = region.m_implementation[m_SAMPLING_INDEX]; + m_region_impl = region.m_implementation[m_REGION_INDEX]; + m_eta_impl = region.m_implementation[m_ETA_INDEX]; + m_phi_impl = region.m_implementation[m_PHI_INDEX]; + m_slar_impl = region.m_implementation[m_SLAR_INDEX]; + + + if(m_msgSvc) { + log << MSG::DEBUG << "decode index and bit fields for each level: " << endreq; + log << MSG::DEBUG << "lar " << m_lar_impl.show_to_string() << endreq; + log << MSG::DEBUG << "hec " << m_hec_impl.show_to_string() << endreq; + log << MSG::DEBUG << "pn " << m_pn_impl.show_to_string() << endreq; + log << MSG::DEBUG << "samp " << m_sampling_impl.show_to_string() << endreq; + log << MSG::DEBUG << "reg " << m_region_impl.show_to_string() << endreq; + log << MSG::DEBUG << "eta " << m_eta_impl.show_to_string() << endreq; + log << MSG::DEBUG << "phi " << m_phi_impl.show_to_string() << endreq; + log << MSG::DEBUG << "is-slar " << m_slar_impl.show_to_string() << endreq; + } + else { + std::cout << "decode index and bit fields for each level: " << std::endl; + std::cout << "lar " << m_lar_impl.show_to_string() << std::endl; + std::cout << "hec " << m_hec_impl.show_to_string() << std::endl; + std::cout << "pn " << m_pn_impl.show_to_string() << std::endl; + std::cout << "samp " << m_sampling_impl.show_to_string() << std::endl; + std::cout << "reg " << m_region_impl.show_to_string() << std::endl; + std::cout << "eta " << m_eta_impl.show_to_string() << std::endl; + std::cout << "phi " << m_phi_impl.show_to_string() << std::endl; + std::cout << "is-slar " << m_slar_impl.show_to_string() << std::endl; + } + + return(0) ; +} + +int LArHEC_Base_ID::init_hashes() +{ + if (channels().init (*this, "channels", + m_full_channel_range, &LArHEC_Base_ID::channel_id, + m_SLAR_INDEX)) + return 1; + if (regions().init (*this, "regions", + m_full_region_range, &LArHEC_Base_ID::region_id, + m_REGION_INDEX)) + return 1; + + return (0); +} + +int LArHEC_Base_ID::init_disc_hashes(void) +{ + if (m_disc_channels.init (*this, "channels", + m_full_disc_channel_range, + &LArHEC_Base_ID::disc_channel_id, + m_SLAR_INDEX)) + return 1; + if (m_disc_regions.init (*this, "regions", + m_full_disc_region_range, + &LArHEC_Base_ID::disc_region_id, + m_REGION_INDEX)) + return 1; + + return (0); +} + + +int LArHEC_Base_ID::get_neighbours(const IdentifierHash id, const LArNeighbours::neighbourOption& option, std::vector<IdentifierHash>& neighbourList) const +{ + int result = 1; + + neighbourList.clear(); + + if(!m_do_neighbours) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArHEC_Base_ID" ); + log << MSG::WARNING << "neighbours not initialized !!! returning empty list" << endreq; + } + else { + std::cout << " LArHEC_Base_ID: neighbours not initialized !!! returning empty list " << std::endl; + } + return result; + } + + if(id>=channel_hash_max()) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArHEC_Base_ID" ); + log << MSG::WARNING << "neighbours requested for unconnected channel -- this is not implemented" << endreq; + } + else { + std::cout << " neighbours requested for unconnected channel -- this is not implemente" << std::endl; + } + return result; + } + + const short int maxNeighb=20; + IdentifierHash neighbList[maxNeighb]; + int neighbourIndex = 0; + + // cell index + unsigned int index=id; + + // + // .... find in which region is the cell + // + short int regionN=m_vecOfCellInfo[index]; + // get pointer to this region + LArHEC_region* hecRegion = m_vecOfRegions[regionN]; + // retrieve characteristic numbers for this region + short int nPhi = hecRegion->phiN(); + float gPhi = hecRegion->phiGranularity(); + unsigned int minHash = hecRegion->hashMin(); + unsigned int maxHash = hecRegion->hashMax(); + + bool corners2DOnly = ( (option & LArNeighbours::all2D) + == LArNeighbours::corners2D ); + // + // .... previous neighbour in phi + // + IdentifierHash prevNeighbInPhi=NOT_VALID_HASH; + if( (option & LArNeighbours::prevInPhi) + || corners2DOnly ){ + if(!get_prevInPhi(hecRegion, index, nPhi, minHash, neighbourIndex, neighbList)){ + prevNeighbInPhi=neighbList[neighbourIndex-1]; + if( corners2DOnly ){ + neighbourIndex--; + } + } + } + + // + // ....next neighbour in phi + // + IdentifierHash nextNeighbInPhi=NOT_VALID_HASH; + if( (option & LArNeighbours::nextInPhi) + || corners2DOnly ){ + if(!get_nextInPhi(hecRegion, index, nPhi, minHash, neighbourIndex, neighbList)){ + nextNeighbInPhi=neighbList[neighbourIndex-1]; + if( corners2DOnly ){ + neighbourIndex--; + } + } + } + + // + // ....previous neighbours in eta + // + unsigned int nPrevBiggerCell=NOT_VALID_HASH; + if( (option & LArNeighbours::prevInEta) ){ + get_prevInEta(hecRegion, index, nPhi, gPhi, minHash, neighbourIndex, neighbList, nPrevBiggerCell); + } + + // + // ....next neighbours in eta + // + unsigned int nNextBiggerCell=NOT_VALID_HASH; + if( (option & LArNeighbours::nextInEta) ){ + get_nextInEta(hecRegion, index, nPhi, gPhi, maxHash, neighbourIndex, neighbList, nNextBiggerCell); + } + + // + // ....corners in the same sampling + // + if( (option & LArNeighbours::corners2D) ){ + if(prevNeighbInPhi != NOT_VALID_HASH){ + unsigned int index1=prevNeighbInPhi; + int oldNeighbourIndex = neighbourIndex; + // allow only 1 corner cell in order to avoid the problem of + // non-mutual neighbourness + // since the cells come ordered in phi it should be the last cell for + // prevNeighbInPhi as starting points + get_prevInEta(hecRegion, index1, nPhi, gPhi, minHash, neighbourIndex, neighbList, nPrevBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbList[oldNeighbourIndex] = neighbList[neighbourIndex-1]; + neighbourIndex = oldNeighbourIndex+1; + } + oldNeighbourIndex = neighbourIndex; + get_nextInEta(hecRegion, index1, nPhi, gPhi, maxHash, neighbourIndex, neighbList, nNextBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbList[oldNeighbourIndex] = neighbList[neighbourIndex-1]; + neighbourIndex = oldNeighbourIndex+1; + } + } + + if(nextNeighbInPhi != NOT_VALID_HASH){ + unsigned int index2=nextNeighbInPhi; + int oldNeighbourIndex = neighbourIndex; + // allow only 1 corner cell in order to avoid the problem of + // non-mutual neighbourness + // since the cells come ordered in phi it should be the 1st cell for + // nextNeighbInPhi + get_prevInEta(hecRegion, index2, nPhi, gPhi, minHash, neighbourIndex, neighbList, nPrevBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbourIndex = oldNeighbourIndex+1; + } + oldNeighbourIndex = neighbourIndex; + get_nextInEta(hecRegion, index2, nPhi, gPhi, maxHash, neighbourIndex, neighbList, nNextBiggerCell); + if ( neighbourIndex > oldNeighbourIndex+1 ) { + neighbourIndex = oldNeighbourIndex+1; + } + } + } + + // + // .... neighbours in sampling (common code) + // HEC caracteristics = no granularity change, partial overlap of samplings + // + if( (option & LArNeighbours::upAndDown) ){ + // initial eta granularity + float granEta = hecRegion->etaGranularity(); + // initial eta + int nEta = int( (index-minHash) / nPhi); + double absEta = hecRegion->etaMin() + nEta*granEta; + + // previous neighbours in sampling + if( (option & LArNeighbours::prevInSamp) ){ + get_prevInSamp(hecRegion, index, nPhi, minHash, absEta, neighbourIndex, neighbList); + } // end option + + // next neighbours in sampling + if( (option & LArNeighbours::nextInSamp) ){ + get_nextInSamp(hecRegion, index, nPhi, minHash, absEta, neighbourIndex, neighbList); + } + } + + neighbourList.resize(neighbourIndex); + if (neighbourIndex <= maxNeighb) { + std::copy (&neighbList[0], &neighbList[neighbourIndex], neighbourList.begin()); + result = 0 ; + } else { + std::stringstream strm ; + strm << neighbourIndex ; + std::string strg = "more than 20 neighbours for this cell, NONE will be retained " + + strm.str(); + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArHEC_Base_ID" ); + log << MSG::WARNING << strg << endreq; + } + else { + std::cout << "WARNING: " << strg << std::endl; + } + } + return result; + +} + +int LArHEC_Base_ID::get_prevInPhi(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + if(!hecRegion->isPhiMin(index)) { + unsigned int nIndex = index-1; + if( ((index-minHash)%(nPhi)) == 0 ) nIndex=index+nPhi-1; + IdentifierHash nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArHEC_Base_ID::get_nextInPhi(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + if(!hecRegion->isPhiMax(index)) { + unsigned int nIndex = index+1; + if( ((index-minHash+1)%(nPhi)) == 0 ) nIndex=index-nPhi+1; + IdentifierHash nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArHEC_Base_ID::get_prevInEta(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, const unsigned int& minHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const +{ + int result = 1; + unsigned int nIndex = 0; + IdentifierHash nHash = 0; + + if( hecRegion->isEtaMin(index)){ + // eta == etaMin -> go to previous region in eta + short int nPrevEtaRegion = hecRegion->prevEtaRegion(); + // no neighbour if no previous region in eta + if( nPrevEtaRegion != NOT_VALID_HEC_REGION ) { + LArHEC_region* prevHecRegion = m_vecOfRegions[nPrevEtaRegion]; + short int nPhiMinus = prevHecRegion->phiN(); + float gPhiMinus= prevHecRegion->phiGranularity(); + unsigned int maxHashMinus = prevHecRegion->hashMax(); + float phiMargin = 0.5*std::min(gPhi,gPhiMinus); + float rPhi = (index-minHash)*gPhi+hecRegion->phiMin(); + int nPhiMinusFirst = int(floor((rPhi -prevHecRegion->phiMin()) + /gPhiMinus+phiMargin)) + +maxHashMinus-nPhiMinus; + int nPhiMinusNext = int(floor((rPhi+gPhi-prevHecRegion->phiMin()) + /gPhiMinus+phiMargin)) + +maxHashMinus-nPhiMinus; + if ( nPhiMinusNext == nPhiMinusFirst ) nPhiMinusNext++; + + for(int i=nPhiMinusFirst; i<nPhiMinusNext; i++){ + nIndex = i ; + if(nIndex != nBiggerCell) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + // to avoid duplicated cells in corners + if(gPhi < gPhiMinus && nBiggerCell == NOT_VALID_HASH) nBiggerCell=nIndex; + } + } + } + else { + // stay in same region (1 neighbour) + nIndex = index - nPhi; + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArHEC_Base_ID::get_nextInEta(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const float& gPhi, + const unsigned int& maxHash, + int& neighbourIndex, IdentifierHash* neighbList, unsigned int& nBiggerCell) const +{ + int result = 1; + unsigned int nIndex = 0; + IdentifierHash nHash = 0; + + if( hecRegion->isEtaMax(index)){ + // eta == etaMax -> go to next region in eta + short int nNextEtaRegion = hecRegion->nextEtaRegion(); + // no neighbour if no next region in eta + if( nNextEtaRegion != NOT_VALID_HEC_REGION ) { + LArHEC_region* nextHecRegion = m_vecOfRegions[nNextEtaRegion]; + float gPhiPlus= nextHecRegion->phiGranularity(); + unsigned int minHashPlus = nextHecRegion->hashMin(); + float phiMargin = 0.5*std::min(gPhi,gPhiPlus); + float rPhi = (index+nPhi-maxHash)*gPhi+hecRegion->phiMin(); + int nPhiPlusFirst = int(floor((rPhi -nextHecRegion->phiMin()) + /gPhiPlus+phiMargin))+minHashPlus; + int nPhiPlusNext = int(floor((rPhi+gPhi-nextHecRegion->phiMin()) + /gPhiPlus+phiMargin))+minHashPlus; + if ( nPhiPlusNext == nPhiPlusFirst ) nPhiPlusNext++; + + for(int i=nPhiPlusFirst; i<nPhiPlusNext; i++){ + nIndex = i ; + if(nIndex != nBiggerCell) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + // to avoid duplicated cells in corners + if(gPhi < gPhiPlus && nBiggerCell == NOT_VALID_HASH) nBiggerCell=nIndex; + } + } + } + else { + // stay in same region (1 neighbour) + nIndex = index + nPhi; + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + return result; +} + +int LArHEC_Base_ID::get_prevInSamp(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + // neighbours' indices + unsigned int nIndex=0; + // neighbours' hash + IdentifierHash nHash=0; + + // previous region in sampling + const std::vector<short int>& prevSampRegion=hecRegion->prevSamplingRegion(); + int nPrevSampReg = prevSampRegion.size(); + if(nPrevSampReg > 0) { + float gEta = hecRegion->etaGranularity(); + float gPhi = hecRegion->phiGranularity(); + for(int ireg=0; ireg<nPrevSampReg; ireg++) { + LArHEC_region* prevHecRegion = m_vecOfRegions[prevSampRegion[ireg]]; + float minEtaMinus = prevHecRegion->etaMin(); + float maxEtaMinus = prevHecRegion->etaMax(); + // eta granularity of previous region + float granEtaMinus = prevHecRegion->etaGranularity(); + float margin = 0.5*std::min(gEta,granEtaMinus); + if((minEtaMinus < absEta+gEta-margin) && (absEta+margin < maxEtaMinus)) { + + // max phi of previous region in sampling + short int nPhiMinus = prevHecRegion->phiN(); + // first hash of previous region in sampling + unsigned int minHashMinus = prevHecRegion->hashMin(); + float gPhiMinus = prevHecRegion->phiGranularity(); + float phiMargin = 0.5*std::min(gPhi,gPhiMinus); + // phi 'coordinate' in initial region + float rPhi = ((index-minHash)%nPhi)*gPhi+hecRegion->phiMin(); + int nPhiMinusFirst = int(floor((rPhi -prevHecRegion->phiMin()) + /gPhiMinus+phiMargin)); + int nPhiMinusNext = int(floor((rPhi+gPhi-prevHecRegion->phiMin()) + /gPhiMinus+phiMargin)); + if ( nPhiMinusNext == nPhiMinusFirst ) nPhiMinusNext++; + // eta coordinate in initial region + double fEtaMinus = (absEta-minEtaMinus) / granEtaMinus + margin; + short int nEtaMinus = int(fEtaMinus) ; + for(int i=nPhiMinusFirst; i<nPhiMinusNext; i++){ + nIndex = minHashMinus + nEtaMinus * nPhiMinus + i; + if( (nIndex >= prevHecRegion->hashMin()) && (nIndex < prevHecRegion->hashMax()) ) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + } + } // end eta condition + } // end loop on ireg + } // end if(nPrevSampReg>0) + return result; +} + +int LArHEC_Base_ID::get_nextInSamp(const LArHEC_region* hecRegion, const unsigned int& index, const short int& nPhi, const unsigned int& minHash, + const double& absEta, + int& neighbourIndex, IdentifierHash* neighbList) const +{ + int result = 1; + // neighbours' indices + unsigned int nIndex=0; + // neighbours' hash + IdentifierHash nHash=0; + + const std::vector<short int>& nextSampRegion=hecRegion->nextSamplingRegion(); + int nNextSampReg = nextSampRegion.size(); + if(nNextSampReg > 0) { + float gEta = hecRegion->etaGranularity(); + float gPhi = hecRegion->phiGranularity(); + for(int ireg=0; ireg<nNextSampReg; ireg++) { + LArHEC_region* nextHecRegion = m_vecOfRegions[nextSampRegion[ireg]]; + float granEtaPlus = nextHecRegion->etaGranularity(); + float minEtaPlus = nextHecRegion->etaMin(); + float maxEtaPlus = nextHecRegion->etaMax(); + float margin = 0.5*std::min(gEta,granEtaPlus); + if((minEtaPlus < absEta+gEta-margin) && (absEta+margin < maxEtaPlus)) { + + short int nPhiPlus = nextHecRegion->phiN(); + unsigned int minHashPlus = nextHecRegion->hashMin(); + float gPhiPlus = nextHecRegion->phiGranularity(); + float phiMargin = 0.5*std::min(gPhi,gPhiPlus); + // phi 'coordinate' in initial region + float rPhi = ((index-minHash)%nPhi)*gPhi+hecRegion->phiMin(); + int nPhiPlusFirst = int(floor((rPhi -nextHecRegion->phiMin()) + /gPhiPlus+phiMargin)); + int nPhiPlusNext = int(floor((rPhi+gPhi-nextHecRegion->phiMin()) + /gPhiPlus+phiMargin)); + if ( nPhiPlusNext == nPhiPlusFirst ) nPhiPlusNext++; + + double fEtaPlus = (absEta-minEtaPlus) / granEtaPlus + margin ; + int nEtaPlus = int(fEtaPlus) ; + for(int i=nPhiPlusFirst; i<nPhiPlusNext; i++){ + nIndex = minHashPlus + nEtaPlus * nPhiPlus + i; + if( (nIndex >= nextHecRegion->hashMin()) && (nIndex < nextHecRegion->hashMax()) ) { + nHash = nIndex; + neighbList[neighbourIndex] = nHash; + neighbourIndex++; + result = 0; + } + } + } + } + } + return result; +} + + +int LArHEC_Base_ID::init_neighbors(void) +{ + MsgStream log(m_msgSvc, "LArHEC_Base_ID" ); + + const std::vector<const IdDictRegion*>& vecOfDictRegions = dictRegions(); + + if(m_msgSvc) { + log << MSG::DEBUG << "init_neighbors" << endreq; + } + else { + std::cout << " LArHEC_Base_ID::init_neighbors " << std::endl; + } + + // + // ..... loop on HEC regions -> store vector of LArHEC_region* + // + short int reg=0; + std::vector<Identifier>::const_iterator debut=reg_begin() ; + std::vector<Identifier>::const_iterator fin =reg_end() ; + + for (; debut != fin; ++debut) + { + const Identifier& regId = (*debut); + bool fullSym = (dictionaryVersion() == "fullAtlas" ); + // + // ..... translate regId to chanId and get hash + // + Identifier id ; + unsigned int index0 = NOT_VALID_HASH; + int etaMin = eta_min(regId); + int phiMin = phi_min(regId); + if(etaMin >= 0 && phiMin >= 0) + { + try{ + id = channel_id (regId, etaMin, phiMin ); + } + catch(LArID_Exception & except){ + if(m_msgSvc) { + log << MSG::ERROR << " LArId exception " + << (std::string)except + << endreq; + } + else { + std::cout + << " LArId exception " + << (std::string)except + << std::endl; + } + } + IdentifierHash hashId = channel_hash(id) ; + index0=hashId; + } + else + { + if(m_msgSvc) { + log << MSG::WARNING << " could not find non negative etaMin and phiMin for region " + << show_to_string(regId) + << endreq; + } + else { + std::cout << "WARNING !! could not find non negative etaMin and phiMin for region " + << show_to_string(regId) + << std::endl; + } + index0 = 0; + } + + + short int deltaEta = eta_max(regId) - eta_min(regId) + 1 ; + short int nPhi = phi_max(regId) - phi_min(regId) + 1 ; + // starting eta + float eta0 = this->eta0(reg); + // eta granularity + float deta = this->etaGranularity(reg); + // starting phi + float phi0 = this->phi0(reg); + // phi granularity + float dphi = this->phiGranularity(reg); + + // full range of regions + unsigned int ireg0=0; + unsigned int ireg1=region_hash_max(); + // if 2 symetric sides, in which side is the current reg. + if(twoSymSides()) { + if(reg < (short int)region_hash_max()/2) { + ireg0=0; + ireg1=region_hash_max()/2; + } else { + ireg0=region_hash_max()/2; + ireg1=region_hash_max(); + } + } + + // + // .... compute prev/next regions in eta + // + short int regForPrevEta=NOT_VALID_HEC_REGION; + IdDictRegion* prevEtaDicReg = vecOfDictRegions[reg]->m_prev_abs_eta; + short int regForNextEta=NOT_VALID_HEC_REGION; + IdDictRegion* nextEtaDicReg = vecOfDictRegions[reg]->m_next_abs_eta; + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == prevEtaDicReg) regForPrevEta = ireg; + if(vecOfDictRegions[ireg] == nextEtaDicReg) regForNextEta = ireg; + } + + // + // .... compute prev/next regions in sampling + // + // + std::vector<short int> regForPrevSamp; + std::vector<IdDictRegion*> prevSampDicReg = vecOfDictRegions[reg]->m_prev_samp; + for(unsigned int isam=0;isam<prevSampDicReg.size();isam++){ + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == prevSampDicReg[isam]) regForPrevSamp.push_back(ireg); + } + } + + std::vector<short int> regForNextSamp; + std::vector<IdDictRegion*> nextSampDicReg = vecOfDictRegions[reg]->m_next_samp; + for(unsigned int isam=0;isam<nextSampDicReg.size();isam++){ + for(unsigned int ireg=ireg0;ireg<ireg1;ireg++){ + if(vecOfDictRegions[ireg] == nextSampDicReg[isam]) regForNextSamp.push_back(ireg); + } + } + + // + // ....now ready to build region object + // + + LArHEC_region * hecRegion = new LArHEC_region(index0,deltaEta,nPhi,eta0,deta,phi0,dphi,fullSym, + regForPrevEta,regForNextEta, + regForPrevSamp,regForNextSamp); + // save in a vector for further use in get_neighbours method + m_vecOfRegions.push_back(hecRegion); + reg++; + } // end of loop on regions + + // + // ..... loop on channels + // + reg=0; + debut = hec_begin(); + fin = hec_end(); + if( debut != fin ){ + Identifier lastRegId=region_id(*debut); + for (; debut != fin; ++debut) { + const Identifier& chanId = (*debut); + const Identifier& regId = region_id(chanId); + if(regId != lastRegId) reg++; + + if(m_do_checks) { + // for cross check only + IdentifierHash hashReg = region_hash(regId); + if ((short int)hashReg != reg) { + if(m_msgSvc) { + log << MSG::ERROR << " init_neighbors: problem reg, hashReg = " << reg << " " << hashReg + << endreq; + } + else { + std::cout << " init_neighbors: problem reg, hashReg = " << reg << " " << hashReg + << std::endl; + } + } + } + + // save region of the cell in a vector for further use in get_neighbours method + m_vecOfCellInfo.push_back(reg); + + lastRegId=regId; + } + } + return (0); +} + + diff --git a/Calorimeter/CaloIdentifier/src/LArHEC_ID.cxx b/Calorimeter/CaloIdentifier/src/LArHEC_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..8d9234c9825c9a12d48834502cb19da013dd8b79 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArHEC_ID.cxx @@ -0,0 +1,54 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArHEC_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "LArHEC_region.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <math.h> + + +LArHEC_ID::LArHEC_ID(void) : + LArHEC_Base_ID ("LArHEC_ID", false) +{ +} + +LArHEC_ID::~LArHEC_ID(void) +{ +} + +int LArHEC_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*===================================================================*/ +{ + MsgStream log(m_msgSvc, "LArHEC_ID" ); + + std::string strg = "initialize_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (LArHEC_Base_ID::initialize_base_from_dictionary(dict_mgr, "lar_hec")) + return (1); + + + return 0; +} + + + diff --git a/Calorimeter/CaloIdentifier/src/LArHEC_SuperCell_ID.cxx b/Calorimeter/CaloIdentifier/src/LArHEC_SuperCell_ID.cxx new file mode 100644 index 0000000000000000000000000000000000000000..efe797f49793a79efeafb5bc8b90553ec260b6f6 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArHEC_SuperCell_ID.cxx @@ -0,0 +1,44 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/LArHEC_SuperCell_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Helper class for LArHEC offline identifiers for supercells + */ + + +#include "CaloIdentifier/LArHEC_SuperCell_ID.h" + + +LArHEC_SuperCell_ID::LArHEC_SuperCell_ID() + : LArHEC_Base_ID ("LArHEC_SuperCell_ID", true) +{ +} + + +int LArHEC_SuperCell_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArHEC_SuperCell_ID" ); + log << MSG::DEBUG << "initialize_from_dictionary" << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (LArHEC_Base_ID::initialize_base_from_dictionary(dict_mgr, "slar_hec")) + return (1); + + return 0; +} + diff --git a/Calorimeter/CaloIdentifier/src/LArHEC_region.cxx b/Calorimeter/CaloIdentifier/src/LArHEC_region.cxx new file mode 100755 index 0000000000000000000000000000000000000000..0408316c927ef25d122f3b5a8e5497d6ba11c731 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArHEC_region.cxx @@ -0,0 +1,157 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "LArHEC_region.h" + +#include <math.h> +#include <vector> + + +LArHEC_region::LArHEC_region(): + m_hashMin(0) + ,m_nbEtaBins(0) + ,m_nPhi(0) + ,m_minEta(99) + ,m_granulEta(0) + ,m_minPhi(99) + ,m_granulPhi(0) + ,m_fullSym(true) + ,m_prevEtaReg(63) + ,m_nextEtaReg(63) +{ +} + +LArHEC_region::LArHEC_region(unsigned int& minHash, short int& nbEtaBins, short int& nPhi, + float minEta, float granulEta, float minPhi, float granulPhi, bool fullSym, + short int& prevEtaReg, short int& nextEtaReg, + std::vector<short int>& prevSampReg, std::vector<short int>& nextSampReg) +{ + + m_hashMin = minHash; + m_nbEtaBins = nbEtaBins; + m_minEta = minEta; + m_granulEta = granulEta; + m_minPhi = minPhi; + m_granulPhi = granulPhi; + m_nPhi = nPhi; + m_fullSym = fullSym; + m_prevEtaReg = prevEtaReg; + m_nextEtaReg = nextEtaReg; + m_prevSampReg = prevSampReg; + m_nextSampReg = nextSampReg; + +} + +LArHEC_region::~LArHEC_region() +{ +} + +short int LArHEC_region::numberOfEta() const +{ + return m_nbEtaBins ; +} + +short int LArHEC_region::phiN() const +{ + return m_nPhi ; +} + +float LArHEC_region::etaGranularity() const +{ + return m_granulEta ; +} + +float LArHEC_region::phiGranularity() const +{ + return m_granulPhi ; +} + +bool LArHEC_region::fullTwoPi() const +{ + return m_fullSym ; +} + +float LArHEC_region::etaMin() const +{ + return m_minEta ; +} + +float LArHEC_region::etaMax() const +{ + return (m_minEta + m_nbEtaBins*m_granulEta) ; +} + +float LArHEC_region::phiMin() const +{ + return m_minPhi ; +} + +float LArHEC_region::phiMax() const +{ + return (m_minPhi + m_nPhi*m_granulPhi) ; +} + +unsigned int LArHEC_region::hashMin() const +{ + return m_hashMin ; +} + +unsigned int LArHEC_region::hashMax() const +{ + return (m_hashMin + m_nbEtaBins * m_nPhi) ; +} + +short int LArHEC_region::prevEtaRegion() const +{ + return m_prevEtaReg; +} + +short int LArHEC_region::nextEtaRegion() const +{ + return m_nextEtaReg; +} + +bool LArHEC_region::isEtaMin(const unsigned int& index) const +{ + bool result=false; + if( ((m_hashMin<=index) && (index<(m_hashMin+m_nPhi))))result=true; + return result; +} + +bool LArHEC_region::isEtaMax(const unsigned int& index) const +{ + bool result=false; + if( ((hashMax()-m_nPhi)<=index) && (index<hashMax()))result=true; + return result; +} + +bool LArHEC_region::isPhiMin(const unsigned int& index) const +{ + bool result=false; + if( !m_fullSym && (index-m_hashMin)%m_nPhi == 0 )result=true; + return result; +} + +bool LArHEC_region::isPhiMax(const unsigned int& index) const +{ + bool result=false; + if( !m_fullSym && (index-m_hashMin+1)%m_nPhi == 0 )result=true; + return result; +} + +const std::vector<short int>& LArHEC_region::nextSamplingRegion() const +{ + return m_nextSampReg; +} + +const std::vector<short int>& LArHEC_region::prevSamplingRegion() const +{ + return m_prevSampReg; +} + + + + + + diff --git a/Calorimeter/CaloIdentifier/src/LArHEC_region.h b/Calorimeter/CaloIdentifier/src/LArHEC_region.h new file mode 100755 index 0000000000000000000000000000000000000000..febd4d1c78b0d11c6e68a3ef45fb4c2725aa968d --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArHEC_region.h @@ -0,0 +1,109 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef LARHEC_REGION_H +#define LARHEC_REGION_H + + +#include <vector> + + enum { NOT_VALID_HEC_REGION = 63 }; + +/** +* +* @brief This class provides an interface to deal with regions +* in the neighbours finding +* +*/ + +class LArHEC_region +{ +public: + + LArHEC_region(void); + + LArHEC_region(unsigned int& minHash, short int& nbEtaBins, short int& nPhi, + float minEta, float granulEta, float minPhi, float granulPhi, bool fullSym, + short int& prevEtaReg, short int& nextEtaReg, + std::vector<short int>& prevEtaSamp, std::vector<short int>& nextEtaSamp); + + ~LArHEC_region(void); + + /** number of eta bins in the whole region */ + short int numberOfEta() const; + + /** number of phi bins */ + short int phiN() const; + + /** eta granularity */ + float etaGranularity() const; + + /** phi granularity */ + float phiGranularity() const; + + /** true if detector covers full 2pi (== wraparound option in dictionary) */ + bool fullTwoPi() const; + + /** starting eta */ + float etaMin() const; + + /** end eta */ + float etaMax() const; + + /** starting phi */ + float phiMin() const; + + /** end phi */ + float phiMax() const; + + /** hash Id of the first cell of the region */ + unsigned int hashMin() const; + + /** hash Id of the last cell of the region +1 */ + unsigned int hashMax() const; + + /** region number of the previous region in eta */ + short int prevEtaRegion() const; + + /** region number of the next region in eta */ + short int nextEtaRegion() const; + + /** is the considered cell in the first eta bin of the region ? */ + bool isEtaMin(const unsigned int& index) const; + + /** is the considered cell in the last eta bin of the region ? */ + bool isEtaMax(const unsigned int& index) const; + + /** is the considered cell in the first phi bin of the region ? */ + bool isPhiMin(const unsigned int& index) const; + + /** is the considered cell in the last phi bin of the region ? */ + bool isPhiMax(const unsigned int& index) const; + + /** region number of the prev region in sampling */ + const std::vector<short int>& prevSamplingRegion() const; + + /** region number of the next region in sampling */ + const std::vector<short int>& nextSamplingRegion() const; + + +private: + + unsigned int m_hashMin; + short int m_nbEtaBins; + short int m_nPhi; + float m_minEta; + float m_granulEta; + float m_minPhi; + float m_granulPhi; + bool m_fullSym; + + short int m_prevEtaReg; + short int m_nextEtaReg; + std::vector<short int> m_prevSampReg; + std::vector<short int> m_nextSampReg; + +}; + +#endif // LARHEC_REGION_H diff --git a/Calorimeter/CaloIdentifier/src/LArID_Exception.cxx b/Calorimeter/CaloIdentifier/src/LArID_Exception.cxx new file mode 100755 index 0000000000000000000000000000000000000000..94ece1c8da1617305f5e0a3090f0b04bc1b114c0 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArID_Exception.cxx @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArID_Exception.h" + +#include <sstream> + + +LArID_Exception::operator std::string () + +{ + std::ostringstream s; + + s << "LArID_Exception - Error code: " << this->code() << " \n " + << this->message(); + return s.str(); +} diff --git a/Calorimeter/CaloIdentifier/src/LArMiniFCAL_ID.cxx b/Calorimeter/CaloIdentifier/src/LArMiniFCAL_ID.cxx new file mode 100644 index 0000000000000000000000000000000000000000..a380c74b0a38c7e044479338ddd62d38b7c601ca --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/LArMiniFCAL_ID.cxx @@ -0,0 +1,977 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/LArMiniFCAL_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "PathResolver/PathResolver.h" + +#include "GaudiKernel/MsgStream.h" + +#include <string> +#include <set> +#include <iostream> +#include <fstream> +#include <sstream> +#include <math.h> +#include <stdexcept> + +#include "CxxUtils/StrFormat.h" + +using CxxUtils::strformat; + + +LArMiniFCAL_ID::LArMiniFCAL_ID(void) + : + CaloIDHelper ("LArMiniFCAL_ID"), + m_is_initialized(false), + m_fcal_region_index(0), + m_minifcal_region_index(0), + m_LAR_INDEX(999), + m_MiniFCAL_INDEX(999), + m_POSNEG_INDEX(999), + m_MODULE_INDEX(999), + m_DEPTH_INDEX(999), + m_ETA_INDEX(999), + m_PHI_INDEX(999), + m_two_sym_sides(1) +{} + +LArMiniFCAL_ID::~LArMiniFCAL_ID(void) +{} + +bool LArMiniFCAL_ID::is_connected ( int pos_neg, int module, int depth, int eta, int phi) const throw(LArID_Exception) +{ + bool result=false; + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_fcal_exp()); + //expId << pos_neg << module << depth << eta << phi ; + expId << pos_neg << 0 << depth << eta << phi ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArMiniFCAL_ID::is_connected, " + + strformat ("pos_neg: %d , module: %d, depth: %d, eta: %d, phi: %d ", + pos_neg , module , depth , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (m_full_channel_range.match(expId)) { + result = true; + } + return(result); +} + +bool LArMiniFCAL_ID::is_disconnected ( int pos_neg, int module, int depth, int eta, int phi) const throw(LArID_Exception) +{ + bool result=false; + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -3 << pos_neg << module << depth << eta << phi ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArMiniFCAL_ID::is_disconnected, " + + strformat ("pos_neg: %d , module: %d, depth: %d, eta: %d, phi: %d ", + pos_neg , module , depth , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (m_full_disc_channel_range.match(expId)) { + result = true; + } + return(result); +} + +int LArMiniFCAL_ID::eta_min(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int LArMiniFCAL_ID::eta_max(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_ETA_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArMiniFCAL_ID::phi_min_init(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_minimum()) { + int phimin = phi_field.get_minimum(); + if (-999 == result) { + result = phimin; + } + else { + if (phimin < result) result = phimin; + } + } + } + } + return (result); + } + return (-999); // default +} + +int LArMiniFCAL_ID::phi_max(const Identifier modId) const +{ + ExpandedIdentifier expId; + IdContext module_cntxt = module_context(); + if(!get_expanded_id(modId, expId, &module_cntxt)) { + int result = -999; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_PHI_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + +int LArMiniFCAL_ID::get_neighbours(const IdentifierHash id, const LArNeighbours::neighbourOption& option, std::vector<IdentifierHash>& neighbourList) const +{ + int result = 1; + + neighbourList.clear(); + + if(!m_do_neighbours) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + log << MSG::WARNING << "neighbours not initialized !!! returning empty list" << endreq; + } + else { + std::cout << " neighbours not initialized !!! returning empty list " << std::endl; + } + return result; + } + + if(id>=channels().hash_max()) { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + log << MSG::WARNING << "neighbours requested for unconnected channel -- this is not implemented" << endreq; + } + else { + std::cout << " neighbours requested for unconnected channel -- this is not implemente" << std::endl; + } + return result; + } + + if( dictionaryVersion() == "fullAtlas" ) { + + if ( (option & LArNeighbours::all2D) == LArNeighbours::all2D ){ + if ( m_neighbors_2d_vec[(unsigned int)id].size() > 0 ) { + neighbourList.insert(neighbourList.end(), + m_neighbors_2d_vec[(unsigned int)id].begin(), + m_neighbors_2d_vec[(unsigned int)id].end()); + } + } + + if ( (option & LArNeighbours::prevInSamp) ){ + if ( m_neighbors_3d_prev_vec[(unsigned int)id].size() > 0 ) { + neighbourList.insert(neighbourList.end(), + m_neighbors_3d_prev_vec[(unsigned int)id].begin(), + m_neighbors_3d_prev_vec[(unsigned int)id].end()); + } + } + + if ( (option & LArNeighbours::nextInSamp) ){ + if ( m_neighbors_3d_next_vec[(unsigned int)id].size() > 0 ) { + neighbourList.insert(neighbourList.end(), + m_neighbors_3d_next_vec[(unsigned int)id].begin(), + m_neighbors_3d_next_vec[(unsigned int)id].end()); + } + } + + } else { + if(m_msgSvc) { + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + log << MSG::WARNING << " NO MiniFCAL neighbours (yet) in the context of " << dictionaryVersion() << endreq; + } + else { + std::cout << " NO MiniFCAL neighbours (yet) in the context of " << dictionaryVersion() << std::endl; + } + } + return result; +} + +int LArMiniFCAL_ID::disc_eta (const Identifier id)const +{ + return(m_eta_impl.unpack(id)); +} + +int LArMiniFCAL_ID::disc_phi (const Identifier id)const +{ + return(m_phi_impl.unpack(id)); +} + +IdContext +LArMiniFCAL_ID::module_context (void) const +{ + return region_context(); +} + +int LArMiniFCAL_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +/*=================================================================*/ +{ + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + + std::string strg = "initialize_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if(CaloIDHelper::initialize_base_from_dictionary(dict_mgr, + "LArCalorimeter")) + return (1); + + // initialize dictionary version + AtlasDetectorID::setDictVersion(dict_mgr, "LArCalorimeter"); + + // Check whether dictionary has miniFCAL + if (!dict()->find_group("lar_mini_fcal")) { + strg = " initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID."; + log << MSG::INFO << strg << endreq; + return 0; // return OK + } + + + // Initialize the field indices + if(initLevelsFromDict()) { + strg = " initialize_from_dict - cannot initialize MiniFCAL part of LArCalorimeter dictionary "; + if(m_msgSvc) { + log << MSG::WARNING << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + else { + + // Find value for the field LAr Calorimeter + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int larField = -1; + if (atlasDict->get_label_value("subdet", "LArCalorimeter", larField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + + // Find value for the field LArMiniFCAL - here the "part" has to be LArFCAL + int larFcalField = -1; + if (dict()->get_label_value("part", "LArFCAL", larFcalField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArMiniFCAL' of field 'part' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find value for the field LArMiniFCALdisc + int larFcalDiscField = -1; + if (dict()->get_label_value("part", "LArFCALdisc", larFcalDiscField)) { + std::stringstream strm ; + strm << atlasDict->m_name ; + strg = "Could not get value for label 'LArMiniFCALdisc' of field 'part' in dictionary " + + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Set up id for region and range prefix + + // RDS: need to find the range for MiniFCAL module 0, which includes + // both pos/neg endcaps + // (1) Connected channels + ExpandedIdentifier region_id; + region_id.add(larField); + region_id.add(larFcalField); + Range prefix; + std::string str = "lar_mini_fcal"; + m_full_channel_range = dict()->build_multirange(region_id, str, prefix); + m_full_module_range = dict()->build_multirange(region_id, str, prefix, "module"); + m_full_depth_range = dict()->build_multirange(region_id, str, prefix, "depth-mfcal"); + + // (2) disconnected channels + ExpandedIdentifier region_id2; + region_id2.add(larField); + region_id2.add(larFcalDiscField); + Range prefix2; + + m_full_disc_channel_range = dict()->build_multirange(region_id2, str, prefix2); + m_full_disc_module_range = dict()->build_multirange(region_id2, str,prefix2, "module"); + + std::string strg0 = "initialize_from_dict : " ; + std::string strg1 = " channel range -> " + (std::string)m_full_channel_range; + std::string strg2 = " module range -> " + (std::string)m_full_module_range; + std::string strg2a= " depth range -> " + (std::string)m_full_depth_range; + std::string strg3 = " disconnected channel range -> " + (std::string)m_full_disc_channel_range; + std::string strg4 = " disconnected module range -> " + (std::string)m_full_disc_module_range; + if(m_msgSvc) { + log << MSG::DEBUG << strg0 << endreq; + log << MSG::DEBUG << strg1 << endreq; + log << MSG::DEBUG << strg2 << endreq; + log << MSG::DEBUG << strg2a<< endreq; + log << MSG::DEBUG << strg3 << endreq; + log << MSG::DEBUG << strg4 << endreq; + } + else { + std::cout << strg0 << std::endl; + std::cout << strg1 << std::endl; + std::cout << strg2 << std::endl; + std::cout << strg2a<< std::endl; + std::cout << strg3 << std::endl; + std::cout << strg4 << std::endl; + } + + // Setup the hash tables + if(init_hashes()) return (1); + + // Setup the disc hash tables + if(init_disc_hashes()) return (1); + + // initilize m_two_sym_sides + m_two_sym_sides = ( dictionaryVersion() == "fullAtlas" ); + + // collect the regions to later access deta/dphi etc. + if (fill_vec_of_dict_regions()) return 1; + + // added nov 2005 to speed up CaloNoiseTool initialisation + m_vecOfPhiMin.resize(regions().hash_max()); + for (unsigned int i = 1; i < regions().hash_max(); ++i) { + Identifier modId = module_id(i); + m_vecOfPhiMin[i] = phi_min_init(modId); + } + + // Setup hash tables for finding neighbors + if(m_do_neighbours) { + if(init_neighbors(dict_mgr)) return (1); + } + + } + + m_is_initialized = true; + return 0; + +} + +void LArMiniFCAL_ID::module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_fcal_exp()); + //expId << pos_neg << module; + expId << pos_neg << 0; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArMiniFCAL_ID::module_id, " + + strformat ("pos_neg: %d , module: %d", pos_neg , module); + throw LArID_Exception(errorMessage , 9); + } + + if (!m_full_module_range.match(expId)) { + std::string errorMessage = "LArMiniFCAL_ID::module_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_module_range; + throw LArID_Exception(errorMessage , 6); + } +} + +void LArMiniFCAL_ID::channel_id_checks ( int pos_neg, int module, int depth, int eta, int phi) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_fcal_exp()); + //expId << pos_neg << module << depth << eta << phi ; + expId << pos_neg << 0 << depth << eta << phi ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArMiniFCAL_ID::channel_id, " + + strformat ("pos_neg: %d , module: %d, depth: %d,eta: %d, phi: %d ", + pos_neg , module , depth, eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "LArMiniFCAL_ID::channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +void LArMiniFCAL_ID::channel_id_checks (const Identifier moduleId, int depth, + int eta, int phi) const throw(LArID_Exception) +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = module_context(); + if (get_expanded_id(moduleId, expId, &context)) { + std::string errorMessage = "LArMiniFCAL_ID::channel_id(modId) result is not OK: ID = " + + show_to_string(moduleId) ; + throw LArID_Exception(errorMessage , 10); + } + + expId << depth << eta << phi ; + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "LArMiniFCAL_ID::channel_id(modId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +void LArMiniFCAL_ID::disc_module_id_checks ( int pos_neg, int module ) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -3 << pos_neg << module; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in LArMiniFCAL_ID::module_id, " + + strformat ("pos_neg: %d , module: %d", pos_neg , module); + throw LArID_Exception(errorMessage , 9); + } + + if (!m_full_disc_module_range.match(expId)) { + std::string errorMessage = "LArMiniFCAL_ID::module_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_module_range; + throw LArID_Exception(errorMessage , 6); + } +} + +void LArMiniFCAL_ID::disc_channel_id_checks ( int pos_neg, int module, int depth, int eta, int phi) const throw(LArID_Exception) +{ + + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(lar_exp()); + expId << -3 << pos_neg << module << eta << phi ; + + if( expId.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in LArMiniFCAL_ID::channel_id, " + + strformat ("pos_neg: %d , module: %d, depth: %d, eta: %d, phi: %d ", + pos_neg , module , depth , eta , phi); + throw LArID_Exception(errorMessage , 10); + } + + if (!m_full_disc_channel_range.match(expId)) { + std::string errorMessage = "LArMiniFCAL_ID::channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +void LArMiniFCAL_ID::disc_channel_id_checks (const Identifier moduleId, int depth, + int eta, int phi) const throw(LArID_Exception) +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = module_context(); + if (get_disc_expanded_id(moduleId, expId, &context)) { + std::string errorMessage = "LArMiniFCAL_ID::channel_id(modId) result is not OK: ID = " + + show_to_string(moduleId) ; + throw LArID_Exception(errorMessage , 10); + } + + expId << depth << eta << phi ; + + if (!m_full_disc_channel_range.match(expId)) { + std::string errorMessage = "LArMiniFCAL_ID::channel_id(modId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_disc_channel_range; + throw LArID_Exception(errorMessage , 10); + } +} + +int LArMiniFCAL_ID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << lar_fcal_field_value() + << pos_neg(id) + << module(id) + // << 0 + << depth(id) ; + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + } + } + return (0); +} + +int LArMiniFCAL_ID::get_disc_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + // We assume that the context is >= region + exp_id.clear(); + exp_id << lar_field_value() + << -3 + << pos_neg(id) + << module(id) + << depth(id); + if(context && context->end_index() >= m_ETA_INDEX) { + exp_id << eta(id); + if(context->end_index() >= m_PHI_INDEX) { + exp_id << phi(id); + } + } + return (0); +} + +int LArMiniFCAL_ID::initLevelsFromDict(void) +{ + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + + if(!dict()) { + std::string strg = "initLevelsFromDict - dictionary NOT initialized "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_fcal_region_index = 999 ; + m_LAR_INDEX = 999 ; + m_MiniFCAL_INDEX = 999 ; + m_POSNEG_INDEX = 999 ; + m_MODULE_INDEX = 999 ; + m_DEPTH_INDEX = 999 ; + m_ETA_INDEX = 999 ; + m_PHI_INDEX = 999 ; + + IdDictField* field = dict()->find_field("subdet") ; + if (field) { + m_LAR_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'subdet' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("part") ; + if (field) { + m_MiniFCAL_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'part' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("barrel-endcap") ; + if (field) { + m_POSNEG_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'barrel-endcap' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("module") ; + if (field) { + m_MODULE_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'module' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + + field = dict()->find_field("depth-mfcal") ; + if (field) { + m_DEPTH_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'depth' field "; + if(m_msgSvc) { + log << MSG::WARNING << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + + field = dict()->find_field("eta-mfcal") ; + if (field) { + m_ETA_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'eta' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + field = dict()->find_field("phi-mfcal") ; + if (field) { + m_PHI_INDEX = field->m_index ; + } + else { + std::string strg = "initLevelsFromDict - unable to find 'phi' field "; + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + /* + std::cout << "LArMiniFCAL_ID::initLevelsFromDict - found levels " << std::endl ; + std::cout << "part " << m_MiniFCAL_INDEX << std::endl ; + std::cout << "pos-neg " << m_POSNEG_INDEX << std::endl ; + std::cout << "module " << m_MODULE_INDEX << std::endl ; + std::cout << "eta " << m_ETA_INDEX << std::endl ; + std::cout << "phi " << m_PHI_INDEX << std::endl ; + */ + + // Save index to a MiniFCAL region for unpacking + + // Fill expanded identifier with id for module 0 of the MiniFCAL, + // i.e. add on module == 0 to the id below + + ExpandedIdentifier id(lar_fcal_exp()); + if (dict()->find_region(id,m_fcal_region_index)){ + std::stringstream strm ; + strm << m_fcal_region_index ; + std::string strg = "initLevelsFromDict - unable to find fcal region index: id, reg " + + (std::string)id + strm.str(); + if(m_msgSvc) { + log << MSG::ERROR << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + return (1); + } + + // Set the field implementations + + + IdDictDictionary::regions_const_it rit; + for (rit = dict()->m_regions.begin (); rit != dict()->m_regions.end (); ++rit) { + const IdDictRegion& region = *(*rit); + if (region.m_group=="lar_mini_fcal") {m_minifcal_region_index = region.m_index; break;} + } + + const IdDictRegion& region = *dict()->m_regions[m_minifcal_region_index]; + + m_lar_impl = region.m_implementation[m_LAR_INDEX]; + m_fcal_impl = region.m_implementation[m_MiniFCAL_INDEX]; + m_pn_impl = region.m_implementation[m_POSNEG_INDEX]; + m_module_impl = region.m_implementation[m_MODULE_INDEX]; + m_depth_impl = region.m_implementation[m_DEPTH_INDEX]; + m_eta_impl = region.m_implementation[m_ETA_INDEX]; + m_phi_impl = region.m_implementation[m_PHI_INDEX]; + + if(m_msgSvc) { + log << MSG::DEBUG << "decode index and bit fields for each level: " << endreq; + log << MSG::DEBUG << "lar " << m_lar_impl.show_to_string() << endreq; + log << MSG::DEBUG << "fcal " << m_fcal_impl.show_to_string() << endreq; + log << MSG::DEBUG << "pn " << m_pn_impl.show_to_string() << endreq; + log << MSG::DEBUG << "mod " << m_module_impl.show_to_string() << endreq; + log << MSG::DEBUG << "depth " << m_depth_impl.show_to_string() << endreq; + log << MSG::DEBUG << "eta " << m_eta_impl.show_to_string() << endreq; + log << MSG::DEBUG << "phi " << m_phi_impl.show_to_string() << endreq; + } + else { + std::cout << "decode index and bit fields for each level: " << std::endl; + std::cout << "lar " << m_lar_impl.show_to_string() << std::endl; + std::cout << "fcal " << m_fcal_impl.show_to_string() << std::endl; + std::cout << "pn " << m_pn_impl.show_to_string() << std::endl; + std::cout << "mod " << m_module_impl.show_to_string() << std::endl; + std::cout << "depth " << m_depth_impl.show_to_string() << std::endl; + std::cout << "eta " << m_eta_impl.show_to_string() << std::endl; + std::cout << "phi " << m_phi_impl.show_to_string() << std::endl; + } + + + return(0) ; +} + +int LArMiniFCAL_ID::init_hashes(void) +{ + if (channels().init (*this, "channels", + m_full_channel_range, + &LArMiniFCAL_ID::channel_id, + m_PHI_INDEX)) + return 1; + if (regions().init (*this, "regions", + m_full_module_range, + &LArMiniFCAL_ID::module_id, + m_MODULE_INDEX)) + return 1; + + return (0); +} + +int LArMiniFCAL_ID::init_disc_hashes(void) +{ + if (m_disc_channels.init (*this, "chanenls", + m_full_disc_channel_range, + &LArMiniFCAL_ID::disc_channel_id, + m_PHI_INDEX)) + return 1; + if (m_disc_modules.init (*this, "regions", + m_full_disc_module_range, + &LArMiniFCAL_ID::disc_module_id, + m_MODULE_INDEX)) + return 1; + + return (0); +} + +int LArMiniFCAL_ID::init_neighbors_from_file(std::string filename, std::vector<std::set<IdentifierHash> > & vec) +{ + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + + if(m_msgSvc) { + log << MSG::DEBUG << "init_neighbors_from_file" << endreq; + } + else { + std::cout << "LArMiniFCAL_ID::init_neighbors_from_file " << std::endl; + } + // Find the full path to filename: + std::string file = PathResolver::find_file (filename, "DATAPATH"); + log << MSG::INFO << "Reading file " << file << endreq; + + std::ifstream fin; + if (file != "") { + fin.open(file.c_str()); + } + else { + if(m_msgSvc) { + log << MSG::ERROR << "Could not find input file " << filename << endreq; + } + else { + std::cout << "LArMiniFCAL_ID::Could not find input file " << filename << std::endl; + } + return 1; + } + if (fin.bad()) { + if(m_msgSvc) { + log << MSG::ERROR << "Could not open file " << file << endreq; + } + else { + std::cout << "LArMiniFCAL_ID::Could not open file " << file << std::endl; + } + return 1; + } + + // + // Parse the input file + // + + vec.resize(channels().hash_max()); + + char aLine[1024]; + std::string sLine; + bool isComment = true; + char AorC,dot; + int isamp,idepth, iphi,ieta; + + while( isComment ) { + sLine.resize( 0 ); + do { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + } while (sLine == "" && !fin.eof()); + isComment = ( sLine.find("#") != std::string::npos ); + } + do { + while ( sLine == "" && !fin.eof()) { + fin.getline(aLine,sizeof(aLine)-1); + sLine = std::string(aLine); + } + std::istringstream es( sLine.c_str() ); + + if ( es >> AorC >> isamp >> dot >> idepth >> dot >> iphi >> dot >> ieta ) { + Identifier thisCell = channel_id((AorC=='A'?2:-2),isamp,idepth,ieta,iphi); + IdentifierHash ic = channel_hash(thisCell); + while ( es >> AorC >> isamp >> dot >> idepth >> dot >> iphi >> dot >> ieta ) { + if (!ic.is_valid()) continue; + Identifier nextCell = channel_id((AorC=='A'?2:-2),isamp,idepth,ieta,iphi); + IdentifierHash inext = channel_hash(nextCell); + vec[ic].insert(vec[ic].end(),inext); + } + sLine.resize(0); + } + }while (!fin.eof()) ; + fin.close(); + + return 0; +} + +int LArMiniFCAL_ID::init_neighbors(const IdDictMgr& dict_mgr) +{ + MsgStream log(m_msgSvc, "LArMiniFCAL_ID" ); + + if(m_msgSvc) { + log << MSG::DEBUG << "init_neighbors" << endreq; + } + else { + std::cout << "LArMiniFCAL_ID::init_neighbors " << std::endl; + } + + int status; + std::string f2d,f3dnext,f3dprev; + + f2d = dict_mgr.find_metadata("FCAL2DNEIGHBORS"); + f3dnext = dict_mgr.find_metadata("FCAL3DNEIGHBORSNEXT"); + f3dprev = dict_mgr.find_metadata("FCAL3DNEIGHBORSPREV"); + if (!f2d.size() || !f3dnext.size() || !f3dprev.size()) { + if(m_msgSvc) { + log << MSG::ERROR << "init_neighbours: cannot find neighbours files: " + << " f2d: " << f2d << " f3dnext: " << f3dnext << " f3dprev: " << f3dprev + << endreq; + } + else { + std::cout << "LArMiniFCAL_ID::init_neighbours cannot find neighbours files: " + << " f2d: " << f2d << " f3dnext: " << f3dnext << " f3dprev: " << f3dprev + << std::endl; + } + throw std::runtime_error("LArMiniFCAL_ID::init_neighbours: Cannot find the FCAL Neighbour file names"); + } + + status = init_neighbors_2d(f2d); + if ( status == 0 ) + status = init_neighbors_3d_next(f3dnext); + if ( status == 0 ) + status = init_neighbors_3d_prev(f3dprev); + + if ( status == 0 ) + return (0); + else + return (1); +} + + + diff --git a/Calorimeter/CaloIdentifier/src/TTOnlineID.cxx b/Calorimeter/CaloIdentifier/src/TTOnlineID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..a962c1545867a47e02af4e7e2bdd0a962644d67c --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/TTOnlineID.cxx @@ -0,0 +1,798 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/TTOnlineID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/IdentifierHash.h" +#include "IdDict/IdDictDefs.h" +#include "CxxUtils/StrFormat.h" +#include "GaudiKernel/MsgStream.h" +#include <algorithm> +#include <string> +#include <set> +#include <stdio.h> +#include <iostream> +#include <math.h> +#include <assert.h> + +using CxxUtils::strformat; + + +TTOnlineID::TTOnlineID(void) : + m_calo_index(999), + m_detzside_index(999), + m_l1online_regions_index(999), + m_crate_index(999), + m_module_index(999), + m_submodule_index(999), + m_channel_index(999), + m_dict(0), + m_crateHashMax(0), + m_moduleHashMax(0), + m_submoduleHashMax(0), + m_channelHashMax(0), + m_iDetZSideFieldValue(-1) +{ + +} + +TTOnlineID:: ~TTOnlineID(){} + + +IdContext TTOnlineID::crateContext(void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_crate_index)); +} + +IdContext TTOnlineID::moduleContext(void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_module_index)); +} + +IdContext TTOnlineID::submoduleContext(void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_submodule_index)); +} + +IdContext TTOnlineID::channelContext(void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_channel_index)); +} + + + +//========================================================================== +int TTOnlineID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +//========================================================================== +{ + + MsgStream log(m_msgSvc, "TTOnlineID" ); + std::string strg = "initialize_from_dictionary"; + if(m_msgSvc) { + log << MSG::INFO << strg << endreq; + } + else { + std::cout << strg << std::endl; + } + + // Check whether this helper should be reinitialized + // ------------------------------------------------- + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" + << endreq; + return (0); + } + else { + log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + // ---------------- + if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)){ + return (1); + } + + m_dict = dict_mgr.find_dictionary("Calorimeter"); + + log << MSG::DEBUG << " => defined m_dict from find_dictionary(Calorimeter) = " << m_dict << endreq; + if(!m_dict) + { + strg = " initialize_from_dictionary - cannot access Calorimeter dictionary"; + if(m_msgSvc) { + //log << MSG::ERROR << strg << endreq; + } + else + { + std::cout << "TTOnlineID::" << strg << std::endl; + } + return 1; + } + + // Register version of the dictionary used + // --------------------------------------- + if (register_dict_tag(dict_mgr, "Calorimeter")) return(1); + + // initialize dictionary version + // ----------------------------- + AtlasDetectorID::setDictVersion(dict_mgr, "Calorimeter"); + + + // Initialize the field indices + // -------------------------------------- + if(initLevelsFromDict()) return (1); + + /* Find value for the field Calorimeter */ + // --------------------------------------- + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int caloValue = -1; + if (atlasDict->get_label_value("subdet", "Calorimeter", caloValue)) { + std::stringstream strm; + strm << atlasDict->m_name; + strg= " Could not get value for label 'Calorimeter' of field 'subdet' in dictionary "+strm.str(); + if(m_msgSvc){ + log << MSG::ERROR << strg << endreq; + } + else{ + std::cout << "TTOnlineID:" << strg << std::endl; + } + return (1); + } + log << MSG::DEBUG << "[init_from_dictionary] > caloValue = "<< caloValue << endreq; + + /* Find values for the fake field DetZside */ + // -------------------------------------- + + // retrieve the calo tag from the DB + std::string tag = m_dict->dict_tag(); + bool oldTag = ( tag.size()==0 || tag == "CaloIdentifier-DC3-05" || tag == "CaloIdentifier-LVL1-01"); + log << MSG::DEBUG << "Calorimeter dict. DB tag= " << tag << endreq; + + //int detzsideValue = -1; + //if (m_dict->get_label_value("DetZside", "no_side", detzsideValue)) { + if (m_dict->get_label_value("DetZside", "no_side", m_iDetZSideFieldValue)) { + if (!oldTag) { + std::stringstream strm; + strm << m_dict->m_name; + strg = "WARNING : Could not get value for label 'DetZside' in dictionary "+strm.str(); + if(m_msgSvc) { + log << MSG::INFO << strg << endreq; + } + else{ + std::cout << strg << std::endl; + } + } + return (0); + } + log << MSG::DEBUG << "[init_from_dictionary] > detzsideValue = "<< detzside_field_value() << endreq; + + + // Set up id for tower and layer's range prefix + // --------------------------------------------- + // Note: negative value is good enough to get multirange since the + // regions are symmetric in +/-eta + + ExpandedIdentifier reg_id; + reg_id.add(caloValue); + reg_id.add(detzside_field_value()); + + Range prefix; + m_full_crate_range = m_dict->build_multirange(reg_id, prefix, "crate"); + m_full_module_range = m_dict->build_multirange(reg_id, prefix, "module"); + m_full_submodule_range = m_dict->build_multirange(reg_id, prefix, "submodule"); + m_full_channel_range = m_dict->build_multirange(reg_id, prefix, "channel"); + + log << MSG::DEBUG << "[initialize_from_dictionary] > Crate range -> " + << (std::string)m_full_crate_range << endreq; + log << MSG::DEBUG << "[initialize_from_dictionary] > Module range -> " + << (std::string)m_full_module_range << endreq; + log << MSG::DEBUG << "[initialize_from_dictionary] > SubModule range -> " + << (std::string)m_full_submodule_range << endreq; + log << MSG::DEBUG << "[initialize_from_dictionary] > Channel range -> " + << (std::string)m_full_channel_range << endreq; + + + // Setup the hash tables + // -------------------------------------- + if(init_hashes()) return (1); + return 0; +} + + +//===================================================================================== +int TTOnlineID::get_expanded_id (const HWIdentifier& id, ExpandedIdentifier& exp_id, + const IdContext* context) const +//===================================================================================== +{ + MsgStream log(m_msgSvc, "TTOnlineID" ); + // We assume that the context is >= region + exp_id.clear(); + exp_id << calo_field_value(); + exp_id << detzside_field_value(); + if(context && context->end_index() >= m_crate_index) { + exp_id << crate(id); + if(context->end_index() >= m_module_index) { + exp_id << module(id); + if(context->end_index() >= m_submodule_index) { + exp_id << submodule(id); + if(context->end_index() >= m_channel_index) + exp_id << channel(id); + } + } + } + return (0); +} + + +//===================================================================================== +void TTOnlineID::channel_Id_checks ( int crate, int module, int submodule, int channel ) const throw(CaloID_Exception) +//===================================================================================== +{ + // Fill expanded id + ExpandedIdentifier id(calo_exp()); + id << detzside_field_value() << crate << module << submodule << channel; + if( id.last_error () != ExpandedIdentifier::none) { + std::string errorMessage = + "Error in TTOnlineID::channel_Id_checks(field values), did not build, " + + strformat ("crate: %d , module: %d, submodule: %d , channel: %d ", + crate , module , submodule, channel); + throw CaloID_Exception(errorMessage , 2); + } + if (!m_full_channel_range.match(id)) { + std::string errorMessage = "[TTOnlineID]::channnelId() result is not OK: ID, range = " + + std::string(id) + " , " + (std::string)m_full_channel_range; + throw CaloID_Exception(errorMessage , 2); + } +} + +/* ================================================================*/ +void TTOnlineID::channel_Id_checks ( const HWIdentifier submoduleId, int channel ) const throw(CaloID_Exception) +/* ================================================================*/ +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + IdContext context = submoduleContext(); + if (get_expanded_id(submoduleId, expId, &context)) { + std::string errorMessage = "TTOnlineID::channel_Id_checks(submoduleId) result is not OK: ID = " + + show_to_string(submoduleId) ; + throw CaloID_Exception(errorMessage , 99); + } + + expId << channel; + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "TTOnlineID::channel_Id_checks(submoduleId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw CaloID_Exception(errorMessage , 99); + } +} + +/* ================================================================*/ +void TTOnlineID::channel_Id_checks ( const HWIdentifier moduleId, int submodule, int channel ) const throw(CaloID_Exception) +/* ================================================================*/ +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + IdContext context = moduleContext(); + if (get_expanded_id(moduleId, expId, &context)) { + std::string errorMessage = "TTOnlineID::channel_Id_checks(moduleId) result is not OK: ID = " + + show_to_string(moduleId) ; + throw CaloID_Exception(errorMessage , 99); + } + + expId << submodule << channel; + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "TTOnlineID::channel_Id_checks(submoduleId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw CaloID_Exception(errorMessage , 99); + } +} + +/* ================================================================*/ +void TTOnlineID::channel_Id_checks ( const HWIdentifier crateId, int module, int submodule, int channel ) const throw(CaloID_Exception) +/* ================================================================*/ +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId; + IdContext context = crateContext(); + if (get_expanded_id(crateId, expId, &context)) { + std::string errorMessage = "TTOnlineID::channel_Id_checks(crateId) result is not OK: ID = " + + show_to_string(crateId) ; + throw CaloID_Exception(errorMessage , 99); + } + + expId << module << submodule << channel; + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "TTOnlineID::channel_Id_checks(crateId) result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_channel_range; + throw CaloID_Exception(errorMessage , 99); + } +} + +/* ================================================================*/ +void TTOnlineID::submodule_Id_checks( int crate, int module, int submodule ) const throw(CaloID_Exception) +/* ================================================================*/ +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(calo_exp()); + expId << detzside_field_value() << crate << module << submodule; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TTOnlineID::submodule_Id_checks, values ok but did not build, "+ + strformat ("crate: %d , module: %d , submodule: %d", + crate , module, submodule); + throw CaloID_Exception(errorMessage , 99); + } + if (!m_full_submodule_range.match(expId)) { std::string errorMessage = "TTOnlineID::submodule_Id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_submodule_range; + throw CaloID_Exception(errorMessage , 99); + } +} + +/* ================================================================*/ +void TTOnlineID::module_Id_checks( int crate, int module ) const throw(CaloID_Exception) +/* ================================================================*/ +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(calo_exp()); + expId << detzside_field_value() << crate << module; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TTOnlineID::module_Id_checks, values ok but did not build, " + + strformat ("crate: %d , module: %d", crate , module); + throw CaloID_Exception(errorMessage , 99); + } + if (!m_full_module_range.match(expId)) { std::string errorMessage = "TTOnlineID::module_Id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_module_range; + throw CaloID_Exception(errorMessage , 99); + } +} + +/* ================================================================*/ +void TTOnlineID::crate_Id_checks( int crate ) const throw(CaloID_Exception) +/* ================================================================*/ +{ + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(calo_exp()); + expId << detzside_field_value() << crate; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TTOnlineID::crate_Id_checks, values ok but did not build, " + + strformat ("crate: %d", crate); + throw CaloID_Exception(errorMessage , 99); + } + if (!m_full_crate_range.match(expId)) { std::string errorMessage = "TTOnlineID::crate_Id_checks() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_crate_range; + throw CaloID_Exception(errorMessage , 99); + } +} + + +//========================================================= +int TTOnlineID::initLevelsFromDict(void) +//========================================================= +{ + MsgStream log(m_msgSvc, "TTOnlineID" ); + log << MSG::DEBUG << "[initLevelsFromDict] (0) Entering routine... " << endreq; + + if(!m_dict) { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - dictionary NOT initialized " + << endreq ; + return (1); + } + + log << MSG::DEBUG << "[initLevelsFromDict] (1) m_dict OK ... " << endreq; + + // Find out which identifier field corresponds to each level. + // ---------------------------------------------------------- + m_calo_index = 999 ; + m_detzside_index = 999 ; + m_crate_index = 999 ; + m_module_index = 999 ; + m_submodule_index = 999 ; + m_channel_index = 999 ; + + log << MSG::DEBUG << "[initLevelsFromDict] (2) data member initialization OK ... " << endreq; + + // retrieve the calo tag from the DB + std::string tag = m_dict->dict_tag(); + bool oldTag = ( tag.size()==0 || tag == "CaloIdentifier-DC3-05" || tag == "CaloIdentifier-LVL1-01"); + log << MSG::DEBUG << "Calorimeter dict. DB tag= " << tag << endreq; + + // Save index to a Online LVL1 region for unpacking - search with region name + IdDictRegion* reg = m_dict->find_region("PPM_Crate-00"); + if (reg) { + m_l1online_regions_index = reg->m_index;} + else { + if(!oldTag) log << MSG::INFO << "WARNING : TTOnlineID::initLevelsFromDict - unable to find 'PPM_Crate-00' region" << endreq; + return (0); + } + log << MSG::DEBUG << "[initLevelsFromDict] (3) region 'PPM_Crate-00' found OK ... " << m_l1online_regions_index << endreq; + + // Look for Fields... + // ------------------ + IdDictField* field = m_dict->find_field("subdet") ; + if (field) { + m_calo_index = field->m_index;} + else { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - unable to find 'Calo' field " + << endreq ; + return (1); + } + log << MSG::DEBUG << "[initLevelsFromDict] (4) field 'Calo' found OK " << endreq; + + + field = m_dict->find_field("DetZside") ; + if (field) { + m_detzside_index = field->m_index ;} + else { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - unable to find 'DetZside' field " + << endreq ; + return (1); + } + log << MSG::DEBUG << "[initLevelsFromDict] (5) field 'DetZside' found OK " << endreq; + + + field = m_dict->find_field("crate") ; + if (field) { + m_crate_index = field->m_index ;} + else { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - unable to find 'crate' field " + << endreq ; + return (1); + } + log << MSG::DEBUG << "[initLevelsFromDict] (6) field 'crate' found OK " << endreq; + + field = m_dict->find_field("module") ; + if (field) { + m_module_index = field->m_index ; + } + else { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - unable to find 'module' field " + << endreq ; + return (1); + } + log << MSG::DEBUG << "[initLevelsFromDict] (7) field 'module' found OK " << endreq; + + field = m_dict->find_field("submodule") ; + if (field) { + m_submodule_index = field->m_index ; + } + else { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - unable to find 'submodule' field " << endreq ; + return (1); + } + log << MSG::DEBUG << "[initLevelsFromDict] (8) field 'submodule' found OK " << endreq; + + field = m_dict->find_field("channel") ; + if (field) { + m_channel_index = field->m_index ; + } + else { + log << MSG::INFO << "TTOnlineID::initLevelsFromDict - unable to find 'channel' field " << endreq; + return (1); + } + log << MSG::DEBUG << "[initLevelsFromDict] (9) field 'channel' found OK " << endreq; + + + // Set the field implementation + // ------------------------------ + const IdDictRegion& region = *m_dict->m_regions[m_l1online_regions_index]; + log << MSG::DEBUG << "[initLevelsFromDict] (10) found levels: " << endreq ; + log << MSG::DEBUG << "[initLevelsFromDict] > subdet " << m_calo_index << endreq ; + log << MSG::DEBUG << "[initLevelsFromDict] > detzside " << m_detzside_index << endreq ; + log << MSG::DEBUG << "[initLevelsFromDict] > crate " << m_crate_index << endreq ; + log << MSG::DEBUG << "[initLevelsFromDict] > module " << m_module_index << endreq ; + log << MSG::DEBUG << "[initLevelsFromDict] > submodule " << m_submodule_index << endreq ; + log << MSG::DEBUG << "[initLevelsFromDict] > channel " << m_channel_index << endreq ; + + log << MSG::DEBUG << "[initLevelsFromDict] > ...fields implementation... " << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > ...implementation: m_calo_index " << endreq; + m_calo_impl = region.m_implementation[m_calo_index]; + + log << MSG::DEBUG << "[initLevelsFromDict] > ...implementation: m_det_side_index " << endreq; + m_calo_detzside_impl = region.m_implementation[m_detzside_index]; + + log << MSG::DEBUG << "[initLevelsFromDict] > ...implementation: m_crate_index " << endreq; + m_crate_impl = region.m_implementation[m_crate_index]; + + log << MSG::DEBUG << "[initLevelsFromDict] > ...implementation: m_module_index " << endreq; + m_module_impl = region.m_implementation[m_module_index]; + log << MSG::DEBUG << "[initLevelsFromDict] > ...implementation: m_submodule_index " << endreq; + m_submodule_impl = region.m_implementation[m_submodule_index]; + log << MSG::DEBUG << "[initLevelsFromDict] > ...implementation: m_channel_index " << endreq; + m_channel_impl = region.m_implementation[m_channel_index]; + + log << MSG::DEBUG << "[initLevelsFromDict] (11) decode index and bit fields for each level: " << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > calo " << m_calo_impl.show_to_string() << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > detzside " << m_calo_detzside_impl.show_to_string() << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > crate " << m_crate_impl.show_to_string() << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > module " << m_module_impl.show_to_string() << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > submodule " << m_submodule_impl.show_to_string() << endreq; + log << MSG::DEBUG << "[initLevelsFromDict] > channel " << m_channel_impl.show_to_string() << endreq; + + return(0) ; +} + + +//===================================================== +int TTOnlineID::init_hashes(void) +//===================================================== +{ + MsgStream log(m_msgSvc, "TTOnlineID" ); + std::stringstream strm1; + std::stringstream strm2; + std::stringstream strm3; + std::string strg1; + std::string strg2; + std::string strg3; + + // Crate hash + // ----------- + { + m_crateHashMax = m_full_crate_range.cardinality(); + m_crate_vec.resize(m_crateHashMax); + unsigned int nids = 0; + std::set<HWIdentifier> ids; + for (unsigned int i = 0; i < m_full_crate_range.size(); ++i) { + const Range& range = m_full_crate_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + HWIdentifier cra_id = crateId( exp_id[m_crate_index] ) ; + + if(!(ids.insert(cra_id)).second){ + strm1 << nids; + strg1 = "[init_hashes] > duplicated id for channel nb = "+strm1.str(); + strm3 << show_to_string(cra_id); + strg3 = " expanded Id= "+strm3.str(); + if(m_msgSvc){ + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else{ + std::cout << "TTOnlineID::Error" << strg1 << std::endl; + std::cout << strg3 << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_crateHashMax) { + strm1 << ids.size(); + strm2 << m_crateHashMax; + strg1 = "[init_hashes] >"; + strg2 = " set size NOT EQUAL to hash max. size "+strm1.str(); + strg3 = " hash max "+strm2.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg2 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else + { + std::cout << "TTOnlineID::" << strg1 << std::endl; + std::cout << "Error" << strg2 << std::endl; + std::cout << strg3 << std::endl; + } + return (1); + } + + nids=0; + std::set<HWIdentifier>::const_iterator first = ids.begin(); + std::set<HWIdentifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_crate_vec.size(); ++first) { + m_crate_vec[nids] = (*first) ; + nids++; + } + log << MSG::DEBUG << "[init_hashes()] > Crate_size= " << m_crate_vec.size() << endreq; + } + + // Module hash + // ----------- + { + m_moduleHashMax = m_full_module_range.cardinality(); + m_module_vec.resize(m_moduleHashMax); + unsigned int nids = 0; + std::set<HWIdentifier> ids; + for (unsigned int i = 0; i < m_full_module_range.size(); ++i) { + const Range& range = m_full_module_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + HWIdentifier mod_id = moduleId(exp_id[m_crate_index], exp_id[m_module_index] ) ; + + if(!(ids.insert(mod_id)).second){ + strm1 << nids; + strg1 = "[init_hashes] > duplicated id for channel nb = "+strm1.str(); + strm3 << show_to_string(mod_id); + strg3 = " expanded Id= "+strm3.str(); + if(m_msgSvc){ + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else{ + std::cout << "TTOnlineID::Error" << strg1 << std::endl; + std::cout << strg3 << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_moduleHashMax) { + strm1 << ids.size(); + strm2 << m_moduleHashMax; + strg1 = "[init_hashes] >"; + strg2 = " set size NOT EQUAL to hash max. size "+strm1.str(); + strg3 = " hash max "+strm2.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg2 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else + { + std::cout << "TTOnlineID::" << strg1 << std::endl; + std::cout << "Error" << strg2 << std::endl; + std::cout << strg3 << std::endl; + } + return (1); + } + + nids=0; + std::set<HWIdentifier>::const_iterator first = ids.begin(); + std::set<HWIdentifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_module_vec.size(); ++first) { + m_module_vec[nids] = (*first) ; + nids++; + } + log << MSG::DEBUG << "[init_hashes()] > Module_size= " << m_module_vec.size() << endreq; + } + + // SubModule hash + // ----------- + { + m_submoduleHashMax = m_full_submodule_range.cardinality(); + m_submodule_vec.resize(m_submoduleHashMax); + unsigned int nids = 0; + std::set<HWIdentifier> ids; + for (unsigned int i = 0; i < m_full_submodule_range.size(); ++i) { + const Range& range = m_full_submodule_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + HWIdentifier submod_id = submoduleId(exp_id[m_crate_index], exp_id[m_module_index], exp_id[m_submodule_index] ) ; + + if(!(ids.insert(submod_id)).second){ + strm1 << nids; + strg1 = "[init_hashes] > duplicated id for channel nb = "+strm1.str(); + strm3 << show_to_string(submod_id); + strg3 = " expanded Id= "+strm3.str(); + if(m_msgSvc){ + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else{ + std::cout << "TTOnlineID::Error" << strg1 << std::endl; + //std::cout << strg2 << std::endl; + std::cout << strg3 << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_submoduleHashMax) { + strm1 << ids.size(); + strm2 << m_submoduleHashMax; + strg1 = "[init_hashes] >"; + strg2 = " set size NOT EQUAL to hash max. size "+strm1.str(); + strg3 = " hash max "+strm2.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg2 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else + { + std::cout << "TTOnlineID::" << strg1 << std::endl; + std::cout << "Error" << strg2 << std::endl; + std::cout << strg3 << std::endl; + } + return (1); + } + + nids=0; + std::set<HWIdentifier>::const_iterator first = ids.begin(); + std::set<HWIdentifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_submodule_vec.size(); ++first) { + m_submodule_vec[nids] = (*first) ; + nids++; + } + log << MSG::DEBUG << "[init_hashes()] > Submodule_size= " << m_submodule_vec.size() << endreq; + } + + // Channel hash + // ----------- + { + m_channelHashMax = m_full_channel_range.cardinality(); + m_channel_vec.resize(m_channelHashMax); + unsigned int nids = 0; + std::set<HWIdentifier> ids; + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + HWIdentifier chan_id = channelId(exp_id[m_crate_index], exp_id[m_module_index], exp_id[m_submodule_index], exp_id[m_channel_index]) ; + + if(!(ids.insert(chan_id)).second){ + strm1 << nids; + strg1 = "[init_hashes] > duplicated id for channel nb = "+strm1.str(); + strm3 << show_to_string(chan_id); + strg3 = " expanded Id= "+strm3.str(); + if(m_msgSvc){ + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else{ + std::cout << "TTOnlineID::Error" << strg1 << std::endl; + std::cout << strg3 << std::endl; + } + } + nids++; + } + } + if(ids.size() != m_channelHashMax) { + strm1 << ids.size(); + strm2 << m_channelHashMax; + strg1 = "[init_hashes] >"; + strg2 = " set size NOT EQUAL to hash max. size "+strm1.str(); + strg3 = " hash max "+strm2.str(); + if(m_msgSvc) + { + log << MSG::ERROR << strg1 << endreq; + log << MSG::ERROR << strg2 << endreq; + log << MSG::ERROR << strg3 << endreq; + } + else + { + std::cout << "TTOnlineID::" << strg1 << std::endl; + std::cout << "Error" << strg2 << std::endl; + std::cout << strg3 << std::endl; + } + return (1); + } + + nids=0; + std::set<HWIdentifier>::const_iterator first = ids.begin(); + std::set<HWIdentifier>::const_iterator last = ids.end(); + for (;first != last && nids < m_channel_vec.size(); ++first) { + m_channel_vec[nids] = (*first) ; + nids++; + } + log << MSG::DEBUG << "[init_hashes()] > Channel_size= " << m_channel_vec.size() << endreq; + } + return (0); +} + + + diff --git a/Calorimeter/CaloIdentifier/src/TileID.cxx b/Calorimeter/CaloIdentifier/src/TileID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..4268dcf632143666eb8a5c98f75ff8fd83406e07 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/TileID.cxx @@ -0,0 +1,57 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Access to Tile Calorimeter raw data + ----------------------------------------- + Copyright (C) 1998 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: TileID.cxx,v 1.23 2008-07-10 00:55:04 solodkov Exp $ +//<version> $Name: not supported by cvs2svn $ + + +#include "CaloIdentifier/TileID.h" +#include "IdDict/IdDictDefs.h" +#include "Identifier/IdentifierHash.h" +#include "AtlasDetDescr/AtlasDetectorID.h" + +#include "GaudiKernel/MsgStream.h" + +#include <algorithm> +#include <iostream> +#include <stdio.h> +#include <assert.h> +#include <stdexcept> + + +TileID::TileID( void ) + : Tile_Base_ID ("TileID", false) +{ +} + +int TileID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +{ + MsgStream log(m_msgSvc, "TileID" ); + + std::string strg = "initialize_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (Tile_Base_ID::initialize_base_from_dictionary(dict_mgr, "tile")) + return (1); + + return 0; +} + + diff --git a/Calorimeter/CaloIdentifier/src/TileID_Exception.cxx b/Calorimeter/CaloIdentifier/src/TileID_Exception.cxx new file mode 100755 index 0000000000000000000000000000000000000000..86ce4c2b0083b171f4a554252f0f74ff6d7a3343 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/TileID_Exception.cxx @@ -0,0 +1,19 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloIdentifier/TileID_Exception.h" + +#include <iostream> +#include <sstream> +#include <iomanip> + +TileID_Exception::operator std::string () + +{ + std::ostringstream text; + + text << "TileID_Exception - Error code: " << this->code() << std::endl; + text << this->message() ; + return text.str(); +} diff --git a/Calorimeter/CaloIdentifier/src/TileNeighbour.cxx b/Calorimeter/CaloIdentifier/src/TileNeighbour.cxx new file mode 100755 index 0000000000000000000000000000000000000000..10b380952d6a4740e100f5691861bf3bbad8129f --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/TileNeighbour.cxx @@ -0,0 +1,709 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Access to Tile Calorimeter raw data + ----------------------------------------- + Copyright (C) 2003 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: TileNeighbour.cxx,v 1.13 2008-12-13 04:57:11 ssnyder Exp $ +//<version> $Name: not supported by cvs2svn $ + +//<<<<<< INCLUDES >>>>>> + +#include "CaloIdentifier/TileNeighbour.h" +#include "CaloIdentifier/TileID.h" +#include "Identifier/Identifier.h" +#include "Identifier/IdentifierHash.h" + +#include "PathResolver/PathResolver.h" +#include "GaudiKernel/MsgStream.h" + +#include <algorithm> +#include <iostream> +#include <fstream> +#include <iomanip> + +#include <string.h> + +using namespace LArNeighbours; + +//<<<<<< PRIVATE DEFINES >>>>>> + +#define MAX_TOKEN_SIZE 256 + +//<<<<<< PRIVATE CONSTANTS >>>>>> +//<<<<<< PRIVATE TYPES >>>>>> + +typedef struct +{ + Identifier id; + IdentifierHash hash_id; + short int index; + + std::string name; + std::vector<std::string> neighbours[4]; + std::vector<int> neighbours_ind[4]; + +} Cell; + +//<<<<<< PRIVATE VARIABLE DEFINITIONS >>>>>> +//<<<<<< PUBLIC VARIABLE DEFINITIONS >>>>>> +//<<<<<< CLASS STRUCTURE INITIALIZATION >>>>>> +//<<<<<< PRIVATE FUNCTION DEFINITIONS >>>>>> +//<<<<<< PUBLIC FUNCTION DEFINITIONS >>>>>> +//<<<<<< MEMBER FUNCTION DEFINITIONS >>>>>> + +TileNeighbour::TileNeighbour(void) + : m_debug(0) + , m_length(0) + , m_maxHash(0) +{ +} + +TileNeighbour::~TileNeighbour(void) +{ +} + +int TileNeighbour::initialize(const Tile_Base_ID* tileID, std::string filename) +{ + MsgStream log(tileID->m_msgSvc, "TileNeighbour" ); + MSG::Level logLevel = log.level(); + if (logLevel==MSG::VERBOSE) m_debug = 1; + if (logLevel< MSG::VERBOSE) m_debug = 2; + + // Find the full path to filename: + std::string file = PathResolver::find_file (filename, "DATAPATH"); + log << MSG::INFO << "Reading file " << file << endreq; + std::ifstream fin; + if (file != "") { + fin.open(file.c_str()); + } + else { + log << MSG::ERROR << "Could not find input file " << filename << endreq; + return 1; + } + if (fin.bad()) { + log << MSG::ERROR << "Could not open file " << file << endreq; + return 1; + } + + // + // Parse the input file + // + unsigned int line=0, record=0, error=0; // file line number, record number + char token[MAX_TOKEN_SIZE]; // input token + + log << MSG::VERBOSE << "Parsing input file:" << endreq; + + std::vector<Cell> allCells; + + while ( fin >> token ) { + line++; // count input lines + if ( token[0] == '#' || token[0] == '!' || ( token[0] == '/' && token[1] == '/' ) ) { + fin.ignore(MAX_TOKEN_SIZE, '\n'); + continue; // skip comments + } + + unsigned int toklen = strlen(token) - 1 ; + token[toklen] = 0; // remove ":" at the end + log << MSG::VERBOSE << token << " "; + + Cell newCell; + newCell.name = token; + for (unsigned int i=0; i<4; ++i) newCell.neighbours[i].clear(); + + unsigned int column=0; + while ( fin >> token) { + toklen = strlen(token) - 1; + bool lastelem = ( token[toklen] == ';' ); + token[toklen] = 0; // remove "," or ";" + log << token << " "; + if (strcmp(token,"none")) + newCell.neighbours[column].push_back(token); + if (lastelem) { + ++column; + if (4 == column) break; + } + } + + fin.ignore(MAX_TOKEN_SIZE, '\n'); // skip to eol + + log << endreq; + allCells.push_back(newCell); + record++; // count input records + + } // end while fin + + fin.close(); + + log << MSG::DEBUG << "Processed " << line << " lines, " << record << " records"; + if ( error > 0 ) log << ", " << error << " of them are ignored." << endreq; + else log << "." << endreq; + + unsigned int curSize = allCells.size(); + for (unsigned int i=0; i<curSize; ++i) { + + std::string::size_type pos = allCells[i].name.find( "-", 0 ); + if ( std::string::npos != pos ) { // it is not D0 cell + + Cell newCell; + std::string tmpName; + tmpName = allCells[i].name; + tmpName.replace(pos,1,"+"); + newCell.name = tmpName; + + for (unsigned int j=0; j<4; ++j) { + unsigned int j1 = (j<2) ? 1-j : j; // swap prev and next eta + unsigned int nb_size=allCells[i].neighbours[j].size(); + for (unsigned int k=0; k<nb_size; ++k) { + tmpName = allCells[i].neighbours[j][k]; + pos = tmpName.find( "-", 0 ); + if ( std::string::npos != pos ) { + tmpName.replace(pos,1,"+"); + } else { + pos = tmpName.find( "+", 0 ); + if ( std::string::npos != pos ) { + tmpName.replace(pos,1,"-"); + } + } + newCell.neighbours[j1].push_back(tmpName); + } + } + allCells.push_back(newCell); + } + } + + unsigned int nids = 0; + unsigned int max_phi = 0, phi=0; + std::set<std::pair<IdentifierHash,int> > ids; + ids.clear(); + for (unsigned int i = 0; i < tileID->m_full_cell_range.size(); ++i) { + const Range& range = tileID->m_full_cell_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + phi = exp_id[tileID->m_MODULE_INDEX]; + if (phi > max_phi) max_phi = phi; + Identifier id = tileID->cell_id ( exp_id[tileID->m_SECTION_INDEX], + exp_id[tileID->m_SIDE_INDEX], + exp_id[tileID->m_MODULE_INDEX], + exp_id[tileID->m_TOWER_INDEX], + exp_id[tileID->m_SAMPLE_INDEX]); + IdentifierHash hashid = tileID->channels().hash (id); + if(!(ids.insert(std::make_pair(hashid,phi))).second){ + log << MSG::ERROR << "init_hashes " + << " Error: duplicated id for cell id. nids= " << nids + << " compact Id " << tileID->show_to_string(id) + << endreq; + } + nids++; + } + } + ++max_phi; + m_maxHash = tileID->m_full_cell_range.cardinality(); + m_length = m_maxHash / max_phi; + if ( fill_phi_vec(ids, m_maxHash, max_phi, log) ) { + m_maxHash = m_length = 0; + return (1); + } + + curSize = allCells.size(); + + std::string nb_name[4] = {"Prev_eta_", "Next_eta_", "Prev_smp_", "Next_smp_"}; + + for (unsigned int i=0; i<curSize; ++i) { + get_id(allCells[i].name,allCells[i].id,tileID); + allCells[i].hash_id = tileID->channels().hash (allCells[i].id); + for (unsigned int ii=0; ii<m_length; ++ii) { + if ( m_hashid_vec[ii] == allCells[i].hash_id) { + allCells[i].index = ii; + break; + } + } + + for (unsigned int j=0; j<4; ++j) { + unsigned int nb_size=allCells[i].neighbours[j].size(); + allCells[i].neighbours_ind[j].resize(nb_size); + for (unsigned int k=0; k<nb_size; ++k) { + for (unsigned int ii=0; ii<curSize; ++ii) { + if ( allCells[ii].name == allCells[i].neighbours[j][k]) { + allCells[i].neighbours_ind[j][k] = ii; + if (m_debug) { + log << MSG::VERBOSE << allCells[i].name << " " + << tileID->to_string(allCells[i].id,-2) << " " + << allCells[i].hash_id << " " + << allCells[i].index << " " + << nb_name[j] << k << " " + << allCells[i].neighbours[j][k] << " " + << allCells[i].neighbours_ind[j][k] << " " + << endreq; + } + break; + } + } + } + } + } + + m_prev_eta.resize(m_length); + m_next_eta.resize(m_length); + m_prev_samp.resize(m_length); + m_next_samp.resize(m_length); + m_prev_samp_wide.resize(m_length); + m_next_samp_wide.resize(m_length); + + std::vector<short int> neighbours[4]; + for (unsigned int i=0; i<curSize; ++i) { + unsigned int ind = allCells[i].index; + + for (unsigned int j=0; j<4; ++j) { + unsigned int nb_size=allCells[i].neighbours[j].size(); + neighbours[j].resize(nb_size); + for (unsigned int k=0; k<nb_size; ++k) { + neighbours[j][k] = allCells[allCells[i].neighbours_ind[j][k]].index; + } + } + + initialize_prev_eta (ind,neighbours[0]); + initialize_next_eta (ind,neighbours[1]); + initialize_prev_samp(ind,neighbours[2]); + initialize_next_samp(ind,neighbours[3]); + + // build wide prev/next sampling for 3D neighbours with corners + + // tower and side of current cell + int sd = tileID->side(allCells[i].id); + int tw = tileID->tower(allCells[i].id); + int sm = tileID->sample(allCells[i].id); + int se = tileID->section(allCells[i].id); + + for (unsigned int j=2; j<4; ++j) { + // find eta neighbours for all cells in prev/next sampling + // and keep only those which are not too far away + unsigned int nb_size=allCells[i].neighbours[j].size(); // how many cells in prev/next sampling + for (unsigned int k=0; k<nb_size; ++k) { // loop over them + unsigned int new_i = allCells[i].neighbours_ind[j][k]; // this is ind of cell in other sampling + for (unsigned int new_j=0; new_j<2; ++new_j) { // loop over prev/next eta for new cell + unsigned int new_nb_size=allCells[new_i].neighbours[new_j].size(); + for (unsigned int new_k=0; new_k<new_nb_size; ++new_k) { // all new neighbours + unsigned int new_nb_i = allCells[new_i].neighbours_ind[new_j][new_k]; + short new_nb_index = allCells[new_nb_i].index; // hash index of new neighbour + int n=neighbours[j].size()-1; + for ( ; n>-1; --n) { // check for duplicates + if (neighbours[j][n] == new_nb_index) + break; + } + if (n<0) { // new cell, check how far is it + int new_sd = tileID->side(allCells[new_nb_i].id); + int new_tw = tileID->tower(allCells[new_nb_i].id); + int new_sm = tileID->sample(allCells[new_nb_i].id); + int new_se = tileID->section(allCells[new_nb_i].id); + if ( ( new_sd != sd && new_tw == tw ) || // only tower=0 from other side + ( new_sd == sd && ( // the same eta side + ( new_se == se && abs(new_tw - tw) < 3 ) || // withit one detector + ( new_se != se && ( // when we jump over crack + ( new_sm == sm+1 && abs(new_tw - tw) < 3 ) || // next sampling + ( new_sm != sm+1 && abs(new_tw - tw) < 4 ) ))))) { // previous sampling + neighbours[j].push_back(new_nb_index); // not too far away, take it + } + } + } + } + } + } + + initialize_prev_samp_wide(ind,neighbours[2]); + initialize_next_samp_wide(ind,neighbours[3]); + } + + if (m_debug) { + + IdContext context = tileID->cell_context(); + std::vector<IdentifierHash> nb_list; + + unsigned int hash_max = tileID->cell_hash_max(); + for (unsigned int i=0; i<hash_max; ++i) { + + Identifier id; + tileID->get_id (i, id, &context); + if ( tileID->module(id) != 0 ) continue; + + IdentifierHash hash_id=i; + nb_list.clear(); nb_list.push_back(hash_id); + print_list(nb_list, tileID, &context, log, "\nCell "," : "); + + tileID->get_neighbours(hash_id, prevInPhi, nb_list); + print_list(nb_list, tileID, &context, log, "Prev phi "," ; "); + + tileID->get_neighbours(hash_id, nextInPhi, nb_list); + print_list(nb_list, tileID, &context, log, "Next phi "," ; "); + + tileID->get_neighbours(hash_id, prevInEta, nb_list); + print_list(nb_list, tileID, &context, log, "Prev eta "," ; "); + + tileID->get_neighbours(hash_id, nextInEta, nb_list); + print_list(nb_list, tileID, &context, log, "Next eta "," ; "); + + tileID->get_neighbours(hash_id, prevInSamp, nb_list); + print_list(nb_list, tileID, &context, log, "Prev smp "," ; "); + + tileID->get_neighbours(hash_id, nextInSamp, nb_list); + print_list(nb_list, tileID, &context, log, "Next smp "," ; "); + + tileID->get_neighbours(hash_id, faces2D, nb_list); + print_list(nb_list, tileID, &context, log, "Face 2D "," ; "); + + tileID->get_neighbours(hash_id, corners2D, nb_list); + print_list(nb_list, tileID, &context, log, "Corn 2D "," ; "); + + tileID->get_neighbours(hash_id, all2D, nb_list); + print_list(nb_list, tileID, &context, log, "All 2D "," ; "); + + tileID->get_neighbours(hash_id, all3D, nb_list); + print_list(nb_list, tileID, &context, log, "All 3D "," ; "); + + tileID->get_neighbours(hash_id, all3DwithCorners, nb_list); + print_list(nb_list, tileID, &context, log, "All 3DC "," ; "); + + tileID->get_neighbours(hash_id, super3D, nb_list); + print_list(nb_list, tileID, &context, log, "Super 3D "," ; "); + + } + } + + return (0); +} + +int TileNeighbour::fill_phi_vec (std::set<std::pair<IdentifierHash,int> > & ids, + unsigned int hash_max, unsigned int max_phi, MsgStream & log) +{ + + if(ids.size() != hash_max) { + log << MSG::ERROR << "fill_phi_vec " + << " Error: set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << hash_max + << endreq; + return (1); + } + + m_phid_index.resize(hash_max); + m_cell_index.resize(hash_max); + m_hashid_vec.resize(hash_max); + + int dphi = hash_max / max_phi; // number of Ids in one phi-slice + + int ind_min=0, ind_max=-1, phi, phi_prev=-1, index=0; + + std::set<std::pair<IdentifierHash,int> >::const_iterator first = ids.begin(); + std::set<std::pair<IdentifierHash,int> >::const_iterator last = ids.end(); + + for (;first != last; ++first) { + phi = (*first).second; + if (phi != phi_prev) { + if (0 == phi) { + ++ind_max; + ind_min = ind_max; + } + index = ind_min + dphi * phi; + phi_prev = phi; + } else { + if (0 == phi) { + ++ind_max; + } + ++index; + } + IdentifierHash hash_id = (*first).first; + m_hashid_vec[index] = hash_id ; + m_phid_index[hash_id] = dphi*phi; + m_cell_index[hash_id] = index - dphi*phi; + } + + return (0); +} + +int TileNeighbour::initialize_prev_eta(unsigned int ind,const std::vector<short int> & all_cells) +{ + m_prev_eta [ind] = all_cells; + return (0); +} + +int TileNeighbour::initialize_next_eta(unsigned int ind,const std::vector<short int> & all_cells) +{ + m_next_eta [ind] = all_cells; + return (0); +} + +int TileNeighbour::initialize_prev_samp(unsigned int ind,const std::vector<short int> & all_cells) +{ + m_prev_samp [ind] = all_cells; + return (0); +} + +int TileNeighbour::initialize_next_samp(unsigned int ind,const std::vector<short int> & all_cells) +{ + m_next_samp [ind] = all_cells; + return (0); +} + +int TileNeighbour::initialize_prev_samp_wide(unsigned int ind,const std::vector<short int> & all_cells) +{ + m_prev_samp_wide [ind] = all_cells; + std::sort(m_prev_samp_wide[ind].begin(),m_prev_samp_wide[ind].end()); + return (0); +} + +int TileNeighbour::initialize_next_samp_wide(unsigned int ind,const std::vector<short int> & all_cells) +{ + m_next_samp_wide [ind] = all_cells; + std::sort(m_next_samp_wide[ind].begin(),m_next_samp_wide[ind].end()); + return (0); +} + +int TileNeighbour::prev_phi (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + if ( phid == 0 ) phid = m_maxHash; + phid -= m_length; + + neighbourList.push_back(m_hashid_vec[phid+cell]); + + return 1; +} + +int TileNeighbour::next_phi (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + phid += m_length; + if ( phid == m_maxHash ) phid = 0; + + neighbourList.push_back(m_hashid_vec[phid+cell]); + + return 1; +} + +int TileNeighbour::prev_eta (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + + unsigned int size = m_prev_eta[cell].size(); + for (unsigned int i=0; i<size; ++i) { + neighbourList.push_back(m_hashid_vec[phid+m_prev_eta[cell][i]]); + } + + return size; +} + +int TileNeighbour::next_eta (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + + unsigned int size = m_next_eta[cell].size(); + for (unsigned int i=0; i<size; ++i) { + neighbourList.push_back(m_hashid_vec[phid+m_next_eta[cell][i]]); + } + + return size; +} + +int TileNeighbour::prev_samp (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + + unsigned int size = m_prev_samp[cell].size(); + for (unsigned int i=0; i<size; ++i) { + neighbourList.push_back(m_hashid_vec[phid+m_prev_samp[cell][i]]); + } + + return size; +} + +int TileNeighbour::next_samp (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + + unsigned int size = m_next_samp[cell].size(); + for (unsigned int i=0; i<size; ++i) { + neighbourList.push_back(m_hashid_vec[phid+m_next_samp[cell][i]]); + } + + return size; +} + +int TileNeighbour::prev_samp_wide (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + + unsigned int size = m_prev_samp_wide[cell].size(); + for (unsigned int i=0; i<size; ++i) { + neighbourList.push_back(m_hashid_vec[phid+m_prev_samp_wide[cell][i]]); + } + + return size; +} + +int TileNeighbour::next_samp_wide (const IdentifierHash & id, + std::vector<IdentifierHash> & neighbourList) const +{ + unsigned int phid = m_phid_index[id]; + unsigned int cell = m_cell_index[id]; + + unsigned int size = m_next_samp_wide[cell].size(); + for (unsigned int i=0; i<size; ++i) { + neighbourList.push_back(m_hashid_vec[phid+m_next_samp_wide[cell][i]]); + } + + return size; +} + +void TileNeighbour::get_id(std::string & strName, Identifier & id, const Tile_Base_ID* tileID) +{ + char * name = new char[strName.size()+1]; + strcpy(name,strName.data()); + int se; + int sd; + int sm; + int tw; + + std::string::size_type pos = strName.find( "-", 0 ); + if ( std::string::npos != pos ) sd = -1; else sd = 1; + + sscanf(name+2,"%d",&tw); + if (tw<0) tw *= -1; + + switch ( name[0] ) { + case 'a': case 'A': sm = 0; tw -= 1; + if (tw<10) se = 1; else se = 2; + break; + case 'b': case 'B': sm = 1; tw -= 1; + if (tw<10) se = 1; else se = 2; + break; + case 'c': case 'C': sm = 1; tw -= 1; + se = 3; + break; + case 'd': case 'D': sm = 2; tw *= 2; + if (tw<10) se = 1; else se = 2; + if (tw==8) se = 3; + break; + case 'e': case 'E': sm = 3; + switch ( tw ) { + case 1: tw = 10; break; + case 2: tw = 11; break; + case 3: tw = 13; break; + case 4: tw = 15; break; + } + se = 3; + break; + case 's': case 'S': sm = 0; tw -= 1; + if (tw<9) se = 1; else se = 2; + break; + case 'v': case 'V': sm = 2; tw *= 2; + if (tw<10) se = 1; else se = 2; + break; + default: se = 0; sm = -1; tw = -1; break; + } + + id = tileID->cell_id(se,sd,0,tw,sm); + + delete[] name; +} + +void TileNeighbour::get_name(Identifier & id, std::string & strSection, + int & module, std::string & strCell, + const Tile_Base_ID* tileID, MsgStream & log, const char * end) +{ + int section = tileID->section (id); + int side = tileID->side (id); + module = tileID->module (id); + int tower = tileID->tower (id); + int sample = tileID->sample (id); + bool supercell = tileID->is_supercell(id); + + switch (section) { + case 0: strSection = "Online"; break; + case 1: strSection = "Barrel"; break; + case 2: strSection = "Ext.Barrel"; break; + case 3: strSection = (sample < 3) ? "ITC": "Gap.Scin"; break; + default: strSection = "Unknown"; + } + + int tw=0; + char sd = (side<0) ? '-' : '+'; + char sm=0,s1=0; + + switch (sample) { + case 0: sm=(supercell?'S':'A'); + tw=tower+1; + break; + case 1: sm='B'; + tw=tower+1; + if (tw<9) s1='C'; + if (tw==10) sm='C'; + break; + case 2: sm=(supercell?'V':'D'); + tw=tower/2; + if (tw==0) { + if (sd=='+') sd='*'; + else sd='0'; + } + break; + case 3: sm='E'; + tw=(tower-7)/2; + break; + } + + char name[5]; + if (s1>0) snprintf(name,sizeof(name),"%c%c%c%d",sm,s1,sd,tw); + else snprintf(name,sizeof(name),"%c%c%d", sm,sd,tw); + strCell = name; + + if (end) + log << tileID->to_string(id,-2) << " " + << strSection << " " << module << " " << strCell << end; +} + +void TileNeighbour::print_list(std::vector<IdentifierHash> & nb_list, + const Tile_Base_ID* tileID, + const IdContext* context, + MsgStream & log, + const char * pref, + const char * suff) +{ + Identifier id; + int module; + std::string strCell; + std::string strSection; + + std::sort(nb_list.begin(), nb_list.end()); + unsigned int size=nb_list.size(); + log << MSG::VERBOSE << pref << "(" << size << ") "; +// size = strlen(pref) + 4 + ((size)<10 ? 1 : 2); +// char *space = new char[size+1]; +// memset(space,32,size); +// space[size]=0; + for (unsigned int j=0; j<size; ++j) { + log << MSG::VERBOSE << endreq; + log << MSG::VERBOSE << "\t"; + tileID->get_id (nb_list[j], id, context); + get_name(id,strSection,module,strCell,tileID,log,suff); + } + log << endreq; +// delete [] space; +} diff --git a/Calorimeter/CaloIdentifier/src/TileTBID.cxx b/Calorimeter/CaloIdentifier/src/TileTBID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..4a36a4e7d25efaed97aed587f6a4f23798ede8e6 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/TileTBID.cxx @@ -0,0 +1,731 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/*************************************************************************** + Access to Tile Calorimeter TB data + ----------------------------------------- + Copyright (C) 1998 by ATLAS Collaboration + ***************************************************************************/ + +//<doc><file> $Id: TileTBID.cxx,v 1.1 2009-03-30 11:19:28 tsulaia Exp $ +//<version> $Name: not supported by cvs2svn $ + +#include "CaloIdentifier/TileTBID.h" +#include "IdDict/IdDictDefs.h" +#include "Identifier/IdentifierHash.h" +#include "CxxUtils/StrFormat.h" +#include "GaudiKernel/MsgStream.h" + +#include <algorithm> +#include <iostream> +#include <stdio.h> +#include <assert.h> + +using CxxUtils::strformat; + + +TileTBID::TileTBID( void ) + : m_tile_region_index(0) + , m_SYSTEM_INDEX(999) + , m_SECTION_INDEX(999) + , m_TYPE_INDEX(999) + , m_MODULE_INDEX(999) + , m_CHANNEL_INDEX(999) + , m_dict(0) + , m_type_hash_max(0) + , m_module_hash_max(0) + , m_channel_hash_max(0) +{ +} + +TileTBID::~TileTBID(void) +{ +} + +// +// TileTBID methods +// +std::string +TileTBID::to_string( const Identifier & id, int level ) const +{ + IdContext context; + switch (level) { + case 1: case -3: + case 2: case -2: context = type_context(); break; + case 3: case -1: context = module_context(); break; + case 4: case 0: context = channel_context(); break; + default: + return "TileTBID::to_string - unknown context"; + } + + ExpandedIdentifier exp_id; + if ( get_expanded_id(id,exp_id,&context) ) { + return "TileTBID::to_string - can not expand ID"; + } else { + return (std::string)(exp_id); + } +} + +// +// get methods +// +int +TileTBID::get_field ( const Identifier & id, size_type index ) const +{ + int field = 0; + if(!m_dict->unpack(id, 0, index, m_tile_region_index, field)) { + return field; + } else { + return 0; + } +} + +// +// check methods +// +bool +TileTBID::is_tiletb (const Identifier& id) const +{ + bool result = is_tile(id) + && ( section(id) == TileTBID::TILE_TESTBEAM ); + + return result; +} + +// +// TileCal TB ID +// +Identifier +TileTBID::tiletb_id () const +{ + Identifier compactID(m_base_tile_type); + return compactID; +} + +// +// Build type & module id +// +Identifier +TileTBID::type_id ( int type ) const throw(TileID_Exception) +{ +#ifndef NDEBUG + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << TileTBID::TILE_TESTBEAM << type; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TileTBID::type_id , values ok but did not build, " + + strformat ("testbeam: %d, type: %d ", + TileTBID::TILE_TESTBEAM, type); + throw TileID_Exception(errorMessage , 2); + } + + if (!m_full_type_range.match(expId)) { + std::string errorMessage = "TileTBID::type_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_type_range; + throw TileID_Exception(errorMessage , 2); + } + } +#endif + + Identifier compactID(m_base_tile_type); + m_type_impl.pack (type,compactID); + + return (compactID); +} + +Identifier +TileTBID::module_id ( int type, int module ) const throw(TileID_Exception) +{ +#ifndef NDEBUG + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << TileTBID::TILE_TESTBEAM << type << module; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TileTBID::module_id , values ok but did not build, " + + strformat ("testbeam: %d, type: %d, module: %d ", + TileTBID::TILE_TESTBEAM, type, module); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_module_range.match(expId)) { + std::string errorMessage = "TileTBID::module_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_type_range; + throw TileID_Exception(errorMessage , 1); + } + } +#endif + + Identifier compactID(m_base_tile_type); + m_type_impl.pack (type,compactID); + m_module_impl.pack (module,compactID); + + return (compactID); +} + +// +// Build channel id +// +Identifier +TileTBID::channel_id ( int type, int module, int channel ) const throw(TileID_Exception) +{ +#ifndef NDEBUG + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << TileTBID::TILE_TESTBEAM << type << module << channel; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TileTBID::channel_id , values ok but did not build, " + + strformat ("testbeam: %d, type: %d, module: %d, channel: %d ", + TileTBID::TILE_TESTBEAM, type, module, channel); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "TileTBID::channel_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_type_range; + throw TileID_Exception(errorMessage , 1); + } + } +#endif + + Identifier compactID(m_base_tile_type); + m_type_impl.pack (type,compactID); + m_module_impl.pack (module,compactID); + m_channel_impl.pack (channel,compactID); + + return (compactID); +} + +Identifier +TileTBID::module_id ( const Identifier & any_id ) const +{ + Identifier compactId(any_id); + m_channel_impl.reset(compactId); + + return (compactId); +} + +Identifier +TileTBID::channel_id ( const Identifier & module_id, + int channel ) const throw(TileID_Exception) +{ + Identifier compactId(module_id); + m_channel_impl.pack(channel,compactId); + +#ifndef NDEBUG + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = module_context(); + if (get_expanded_id(compactId, expId, &context)) { + std::string errorMessage = "TileTBID::channel_id(module_id,channel) result is not OK: ID = " + + compactId.getString() ; + throw TileID_Exception(errorMessage , 1); + + // region_id.show(); + } + + expId << channel; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in TileTBID::channel_id , values ok but did not build, " + + strformat ("channel: %d ", channel); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_channel_range.match(expId)) { + std::string errorMessage = "TileTBID::channel_id() result is not OK: ID, range = " + + (std::string)expId + " , " + (std::string)m_full_type_range; + throw TileID_Exception(errorMessage , 1); + } + } +#endif + + return compactId; +} + +bool TileTBID::module_id ( const Identifier& type_id, + int module, Identifier& module_id ) +{ + ExpandedIdentifier id; + IdContext context = type_context(); + get_expanded_id(type_id, id, &context); + id << module; + if (!m_full_module_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!m_dict->pack32(id,0, id.fields() - 1,compactId)) { + module_id = compactId; + } + return true; +} + +bool TileTBID::channel_id ( const Identifier& type_id, + int module, int channel, Identifier& channel_id ) +{ + ExpandedIdentifier id; + IdContext context = type_context(); + get_expanded_id(type_id, id, &context); + id << module << channel; + if (!m_full_channel_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!m_dict->pack32(id,0, id.fields() - 1,compactId)) { + channel_id = compactId; + } + return true; +} + +bool TileTBID::channel_id ( const Identifier& module_id, + int channel, Identifier& channel_id ) +{ + ExpandedIdentifier id; + IdContext context = module_context(); + get_expanded_id(module_id, id, &context); + id << channel; + if (!m_full_channel_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!m_dict->pack32(id,0, id.fields() - 1,compactId)) { + channel_id = compactId; + } + return true; +} + +IdContext +TileTBID::type_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_TYPE_INDEX)); +} + +IdContext +TileTBID::module_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_MODULE_INDEX)); +} + +IdContext +TileTBID::channel_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_CHANNEL_INDEX)); +} + +int TileTBID::get_id (const IdentifierHash& hash_id, Identifier& id, const IdContext* context ) const +{ + int result = 1; + id.clear(); + + size_t begin = (context) ? context->begin_index(): 0; + // cannot get hash if end is 0: + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + + if ( m_CHANNEL_INDEX == end ) { + if (hash_id < (unsigned int)(m_channel_vec.end() - m_channel_vec.begin())) { + id = m_channel_vec[hash_id]; + result = 0; + } else { + MsgStream log(m_msgSvc, "TileTBID" ); + log << MSG::ERROR << "get_id: channel hash_id is out of range " << hash_id + << " => " << m_channel_vec.size() << endreq; + } + } else if ( m_MODULE_INDEX == end ) { + if (hash_id < (unsigned int)(m_module_vec.end() - m_module_vec.begin())) { + id = m_module_vec[hash_id]; + result = 0; + } else { + MsgStream log(m_msgSvc, "TileTBID" ); + log << MSG::ERROR << "get_id: module hash_id is out of range " + << hash_id << " => " << m_module_vec.size() << endreq; + } + } else if ( m_TYPE_INDEX == end ) { + if (hash_id < (unsigned int)(m_type_vec.end() - m_type_vec.begin())) { + id = m_type_vec[hash_id]; + result = 0; + } else { + MsgStream log(m_msgSvc, "TileTBID" ); + log << MSG::ERROR << "get_id: TYPE hash_id is out of range " << hash_id + << " => " << m_type_vec.size() << endreq; + } + } + } + return(result); +} + + +int TileTBID::get_hash (const Identifier& id, IdentifierHash& hash_id, const IdContext* context ) const +{ + + hash_id = 0; + int result = 1; + + size_t begin = (context) ? context->begin_index(): 0; + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + if ( m_CHANNEL_INDEX == end ) { + std::vector<Identifier>::const_iterator it = std::lower_bound(m_channel_vec.begin(),m_channel_vec.end(),id); + if ( it != m_channel_vec.end() ){ + hash_id = it - m_channel_vec.begin(); + result = 0; + } + } else if ( m_MODULE_INDEX == end ) { + std::vector<Identifier>::const_iterator it = std::lower_bound(m_module_vec.begin(),m_module_vec.end(),id); + if ( it != m_module_vec.end() ){ + hash_id = it - m_module_vec.begin(); + result = 0; + } + } else if ( m_TYPE_INDEX == end ) { + std::vector<Identifier>::const_iterator it = std::lower_bound(m_type_vec.begin(),m_type_vec.end(),id); + if ( it != m_type_vec.end() ){ + hash_id = it - m_type_vec.begin(); + result = 0; + } + } + } + + return (result); +} + +int TileTBID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +{ + MsgStream log(m_msgSvc, "TileTBID" ); + log << MSG::INFO << "initialize_from_dictionary " << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + log << MSG::DEBUG << "calling base initialize_from_dictionary" << endreq; + + // init base object + if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)) return (1); + + // Register version of the TileCalo dictionary + if (register_dict_tag(dict_mgr, "TileCalorimeter")) return(1); + + m_dict = dict_mgr.find_dictionary ("TileCalorimeter"); + if(!m_dict) { + log << MSG::ERROR << "cannot access TileCalorimeter dictionary " << endreq; + return 1; + } + + // Initialize the field indices + if(initLevelsFromDict()) return (1); + + + // Find value for the field Tile Calorimeter + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int tileField = -1; + if (atlasDict->get_label_value("subdet", "TileCalorimeter", tileField)) { + log << MSG::ERROR << "Could not get value for label 'TileCalorimeter' of field 'subdet' in dictionary " + << atlasDict->m_name + << endreq; + return (1); + } + + // Find value for the field Tile Testbeam + int tiletbField = -1; + if (m_dict->get_label_value("section", "Testbeam", tiletbField)) { + log << MSG::ERROR << "Could not get value for label 'Testbeam' of field 'section' in dictionary " + << m_dict->m_name + << endreq; + return (1); + } + + /* + log << MSG::DEBUG << "TileTB_ID::initialize_from_dict - found field values: TileTB " + << TileTBField + << endreq; + */ + + // Set up id for region and range prefix + ExpandedIdentifier reg_id; + reg_id.add(tileField); + reg_id.add(tiletbField); + Range prefix; + + m_full_channel_range= m_dict->build_multirange(reg_id, prefix, "tbchannel"); + m_full_module_range = m_dict->build_multirange(reg_id, prefix, "tbmodule"); + m_full_type_range = m_dict->build_multirange(reg_id, prefix, "type"); + + log << MSG::DEBUG << "initialize_from_dict : " << endreq; + log << MSG::DEBUG << " type range -> " << (std::string)m_full_type_range << endreq; + log << MSG::DEBUG << " module range -> " << (std::string)m_full_module_range << endreq; + log << MSG::DEBUG << " channel range -> " << (std::string)m_full_channel_range << endreq; + + // Setup the hash tables + if(init_hashes()) return (1); + + return 0; + +} + +int TileTBID::get_expanded_id (const Identifier& id, ExpandedIdentifier& exp_id, const IdContext* context) const +{ + int result = 1; + + size_t begin = (context) ? context->begin_index() : 0; + size_t end = (context) ? context->end_index() : m_CHANNEL_INDEX; + assert (end <= m_CHANNEL_INDEX); + + if (0 == end) { + result = 0; + } + else if ( 0 == begin) { + ExpandedIdentifier empty; + result = m_dict->unpack(id, empty, end, exp_id); + } + else { + result = m_dict->unpack(id, context->prefix_id(), end, exp_id); + } + return result; +} + +int TileTBID::initLevelsFromDict(void) +{ + MsgStream log(m_msgSvc, "TileTBID" ); + + if(!m_dict) { + log << MSG::ERROR << "initLevelsFromDict - dictionary NOT initialized " + << endreq ; + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_SYSTEM_INDEX = 999; + m_SECTION_INDEX = 999; + m_TYPE_INDEX = 999; + m_MODULE_INDEX = 999; + m_CHANNEL_INDEX = 999; + + // Save index to a Tile region for unpacking + ExpandedIdentifier expId(tile_exp()); + if (m_dict->find_region(expId,m_tile_region_index)){ + log << MSG::ERROR << "initLevelsFromDict - unable to find tile region index: expId, reg " + << (std::string)expId << " " << m_tile_region_index + << endreq; + return (1); + } + + // Fing a Tile region + IdDictField* field = m_dict->find_field("subdet") ; + if (field) { + m_SYSTEM_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'subdet' field " + << endreq ; + return (1); + } + + field = m_dict->find_field("section") ; + if (field) { + m_SECTION_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'section' field " + << endreq ; + return (1); + } + + field = m_dict->find_field("type") ; + if (field) { + m_TYPE_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'type' field " + << endreq ; + return (1); + } + + field = m_dict->find_field("tbmodule") ; + if (field) { + m_MODULE_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'tbmodule' field " + << endreq ; + return (1); + } + + field = m_dict->find_field("tbchannel") ; + if (field) { + m_CHANNEL_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'tbchannel' field " + << endreq ; + return (1); + } + + /* Set the field implementations */ + const IdDictRegion& region = *m_dict->m_regions[m_tile_region_index]; + + m_system_impl = region.m_implementation[m_SYSTEM_INDEX]; + m_section_impl = region.m_implementation[m_SECTION_INDEX]; + m_type_impl = region.m_implementation[m_TYPE_INDEX]; + m_module_impl = region.m_implementation[m_MODULE_INDEX]; + m_channel_impl = region.m_implementation[m_CHANNEL_INDEX]; + + m_base_tile_type=Identifier (0); + m_system_impl.pack (tile_field_value(),m_base_tile_type); + m_section_impl.pack (TileTBID::TILE_TESTBEAM,m_base_tile_type); + + log << MSG::DEBUG << "initLevelsFromDict decode index and bit fields for each level: " << endreq ; + log << MSG::DEBUG << " system [" << m_SYSTEM_INDEX << "] " << m_system_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " section [" << m_SECTION_INDEX << "] " << m_section_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " type [" << m_TYPE_INDEX << "] " << m_type_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " module [" << m_MODULE_INDEX << "] " << m_module_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " channel [" << m_CHANNEL_INDEX << "] " << m_channel_impl.show_to_string() << endreq ; + + return(0) ; +} + +int TileTBID::init_hashes(void) +{ + MsgStream log(m_msgSvc, "TileTBID" ); + + // type hash + unsigned int nids = 0; + std::set<Identifier> ids; + for (unsigned int i = 0; i < m_full_type_range.size(); ++i) { + const Range& range = m_full_type_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier id = type_id (exp_id[m_TYPE_INDEX]); + if(!(ids.insert(id)).second){ + log << MSG::ERROR << "init_hashes " + << " Error: duplicated id for type id. nids= " << nids + << " compact Id " << show_to_string(id) + << endreq; + } + nids++; + } + } + m_type_hash_max = m_full_type_range.cardinality(); + if ( fill_vec(ids, m_type_hash_max, m_type_vec) ) return (1); + + // module hash + nids = 0; + ids.clear(); + for (unsigned int i = 0; i < m_full_module_range.size(); ++i) { + const Range& range = m_full_module_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier id = module_id (exp_id[m_TYPE_INDEX], + exp_id[m_MODULE_INDEX]); + if(!(ids.insert(id)).second){ + log << MSG::ERROR << "init_hashes " + << " Error: duplicated id for module id. nids= " << nids + << " compact Id " << show_to_string(id) + << endreq; + } + nids++; + } + } + m_module_hash_max = m_full_module_range.cardinality(); + if ( fill_vec(ids, m_module_hash_max, m_module_vec) ) return (1); + + // channel hash + nids = 0; + ids.clear(); + for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { + const Range& range = m_full_channel_range[i]; + Range::const_identifier_factory first = range.factory_begin(); + Range::const_identifier_factory last = range.factory_end(); + for (; first != last; ++first) { + const ExpandedIdentifier& exp_id = (*first); + Identifier id = channel_id (exp_id[m_TYPE_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_CHANNEL_INDEX]); + if(!(ids.insert(id)).second){ + log << MSG::ERROR << "init_hashes " + << " Error: duplicated id for channel id. nids= " << nids + << " compact Id " << show_to_string(id) + << endreq; + } + nids++; + } + } + m_channel_hash_max = m_full_channel_range.cardinality(); + if ( fill_vec(ids, m_channel_hash_max, m_channel_vec) ) return (1); + + return (0); +} + +int TileTBID::fill_vec (std::set<Identifier> & ids, + unsigned int hash_max, std::vector<Identifier> & vec) +{ + + if(ids.size() != hash_max) { + + MsgStream log(m_msgSvc, "TileTBID" ); + log << MSG::ERROR << "fill_vec " + << " Error: set size NOT EQUAL to hash max. size " << ids.size() + << " hash max " << hash_max + << endreq; + + return (1); + } + + vec.resize(hash_max); + + std::set<Identifier>::const_iterator first = ids.begin(); + std::set<Identifier>::const_iterator last = ids.end(); + + int index = 0; + for (;first != last; ++first) { + vec[index++] = (*first); + } + + return (0); +} + +///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// + diff --git a/Calorimeter/CaloIdentifier/src/Tile_Base_ID.cxx b/Calorimeter/CaloIdentifier/src/Tile_Base_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..e4465e68f2e631a828249e79182b9f1c9126b675 --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/Tile_Base_ID.cxx @@ -0,0 +1,1876 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/Tile_Base_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Factor out code common between TileID and Tile_SuperCell_ID. + */ + + +#include "CaloIdentifier/Tile_Base_ID.h" +#include "IdDict/IdDictDefs.h" +#include "Identifier/IdentifierHash.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "CxxUtils/StrFormat.h" + +#include "GaudiKernel/MsgStream.h" + +#include <algorithm> +#include <iostream> +#include <stdio.h> +#include <assert.h> +#include <stdexcept> + +using CxxUtils::strformat; +using namespace LArNeighbours; + + + +Tile_Base_ID::Tile_Base_ID (const std::string& name, bool supercell) + : CaloIDHelper (name) + , m_supercell (supercell ? 1 : 0) + , m_tile_region_index(0) + , m_SYSTEM_INDEX(999) + , m_SECTION_INDEX(999) + , m_SIDE_INDEX(999) + , m_MODULE_INDEX(999) + , m_TOWER_INDEX(999) + , m_SAMPLE_INDEX(999) + , m_PMT_INDEX(999) + , m_ADC_INDEX(999) +{ +} + +// +// Tile_Base_ID methods +// +std::string +Tile_Base_ID::to_string( const Identifier & id, int level ) const +{ + IdContext context; + switch (level) { + case 1: case -6: + case 2: case -5: context = region_context(); break; + case 3: case -4: context = module_context(); break; + case 4: case -3: context = tower_context(); break; + case 5: case -2: context = cell_context(); break; + case 6: case -1: context = pmt_context(); break; + case 7: case 0: context = adc_context(); break; + default: + return "Tile_Base_ID::to_string - unknown context"; + } + + ExpandedIdentifier exp_id; + if ( get_expanded_id(id,exp_id,&context) ) { + return "Tile_Base_ID::to_string - can not expand ID"; + } else { + return (std::string)(exp_id); + } +} + +std::string +Tile_Base_ID::to_string( const IdentifierHash & hash_id, int level ) const +{ + IdContext context; + switch (level) { + case 1: case -6: + case 2: case -5: context = region_context(); break; + case 3: case -4: context = module_context(); break; + case 4: case -3: context = tower_context(); break; + case 5: case -2: context = cell_context(); break; + case 6: case -1: context = pmt_context(); break; + case 7: case 0: context = adc_context(); break; + default: + return "Tile_Base_ID::to_string - unknown context"; + } + + Identifier id; + if ( get_id ( hash_id, id, &context ) == 0 ) { + ExpandedIdentifier exp_id; + if ( get_expanded_id(id,exp_id,&context) ) { + return "Tile_Base_ID::to_string - can not expand ID"; + } else { + return (std::string)(exp_id); + } + } else { + return "Tile_Base_ID::to_string - can not get ID from hash_id"; + } +} + +// +// get methods +// +int +Tile_Base_ID::get_field ( const Identifier & id, size_type index ) const +{ + int field = 0; + if(!dict()->unpack(id, 0, index, m_tile_region_index, field)) { + return field; + } else { + return 0; + } +} + +int +Tile_Base_ID::region ( int section, int side ) const +{ + IdentifierHash hash_id; + IdContext context = region_context(); + + get_hash(region_id(section,side),hash_id,&context); + + return (int)hash_id; +} + +int +Tile_Base_ID::region ( const Identifier & id ) const +{ + IdentifierHash hash_id; + IdContext context = region_context(); + + get_hash(region_id(id),hash_id,&context); + + return (int)hash_id; +} + +int +Tile_Base_ID::system ( const Identifier & id ) const +{ + return get_field(id,m_SYSTEM_INDEX); +} + +int +Tile_Base_ID::section ( const Identifier & id ) const +{ + return decode_section (get_field(id,m_SECTION_INDEX)); +} + +int +Tile_Base_ID::side ( const Identifier & id ) const +{ + return get_field(id,m_SIDE_INDEX); +} + +int +Tile_Base_ID::module ( const Identifier & id ) const +{ + return get_field(id,m_MODULE_INDEX); +} + +int +Tile_Base_ID::tower ( const Identifier & id ) const +{ + return get_field(id,m_TOWER_INDEX); +} + +int +Tile_Base_ID::sample ( const Identifier & id ) const +{ + if ( section(id) == Tile_Base_ID::AUXDET ) + return Tile_Base_ID::SAMP_X; + else + return get_field(id,m_SAMPLE_INDEX); +} + +int +Tile_Base_ID::pmt ( const Identifier & id ) const +{ + return get_field(id,m_PMT_INDEX); +} + +int +Tile_Base_ID::adc ( const Identifier & id ) const +{ + return get_field(id,m_ADC_INDEX); +} + +// +// check methods +// +/* +bool +Tile_Base_ID::is_tile (const Identifier& id) const +{ + bool result = ( system(id) == tile_field_value() ); + + return result; +} +*/ + +bool +Tile_Base_ID::is_tile_barrel (const Identifier& id) const +{ + bool result = is_tile(id) + && ( section(id) == Tile_Base_ID::BARREL ); + + return result; +} + +bool +Tile_Base_ID::is_tile_extbarrel (const Identifier& id) const +{ + bool result = is_tile(id) + && ( section(id) == Tile_Base_ID::EXTBAR ); + + return result; +} + +bool +Tile_Base_ID::is_tile_gap (const Identifier& id) const +{ + bool result = is_tile(id) + && ( section(id) == Tile_Base_ID::GAPDET ); + + return result; +} + +bool +Tile_Base_ID::is_tile_aux (const Identifier& id) const +{ + bool result = is_tile(id) + && ( section(id) == Tile_Base_ID::AUXDET ); + + return result; +} + +bool +Tile_Base_ID::is_negative (const Identifier& id) const +{ + bool result = is_tile(id) + && ( side(id) == Tile_Base_ID::NEGATIVE ); + + return result; +} + +bool +Tile_Base_ID::is_positive (const Identifier& id) const +{ + bool result = is_tile(id) + && ( side(id) == Tile_Base_ID::POSITIVE ); + + return result; +} + +bool +Tile_Base_ID::is_twosides (const Identifier& id) const +{ + bool result = is_tile(id) + && ( side(id) == 0 ); + + return result; +} + +bool +Tile_Base_ID::is_tile_gapscin (const Identifier& id) const +{ + bool result = is_tile(id) + && ( sample(id) == Tile_Base_ID::SAMP_E ); + + return result; +} + +bool +Tile_Base_ID::is_low_gain (const Identifier& id) const +{ + bool result = is_tile(id) + && ( adc(id) == Tile_Base_ID::LOWGAIN ); + + return result; +} + +bool +Tile_Base_ID::is_high_gain (const Identifier& id) const +{ + bool result = is_tile(id) + && ( adc(id) == Tile_Base_ID::HIGHGAIN ); + + return result; +} + +bool Tile_Base_ID::is_supercell (const Identifier& id) const +{ + return is_tile(id) && (get_field(id,m_SECTION_INDEX) & SUPERCELL_MASK); +} + +// Whole TileCal +Identifier +Tile_Base_ID::tile_system () const +{ + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SYSTEM_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +// For Tile Barrel ID +Identifier +Tile_Base_ID::tile_barrel () const +{ + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (Tile_Base_ID::BARREL); + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SECTION_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +// For Tile Extended Barrel ID +Identifier +Tile_Base_ID::tile_extbarrel () const +{ + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (Tile_Base_ID::EXTBAR); + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SECTION_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + + +// For Tile Gap Scintillator ID +Identifier +Tile_Base_ID::tile_gap () const +{ + Identifier result; + + assert (!m_supercell); + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = Tile_Base_ID::GAPDET; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SECTION_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +// For any Tilecal section +Identifier +Tile_Base_ID::tile_det ( int section ) const throw(TileID_Exception) +{ + if(m_do_checks) { + // Check that id is within allowed range + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) ; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::tile_det , values ok but did not build, "+ + strformat("section: %d ", section); + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SECTION_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +// single region, module, tower, cell, pmt, adc identifiers +Identifier +Tile_Base_ID::region_id ( int index ) const throw(TileID_Exception) +{ + Identifier result; + IdentifierHash hash_id = index; + IdContext context = region_context(); + + get_id(hash_id,result,&context); + + return result; +} + +Identifier +Tile_Base_ID::region_id ( int section, int side ) const throw(TileID_Exception) +{ + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) << side; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::region_id, values ok but did not build, "+ + strformat ("section: %d, side: %d ", section, side); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_region_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::region_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + id[m_SIDE_INDEX] = side; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SIDE_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +Identifier +Tile_Base_ID::region_id ( const Identifier& any_id ) const +{ + Identifier result; + // extract with the dictionary + Identifier id; + if(!dict()->copy(any_id, 0, 0, m_SIDE_INDEX, m_tile_region_index, id)) { + result = id; + } + return (result); +} + +Identifier +Tile_Base_ID::module_id ( int section, int side, + int module ) const + throw(TileID_Exception) +{ + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) << side << module; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::module_id, values ok but did not build, "+ + strformat ("section: %d, side: %d, module: %d ", + section, side, module); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_module_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::module_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + id[m_SIDE_INDEX] = side; + id[m_MODULE_INDEX] = module; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_MODULE_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +Identifier +Tile_Base_ID::module_id ( const Identifier& any_id ) const +{ + Identifier result; + // extract with the dictionary + Identifier id; + if(!dict()->copy(any_id, 0, 0, m_MODULE_INDEX, m_tile_region_index, id)) { + result = id; + } + return (result); +} + +Identifier +Tile_Base_ID::tower_id ( int section, int side, + int module, int tower ) const + throw(TileID_Exception) +{ + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) << side << module << tower; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::tower_id, values ok but did not build, "+ + strformat ("section: %d, side: %d, module: %d, tower: %d ", + section, side, module, tower); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_tower_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::tower_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + id[m_SIDE_INDEX] = side; + id[m_MODULE_INDEX] = module; + id[m_TOWER_INDEX] = tower; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_TOWER_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +Identifier +Tile_Base_ID::tower_id ( const Identifier& any_id ) const +{ + Identifier result; + // extract with the dictionary + Identifier id; + if(!dict()->copy(any_id, 0, 0, m_TOWER_INDEX, m_tile_region_index, id)) { + result = id; + } + return (result); +} + +Identifier +Tile_Base_ID::cell_id ( const Identifier & any_id ) const +{ + Identifier result; + // extract with the dictionary + Identifier id; + if(!dict()->copy(any_id, 0, 0, m_SAMPLE_INDEX, m_tile_region_index, id)) { + result = id; + } + return (result); +} + +Identifier +Tile_Base_ID::cell_id ( int section, int side, + int module, int tower, + int sample ) const + throw(TileID_Exception) +{ + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) << side << module << tower << sample; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::cell_id, values ok but did not build, " + + strformat ("section: %d, side: %d, module: %d, tower: %d, sample: %d ", + section, side, module, tower, sample); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_cell_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::cell_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_cell_range; + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + id[m_SIDE_INDEX] = side; + id[m_MODULE_INDEX] = module; + id[m_TOWER_INDEX] = tower; + id[m_SAMPLE_INDEX] = sample; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_SAMPLE_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +Identifier +Tile_Base_ID::pmt_id ( const Identifier & any_id ) const +{ + Identifier result; + // extract with the dictionary + Identifier id; + if(!dict()->copy(any_id, 0, 0, m_PMT_INDEX, m_tile_region_index, id)) { + result = id; + } + return (result); +} + +Identifier +Tile_Base_ID::pmt_id ( const Identifier & cell_id, + int pmt ) const + throw(TileID_Exception) +{ + Identifier result; + + int id[8]; + id[0] = pmt; + + Identifier compactId(cell_id); + if (!dict()->pack32(id, m_PMT_INDEX, m_PMT_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + else { + std::string errorMessage = "Tile_Base_ID::pmt_id(cell_id,pmt) could not pack ID: " + + cell_id.getString() ; + throw TileID_Exception(errorMessage , 1); + } + + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = cell_context(); + if (get_expanded_id(result, expId, &context)) { + std::string errorMessage = "Tile_Base_ID::pmt_id(cell_id,pmt) result is not OK: ID = " + + result.getString() ; + throw TileID_Exception(errorMessage , 1); + + // region_id.show(); + } + + expId << pmt; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::pmt_id, values ok but did not build, " + + strformat ("pmt: %d ", pmt); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_pmt_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::pmt_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + return result; +} + +Identifier +Tile_Base_ID::pmt_id ( int section, int side, + int module, int tower, + int sample, int pmt ) const + throw(TileID_Exception) +{ + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) << side << module << tower << sample << pmt; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::pmt_id, values ok but did not build, " + + strformat ("section: %d, side: %d, module: %d, tower: %d, sample: %d, pmt: %d ", + section, side, module, tower, sample, pmt); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_pmt_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::pmt_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + id[m_SIDE_INDEX] = side; + id[m_MODULE_INDEX] = module; + id[m_TOWER_INDEX] = tower; + id[m_SAMPLE_INDEX] = sample; + id[m_PMT_INDEX] = pmt; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_PMT_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +Identifier +Tile_Base_ID::adc_id ( const Identifier & cell_id, + int pmt, int adc ) const + throw(TileID_Exception) +{ + Identifier result; + + int id[8]; + id[0] = pmt; + id[1] = adc; + + Identifier compactId(cell_id); + if (!dict()->pack32(id, m_PMT_INDEX, m_ADC_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + else { + std::string errorMessage = "Tile_Base_ID::adc_id(cell_id,pmt,adc) could not pack ID: " + + cell_id.getString() ; + throw TileID_Exception(errorMessage , 1); + } + + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = cell_context(); + if (get_expanded_id(result, expId, &context)) { + std::string errorMessage = "Tile_Base_ID::adc_id(cell_id,pmt,adc) result is not OK: ID = " + + result.getString() ; + throw TileID_Exception(errorMessage , 1); + + // region_id.show(); + } + + expId << pmt << adc; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::adc_id, values ok but did not build, " + + strformat ("pmt: %d, adc: %d ", pmt, adc); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_adc_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::adc_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + return result; +} + +Identifier +Tile_Base_ID::adc_id ( const Identifier & pmt_id, + int adc ) const + throw(TileID_Exception) +{ + Identifier result; + + int id[8]; + id[0] = adc; + + Identifier compactId(pmt_id); + if (!dict()->pack32(id, m_ADC_INDEX, m_ADC_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + else { + std::string errorMessage = "Tile_Base_ID::adc_id(pmt_id,adc) could not pack ID: " + + pmt_id.getString() ; + throw TileID_Exception(errorMessage , 1); + } + + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId; + + IdContext context = pmt_context(); + if (get_expanded_id(result, expId, &context)) { + std::string errorMessage = "Tile_Base_ID::adc_id(pmt_id,adc) result is not OK: ID = " + + result.getString() ; + throw TileID_Exception(errorMessage , 1); + + // region_id.show(); + } + + expId << adc; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::adc_id, values ok but did not build, " + + strformat ("adc: %d ", adc); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_adc_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::adc_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + return result; +} + +Identifier +Tile_Base_ID::adc_id ( int section, int side, + int module, int tower, int sample, + int pmt, int adc ) const + throw(TileID_Exception) +{ + if(m_do_checks) { + + // Check that id is within allowed range + + // Fill expanded id + ExpandedIdentifier expId(tile_exp()); + expId << encode_section (section) << side << module << tower << sample << pmt << adc; + + if( expId.last_error () != ExpandedIdentifier::none ){ + std::string errorMessage = + "Error in Tile_Base_ID::adc_id, values ok but did not build, " + + strformat ("section: %d, side: %d, module: %d, tower: %d, sample: %d, pmt: %d, adc: %d ", + section, side, module, tower, sample, pmt, adc); + throw TileID_Exception(errorMessage , 1); + } + + if (!m_full_adc_range.match(expId)) { + std::string errorMessage = "Tile_Base_ID::adc_id() result is not OK: ID, range = " + + std::string(expId) + " , " + (std::string)m_full_region_range; + throw TileID_Exception(errorMessage , 1); + } + } + + Identifier result; + + int id[8]; + id[m_SYSTEM_INDEX] = tile_field_value(); + id[m_SECTION_INDEX] = encode_section (section); + id[m_SIDE_INDEX] = side; + id[m_MODULE_INDEX] = module; + id[m_TOWER_INDEX] = tower; + id[m_SAMPLE_INDEX] = sample; + id[m_PMT_INDEX] = pmt; + id[m_ADC_INDEX] = adc; + + Identifier compactId(0); + if (!dict()->pack32(id, 0, m_ADC_INDEX, m_tile_region_index, compactId)) { + result = compactId; + } + + return result; +} + +bool Tile_Base_ID::module_id ( const Identifier& region_id, + int module, Identifier& module_id ) const +{ + ExpandedIdentifier id; + IdContext context = region_context(); + get_expanded_id(region_id, id, &context); + id << module; + if (!m_full_module_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!dict()->pack32(id,0, id.fields() - 1,compactId)) { + module_id = compactId; + } + return true; +} + +bool Tile_Base_ID::tower_id ( const Identifier& region_id, + int module, int tower, Identifier& tower_id ) const +{ + ExpandedIdentifier id; + IdContext context = region_context(); + get_expanded_id(region_id, id, &context); + id << module << tower; + if (!m_full_tower_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!dict()->pack32(id,0, id.fields() - 1,compactId)) { + tower_id = compactId; + } + return true; +} + +bool Tile_Base_ID::cell_id ( const Identifier& region_id, + int module, int tower, int sample, + Identifier& cell_id ) const +{ + ExpandedIdentifier id; + IdContext context = region_context(); + get_expanded_id(region_id, id, &context); + id << module << tower << sample; + if (!m_full_cell_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!dict()->pack32(id,0, id.fields() - 1,compactId)) { + cell_id = compactId; + } + return true; +} + +bool Tile_Base_ID::pmt_id ( const Identifier& cell_id, + int pmt, Identifier& pmt_id ) const +{ + ExpandedIdentifier id; + IdContext context = cell_context(); + get_expanded_id(cell_id, id, &context); + id << pmt; + if (!m_full_pmt_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!dict()->pack32(id,0, id.fields() - 1,compactId)) { + pmt_id = compactId; + } + return true; +} + +bool Tile_Base_ID::adc_id ( const Identifier& pmt_id, + int adc, Identifier& adc_id ) const +{ + ExpandedIdentifier id; + IdContext context = pmt_context(); + get_expanded_id(pmt_id, id, &context); + id << adc; + if (!m_full_adc_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!dict()->pack32(id,0, id.fields() - 1,compactId)) { + adc_id = compactId; + } + return true; +} + +bool Tile_Base_ID::adc_id ( const Identifier& cell_id, + int pmt, int adc, Identifier& adc_id ) const +{ + ExpandedIdentifier id; + IdContext context = cell_context(); + get_expanded_id(cell_id, id, &context); + id << pmt << adc; + if (!m_full_adc_range.match(id)) { + return false; + } + + Identifier compactId(0); + if (!dict()->pack32(id,0, id.fields() - 1,compactId)) { + adc_id = compactId; + } + return true; +} + +Identifier Tile_Base_ID::cell_id (const IdentifierHash& hash_id) const + throw(TileID_Exception) +{ + if (hash_id < channels().hash_max()) { + return channel_id (hash_id); + } else { + std::string errorMessage = "Tile_Base_ID::cell_id(hash_id) - hash_id out of range "; + throw TileID_Exception(errorMessage , 1); + } +} + +IdentifierHash Tile_Base_ID::cell_hash (const Identifier& id) const + throw(TileID_Exception) +{ + IdentifierHash ret = 0; + if (channels().get_hash (id, ret) == 0) + return ret; + + std::string errorMessage = "Tile_Base_ID::cell_hash(cell_id) - cell_id out of range "; + throw TileID_Exception(errorMessage , 1); +} + +IdContext +Tile_Base_ID::region_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_SIDE_INDEX)); +} + +IdContext +Tile_Base_ID::module_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_MODULE_INDEX)); +} + +IdContext +Tile_Base_ID::tower_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_TOWER_INDEX)); +} + +IdContext +Tile_Base_ID::cell_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_SAMPLE_INDEX)); +} + +IdContext +Tile_Base_ID::pmt_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_PMT_INDEX)); +} + +IdContext +Tile_Base_ID::adc_context (void) const +{ + ExpandedIdentifier id; + return (IdContext(id, 0, m_ADC_INDEX)); +} + +int +Tile_Base_ID::get_id (const IdentifierHash& hash_id, + Identifier& id, + const IdContext* context ) const +{ + int result = 1; + id.clear(); + + size_t begin = (context) ? context->begin_index(): 0; + // cannot get hash if end is 0: + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + + if ( m_ADC_INDEX == end ) { + if (hash_id < m_adcs.hash_max()) { + id = m_adcs.id (hash_id); + result = 0; + } else { + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::ERROR << "get_id: adc hash_id is out of range " << hash_id + << " > " << m_adcs.hash_max() << endreq; + } + } else if ( m_PMT_INDEX == end ) { + if (hash_id < m_pmts.hash_max()) { + id = m_pmts.id (hash_id); + result = 0; + } else { + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::ERROR << "get_id: pmt hash_id is out of range " << hash_id + << " >= " << m_pmts.hash_max() << endreq; + } + } else if ( m_SAMPLE_INDEX == end ) { + if (hash_id < channels().hash_max()) { + id = channels().id (hash_id); + result = 0; + } else { + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::ERROR << "get_id: cell hash_id is out of range " << hash_id + << " >= " << channels().hash_max() << endreq; + } + } else if ( m_TOWER_INDEX == end ) { + if (hash_id < m_towers.hash_max()) { + id = m_towers.id (hash_id); + result = 0; + } else { + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::ERROR << "get_id: tower hash_id is out of range " << hash_id + << " >= " << m_towers.hash_max() << endreq; + } + } else if ( m_MODULE_INDEX == end ) { + if (hash_id < m_modules.hash_max()) { + id = m_modules.id (hash_id); + result = 0; + } else { + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::ERROR << "get_id: module hash_id is out of range " << hash_id + << " >= " << m_modules.hash_max() << endreq; + } + } else if ( m_SIDE_INDEX == end ) { + if (hash_id < regions().hash_max()) { + id = regions().id (hash_id); + result = 0; + } else { + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::ERROR << "get_id: region hash_id is out of range " << hash_id + << " >= " << regions().hash_max() << endreq; + } + } + } + return(result); +} + + +int +Tile_Base_ID::get_hash (const Identifier& id, + IdentifierHash& hash_id, + const IdContext* context ) const +{ + hash_id = 0; + int result = 1; + + size_t begin = (context) ? context->begin_index(): 0; + size_t end = (context) ? context->end_index() : 0; + + if (0 == begin) { + if ( m_ADC_INDEX == end ) { + result = m_adcs.get_hash (id, hash_id); + } else if ( m_PMT_INDEX == end ) { + result = m_pmts.get_hash (pmt_id(id), hash_id); + } else if ( m_SAMPLE_INDEX == end ) { + result = channels().get_hash (cell_id(id), hash_id); + } else if ( m_TOWER_INDEX == end ) { + result = m_towers.get_hash (tower_id(id), hash_id); + } else if ( m_MODULE_INDEX == end ) { + result = m_modules.get_hash (module_id(id), hash_id); + } else if ( m_SIDE_INDEX == end ) { + result = regions().get_hash (region_id(id), hash_id); + } + } + + return (result); +} + +int +Tile_Base_ID::initialize_base_from_dictionary (const IdDictMgr& dict_mgr, + const std::string& group_name) +{ + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + log << MSG::DEBUG << "initialize_base_from_dictionary " << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + if(m_msgSvc)log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + if(m_msgSvc)log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + log << MSG::DEBUG << "calling base initialize_base_from_dictionary" << endreq; + + // init base object + if(CaloIDHelper::initialize_base_from_dictionary(dict_mgr, + "TileCalorimeter")) + return (1); + + // Initialize the field indices + if(initLevelsFromDict (group_name)) return (1); + + + // Find value for the field Tile Calorimeter + const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS"); + int tileField = -1; + if (atlasDict->get_label_value("subdet", "TileCalorimeter", tileField)) { + log << MSG::ERROR << "Could not get value for label 'TileCalorimeter' of field 'subdet' in dictionary " + << atlasDict->m_name + << endreq; + return (1); + } + + // Set up id for region and range prefix + ExpandedIdentifier tile_id; + tile_id.add(tileField); + ExpandedIdentifier reg_id = tile_id; + Range prefix; + + m_full_adc_range = dict()->build_multirange(reg_id, group_name, prefix, "adc"); + m_full_pmt_range = dict()->build_multirange(reg_id, group_name, prefix, "pmt"); + m_full_cell_range = dict()->build_multirange(reg_id, group_name, prefix, "sampling"); + m_full_tower_range = dict()->build_multirange(reg_id, group_name, prefix, "tower"); + m_full_module_range = dict()->build_multirange(reg_id, group_name, prefix, "module"); + m_full_region_range = dict()->build_multirange(reg_id, group_name, prefix, "side"); + + // Find value for the field Tile Online + int tilehwField = -1; + if (dict()->get_label_value("section", "Online", tilehwField)) { + log << MSG::ERROR << "Could not get value for label 'Online' of field 'section' in dictionary " + << dict()->m_name + << endreq; + } else { + // remove online ID from all ranges + reg_id = tile_id; + reg_id.add(tilehwField); + m_full_adc_range.remove_range(reg_id); + m_full_pmt_range.remove_range(reg_id); + m_full_cell_range.remove_range(reg_id); + m_full_tower_range.remove_range(reg_id); + m_full_module_range.remove_range(reg_id); + m_full_region_range.remove_range(reg_id); + } + + // Find value for the field Tile Testbeam + int tiletbField = -1; + if (dict()->get_label_value("section", "Testbeam", tiletbField)) { + log << MSG::ERROR << "Could not get value for label 'Testbeam' of field 'section' in dictionary " + << dict()->m_name + << endreq; + } else { + // remove testbeam ID from all ranges + reg_id = tile_id; + reg_id.add(tiletbField); + m_full_adc_range.remove_range(reg_id); + m_full_pmt_range.remove_range(reg_id); + m_full_cell_range.remove_range(reg_id); + m_full_tower_range.remove_range(reg_id); + m_full_module_range.remove_range(reg_id); + m_full_region_range.remove_range(reg_id); + } + + log << MSG::DEBUG << "initialize_from_dict : " << endreq; + log << MSG::DEBUG << " region range -> " << (std::string)m_full_region_range << endreq; + log << MSG::DEBUG << " module range -> " << (std::string)m_full_module_range << endreq; + log << MSG::DEBUG << " tower range -> " << (std::string)m_full_tower_range << endreq; + log << MSG::DEBUG << " cell range -> " << (std::string)m_full_cell_range << endreq; + log << MSG::DEBUG << " pmt range -> " << (std::string)m_full_pmt_range << endreq; + log << MSG::DEBUG << " adc range -> " << (std::string)m_full_adc_range << endreq; + + // Setup the hash tables + if(init_hashes()) return (1); + + // Setup hash tables for finding neighbors + if(m_do_neighbours) { + // temporary workaround to get the super_cell neighbor file directly + // instead of from the db. In the long term the file name should + // come from the db as well + std::string neighbourFile; + if ( m_supercell ) { + neighbourFile = "TileSuperCellNeighbour.txt"; + } + else { + neighbourFile = dict_mgr.find_metadata("TILENEIGHBORS"); + } + if (!neighbourFile.size()) throw std::runtime_error("TileID: Cannot find the Tile Neighbour file name"); + if(m_neighbour.initialize(this, neighbourFile)) return (1); + } + + return 0; +} + +Tile_Base_ID::size_type Tile_Base_ID::region_hash_max (void) const +{ + return regions().hash_max(); +} + +Tile_Base_ID::size_type Tile_Base_ID::module_hash_max (void) const +{ + return m_modules.hash_max(); +} + +Tile_Base_ID::size_type Tile_Base_ID::tower_hash_max (void) const +{ + return m_towers.hash_max(); +} + +Tile_Base_ID::size_type Tile_Base_ID::cell_hash_max (void) const +{ + return channels().hash_max(); +} + +Tile_Base_ID::size_type Tile_Base_ID::pmt_hash_max (void) const +{ + return m_pmts.hash_max(); +} + +Tile_Base_ID::size_type Tile_Base_ID::adc_hash_max (void) const +{ + return m_adcs.hash_max(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::reg_begin (void) const +{ + return regions().begin(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::reg_end (void) const +{ + return regions().end(); +} + +Tile_Base_ID::id_range Tile_Base_ID::reg_range() const +{ + return regions().range(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::module_begin (void) const +{ + return m_modules.begin(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::module_end (void) const +{ + return m_modules.end(); +} + +Tile_Base_ID::id_range Tile_Base_ID::module_range() const +{ + return m_modules.range(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::tower_begin (void) const +{ + return m_towers.begin(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::tower_end (void) const +{ + return m_towers.end(); +} + +Tile_Base_ID::id_range Tile_Base_ID::tower_range() const +{ + return m_towers.range(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::cell_begin (void) const +{ + return channels().begin(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::cell_end (void) const +{ + return channels().end(); +} + +Tile_Base_ID::id_range Tile_Base_ID::cell_range() const +{ + return channels().range(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::pmt_begin (void) const +{ + return m_pmts.begin(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::pmt_end (void) const +{ + return m_pmts.end(); +} + +Tile_Base_ID::id_range Tile_Base_ID::pmt_range() const +{ + return m_pmts.range(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::adc_begin (void) const +{ + return m_adcs.begin(); +} + +Tile_Base_ID::id_iterator Tile_Base_ID::adc_end (void) const +{ + return m_adcs.end(); +} + +Tile_Base_ID::id_range Tile_Base_ID::adc_range() const +{ + return m_adcs.range(); +} + +const std::vector<Identifier>& Tile_Base_ID::region_ids() const +{ + return regions().ids(); +} + +const std::vector<Identifier>& Tile_Base_ID::module_ids() const +{ + return m_modules.ids(); +} + +const std::vector<Identifier>& Tile_Base_ID::tower_ids() const +{ + return m_towers.ids(); +} + +const std::vector<Identifier>& Tile_Base_ID::cell_ids() const +{ + return channels().ids(); +} + +const std::vector<Identifier>& Tile_Base_ID::pmt_ids() const +{ + return m_pmts.ids(); +} + +const std::vector<Identifier>& Tile_Base_ID::adc_ids() const +{ + return m_adcs.ids(); +} + + +Identifier Tile_Base_ID::region_id (const ExpandedIdentifier& exp_id) const +{ + return this->region_id (exp_id[m_SECTION_INDEX], + exp_id[m_SIDE_INDEX]); +} + +Identifier Tile_Base_ID::module_id (const ExpandedIdentifier& exp_id) const +{ + return this->module_id (exp_id[m_SECTION_INDEX], + exp_id[m_SIDE_INDEX], + exp_id[m_MODULE_INDEX]); +} + +Identifier Tile_Base_ID::tower_id (const ExpandedIdentifier& exp_id) const +{ + return this->tower_id (exp_id[m_SECTION_INDEX], + exp_id[m_SIDE_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_TOWER_INDEX]); +} + +Identifier Tile_Base_ID::cell_id (const ExpandedIdentifier& exp_id) const +{ + return this->cell_id (exp_id[m_SECTION_INDEX], + exp_id[m_SIDE_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_TOWER_INDEX], + exp_id[m_SAMPLE_INDEX]); +} + +Identifier Tile_Base_ID::pmt_id (const ExpandedIdentifier& exp_id) const +{ + return this->pmt_id (exp_id[m_SECTION_INDEX], + exp_id[m_SIDE_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_TOWER_INDEX], + exp_id[m_SAMPLE_INDEX], + exp_id[m_PMT_INDEX]); +} + +Identifier Tile_Base_ID::adc_id (const ExpandedIdentifier& exp_id) const +{ + return this->adc_id (exp_id[m_SECTION_INDEX], + exp_id[m_SIDE_INDEX], + exp_id[m_MODULE_INDEX], + exp_id[m_TOWER_INDEX], + exp_id[m_SAMPLE_INDEX], + exp_id[m_PMT_INDEX], + exp_id[m_ADC_INDEX]); +} + +int Tile_Base_ID::eta_min(const Identifier& id, const IdContext& context) const +{ + ExpandedIdentifier expId; + if(!get_expanded_id(id, expId, &context)) { + int result = -999; + for (unsigned int i = 0; i < m_full_tower_range.size(); ++i) { + const Range& range = m_full_tower_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_TOWER_INDEX]; + if (eta_field.has_minimum()) { + int etamin = eta_field.get_minimum(); + if (-999 == result) { + result = etamin; + } + else { + if (etamin < result) result = etamin; + } + } + } + } + return (result); + } + return (-999); +} + +int Tile_Base_ID::eta_max(const Identifier& id, const IdContext& context) const +{ + ExpandedIdentifier expId; + if(!get_expanded_id(id, expId, &context)) { + int result = -999; + for (unsigned int i = 0; i < m_full_cell_range.size(); ++i) { + const Range& range = m_full_cell_range[i]; + if (range.match(expId)) { + const Range::field& eta_field = range[m_TOWER_INDEX]; + if (eta_field.has_maximum()) { + int etamax = eta_field.get_maximum(); + if (result < etamax) result = etamax; + } + } + } + return (result); + } + return (-999); // default +} + +int Tile_Base_ID::eta_min(const Identifier& id) const +{ + IdContext context = tower_context(); + return eta_min (id, context); +} + +int Tile_Base_ID::eta_max(const Identifier& id) const +{ + IdContext context = cell_context(); + return eta_max (id, context); +} + +int Tile_Base_ID::region_eta_min(const Identifier& id) const +{ + IdContext context = region_context(); + return eta_min (id, context); +} + +int Tile_Base_ID::region_eta_max(const Identifier& id) const +{ + IdContext context = region_context(); + return eta_max (id, context); +} + +int Tile_Base_ID::phi_max(const Identifier& id) const +{ + ExpandedIdentifier expId; + IdContext context = cell_context(); + if(!get_expanded_id(id, expId, &context)) { + int result = -999; + for (unsigned int i = 0; i < m_full_cell_range.size(); ++i) { + const Range& range = m_full_cell_range[i]; + if (range.match(expId)) { + const Range::field& phi_field = range[m_MODULE_INDEX]; + if (phi_field.has_maximum()) { + int phimax = phi_field.get_maximum(); + if (result < phimax) result = phimax; + } + } + } + return (result); + } + return (-999); // default +} + +int Tile_Base_ID::get_expanded_id (const Identifier& id, + ExpandedIdentifier& exp_id, + const IdContext* context) const +{ + int result = 1; + + size_t begin = (context) ? context->begin_index() : 0; + size_t end = (context) ? context->end_index() : m_ADC_INDEX; + assert (end <= m_ADC_INDEX); + + if (0 == end) { + result = 0; + } + else if ( 0 == begin) { + ExpandedIdentifier empty; + result = dict()->unpack(id, empty, end, exp_id); + } + else { + result = dict()->unpack(id, context->prefix_id(), end, exp_id); + } + return result; +} + +int Tile_Base_ID::initLevelsFromDict (const std::string& group_name) +{ + MsgStream log(m_msgSvc, "Tile_Base_ID" ); + + if(!dict()) { + log << MSG::ERROR << "initLevelsFromDict - dictionary NOT initialized " + << endreq; + return (1); + } + + // Find out which identifier field corresponds to each level. + + m_SYSTEM_INDEX = 999; + m_SECTION_INDEX = 999; + m_SIDE_INDEX = 999; + m_MODULE_INDEX = 999; + m_TOWER_INDEX = 999; + m_SAMPLE_INDEX = 999; + m_PMT_INDEX = 999; + m_ADC_INDEX = 999; + + IdDictGroup* group = dict()->find_group(group_name); + if ( !group ){ + log << MSG::ERROR << "initLevelsFromDict - cannot find " << group_name + << " group' field " << endreq; + } + else { + m_tile_region_index = group->regions()[0]->m_index; + } + + // Fing a Tile region + IdDictField* field = dict()->find_field("subdet") ; + if (field) { + m_SYSTEM_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'subdet' field " + << endreq ; + return (1); + } + + field = dict()->find_field("section") ; + if (field) { + m_SECTION_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'section' field " + << endreq ; + return (1); + } + + field = dict()->find_field("side") ; + if (field) { + m_SIDE_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'side' field " + << endreq ; + return (1); + } + + field = dict()->find_field("module") ; + if (field) { + m_MODULE_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'module' field " + << endreq ; + return (1); + } + + field = dict()->find_field("tower") ; + if (field) { + m_TOWER_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'tower' field " + << endreq ; + return (1); + } + + field = dict()->find_field("sampling") ; + if (field) { + m_SAMPLE_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'sampling' field " + << endreq ; + return (1); + } + + field = dict()->find_field("pmt") ; + if (field) { + m_PMT_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'pmt' field " + << endreq ; + return (1); + } + + field = dict()->find_field("adc") ; + if (field) { + m_ADC_INDEX = field->m_index ; + } + else { + log << MSG::ERROR << "initLevelsFromDict - unable to find 'adc' field " + << endreq ; + return (1); + } + + const IdDictRegion& region = *dict()->m_regions[m_tile_region_index]; + + m_system_impl = region.m_implementation[m_SYSTEM_INDEX]; + m_section_impl = region.m_implementation[m_SECTION_INDEX]; + m_side_impl = region.m_implementation[m_SIDE_INDEX]; + m_module_impl = region.m_implementation[m_MODULE_INDEX]; + m_tower_impl = region.m_implementation[m_TOWER_INDEX]; + m_sample_impl = region.m_implementation[m_SAMPLE_INDEX]; + m_pmt_impl = region.m_implementation[m_PMT_INDEX]; + m_adc_impl = region.m_implementation[m_ADC_INDEX]; + + log << MSG::DEBUG << "initLevelsFromDict decode index and bit fields for each level: " << endreq ; + log << MSG::DEBUG << " system [" << m_SYSTEM_INDEX << "] " << m_system_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " section [" << m_SECTION_INDEX << "] " << m_section_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " side [" << m_SIDE_INDEX << "] " << m_side_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " module [" << m_MODULE_INDEX << "] " << m_module_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " tower [" << m_TOWER_INDEX << "] " << m_tower_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " sampling [" << m_SAMPLE_INDEX << "] " << m_sample_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " pmt [" << m_PMT_INDEX << "] " << m_pmt_impl.show_to_string() << endreq ; + log << MSG::DEBUG << " adc [" << m_ADC_INDEX << "] " << m_adc_impl.show_to_string() << endreq ; + + return(0) ; +} + +int Tile_Base_ID::init_hashes(void) +{ + if (regions().init (*this, "regions", m_full_region_range, + &Tile_Base_ID::region_id, + m_SIDE_INDEX)) + return 1; + + if (m_modules.init (*this, "modules", m_full_module_range, + &Tile_Base_ID::module_id, + m_MODULE_INDEX)) + return 1; + + if (m_towers.init (*this, "towers", m_full_tower_range, + &Tile_Base_ID::tower_id, + m_TOWER_INDEX)) + return 1; + + if (channels().init (*this, "channels", m_full_cell_range, + &Tile_Base_ID::cell_id, + m_SAMPLE_INDEX)) + return 1; + + if (m_pmts.init (*this, "pmts", m_full_pmt_range, + &Tile_Base_ID::pmt_id, + m_PMT_INDEX)) + return 1; + + if (m_adcs.init (*this, "adcs", m_full_adc_range, + &Tile_Base_ID::adc_id, + m_ADC_INDEX)) + return 1; + + return (0); +} + + +int Tile_Base_ID::get_neighbours(const IdentifierHash& id_orig, const LArNeighbours::neighbourOption& option, + std::vector<IdentifierHash>& neighbourList) const +{ + int result = 1; + + if(!m_do_neighbours) { + + MsgStream log(m_msgSvc, "TileID" ); + log << MSG::WARNING << "get_neighbours: neighbours not initialized !!! returning empty list" << endreq; + + neighbourList.resize(0); + return result; + } + + neighbourList.clear(); + + bool prevSmp = (option & prevInSamp); + bool nextSmp = (option & nextInSamp); + + bool corners2DOnly = ( (option & all2D) == corners2D ); + + bool prevPhi = corners2DOnly || (option & prevInPhi); + bool nextPhi = corners2DOnly || (option & nextInPhi); + bool prevEta = corners2DOnly || (option & prevInEta); + bool nextEta = corners2DOnly || (option & nextInEta); + + std::vector<IdentifierHash> inpList; + std::vector<IdentifierHash>::iterator inpItr; + std::vector<IdentifierHash>::iterator inpLast; + + inpList.push_back(id_orig); + + // all phi neighbours (just 2) + if (prevPhi) m_neighbour.prev_phi(id_orig,neighbourList); + if (nextPhi) m_neighbour.next_phi(id_orig,neighbourList); + + if ( (option & all2D) == faces2D) { + // do nothing + + } else if (corners2DOnly) { + // neighbours of phi-neigbours are 2D corners + inpList = neighbourList; // copy 2 phi neighbours to input list + neighbourList.clear(); // and clear neighbour list + + } else if ( (option & all2D) == all2D) { + // copy all neighbours to input list + std::copy(neighbourList.begin(), neighbourList.end(), std::back_inserter(inpList)); + + } + + // all eta neighbours + inpItr = inpList.begin(); + inpLast = inpList.end(); + for ( ; inpItr != inpLast; ++inpItr) { + IdentifierHash id = (*inpItr); + if (prevEta) m_neighbour.prev_eta(id,neighbourList); + if (nextEta) m_neighbour.next_eta(id,neighbourList); + } + + // all sampling neighbours + if( (option & all3DwithCorners) == all3DwithCorners ) { + + inpItr = inpList.begin(); + inpLast = inpList.end(); + for ( ; inpItr != inpLast; ++inpItr) { + IdentifierHash id = (*inpItr); + m_neighbour.prev_samp_wide(id,neighbourList); + m_neighbour.next_samp_wide(id,neighbourList); + } + + } else { + + if (prevSmp) m_neighbour.prev_samp(id_orig,neighbourList); + if (nextSmp) m_neighbour.next_samp(id_orig,neighbourList); + + } + + if (neighbourList.size() > 0) result = 0; + + return result; +} + diff --git a/Calorimeter/CaloIdentifier/src/Tile_SuperCell_ID.cxx b/Calorimeter/CaloIdentifier/src/Tile_SuperCell_ID.cxx new file mode 100755 index 0000000000000000000000000000000000000000..6bde952bf621dc35ab03c58db7fe465513e60e8d --- /dev/null +++ b/Calorimeter/CaloIdentifier/src/Tile_SuperCell_ID.cxx @@ -0,0 +1,54 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/src/Tile_SuperCell_ID.cxx + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Helper class for Tile offline identifiers for supercells + */ + + +#include "CaloIdentifier/Tile_SuperCell_ID.h" +#include "IdDict/IdDictDefs.h" +#include "Identifier/IdentifierHash.h" +#include "AtlasDetDescr/AtlasDetectorID.h" + +#include "GaudiKernel/MsgStream.h" + +#include <algorithm> +#include <iostream> +#include <stdio.h> +#include <assert.h> +#include <stdexcept> + + +Tile_SuperCell_ID::Tile_SuperCell_ID() + : Tile_Base_ID ("Tile_SuperCell_ID", true) +{ +} + +int Tile_SuperCell_ID::initialize_from_dictionary (const IdDictMgr& dict_mgr) +{ + MsgStream log(m_msgSvc, "Tile_SuperCell_ID" ); + + std::string strg = "initialize_from_dictionary"; + log << MSG::DEBUG << strg << endreq; + + // Check whether this helper should be reinitialized + if (!reinitialize(dict_mgr)) { + log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endreq; + return (0); + } + else { + log << MSG::DEBUG << "(Re)initialize" << endreq; + } + + // init base object + if (Tile_Base_ID::initialize_base_from_dictionary(dict_mgr, "tile_supercell")) + return (1); + + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/CaloCell_ID_test.cxx b/Calorimeter/CaloIdentifier/test/CaloCell_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..05fc2561f1594df9e94dbdc3ba95a8872e0e385e --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/CaloCell_ID_test.cxx @@ -0,0 +1,73 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/CaloCell_ID_test.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Unit test for CaloCell_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/CaloCell_ID.h" + + +#include "calocell_id_test_common.cxx" + + +CaloCell_ID* make_calo_id (bool do_neighbours = false) +{ + return make_calo_id_t<CaloCell_ID, + LArEM_ID, + LArHEC_ID, + LArFCAL_ID, + TileID> (do_neighbours); +} + + +void test_neighbours (const CaloCell_ID* calo_id) +{ + std::cout << "test_neighbours\n"; + + for (unsigned int iCell = 0 ; iCell < calo_id->calo_cell_hash_max(); ++iCell){ + Identifier cellId = calo_id->cell_id(iCell); + IdentifierHash hash_min = 888888 ; + IdentifierHash hash_max = 0 ; + calo_id->calo_cell_hash_range(cellId, hash_min, hash_max); + std::vector<IdentifierHash> neighbourList; + assert (calo_id->get_neighbours(iCell, LArNeighbours::all3D, neighbourList) + == 0); + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + assert (hash_min <= neighbourHash && neighbourHash <= hash_max); + } + } +} + + +int main() +{ + CaloCell_ID* calo_id = make_calo_id(); + CaloCell_ID* calo_id_n = make_calo_id(true); + try { + test_cells (calo_id); + test_sample (calo_id, false); + test_subcalo (calo_id); + test_regions (calo_id); + test_neighbours (calo_id_n); + test_exceptions (calo_id); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + catch(TileID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/CaloCell_SuperCell_ID_test.cxx b/Calorimeter/CaloIdentifier/test/CaloCell_SuperCell_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..4549354c8a722f5697975abb753e156b8858f101 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/CaloCell_SuperCell_ID_test.cxx @@ -0,0 +1,48 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/CaloCell_SuperCell_ID_test.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Unit test for CaloCell_SuperCell_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/CaloCell_SuperCell_ID.h" + + +#include "calocell_id_test_common.cxx" + + +CaloCell_SuperCell_ID* make_calo_id () +{ + return make_calo_id_t<CaloCell_SuperCell_ID, + LArEM_SuperCell_ID, + LArHEC_SuperCell_ID, + LArFCAL_SuperCell_ID, + Tile_SuperCell_ID> (); +} + + +int main() +{ + CaloCell_SuperCell_ID* calo_id = make_calo_id(); + try { + test_cells (calo_id, true); + test_sample (calo_id, true); + test_subcalo (calo_id); + test_regions (calo_id); + test_exceptions (calo_id); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + catch(TileID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/CaloIDHelper_test.cxx b/Calorimeter/CaloIdentifier/test/CaloIDHelper_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..20844dd98f744126fb186e50b4cb8e3b7bb8698a --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/CaloIDHelper_test.cxx @@ -0,0 +1,239 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/** + * @file CaloIdentifier/test/CaloIDHelper_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for CaloIDHelper + */ + +#undef NDEBUG + + +#include "CaloIdentifier/CaloIDHelper.h" +#include "IdDictParser/IdDictParser.h" +#include "boost/foreach.hpp" +#include <cassert> +#include <iostream> + + +class CaloIDHelperTest + : public CaloIDHelper +{ +public: + CaloIDHelperTest (const std::string& name) : CaloIDHelper(name) {} + + virtual int get_expanded_id (const Identifier& id, + ExpandedIdentifier& exp_id, + const IdContext* /*context*/) const + { + exp_id.clear(); + int i = (id.get_identifier32().get_compact() - 100) / 10; + int barrel_ec = 1; + if (i >= 5) { + barrel_ec = -1; + i -= 5; + } + int sampling = i; + int region = 0; + if (sampling == 4) { + sampling = 1; + region = 1; + } + exp_id << lar_field_value() + << lar_em_field_value() + << barrel_ec + << sampling + << region; + return 0; + } + + using CaloIDHelper::dict; + using CaloIDHelper::fill_vec_of_dict_regions; + using CaloIDHelper::initialize_base_from_dictionary; + + Identifier to_id (const ExpandedIdentifier& exp_id) const + { + unsigned ndx = exp_id[0]-10; + return Identifier (ndx*10 + 100); + } + Identifier to_id2 (const ExpandedIdentifier& exp_id) const + { + unsigned ndx = exp_id[0]-10; + if (ndx == 9) ndx = 0; + return Identifier (ndx*10 + 100); + } + + int init_channels (const std::set<Identifier>& ids, + size_type end_index, + const MultiRange* full_range = 0) + { + return channels().init (name() + ".channels", + ids, end_index, m_msgSvc, full_range); + } + + int init_regions (const std::set<Identifier>& ids, + size_type end_index, + const MultiRange* full_range = 0) + { + return regions().init (name() + ".regions", + ids, end_index, m_msgSvc, full_range); + } +}; + + +void test_hashgroup() +{ + std::cout << "test_hashgroup\n"; + + std::set<Identifier> ids; + for (unsigned int i = 100; i < 200; i += 10) + ids.insert (Identifier (i)); + CaloIDHelper::HashGroup hg; + assert (hg.init ("hg", ids, 3, 0) == 0); + assert (hg.hash_max() == 10); + + std::vector<Identifier> vids (ids.begin(), ids.end()); + assert (hg.ids() == vids); + + unsigned int tot = 0; + BOOST_FOREACH (Identifier id, ids) + tot += id.get_compact(); + + unsigned int tot2 = 0; + BOOST_FOREACH (Identifier id, hg.range()) + tot2 += id.get_compact(); + assert (tot == tot2); + + tot2 = 0; + for (CaloIDHelper::id_iterator it = hg.begin(); it != hg.end(); ++it) + tot2 += it->get_compact(); + assert (tot == tot2); + + IdentifierHash hash = 0; + assert (hg.get_hash (vids[3], hash) == 0); + assert (hg.get_hash (Identifier(2000), hash) == 1); + assert (hg.hash (vids[4]) == 4); + assert (! hg.hash (Identifier(2000)).is_valid() ); + + assert (hg.id (3) == vids[3]); + + assert (hg.end_index() == 3); + + IdContext context = hg.context(); + assert (context.begin_index() == 0); + assert (context.end_index() == 3); + + Range r; + r.add (10, 19); + std::cout << r.cardinality() <<"\n"; + assert (r.cardinality() == 10); + MultiRange mr; + mr.add (r); + assert (mr.cardinality() == 10); + + CaloIDHelper::HashGroup hg2; + assert (hg2.init ("hg2", ids, 3, 0, &mr) == 0); + + CaloIDHelperTest helper ("helper"); + CaloIDHelper::HashGroup hg3; + assert (hg3.init (helper, "", mr, &CaloIDHelperTest::to_id, 3) == 0); + assert (hg3.ids() == vids); + + CaloIDHelper::HashGroup hg4; + assert (hg4.init (helper, "", mr, &CaloIDHelperTest::to_id2, 3) != 0); +} + + +void test_helper() +{ + std::cout << "test_helper\n"; + + CaloIDHelperTest helper ("helper"); + assert (helper.name() == "helper"); + assert (helper.msgSvc() == 0); + + + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + + assert (helper.initialize_base_from_dictionary(idd, "LArCalorimeterx") == 1); + assert (helper.initialize_base_from_dictionary(idd, "LArCalorimeter") == 0); + assert (helper.dict() != 0); + + std::set<Identifier> chan_ids; + for (unsigned int i = 1000; i < 1200; i += 10) + chan_ids.insert (Identifier (i)); + + std::set<Identifier> reg_ids; + for (unsigned int i = 100; i < 200; i += 10) + reg_ids.insert (Identifier (i)); + + helper.init_channels (chan_ids, 3); + helper.init_regions (reg_ids, 2); + + const CaloIDHelper& chelper = helper; + assert (chelper.channels().hash_max() == 20); + assert (chelper.regions().hash_max() == 10); + assert (helper.channel_hash_max() == 20); + assert (helper.region_hash_max() == 10); + + IdContext reg_context = helper.region_context(); + assert (reg_context.begin_index() == 0); + assert (reg_context.end_index() == 2); + IdContext chan_context = helper.channel_context(); + assert (chan_context.begin_index() == 0); + assert (chan_context.end_index() == 3); + + std::vector<Identifier> vchan_ids (chan_ids.begin(), chan_ids.end()); + std::vector<Identifier> vreg_ids (reg_ids.begin(), reg_ids.end()); + assert (helper.channel_id(13) == vchan_ids[13]); + assert (helper.region_id(4) == vreg_ids[4]); + assert (helper.channel_hash (vchan_ids[14]) == 14); + assert (helper.region_hash (vreg_ids[6]) == 6); + + Identifier id2; + assert (helper.get_id (15, id2, &chan_context) == 0); + assert (id2 == vchan_ids[15]); + assert (helper.get_id (7, id2, ®_context) == 0); + assert (id2 == vreg_ids[7]); + + assert (helper.get_id (99, id2, &chan_context) == 1); + assert (helper.get_id (99, id2, ®_context) == 1); + IdContext xcontext; + assert (helper.get_id (0, id2, &xcontext) == 1); + + IdentifierHash hashid; + assert (helper.get_hash (vchan_ids[5], hashid, &chan_context) == 0); + assert (hashid == 5); + assert (helper.get_hash (vreg_ids[7], hashid, ®_context) == 0); + assert (hashid == 7); + + assert (helper.get_hash (Identifier(9999), hashid, &chan_context) == 1); + assert (helper.get_hash (Identifier(9999), hashid, ®_context) == 1); + assert (helper.get_hash (vchan_ids[5], hashid, &xcontext) == 1); + + assert (helper.fill_vec_of_dict_regions ("lar_em") == 0); + + BOOST_FOREACH (Identifier id, chelper.regions().range()) { + IdentifierHash hashid = helper.region_hash (id); + std::cout << id.get_identifier32().get_compact() << " " + << helper.eta0(hashid) << " " + << helper.phi0(hashid) << " " + << helper.etaGranularity(hashid) << " " + << helper.phiGranularity(hashid) << "\n"; + assert (helper.dictRegions()[hashid]->m_eta0 == helper.eta0(hashid)); + } +} + + +int main() +{ + test_hashgroup(); + test_helper(); + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/CaloIdentifier.xml b/Calorimeter/CaloIdentifier/test/CaloIdentifier.xml new file mode 100644 index 0000000000000000000000000000000000000000..8c19cb70aa5678fecdca6e80ed50c83c553dee85 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/CaloIdentifier.xml @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<atn> + <TEST name="CaloIdentifierTests" type="makecheck"> + <package>Calorimeter/CaloIdentifier</package> + <author> scott snyder </author> + <mailto> snyder@bnl.gov </mailto> + <expectations> + <errorMessage>Athena exited abnormally</errorMessage> + <errorMessage>differ</errorMessage> + <warningMessage> # WARNING_MESSAGE : post.sh> ERROR</warningMessage> + <successMessage>check ok</successMessage> + <returnValue>0</returnValue> + </expectations> + </TEST> +</atn> diff --git a/Calorimeter/CaloIdentifier/test/LArEM_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArEM_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..cba07e52bd9980b2f70a1f2f4b7405ddbc673c0e --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArEM_ID_test.cxx @@ -0,0 +1,101 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArEM_ID_test.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Unit test for LArEM_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/LArEM_ID.h" +#include "IdDictParser/IdDictParser.h" +#include <iostream> + + +#include "larem_id_test_common.cxx" + + +LArEM_ID* make_helper (bool do_neighbours = false) +{ + LArEM_ID* idhelper = new LArEM_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const LArEM_Base_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (1, 1, 1, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 1, 1, 2, 10)); + basic_print_id (idhelper, idhelper.channel_id (3, 2, 0, 0, 20)); + + basic_print_id (idhelper, idhelper.channel_id (-1, 1, 1, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 1, 1, 2, 10)); + basic_print_id (idhelper, idhelper.channel_id (-3, 2, 0, 0, 20)); +} + + +// neighbors +void test4 (const LArEM_ID& em_id) +{ + std::cout << "test4\n"; + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < em_id.channel_hash_max(); ++iCell){ + em_id.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + assert (hash_min == 0); + assert (hash_max == em_id.channel_hash_max()-1); +} + + +int main() +{ + LArEM_ID* idhelper = make_helper(); + LArEM_ID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper); + test_disco (*idhelper); + test_exceptions (*idhelper); + test4 (*idhelper_n); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/LArEM_SuperCell_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArEM_SuperCell_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..2b8fdab56f8d8786fbb341144491f46291d0845d --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArEM_SuperCell_ID_test.cxx @@ -0,0 +1,103 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArEM_SuperCell_ID_test.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Unit test for LArEM_SuperCell_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/LArEM_SuperCell_ID.h" +#include "IdDictParser/IdDictParser.h" +#include <iostream> + + +#include "larem_id_test_common.cxx" + + +LArEM_SuperCell_ID* make_helper (bool do_neighbours = false) +{ + LArEM_SuperCell_ID* idhelper = new LArEM_SuperCell_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const LArEM_Base_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (1, 1, 1, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 2, 1, 0, 10)); + basic_print_id (idhelper, idhelper.channel_id (3, 2, 0, 0, 20)); + + basic_print_id (idhelper, idhelper.channel_id (-1, 1, 1, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 2, 1, 0, 10)); + basic_print_id (idhelper, idhelper.channel_id (-3, 2, 0, 0, 20)); +} + + +// neighbors +void test4 (const LArEM_SuperCell_ID& /*em_id*/) +{ + std::cout << "test4\n"; + +#if 0 + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < em_id.channel_hash_max(); ++iCell){ + em_id.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + assert (hash_min == 0); + assert (hash_max == em_id.channel_hash_max()-1); +#endif +} + + +int main() +{ + LArEM_SuperCell_ID* idhelper = make_helper(); + LArEM_SuperCell_ID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper, true); + test_disco (*idhelper); + test_exceptions (*idhelper, true); + test4 (*idhelper_n); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/LArFCAL_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArFCAL_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d013f100d76d909f15834005832ae2e0accdae29 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArFCAL_ID_test.cxx @@ -0,0 +1,107 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArFCAL_ID_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for LArFCAL_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/LArFCAL_ID.h" +#include "IdDictParser/IdDictParser.h" +#include "boost/foreach.hpp" +#include <iostream> +#include <string> +#include <vector> + + +#include "larfcal_id_test_common.cxx" + + +LArFCAL_ID* make_helper (bool do_neighbours = false) +{ + LArFCAL_ID* idhelper = new LArFCAL_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idd.add_metadata("FCAL2DNEIGHBORS", "FCal2DNeighbors-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSNEXT", "FCal3DNeighborsNext-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSPREV", "FCal3DNeighborsPrev-DC3-05-Comm-01.txt"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +// neighbors +void test4 (const LArFCAL_ID& fcal_id) +{ + std::cout << "test4\n"; + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < fcal_id.channel_hash_max(); ++iCell){ + fcal_id.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + assert (hash_min == 0); + assert (hash_max == fcal_id.channel_hash_max()-1); +} + + +void test_basic (const LArFCAL_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (2, 1, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 2, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 3, 1, 1)); + + basic_print_id (idhelper, idhelper.channel_id (-2, 1, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 2, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 3, 1, 1)); +} + + +int main() +{ + LArFCAL_ID* idhelper = make_helper(); + LArFCAL_ID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper, false); + test_disco (*idhelper); + test_exceptions (*idhelper); + test4 (*idhelper_n); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/LArFCAL_SuperCell_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArFCAL_SuperCell_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..04e371da037057fae88bef303737c78c855e0c69 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArFCAL_SuperCell_ID_test.cxx @@ -0,0 +1,71 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArFCAL_SuperCell_ID_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for LArFCAL_SuperCell_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/LArFCAL_SuperCell_ID.h" +#include "IdDictParser/IdDictParser.h" +#include "boost/foreach.hpp" +#include <iostream> +#include <string> +#include <vector> + + +#include "larfcal_id_test_common.cxx" + + +LArFCAL_SuperCell_ID* make_helper () +{ + LArFCAL_SuperCell_ID* idhelper = new LArFCAL_SuperCell_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idhelper->set_do_neighbours (false); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const LArFCAL_SuperCell_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (2, 1, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 2, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 3, 1, 1)); + + basic_print_id (idhelper, idhelper.channel_id (-2, 1, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 2, 1, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 3, 1, 1)); +} + + +int main() +{ + LArFCAL_SuperCell_ID* idhelper = make_helper(); + try { + test_basic (*idhelper); + test_connected (*idhelper, true); + test_disco (*idhelper); + test_exceptions (*idhelper); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/LArHEC_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArHEC_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d4b76923b03ea4c6520d23044b759dfbfa9c238b --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArHEC_ID_test.cxx @@ -0,0 +1,102 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArHEC_ID_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for LArHEC_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/LArHEC_ID.h" +#include "IdDictParser/IdDictParser.h" +#include "boost/foreach.hpp" +#include <iostream> + + +#include "larhec_id_test_common.cxx" + + +LArHEC_ID* make_helper (bool do_neighbours = false) +{ + LArHEC_ID* idhelper = new LArHEC_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const LArHEC_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (2, 1, 0, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 2, 0, 2, 10)); + basic_print_id (idhelper, idhelper.channel_id (2, 3, 1, 0, 20)); + + basic_print_id (idhelper, idhelper.channel_id (-2, 1, 0, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 2, 0, 2, 10)); + basic_print_id (idhelper, idhelper.channel_id (-2, 3, 1, 0, 20)); +} + + +void test_neighbors (const LArHEC_ID& idhelper) +{ + std::cout << "test_neighbors\n"; + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < idhelper.channel_hash_max(); ++iCell){ + idhelper.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + assert (hash_min == 0); + assert (hash_max == idhelper.channel_hash_max()-1); +} + + +int main() +{ + LArHEC_ID* idhelper = make_helper(); + LArHEC_ID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper, false); + test_disco (*idhelper); + test_exceptions (*idhelper); + test_neighbors (*idhelper_n); + test_hec (*idhelper); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/LArHEC_SuperCell_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArHEC_SuperCell_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..8a04f39001c513131549cbc0f15f9b0655b2b4c6 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArHEC_SuperCell_ID_test.cxx @@ -0,0 +1,100 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArHEC_ID_SuperCell_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for LArHEC_SuperCell_ID. + */ + + +#undef NDEBUG + +#include "CaloIdentifier/LArHEC_SuperCell_ID.h" +#include "IdDictParser/IdDictParser.h" +#include <iostream> + + +#include "larhec_id_test_common.cxx" + + +LArHEC_SuperCell_ID* make_helper(bool do_neighbours = false) +{ + LArHEC_SuperCell_ID* idhelper = new LArHEC_SuperCell_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const LArHEC_Base_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (2, 0, 0, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (2, 0, 1, 3, 2)); + + basic_print_id (idhelper, idhelper.channel_id (-2, 0, 0, 0, 1)); + basic_print_id (idhelper, idhelper.channel_id (-2, 0, 1, 3, 2)); +} + + +void test_neighbors (const LArHEC_SuperCell_ID& idhelper) +{ + std::cout << "test_neighbors\n"; + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < idhelper.channel_hash_max(); ++iCell){ + idhelper.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + assert (hash_min == 0); + assert (hash_max == idhelper.channel_hash_max()-1); +} + + +int main() +{ + LArHEC_SuperCell_ID* idhelper = make_helper(); + LArHEC_SuperCell_ID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper, true); + test_disco (*idhelper); + test_exceptions (*idhelper); + test_neighbors (*idhelper_n); + test_hec (*idhelper); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/LArMiniFCAL_ID_test.cxx b/Calorimeter/CaloIdentifier/test/LArMiniFCAL_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e9259f5ee2ed86c4a08d0b4f63af947340b19d51 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/LArMiniFCAL_ID_test.cxx @@ -0,0 +1,341 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/LArMiniFCAL_ID_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for LArMiniFCAL_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/LArMiniFCAL_ID.h" +#include "IdDictParser/IdDictParser.h" +#include <iostream> + + +#include "hash_test.h" + + +class LArMiniFCAL_ID_Test + : public LArMiniFCAL_ID +{ +public: + using LArMiniFCAL_ID::lar_field_value; + using LArMiniFCAL_ID::lar_fcal_field_value; +}; + + +LArMiniFCAL_ID* make_helper (bool do_neighbours = false) +{ + LArMiniFCAL_ID* idhelper = new LArMiniFCAL_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_sLHC-MiniFcal-00.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idd.add_metadata("FCAL2DNEIGHBORS", "FCal2DNeighbors-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSNEXT", "FCal3DNeighborsNext-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSPREV", "FCal3DNeighborsPrev-DC3-05-Comm-01.txt"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +// This because test differencing ignored lines containing `0x...' +std::string munghex (const std::string& h) +{ + if (h.size() > 2 && h[0] == '0' && h[1] == 'x') + return "hex(" + h.substr (2, std::string::npos) + ")"; + return h; +} +void basic_print_id (const LArMiniFCAL_ID& idhelper, const Identifier& id) +{ + std::cout << idhelper.show_to_string (id) << " " + << munghex(id.getString()) << "\n"; +} + + +void test_basic (const LArMiniFCAL_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.channel_id (2, 0, 0, 0, 0)); + basic_print_id (idhelper, idhelper.channel_id (2, 0, 1, 0, 0)); + basic_print_id (idhelper, idhelper.channel_id (2, 0, 2, 0, 0)); + + basic_print_id (idhelper, idhelper.channel_id (-2, 0, 0, 0, 0)); + basic_print_id (idhelper, idhelper.channel_id (-2, 0, 1, 0, 0)); + basic_print_id (idhelper, idhelper.channel_id (-2, 0, 2, 0, 0)); +} + + +class CellCounter +{ +public: + CellCounter(); + void count(int samp); + void report(); + + +private: + enum { + N_SAMP = 4 + }; + unsigned m_counts[N_SAMP]; +}; + + +CellCounter::CellCounter() +{ + for (unsigned j=0; j < N_SAMP; j++) + m_counts[j] = 0; +} + + +void CellCounter::count (int samp) +{ + if (samp < 0 || samp >= N_SAMP) std::abort(); + ++m_counts[samp]; +} + + +void CellCounter::report() +{ + unsigned tot = 0; + printf ("Sampling\n"); + for (unsigned s=0; s < N_SAMP; s++) { + printf ("%1d %6d\n", s, m_counts[s]); + tot += m_counts[s]; + } + printf ("Total %6d\n", tot); +} + + +void test_connected (const LArMiniFCAL_ID& idhelper) +{ + std::cout << "test_connected\n"; + + HASH_TEST1(channel,minifcal,HASH_TEST_EXTRA(channel)); + HASH_TEST1(module,mod,HASH_TEST_EXTRA(module)); + + CellCounter counts; + TEST_LOOP(Identifier id, idhelper.minifcal_range()) { + IdentifierHash hashId = idhelper.channel_hash (id); + assert (idhelper.is_connected(id)); + assert (idhelper.is_connected(hashId)); + assert (hashId == idhelper.channel_hash_binary_search (id)); + + assert (idhelper.is_supercell(id) == false); + + int side = idhelper.pos_neg (id); + int mod = idhelper.module (id); + int depth = idhelper.depth (id); + int eta = idhelper.eta (id); + int phi = idhelper.phi (id); + + assert (id == idhelper.channel_id (side, mod, depth, eta, phi)); + assert (idhelper.is_connected (side, mod, depth, eta, phi)); + assert (!idhelper.is_disconnected (side, mod, depth, eta, phi)); + + Identifier mod_id = idhelper.module_id (side, mod); + assert (id == idhelper.channel_id (mod_id, depth, eta, phi)); + + assert (mod_id == idhelper.module_id (id)); + + counts.count (depth); + + ExpandedIdentifier exp_id; + LArMiniFCAL_ID_Test* idhelper_test = (LArMiniFCAL_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_fcal_field_value() + << idhelper.pos_neg(id) + << idhelper.module(id) + << idhelper.depth(id) + << idhelper.eta(id) + << idhelper.phi(id); + assert (idhelper.channel_id (exp_id) == id); + } + counts.report(); + + TEST_LOOP(Identifier id, idhelper.mod_range()) { + IdentifierHash hashId = idhelper.module_hash(id); + printf ("Region %-18s eta: %8.6f %8.6f %1d %3d phi: %3.1f %8.6f %1d %3d\n", + idhelper.show_to_string(id).c_str(), + idhelper.eta0(hashId), + idhelper.etaGranularity(hashId), + idhelper.eta_min(id), + idhelper.eta_max(id), + idhelper.phi0(hashId), + idhelper.phiGranularity(hashId), + idhelper.phi_min(id), + idhelper.phi_max(id)); + + int side = idhelper.pos_neg (id); + int mod = idhelper.module (id); + assert (id == idhelper.module_id (side, mod)); + + ExpandedIdentifier exp_id; + LArMiniFCAL_ID_Test* idhelper_test = (LArMiniFCAL_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_fcal_field_value() + << idhelper.pos_neg(id) + << idhelper.module(id) + << idhelper.depth(id); + assert (idhelper.module_id (exp_id) == id); + } +} + + +void test_disco (const LArMiniFCAL_ID& idhelper) +{ + std::cout << "test_disco\n"; + + // No disconnected channels. + + assert (idhelper.disc_channel_hash_min() == idhelper.channel_hash_max()); + assert (idhelper.disc_channel_hash_min() == idhelper.disc_channel_hash_max()); + + assert (idhelper.disc_minifcal_begin() == idhelper.disc_minifcal_end()); + int n = 0; + TEST_LOOP(Identifier id, idhelper.disc_minifcal_range()) { + ++n; + IdentifierHash hashId = idhelper.disc_channel_hash(id); + assert (id == idhelper.disc_channel_id(hashId)); + + assert (idhelper.is_supercell(id) == false); + + int side = idhelper.pos_neg (id); + int mod = idhelper.module (id); + int depth = idhelper.depth (id); + + assert (idhelper.eta(id) == -999); + assert (idhelper.phi(id) == -999); + int eta = idhelper.disc_eta(id); + int phi = idhelper.disc_phi(id); + + assert (id == idhelper.disc_channel_id (side, mod, depth, eta, phi)); + + assert (!idhelper.is_connected(id)); + assert (!idhelper.is_connected(hashId)); + assert (!idhelper.is_connected (side, mod, depth, eta, phi)); + assert (idhelper.is_disconnected (side, mod, depth, eta, phi)); + + assert (idhelper.module_id(id) == idhelper.disc_module_id (side, mod)); + + ExpandedIdentifier exp_id; + LArMiniFCAL_ID_Test* idhelper_test = (LArMiniFCAL_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_fcal_field_value() + << idhelper.pos_neg(id) + << idhelper.module(id) + << idhelper.depth(id) + << idhelper.eta(id) + << idhelper.phi(id); + assert (idhelper.disc_channel_id (exp_id) == id); + } + assert (n == 0); + + BOOST_FOREACH (Identifier id, idhelper.disc_mod_range()) { + ExpandedIdentifier exp_id; + LArMiniFCAL_ID_Test* idhelper_test = (LArMiniFCAL_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_fcal_field_value() + << idhelper.pos_neg(id) + << idhelper.module(id) + << idhelper.depth(id); + assert (idhelper.disc_module_id (exp_id) == id); + ++n; + } + + for (LArMiniFCAL_ID::id_iterator it = idhelper.disc_mod_begin(); + it != idhelper.disc_mod_end(); + ++it) + { + --n; + } + assert (n == 0); +} + + +void test_exceptions (const LArMiniFCAL_ID& idhelper) +{ + std::cout << "test_exceptions\n"; + + bool caught = false; + try { + /*Identifier wrongRegionId =*/ idhelper.module_id (99,0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 1: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + /*Identifier wrongChannelId =*/ idhelper.channel_id (2,0,0,0,999); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 2: " << (std::string)except << "\n"; + } + assert (caught); +} + + +void test_neighbors (const LArMiniFCAL_ID& idhelper) +{ + std::cout << "test_neighbors\n"; + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < idhelper.channel_hash_max(); ++iCell){ + idhelper.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + // Not working for now. + //assert (hash_min == 0); + //assert (hash_max == idhelper.channel_hash_max()-1); +} + + +int main() +{ + LArMiniFCAL_ID* idhelper = make_helper(); + LArMiniFCAL_ID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper); + test_disco (*idhelper); + test_exceptions (*idhelper); + test_neighbors (*idhelper_n); + } + catch(LArID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/TileID_test.cxx b/Calorimeter/CaloIdentifier/test/TileID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..fd82678a44d8c9111618af1eae3877fc2cba5719 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/TileID_test.cxx @@ -0,0 +1,111 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/TileID_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for TileID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/TileID.h" +#include "IdDictParser/IdDictParser.h" +#include "Identifier/IdentifierHash.h" +#include <iostream> + + +#include "tile_id_test_common.cxx" + + +TileID* make_helper (bool do_neighbours = false) +{ + TileID* idhelper = new TileID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("TileCalorimeter", + "IdDictTileCalorimeter.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idd.add_metadata("TILENEIGHBORS", "TileNeighbour_reduced.txt"); + idhelper->set_do_neighbours (do_neighbours); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const TileID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.cell_id (1, 1, 0, 0, 1)); + basic_print_id (idhelper, idhelper.cell_id (2, 1, 1, 10, 2)); + basic_print_id (idhelper, idhelper.cell_id (3, 1, 2, 11, 3)); + + basic_print_id (idhelper, idhelper.cell_id (1, -1, 0, 0, 1)); + basic_print_id (idhelper, idhelper.cell_id (2, -1, 1, 10, 2)); + basic_print_id (idhelper, idhelper.cell_id (3, -1, 2, 11, 3)); + + assert (idhelper.is_tile (idhelper.tile_system())); + + assert (idhelper.section (idhelper.tile_barrel()) == TileID::BARREL); + assert (idhelper.section (idhelper.tile_extbarrel()) == TileID::EXTBAR); + assert (idhelper.section (idhelper.tile_gap()) == TileID::GAPDET); + + assert (idhelper.section (idhelper.tile_det(3)) == 3); + assert (idhelper.section (idhelper.tile_det(4)) == 4); +} + + +void test_neighbors (const TileID& idhelper) +{ + std::cout << "test_neighbors\n"; + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < idhelper.cell_hash_max(); ++iCell){ + idhelper.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + assert (hash_min == 0); + assert (hash_max == idhelper.cell_hash_max()-1); +} + + +int main() +{ + TileID* idhelper = make_helper(); + TileID* idhelper_n = make_helper(true); + try { + test_basic (*idhelper); + test_connected (*idhelper, false); + test_exceptions (*idhelper); + test_neighbors (*idhelper_n); + test_to_string (*idhelper, false); + } + catch(TileID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/Tile_SuperCell_ID_test.cxx b/Calorimeter/CaloIdentifier/test/Tile_SuperCell_ID_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7c0645ba0a466ab4605e54cbb65d18bd678960b6 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/Tile_SuperCell_ID_test.cxx @@ -0,0 +1,75 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/Tile_SuperCell_ID_test.cxx + * @author scott snyder + * @date May 2013 + * @brief Unit test for Tile_SuperCell_ID. + */ + +#undef NDEBUG + +#include "CaloIdentifier/Tile_SuperCell_ID.h" +#include "IdDictParser/IdDictParser.h" +#include "Identifier/IdentifierHash.h" +#include <iostream> + + +#include "tile_id_test_common.cxx" + + +Tile_SuperCell_ID* make_helper() +{ + Tile_SuperCell_ID* idhelper = new Tile_SuperCell_ID; + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("TileCalorimeter", + "IdDictTileCalorimeter.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + idhelper->set_do_neighbours (false); + assert (idhelper->initialize_from_dictionary (idd) == 0); + + assert (!idhelper->do_checks()); + idhelper->set_do_checks (true); + assert (idhelper->do_checks()); + + return idhelper; +} + + +void test_basic (const Tile_SuperCell_ID& idhelper) +{ + std::cout << "test_basic\n"; + + basic_print_id (idhelper, idhelper.cell_id (1, 1, 0, 0, 0)); + basic_print_id (idhelper, idhelper.cell_id (2, 1, 1, 10, 2)); + + basic_print_id (idhelper, idhelper.cell_id (1, -1, 0, 0, 0)); + basic_print_id (idhelper, idhelper.cell_id (2, -1, 1, 10, 2)); + + assert (idhelper.is_tile (idhelper.tile_system())); + + assert (idhelper.section (idhelper.tile_barrel()) == Tile_SuperCell_ID::BARREL); + assert (idhelper.section (idhelper.tile_extbarrel()) == Tile_SuperCell_ID::EXTBAR); + + assert (idhelper.section (idhelper.tile_det(2)) == 2); + assert (idhelper.is_supercell (idhelper.tile_det(2))); +} + + +int main() +{ + Tile_SuperCell_ID* idhelper = make_helper(); + try { + test_basic (*idhelper); + test_connected (*idhelper, true); + test_exceptions (*idhelper); + test_to_string (*idhelper, true); + } + catch(TileID_Exception & except){ + std::cout << "Unexpected exception: " << (std::string) except << std::endl ; + } + return 0; +} diff --git a/Calorimeter/CaloIdentifier/test/calocell_id_test_common.cxx b/Calorimeter/CaloIdentifier/test/calocell_id_test_common.cxx new file mode 100644 index 0000000000000000000000000000000000000000..43d5a93783de66912eff7f29050dd9e31b901318 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/calocell_id_test_common.cxx @@ -0,0 +1,734 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/calocell_id_test_common.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Code common between CaloCell_ID_test and CaloCell_SuperCell_ID test. + * This file is meant to be included in another file, + * not compiled separately. + */ + + +#include "IdDictParser/IdDictParser.h" +#include "boost/foreach.hpp" +#include <map> +#include <string> + + +class CellCounter +{ +public: + CellCounter(); + void count(int bec, int samp); + void report() const; + + +private: + enum { + N_BEC = 3, + N_SAMP = 4 + }; + unsigned m_counts[N_BEC][N_SAMP]; +}; + + +CellCounter::CellCounter() +{ + for (unsigned i=0; i < N_BEC; i++) + for (unsigned j=0; j < N_SAMP; j++) + m_counts[i][j] = 0; +} + + +void CellCounter::count (int bec, int samp) +{ + bec = std::abs(bec) - 1; + if (bec < 0 || bec >= N_BEC) std::abort(); + if (samp < 0 || samp >= N_SAMP) std::abort(); + ++m_counts[bec][samp]; +} + + +void CellCounter::report() const +{ + unsigned tot[N_BEC] = {0}; + printf ("Sampling Barrel Outer wheel Inner wheel\n"); + for (unsigned s=0; s < N_SAMP; s++) { + printf ("%1d %6d %6d %6d\n", + s, m_counts[0][s], m_counts[1][s], m_counts[2][s]); + for (unsigned b=0; b < N_BEC; b++) + tot[b] += m_counts[b][s]; + } + printf ("Total %6d %6d %6d Grand total: %6d\n", + tot[0], tot[1], tot[2], + tot[0]+tot[1]+tot[2]); +} + + +class TileCounter +{ +public: + TileCounter(); + void count(int section, int side); + void report() const; + + +private: + enum { + N_SECTION = 4, + N_SIDE = 2 + }; + unsigned m_counts[N_SECTION][N_SIDE]; +}; + + +TileCounter::TileCounter() +{ + for (unsigned i=0; i < N_SECTION; i++) + for (unsigned j=0; j < N_SIDE; j++) + m_counts[i][j] = 0; +} + + +void TileCounter::count (int section, int side) +{ + section -= 1; + side = (side+1) / 2; + if (section < 0 || section >= N_SECTION) std::abort(); + if (side < 0 || side >= N_SIDE) std::abort(); + ++m_counts[section][side]; +} + + +void TileCounter::report() const +{ + unsigned tot[N_SECTION] = {0}; + printf ("Side Barrel Extended Barrel Gap Ancillary\n"); + for (unsigned s=0; s < N_SIDE; s++) { + printf ("%1d %6d %6d %6d %6d \n", + s, m_counts[0][s], m_counts[1][s], m_counts[2][s], m_counts[3][s]); + for (unsigned b=0; b < N_SECTION; b++) + tot[b] += m_counts[b][s]; + } + printf ("Total %6d %6d %6d %6d Grand total: %6d\n", + tot[0], tot[1], tot[2], tot[3], + tot[0]+tot[1]+tot[2]+tot[3]); +} + + +class CellCounters +{ +public: + void count(const char* type, int bec, int samp); + void report() const; + +private: + std::map<std::string, CellCounter> m_counters; + TileCounter m_tilecounter; +}; + + +void CellCounters::count (const char* type, int bec, int samp) +{ + if (std::string(type) == "TILE") + m_tilecounter.count (bec, samp); + else + m_counters[type].count (bec, samp); +} + + +void CellCounters::report() const +{ + for (std::map<std::string, CellCounter>::const_iterator i= m_counters.begin(); + i != m_counters.end(); + ++i) + { + std::cout << "======\n"; + std::cout << i->first << "\n"; + i->second.report(); + std::cout << "\n"; + } + std::cout << "======\n"; + std::cout << "Tile\n"; + m_tilecounter.report(); + std::cout << "\n"; + +} + + +template <class T> +T* make_helper (IdDictMgr& idd, bool do_neighbours) +{ + T* h = new T; + h->set_do_neighbours (do_neighbours); + assert (h->initialize_from_dictionary (idd) == 0); + return h; +} + + +template <class CALOCELL_ID_T, + class LAREM_ID_T, + class LARHEC_ID_T, + class LARFCAL_ID_T, + class TILE_ID_T> +CALOCELL_ID_T* make_calo_id_t (bool do_neighbours = false) +{ + IdDictParser* parser = new IdDictParser; + parser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_DC3-05-Comm-01.xml"); + IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml"); + + // Set some default file names for neighbours (RDS 12/2009): + idd.add_metadata("FULLATLASNEIGHBORS", "SuperCaloNeighbours-DC3-05-Comm-01.dat"); + idd.add_metadata("FCAL2DNEIGHBORS", "FCal2DNeighbors-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSNEXT", "FCal3DNeighborsNext-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSPREV", "FCal3DNeighborsPrev-DC3-05-Comm-01.txt"); + idd.add_metadata("TILENEIGHBORS", "TileNeighbour_reduced.txt"); + + LAREM_ID_T* em_id = make_helper<LAREM_ID_T> (idd, do_neighbours); + LARHEC_ID_T* hec_id = make_helper<LARHEC_ID_T> (idd, do_neighbours); + LARFCAL_ID_T* fcal_id = make_helper<LARFCAL_ID_T> (idd, do_neighbours); + +#if 0 + IdDictParser* miniparser = new IdDictParser; + miniparser->register_external_entity ("LArCalorimeter", + "IdDictLArCalorimeter_sLHC-MiniFcal-00.xml"); + IdDictMgr& mini_idd = miniparser->parse ("IdDictParser/ATLAS_IDS.xml"); + mini_idd.add_metadata("FCAL2DNEIGHBORS", "FCal2DNeighbors-DC3-05-Comm-01.txt"); + mini_idd.add_metadata("FCAL3DNEIGHBORSNEXT", "FCal3DNeighborsNext-DC3-05-Comm-01.txt"); + mini_idd.add_metadata("FCAL3DNEIGHBORSPREV", "FCal3DNeighborsPrev-DC3-05-Comm-01.txt"); +#endif + // Adding in MiniFCAL doesn't really work, because MiniFCAL and FCAL + // overlap ID assignments! + LArMiniFCAL_ID* minifcal_id = make_helper<LArMiniFCAL_ID> (/*mini_*/idd,do_neighbours); + + TILE_ID_T* tile_id = make_helper<TILE_ID_T> (idd, do_neighbours); + + CALOCELL_ID_T* calo_id = new CALOCELL_ID_T (em_id, + hec_id, + fcal_id, + minifcal_id, + tile_id); + assert (calo_id->initialize_from_dictionary (idd) == 0); + + assert (!calo_id->do_checks()); + calo_id->set_do_checks (true); + assert (calo_id->do_checks()); + + assert (calo_id->em_idHelper() == em_id); + assert (calo_id->hec_idHelper() == hec_id); + assert (calo_id->fcal_idHelper() == fcal_id); + assert (calo_id->minifcal_idHelper() == minifcal_id); + assert (calo_id->tile_idHelper() == tile_id); + + return calo_id; +} + + +void region_test (const CaloCell_Base_ID& calo_id, const Identifier& ch_id) +{ + IdentifierHash hashId = calo_id.calo_cell_hash ( ch_id ); + + assert (calo_id.sub_calo(ch_id) == calo_id.sub_calo(hashId)); + assert (calo_id.calo_sample(ch_id) == calo_id.calo_sample(hashId)); + assert (calo_id.is_em(ch_id) == calo_id.is_em(hashId)); + assert (calo_id.is_hec(ch_id) == calo_id.is_hec(hashId)); + assert (calo_id.is_fcal(ch_id) == calo_id.is_fcal(hashId)); + assert (calo_id.is_minifcal(ch_id) == calo_id.is_minifcal(hashId)); + assert (calo_id.is_tile(ch_id) == calo_id.is_tile(hashId)); + + if (calo_id.is_em (ch_id)) { + assert (calo_id.sub_calo (hashId) == CaloCell_Base_ID::LAREM); + int bec = calo_id.pos_neg(ch_id); + switch (bec) { + case 1: + case -1: + assert (calo_id.is_em_barrel (ch_id)); + assert (!calo_id.is_em_endcap (ch_id)); + assert (!calo_id.is_em_endcap_inner (ch_id)); + assert (!calo_id.is_em_endcap_outer (ch_id)); + break; + case 2: + case -2: + assert (!calo_id.is_em_barrel (ch_id)); + assert (calo_id.is_em_endcap (ch_id)); + assert (!calo_id.is_em_endcap_inner (ch_id)); + assert (calo_id.is_em_endcap_outer (ch_id)); + break; + case 3: + case -3: + assert (!calo_id.is_em_barrel (ch_id)); + assert (calo_id.is_em_endcap (ch_id)); + assert (calo_id.is_em_endcap_inner (ch_id)); + assert (!calo_id.is_em_endcap_outer (ch_id)); + break; + default: + abort(); + } + } + + else if (calo_id.is_hec (ch_id)) { + assert (calo_id.sub_calo (hashId) == CaloCell_Base_ID::LARHEC); + } + + else if (calo_id.is_fcal (ch_id)) { + assert (calo_id.sub_calo (hashId) == CaloCell_Base_ID::LARFCAL); + } + + else if (calo_id.is_minifcal (ch_id)) { + assert (calo_id.sub_calo (hashId) == CaloCell_Base_ID::LARMINIFCAL); + } + + else if (calo_id.is_tile (ch_id)) { + assert (calo_id.sub_calo (hashId) == CaloCell_Base_ID::TILE); + switch (calo_id.section (ch_id)) { + case 1: + assert (calo_id.is_tile_barrel (ch_id)); + assert (!calo_id.is_tile_extbarrel (ch_id)); + assert (!calo_id.is_tile_gap (ch_id)); + break; + + case 2: + assert (!calo_id.is_tile_barrel (ch_id)); + assert (calo_id.is_tile_extbarrel (ch_id)); + assert (!calo_id.is_tile_gap (ch_id)); + break; + + case 3: + assert (!calo_id.is_tile_barrel (ch_id)); + assert (!calo_id.is_tile_extbarrel (ch_id)); + assert (calo_id.is_tile_gap (ch_id)); + break; + + case 4: + assert (!calo_id.is_tile_barrel (ch_id)); + assert (!calo_id.is_tile_extbarrel (ch_id)); + assert (!calo_id.is_tile_gap (ch_id)); + break; + + + default: + std::abort(); + } + + switch (calo_id.side (ch_id)) { + case 1: + assert (calo_id.is_tile_positive (ch_id)); + assert (!calo_id.is_tile_negative (ch_id)); + break; + + case -1: + assert (!calo_id.is_tile_positive (ch_id)); + assert (calo_id.is_tile_negative (ch_id)); + break; + + default: + std::abort(); + } + + assert (calo_id.is_tile_gapscin(ch_id) == + (calo_id.sample (ch_id) == TileID::SAMP_E)); + } + + else + std::abort(); +} + + +void test_cells (const CaloCell_Base_ID* calo_id, bool supercell = false) +{ + std::cout << "test_cells\n"; + + std::vector<Identifier>::const_iterator itId = calo_id->cell_begin(); + std::vector<Identifier>::const_iterator itIdEnd = calo_id->cell_end(); + CellCounters counts; + assert ((itIdEnd - itId) == (int)calo_id->calo_cell_hash_max()); + + std::vector<int> hash_counts (calo_id->calo_cell_hash_max()); + + if (itId != itIdEnd) + std::cout << calo_id->show_to_string (*itId) << "\n"; + + int hashsum = 0; + for(; itId!=itIdEnd; ++itId) { + Identifier chId = *itId; + region_test (*calo_id, chId); + + int subcalo0 = -1; + + if (calo_id->is_em (chId)) { + counts.count ("EM", calo_id->pos_neg(chId), calo_id->sampling(chId)); + subcalo0 = CaloCell_Base_ID::LAREM; + assert (calo_id->is_supercell (chId) == supercell); + } + + else if (calo_id->is_hec (chId)) { + counts.count ("HEC", calo_id->pos_neg(chId), calo_id->sampling(chId)); + subcalo0 = CaloCell_Base_ID::LARHEC; + assert (calo_id->is_supercell (chId) == supercell); + } + + else if (calo_id->is_fcal (chId)) { + counts.count ("FCAL", calo_id->pos_neg(chId), calo_id->sampling(chId)); + subcalo0 = CaloCell_Base_ID::LARFCAL; + assert (calo_id->is_supercell (chId) == supercell); + } + + else if (calo_id->is_minifcal (chId)) { + counts.count ("MINIFCAL", calo_id->pos_neg(chId), calo_id->sampling(chId)); + subcalo0 = CaloCell_Base_ID::LARMINIFCAL; + assert (calo_id->is_supercell (chId) == 0); + } + + else if (calo_id->is_tile (chId)) { + counts.count ("TILE", calo_id->section(chId), calo_id->side(chId)); + subcalo0 = CaloCell_Base_ID::TILE; + assert (calo_id->is_supercell (chId) == supercell); + } + + else + std::abort(); + + IdentifierHash hashId = calo_id->calo_cell_hash ( chId ); + int subcalo1 = calo_id->sub_calo(hashId); + hashsum += hashId; + + assert (hashId < hash_counts.size()); + assert (hash_counts[hashId] == 0); + hash_counts[hashId] = 1; + + assert (subcalo1 == subcalo0); + + IdentifierHash min=0, max=0; + calo_id->calo_cell_hash_range(chId, min, max); + + IdentifierHash min2=0, max2=0; + calo_id->calo_cell_hash_range(subcalo1, min2, max2); + + assert (min == min2); + assert (max == max2); + + if (subcalo0 != -1) { + int subcalo2=-1; + IdentifierHash emHash = calo_id->subcalo_cell_hash(hashId, subcalo2) ; + assert (subcalo2 == subcalo1); + IdentifierHash caloCellHash = calo_id->calo_cell_hash(subcalo0, emHash) ; + assert (hashId == caloCellHash); + } + + Identifier chanId1 = calo_id->cell_id ( hashId ); + assert (chanId1 == chId); + + int subcalo3 = calo_id->sub_calo(chId); + assert (subcalo3 == subcalo1); + + int bec = 888888; + int samp = 888888; + int reg = 888888; + int eta = 888888; + int phi = 888888; + if(calo_id->is_lar(chId)) { + bec = calo_id->pos_neg(chId); + samp = calo_id->sampling(chId); + reg = calo_id->region(chId); + eta = calo_id->eta(chId); + phi = calo_id->phi(chId); + } + else if(calo_id->is_tile(chId)) { + bec = calo_id->section(chId); + samp = calo_id->side(chId); + reg = calo_id->module(chId); + eta = calo_id->tower(chId); + phi = calo_id->sample(chId); + } + else + std::abort(); + + Identifier chanId3 = calo_id->cell_id (subcalo3, bec, samp, reg, eta, phi); + assert (chanId3 == chId); + + Identifier regId = calo_id->region_id (chId); + if(!calo_id->is_tile(chId)) { + Identifier chanId2 = calo_id->cell_id (regId, eta, phi); + assert (chanId2 == chId); + } + + int subcalo4=-1; + IdentifierHash subHashId = calo_id->subcalo_cell_hash (chId, subcalo4) ; + assert (subcalo4 == subcalo1); + + Identifier chanId4 = calo_id->cell_id ( subcalo3, subHashId ); + assert (chanId4 == chId); + } + +#if __cplusplus > 201100 + for (Identifier ch_id : calo_id->cell_range()) { +#else + BOOST_FOREACH (Identifier ch_id, calo_id->cell_range()) { +#endif + hashsum -= calo_id->calo_cell_hash (ch_id); + } + assert (hashsum == 0); + + for (int i = 0; i < CaloCell_Base_ID::NSUBCALO; i++) { + IdentifierHash min=0, max=0; + calo_id->calo_cell_hash_range (i, min, max); + for (; min < max; min=min+1) { + assert (min < hash_counts.size()); + assert (hash_counts[min] == 1); + ++hash_counts[min]; + } + } + + for (size_t i = 0; i < hash_counts.size(); i++) + assert (hash_counts[i] == 2); + + counts.report(); +} + + +void test_sample (const CaloCell_Base_ID* calo_id, bool supercell) +{ + std::cout << "test_sample\n"; + + Identifier id = calo_id->cell_id (CaloCell_Base_ID::LAREM, + 1, 1, 0, 1, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::EMB1); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::EMB1); + + id = calo_id->cell_id (CaloCell_Base_ID::LAREM, + 2, 1, 0, 0, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::EME1); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::EME1); + + id = calo_id->cell_id (CaloCell_Base_ID::LAREM, + 3, 1, 0, 1, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::EME2); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::EME2); + + id = calo_id->cell_id (CaloCell_Base_ID::LARHEC, + 2, 0, 0, 1, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::HEC0); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::HEC0); + +#if 0 + id = calo_id->cell_id (CaloCell_Base_ID::LARMINIFCAL, + 2, 0, 0, 1, 1); + std::cout << "xxx2 " << calo_id->calo_sample (id) << "\n"; + //assert (calo_id->calo_sample (id) == CaloCell_Base_ID::HEC1); + //assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + // CaloCell_Base_ID::HEC1); +#endif + + id = calo_id->cell_id (CaloCell_Base_ID::LARFCAL, + 2, 2, 0, 1, 0); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::FCAL1); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::FCAL1); + + if (supercell) { + id = calo_id->cell_id (CaloCell_Base_ID::TILE, + 1, 1, 0, 1, 0); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::TileBar0); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::TileBar0); + + id = calo_id->cell_id (CaloCell_Base_ID::TILE, + 2, 1, 0, 12, 2); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::TileExt2); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::TileExt2); + } + else { + id = calo_id->cell_id (CaloCell_Base_ID::TILE, + 1, 1, 0, 1, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::TileBar1); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::TileBar1); + + id = calo_id->cell_id (CaloCell_Base_ID::TILE, + 2, 1, 0, 12, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::TileExt1); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::TileExt1); + + id = calo_id->cell_id (CaloCell_Base_ID::TILE, + 3, 1, 0, 9, 1); + assert (calo_id->calo_sample (id) == CaloCell_Base_ID::TileGap1); + assert (calo_id->calo_sample (calo_id->calo_cell_hash(id)) == + CaloCell_Base_ID::TileGap1); + } +} + + +void test_subcalo (const CaloCell_Base_ID* calo_id) +{ + std::cout << "test_subcalo\n"; + + assert (calo_id->GetSubCaloName ("LAREM") == CaloCell_Base_ID::LAREM); + assert (calo_id->GetSubCaloName ("LARHEC") == CaloCell_Base_ID::LARHEC); + assert (calo_id->GetSubCaloName ("LARMINIFCAL") == CaloCell_Base_ID::LARMINIFCAL); + assert (calo_id->GetSubCaloName ("LARFCAL") == CaloCell_Base_ID::LARFCAL); + assert (calo_id->GetSubCaloName ("TILE") == CaloCell_Base_ID::TILE); + assert (calo_id->GetSubCaloName ("xxx") == CaloCell_Base_ID::NOT_VALID); + + for (int subCalo = 0; subCalo < CaloCell_Base_ID::NSUBCALO; subCalo++) { + std::vector<Identifier>::const_iterator itId = calo_id->cell_begin(subCalo); + std::vector<Identifier>::const_iterator itIdEnd = calo_id->cell_end(subCalo); + int nSubCalo = 0; + int hashsum = 0; + for(; itId!=itIdEnd;++itId){ + nSubCalo++; + hashsum += calo_id->calo_cell_hash(*itId); + } + IdentifierHash min=0, max=0; + calo_id->calo_cell_hash_range(subCalo,min,max); + assert (nSubCalo == (int)(max-min)); + + nSubCalo = 0; +#if __cplusplus > 201100 + for (Identifier ch_id : calo_id->cell_range(subCalo)) { +#else + BOOST_FOREACH (Identifier ch_id, calo_id->cell_range(subCalo)) { +#endif + hashsum -= calo_id->calo_cell_hash(ch_id); + } + assert (hashsum == 0); + } + + ExpandedIdentifier id1; + id1 << 5; // TILE + assert (calo_id->is_tile (id1)); + ExpandedIdentifier id2; + id2 << 4; // LAR + assert (!calo_id->is_tile (id2)); +} + + +void test_regions (const CaloCell_Base_ID* calo_id) +{ + std::cout << "test_regions\n"; + + std::vector<Identifier>::const_iterator itId = calo_id->reg_begin(); + std::vector<Identifier>::const_iterator itIdEnd = calo_id->reg_end(); + + std::vector<Identifier>::const_iterator itReg = calo_id->reg_end(); + std::vector<Identifier>::const_iterator itRegEnd = calo_id->reg_end(); + int last_subcalo = -1; + + assert ((itIdEnd - itId) == (int)calo_id->calo_region_hash_max()); + + int hashsum = 0; + int subhashsum = 0; + for(; itId!=itIdEnd;++itId) { + Identifier regId = *itId; + IdentifierHash hashId = calo_id->calo_region_hash ( regId ); + hashsum += hashId; +#if 1 + printf ("Region %-18s eta: %8.6f %8.6f %1d %3d phi: %3.1f %8.6f %1d %3d\n", + calo_id->show_to_string(regId).c_str(), + calo_id->eta0(regId), + calo_id->etaGranularity(regId), + calo_id->eta_min(regId), + calo_id->eta_max(regId), + calo_id->phi0(regId), + calo_id->phiGranularity(regId), + calo_id->phi_min(regId), + calo_id->phi_max(regId)); +#endif + Identifier regId1 = calo_id->region_id ( hashId ); + assert (regId1 == regId); + + int subcalo = calo_id->sub_calo(regId); + + IdentifierHash min=0, max=0; + calo_id->calo_reg_hash_range(regId, min, max); + IdentifierHash min2=0, max2=0; + calo_id->calo_reg_hash_range(subcalo, min2, max2); + assert (min == min2); + assert (max == max2); + + int subcalo2=-1; + IdentifierHash subHashId = calo_id->subcalo_region_hash(hashId, subcalo2); + assert (subcalo2 == subcalo); + + IdentifierHash hashId2 = calo_id->calo_region_hash (subcalo, subHashId) ; + assert (hashId2 == hashId); + + if(calo_id->is_tile(regId)) { + int section = calo_id->section(regId); + int side = calo_id->side(regId); + Identifier regId2 = calo_id->region_id (subcalo, section, side, 0); + assert (regId2 == regId); + } + else { + int bec = calo_id->pos_neg(regId); + int samp = calo_id->sampling(regId); + int reg = calo_id->region(regId); + Identifier regId2 = calo_id->region_id (subcalo, bec, samp, reg); + assert (regId2 == regId); + } + + int subcalo3 = -1; + IdentifierHash subHashId2 = calo_id->subcalo_region_hash (regId, subcalo3); + assert (subcalo3 == subcalo); + Identifier regId3 = calo_id->region_id ( subcalo, subHashId2 ); + assert (regId3 == regId); + + if (subcalo != last_subcalo) { + if (last_subcalo != -1) { +#if __cplusplus > 201100 + for (Identifier reg_id : calo_id->reg_range (last_subcalo)) { +#else + BOOST_FOREACH (Identifier reg_id, calo_id->reg_range (last_subcalo)) { +#endif + subhashsum -= calo_id->calo_region_hash (reg_id); + } + assert (subhashsum == 0); + } + assert (itReg == itRegEnd); + last_subcalo = subcalo; + itReg = calo_id->reg_begin (subcalo); + itRegEnd = calo_id->reg_end (subcalo); + } + subhashsum += hashId; + assert (itReg != itRegEnd); + assert (*itReg == regId); + ++itReg; + } + +#if __cplusplus > 201100 + for (Identifier reg_id : calo_id->reg_range()) { +#else + BOOST_FOREACH (Identifier reg_id, calo_id->reg_range()) { +#endif + hashsum -= calo_id->calo_region_hash (reg_id); + } + assert (hashsum == 0); +} + + +void test_exceptions (const CaloCell_Base_ID* calo_id) +{ + std::cout << "test_exceptions\n"; + + bool caught = false; + try { + /*Identifier wrongChanId =*/ calo_id->cell_id (0, 99, 0, 0, 0, 0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 1: " << (std::string)except << "\n"; + } + assert (caught); +} + + diff --git a/Calorimeter/CaloIdentifier/test/hash_test.h b/Calorimeter/CaloIdentifier/test/hash_test.h new file mode 100644 index 0000000000000000000000000000000000000000..8e215c6e29abca651fde18af6ab6a46d149fa635 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/hash_test.h @@ -0,0 +1,71 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/hash_test.h + * @author scott snyder <snyder@bnl.gov> + * @date May, 2013 + * @brief Helper for running id helper tests. + */ + + +#ifndef CALOIDENTIFIER_TEST_HASH_TEST_H +#define CALOIDENTIFIER_TEST_HASH_TEST_H + + +#include "boost/foreach.hpp" + + +#if __cplusplus > 201100 +# define TEST_LOOP(var, range) for(var : range) +#else +# define TEST_LOOP(var, range) BOOST_FOREACH(var, range) +#endif + +#define HASH_TEST1(TYPE,RANGE_TYPE,EXTRA) do \ +{ \ + IdContext context = idhelper.TYPE##_context(); \ + int hashsum = 0; \ + std::vector<Identifier>::const_iterator itId = idhelper.RANGE_TYPE##_begin(); \ + std::vector<Identifier>::const_iterator itIdEnd = idhelper.RANGE_TYPE##_end(); \ + const std::vector<Identifier>& ids = idhelper.TYPE##_ids(); \ + std::vector<bool> hashvec(idhelper.TYPE##_hash_max()); \ + std::cout << " n" << #TYPE << " " << itIdEnd - itId << "\n"; \ + \ + for(; itId!=itIdEnd; ++itId) { \ + Identifier id = *itId; \ + IdentifierHash hashId; \ + assert (idhelper.get_hash (id, hashId, &context) == 0); \ + Identifier id2; \ + assert (idhelper.get_id (hashId, id2, &context) == 0); \ + assert (id == id2); \ + assert (hashId < hashvec.size()); \ + assert (!hashvec[hashId]); \ + hashvec[hashId] = true; \ + assert (ids[hashId] == id); \ + \ + hashsum += hashId; \ + EXTRA \ + } \ + \ + TEST_LOOP(Identifier id, idhelper.RANGE_TYPE##_range()) { \ + IdentifierHash hashId; \ + assert (idhelper.get_hash (id, hashId, &context) == 0); \ + hashsum -= hashId; \ + } \ + assert (hashsum == 0); \ +} while(0) + +#define HASH_TEST(TYPE) HASH_TEST1(TYPE,TYPE,{}) + +#define HASH_TEST_EXTRA(TYPE) \ + assert (id == idhelper.TYPE##_id (hashId)); \ + assert (hashId == idhelper.TYPE##_hash (id)); + + + +#endif // not CALOIDENTIFIER_TEST_HASH_TEST_H diff --git a/Calorimeter/CaloIdentifier/test/larem_id_test_common.cxx b/Calorimeter/CaloIdentifier/test/larem_id_test_common.cxx new file mode 100644 index 0000000000000000000000000000000000000000..97ca8a754e47b27829c0864d8b9b9f8d93c8820d --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/larem_id_test_common.cxx @@ -0,0 +1,387 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/larem_id_test_common.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Code common between LArEM_ID_test and LArEM_SuperCell_ID test. + * This file is meant to be included in another file, + * not compiled separately. + */ + + +#include "boost/foreach.hpp" + + +// This because test differencing ignored lines containing `0x...' +std::string munghex (const std::string& h) +{ + if (h.size() > 2 && h[0] == '0' && h[1] == 'x') + return "hex(" + h.substr (2, std::string::npos) + ")"; + return h; +} +void basic_print_id (const LArEM_Base_ID& idhelper, const Identifier& id) +{ + std::cout << idhelper.show_to_string (id) << " " + << munghex(id.getString()) << "\n"; +} + + +class LArEM_ID_Test + : public LArEM_Base_ID +{ +public: + using LArEM_Base_ID::lar_field_value; + using LArEM_Base_ID::lar_em_field_value; +}; + + +class CellCounter +{ +public: + CellCounter(); + void count(int bec, int samp); + void report(); + + +private: + enum { + N_BEC = 3, + N_SAMP = 4 + }; + unsigned m_counts[N_BEC][N_SAMP]; +}; + + +CellCounter::CellCounter() +{ + for (unsigned i=0; i < N_BEC; i++) + for (unsigned j=0; j < N_SAMP; j++) + m_counts[i][j] = 0; +} + + +void CellCounter::count (int bec, int samp) +{ + bec = std::abs(bec) - 1; + if (bec < 0 || bec >= N_BEC) std::abort(); + if (samp < 0 || samp >= N_SAMP) std::abort(); + ++m_counts[bec][samp]; +} + + +void CellCounter::report() +{ + unsigned tot[N_BEC] = {0}; + printf ("Sampling Barrel Outer wheel Inner wheel\n"); + for (unsigned s=0; s < N_SAMP; s++) { + printf ("%1d %6d %6d %6d\n", + s, m_counts[0][s], m_counts[1][s], m_counts[2][s]); + for (unsigned b=0; b < N_BEC; b++) + tot[b] += m_counts[b][s]; + } + printf ("Total %6d %6d %6d Grand total: %6d\n", + tot[0], tot[1], tot[2], + tot[0]+tot[1]+tot[2]); +} + + +void region_test (const LArEM_Base_ID& em_id, const Identifier& ch_id) +{ + int bec = em_id.barrel_ec(ch_id); + switch (bec) { + case 1: + case -1: + assert (em_id.is_em_barrel (ch_id)); + assert (!em_id.is_em_endcap (ch_id)); + assert (!em_id.is_em_endcap_inner (ch_id)); + assert (!em_id.is_em_endcap_outer (ch_id)); + break; + case 2: + case -2: + assert (!em_id.is_em_barrel (ch_id)); + assert (em_id.is_em_endcap (ch_id)); + assert (!em_id.is_em_endcap_inner (ch_id)); + assert (em_id.is_em_endcap_outer (ch_id)); + break; + case 3: + case -3: + assert (!em_id.is_em_barrel (ch_id)); + assert (em_id.is_em_endcap (ch_id)); + assert (em_id.is_em_endcap_inner (ch_id)); + assert (!em_id.is_em_endcap_outer (ch_id)); + break; + default: + abort(); + } +} + + +void test_connected (const LArEM_Base_ID& em_id, bool supercell = false) +{ + std::cout << "test_connected\n"; + + // channels + IdContext channelContext = em_id.channel_context(); + std::vector<Identifier>::const_iterator itId = em_id.em_begin(); + std::vector<Identifier>::const_iterator itIdEnd = em_id.em_end(); + std::vector<bool> hashvec(em_id.channel_hash_max()); + CellCounter counts; + + std::cout << " nchan " << itIdEnd - itId << "\n"; + + const std::vector<Identifier>& ch_ids = em_id.channel_ids(); + + int hashsum = 0; + for(; itId!=itIdEnd; ++itId) { + Identifier ch_id = *itId; + assert (em_id.is_lar_em (ch_id)); + assert (em_id.is_connected (ch_id)); + + IdentifierHash hashId; + assert (em_id.get_hash (ch_id, hashId, &channelContext) == 0); + assert (em_id.is_connected (hashId)); + Identifier ch_id2; + assert (em_id.get_id (hashId, ch_id2, &channelContext) == 0); + assert (ch_id == ch_id2); + assert (ch_id == em_id.channel_id (hashId)); + assert (hashId == em_id.channel_hash (ch_id)); + assert (hashId == em_id.channel_hash_binary_search (ch_id)); + assert (hashId < hashvec.size()); + assert (!hashvec[hashId]); + hashvec[hashId] = true; + assert (ch_ids[hashId] == ch_id); + + hashsum += hashId; + + int bec = em_id.barrel_ec(ch_id); + int samp = em_id.sampling(ch_id); + int reg = em_id.region(ch_id); + int eta = em_id.eta(ch_id); + int phi = em_id.phi(ch_id); + region_test (em_id, ch_id); + + assert (em_id.is_supercell(ch_id) == supercell); + + assert (em_id.is_connected (bec, samp, reg, eta, phi)); + assert (!em_id.is_disconnected (bec, samp, reg, eta, phi)); + + ch_id2 = em_id.channel_id (bec, samp, reg, eta, phi); + assert (ch_id == ch_id2); + + Identifier reg_id = em_id.region_id (bec, samp, reg); + ch_id2 = em_id.channel_id (reg_id, eta, phi); + assert (ch_id == ch_id2); + assert (reg_id == em_id.region_id (ch_id)); + + counts.count (bec, samp); + + ExpandedIdentifier exp_id; + LArEM_ID_Test* em_id_test = (LArEM_ID_Test*)&em_id; + exp_id << em_id_test->lar_field_value() + << em_id_test->lar_em_field_value() + << em_id.barrel_ec(ch_id) + << em_id.sampling(ch_id) + << em_id.region(ch_id) + << em_id.eta(ch_id) + << em_id.phi(ch_id) + << (unsigned)em_id.is_supercell(ch_id); + assert (em_id.channel_id (exp_id) == ch_id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + +#if __cplusplus > 201100 + for (Identifier ch_id : em_id.em_range()) { +#else + BOOST_FOREACH (Identifier ch_id, em_id.em_range()) { +#endif + hashsum -= em_id.channel_hash (ch_id); + } + assert (hashsum == 0); + + + // regions + itId = em_id.reg_begin(); + itIdEnd = em_id.reg_end(); + hashvec.clear(); + hashvec.resize (em_id.region_hash_max()); + IdContext region_context = em_id.region_context(); + + std::cout << " nreg " << itIdEnd - itId << "\n"; + + for(; itId!=itIdEnd; ++itId) { + Identifier reg_id = *itId; + + assert (em_id.is_supercell(reg_id) == supercell); + + IdentifierHash regHash = em_id.region_hash(reg_id); + hashsum += regHash; +#if 1 + printf ("Region %-18s eta: %8.6f %8.6f %1d %3d phi: %3.1f %8.6f %1d %3d\n", + em_id.show_to_string(reg_id).c_str(), + em_id.eta0(regHash), + em_id.etaGranularity(regHash), + em_id.eta_min(reg_id), + em_id.eta_max(reg_id), + em_id.phi0(regHash), + em_id.phiGranularity(regHash), + em_id.phi_min(reg_id), + em_id.phi_max(reg_id)); +#endif + Identifier reg_id2 = em_id.region_id(regHash); + assert (reg_id == reg_id2); + + IdentifierHash regHash2; + assert (em_id.get_hash (reg_id, regHash2, ®ion_context) == 0); + + assert (!hashvec[regHash]); + hashvec[regHash] = true; + + ExpandedIdentifier exp_id; + LArEM_ID_Test* em_id_test = (LArEM_ID_Test*)&em_id; + exp_id << em_id_test->lar_field_value() + << em_id_test->lar_em_field_value() + << em_id.barrel_ec(reg_id) + << em_id.sampling(reg_id) + << em_id.region(reg_id); + assert (em_id.region_id (exp_id) == reg_id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + +#if __cplusplus > 201100 + for (Identifier ch_id : em_id.reg_range()) { +#else + BOOST_FOREACH (Identifier ch_id, em_id.reg_range()) { +#endif + hashsum -= em_id.region_hash (ch_id); + } + assert (hashsum == 0); + + counts.report(); +} + + +void test_disco (const LArEM_Base_ID& em_id) +{ + std::cout << "test_disco\n"; + + // disconnected channels + //IdContext channelContext = em_id.channel_context(); + std::vector<Identifier>::const_iterator itId = em_id.disc_em_begin(); + std::vector<Identifier>::const_iterator itIdEnd = em_id.disc_em_end(); + CellCounter counts; + + std::cout << " nchan " << itIdEnd - itId << "\n"; + + assert (em_id.channel_hash_max() == em_id.disc_channel_hash_min()); + std::vector<bool> hashvec(em_id.disc_channel_hash_max() - em_id.disc_channel_hash_min()); + + int hashsum = 0; + for (; itId!=itIdEnd; ++itId) { + Identifier ch_id = *itId; + assert (em_id.is_lar_em (ch_id)); + assert (!em_id.is_connected (ch_id)); + + IdentifierHash hashId = em_id.disc_channel_hash (ch_id) ; + assert (!em_id.is_connected (hashId)); + Identifier ch_id2 = em_id.disc_channel_id(hashId); + assert (ch_id == ch_id2); + assert (hashId >= em_id.channel_hash_max()); + assert (!hashvec[hashId - em_id.disc_channel_hash_min()]); + hashvec[hashId - em_id.disc_channel_hash_min()] = true; + + hashsum += hashId; + + int bec = em_id.barrel_ec(ch_id); + int samp = em_id.sampling(ch_id); + int reg = em_id.region(ch_id); + region_test (em_id, ch_id); + counts.count (bec, samp); + + assert (em_id.is_supercell(ch_id) == false); + + assert (em_id.eta(ch_id) == -999); + assert (em_id.phi(ch_id) == -999); + int eta = em_id.disc_eta(ch_id); + int phi = em_id.disc_phi(ch_id); + + assert (!em_id.is_connected (bec, samp, reg, eta, phi)); + assert (em_id.is_disconnected (bec, samp, reg, eta, phi)); + + ch_id2 = em_id.disc_channel_id (bec, samp, reg, eta, phi); + assert (ch_id == ch_id2); + + Identifier reg_id = em_id.disc_region_id (bec, samp, reg); + ch_id2 = em_id.channel_id (reg_id, eta, phi); + assert (ch_id == ch_id2); + + ExpandedIdentifier exp_id; + LArEM_ID_Test* em_id_test = (LArEM_ID_Test*)&em_id; + exp_id << em_id_test->lar_field_value() + << em_id_test->lar_em_field_value() + << em_id.barrel_ec(ch_id) + << em_id.sampling(ch_id) + << em_id.region(ch_id) + << em_id.disc_eta(ch_id) + << em_id.disc_phi(ch_id) + << (unsigned)em_id.is_supercell(ch_id); + assert (em_id.disc_channel_id (exp_id) == ch_id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + +#if __cplusplus > 201100 + for (Identifier ch_id : em_id.disc_em_range()) { +#else + BOOST_FOREACH (Identifier ch_id, em_id.disc_em_range()) { +#endif + hashsum -= em_id.disc_channel_hash (ch_id); + } + assert (hashsum == 0); + + counts.report(); +} + + +void test_exceptions (const LArEM_Base_ID& em_id, bool /*supercell*/ = false) +{ + std::cout << "test_exceptions\n"; + + bool caught = false; + try { + /*Identifier wrongRegionId =*/ em_id.region_id (0,99,0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 1: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + /*Identifier wrongChannelId =*/ em_id.channel_id (0,99,0,0,0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 2: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + Identifier goodRegionId = em_id.region_id (1,0,0); + /*Identifier wrongChannelId =*/ em_id.channel_id (goodRegionId,0,-99); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 3: " << (std::string)except << "\n"; + } + assert (caught); +} + + diff --git a/Calorimeter/CaloIdentifier/test/larfcal_id_test_common.cxx b/Calorimeter/CaloIdentifier/test/larfcal_id_test_common.cxx new file mode 100644 index 0000000000000000000000000000000000000000..19cc797a781de29eee198e88d56df3e6a1de54af --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/larfcal_id_test_common.cxx @@ -0,0 +1,358 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/larfcal_id_test_common.cxx + * @author scott snyder + * @date May 2013 + * @brief Code common between LArFCAL_ID_test and LArFCAL_SuperCell_ID test. + * This file is meant to be included in another file, + * not compiled separately. + */ + + +#include "boost/foreach.hpp" + + +// This because test differencing ignored lines containing `0x...' +std::string munghex (const std::string& h) +{ + if (h.size() > 2 && h[0] == '0' && h[1] == 'x') + return "hex(" + h.substr (2, std::string::npos) + ")"; + return h; +} +void basic_print_id (const LArFCAL_Base_ID& idhelper, const Identifier& id) +{ + std::cout << idhelper.show_to_string (id) << " " + << munghex(id.getString()) << "\n"; +} + + +class LArFCAL_ID_Test + : public LArFCAL_Base_ID +{ +public: + using LArFCAL_Base_ID::lar_field_value; + using LArFCAL_Base_ID::lar_fcal_field_value; +}; + + +class CellCounter +{ +public: + CellCounter(); + void count(int mod); + void report(); + + +private: + enum { + N_MOD = 3 + }; + unsigned m_counts[N_MOD]; +}; + + +CellCounter::CellCounter() +{ + for (unsigned i=0; i < N_MOD; i++) + m_counts[i] = 0; +} + + +void CellCounter::count (int mod) +{ + if (mod < 1 || mod > N_MOD) std::abort(); + ++m_counts[mod-1]; +} + + +void CellCounter::report() +{ + int tot = 0; + printf (" Module counts: "); + for (unsigned m=0; m < N_MOD; m++) { + printf ("%d ", m_counts[m]); + tot += m_counts[m]; + } + printf ("; total: %d\n", tot); +} + + +void +test_connected (const LArFCAL_Base_ID& fcal_id, bool supercell = false) +{ + std::cout << "test_connected\n"; + + // channels + IdContext channelContext = fcal_id.channel_context(); + std::vector<Identifier>::const_iterator itId = fcal_id.fcal_begin(); + std::vector<Identifier>::const_iterator itIdEnd = fcal_id.fcal_end(); + std::vector<bool> hashvec(fcal_id.channel_hash_max()); + CellCounter counts; + + std::cout << " nchan " << itIdEnd - itId << "\n"; + + const std::vector<Identifier>& ch_ids = fcal_id.channel_ids(); + + int hashsum = 0; + for(; itId!=itIdEnd; ++itId) { + Identifier ch_id = *itId; + assert (fcal_id.is_connected (ch_id)); + + IdentifierHash hashId; + assert (fcal_id.get_hash (ch_id, hashId, &channelContext) == 0); + assert (fcal_id.is_connected (hashId)); + Identifier ch_id2; + assert (fcal_id.get_id (hashId, ch_id2, &channelContext) == 0); + assert (ch_id == ch_id2); + assert (ch_id == fcal_id.channel_id (hashId)); + assert (hashId == fcal_id.channel_hash (ch_id)); + assert (hashId == fcal_id.channel_hash_binary_search (ch_id)); + assert (hashId < hashvec.size()); + assert (!hashvec[hashId]); + hashvec[hashId] = true; + assert (ch_ids[hashId] == ch_id); + + hashsum += hashId; + + int side = fcal_id.pos_neg(ch_id); + int mod = fcal_id.module(ch_id); + int eta = fcal_id.eta(ch_id); + int phi = fcal_id.phi(ch_id); + + assert (fcal_id.is_supercell(ch_id) == supercell); + + assert (fcal_id.is_connected (side, mod, eta, phi)); + assert (!fcal_id.is_disconnected (side, mod, eta, phi)); + + ch_id2 = fcal_id.channel_id (side, mod, eta, phi); + assert (ch_id == ch_id2); + + Identifier mod_id = fcal_id.module_id (side, mod); + ch_id2 = fcal_id.channel_id (mod_id, eta, phi); + assert (ch_id == ch_id2); + assert (mod_id == fcal_id.module_id (ch_id)); + + counts.count (mod); + + ExpandedIdentifier exp_id; + LArFCAL_ID_Test* fcal_id_test = (LArFCAL_ID_Test*)&fcal_id; + exp_id << fcal_id_test->lar_field_value() + << fcal_id_test->lar_fcal_field_value() + << fcal_id.pos_neg(ch_id) + << fcal_id.module(ch_id) + << fcal_id.eta(ch_id) + << fcal_id.phi(ch_id) + << (unsigned)fcal_id.is_supercell(ch_id); + assert (fcal_id.channel_id (exp_id) == ch_id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + +#if __cplusplus > 201100 + for (Identifier ch_id : fcal_id.fcal_range()) { +#else + BOOST_FOREACH (Identifier ch_id, fcal_id.fcal_range()) { +#endif + hashsum -= fcal_id.channel_hash (ch_id); + } + assert (hashsum == 0); + + + // modules + itId = fcal_id.mod_begin(); + itIdEnd = fcal_id.mod_end(); + hashvec.clear(); + hashvec.resize (fcal_id.module_hash_max()); + IdContext module_context = fcal_id.module_context(); + + std::cout << " nreg " << itIdEnd - itId << "\n"; + + for(; itId!=itIdEnd; ++itId) { + Identifier mod_id = *itId; + + assert (fcal_id.is_supercell(mod_id) == supercell); + + IdentifierHash modHash = fcal_id.module_hash(mod_id); + hashsum += modHash; +#if 1 + printf ("Module %-18s eta: %8.6f %8.6f %1d %3d phi: %3.1f %8.6f %1d %3d\n", + fcal_id.show_to_string(mod_id).c_str(), + fcal_id.eta0(modHash), + fcal_id.etaGranularity(modHash), + fcal_id.eta_min(mod_id), + fcal_id.eta_max(mod_id), + fcal_id.phi0(modHash), + fcal_id.phiGranularity(modHash), + fcal_id.phi_min(mod_id), + fcal_id.phi_max(mod_id)); +#endif + Identifier mod_id2 = fcal_id.module_id(modHash); + assert (mod_id == mod_id2); + + IdentifierHash modHash2; + assert (fcal_id.get_hash (mod_id, modHash2, &module_context) == 0); + + assert (!hashvec[modHash]); + hashvec[modHash] = true; + + ExpandedIdentifier exp_id; + LArFCAL_ID_Test* fcal_id_test = (LArFCAL_ID_Test*)&fcal_id; + exp_id << fcal_id_test->lar_field_value() + << fcal_id_test->lar_fcal_field_value() + << fcal_id.pos_neg(mod_id) + << fcal_id.module(mod_id); + assert (fcal_id.module_id (exp_id) == mod_id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + +#if __cplusplus > 201100 + for (Identifier ch_id : fcal_id.mod_range()) { +#else + BOOST_FOREACH (Identifier ch_id, fcal_id.mod_range()) { +#endif + hashsum -= fcal_id.module_hash (ch_id); + } + assert (hashsum == 0); + + hashsum = 0; + BOOST_FOREACH (Identifier mod_id, fcal_id.disc_module_range()) { + ExpandedIdentifier exp_id; + LArFCAL_ID_Test* fcal_id_test = (LArFCAL_ID_Test*)&fcal_id; + exp_id << fcal_id_test->lar_field_value() + << fcal_id_test->lar_fcal_field_value() + << fcal_id.pos_neg(mod_id) + << fcal_id.module(mod_id); + assert (fcal_id.disc_module_id (exp_id) == mod_id); + ++hashsum; + } + + itId = fcal_id.disc_module_begin(); + itIdEnd = fcal_id.disc_module_end(); + for (; itId != itIdEnd; ++itId) + --hashsum; + assert (hashsum == 0); + + counts.report(); +} + + +void test_disco (const LArFCAL_Base_ID& fcal_id) +{ + std::cout << "test_disco\n"; + + // disconnected channels + std::vector<Identifier>::const_iterator itId = fcal_id.disc_fcal_begin(); + std::vector<Identifier>::const_iterator itIdEnd = fcal_id.disc_fcal_end(); + CellCounter counts; + + std::cout << " nchan " << itIdEnd - itId << "\n"; + + assert (fcal_id.channel_hash_max() == fcal_id.disc_channel_hash_min()); + std::vector<bool> hashvec(fcal_id.disc_channel_hash_max() - fcal_id.disc_channel_hash_min()); + + int hashsum = 0; + for (; itId!=itIdEnd; ++itId) { + Identifier ch_id = *itId; + assert (!fcal_id.is_connected (ch_id)); + + IdentifierHash hashId = fcal_id.disc_channel_hash (ch_id) ; + assert (!fcal_id.is_connected (hashId)); + Identifier ch_id2 = fcal_id.disc_channel_id(hashId); + assert (ch_id == ch_id2); + assert (hashId >= fcal_id.channel_hash_max()); + assert (!hashvec[hashId - fcal_id.disc_channel_hash_min()]); + hashvec[hashId - fcal_id.disc_channel_hash_min()] = true; + + hashsum += hashId; + + int side = fcal_id.pos_neg(ch_id); + int mod = fcal_id.module(ch_id); + counts.count (mod); + + assert (fcal_id.is_supercell(ch_id) == false); + + assert (fcal_id.eta(ch_id) == -999); + assert (fcal_id.phi(ch_id) == -999); + int eta = fcal_id.disc_eta(ch_id); + int phi = fcal_id.disc_phi(ch_id); + + assert (!fcal_id.is_connected (side, mod, eta, phi)); + assert (fcal_id.is_disconnected (side, mod, eta, phi)); + + ch_id2 = fcal_id.disc_channel_id (side, mod, eta, phi); + assert (ch_id == ch_id2); + + Identifier mod_id = fcal_id.disc_module_id (side, mod); + ch_id2 = fcal_id.channel_id (mod_id, eta, phi); + assert (ch_id == ch_id2); + + ExpandedIdentifier exp_id; + LArFCAL_ID_Test* fcal_id_test = (LArFCAL_ID_Test*)&fcal_id; + exp_id << fcal_id_test->lar_field_value() + << fcal_id_test->lar_fcal_field_value() + << fcal_id.pos_neg(ch_id) + << fcal_id.module(ch_id) + << fcal_id.disc_eta(ch_id) + << fcal_id.disc_phi(ch_id) + << (unsigned)fcal_id.is_supercell(ch_id); + assert (fcal_id.disc_channel_id (exp_id) == ch_id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + +#if __cplusplus > 201100 + for (Identifier ch_id : fcal_id.disc_fcal_range()) { +#else + BOOST_FOREACH (Identifier ch_id, fcal_id.disc_fcal_range()) { +#endif + hashsum -= fcal_id.disc_channel_hash (ch_id); + } + assert (hashsum == 0); + + counts.report(); +} + + +void test_exceptions (const LArFCAL_Base_ID& fcal_id, + bool /*supercell*/ = false) +{ + std::cout << "test_exeptions\n"; + + bool caught = false; + try { + /*Identifier wrongRegionId =*/ fcal_id.module_id (0,99); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 1: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + /*Identifier wrongChannelId =*/ fcal_id.channel_id (0,99,0,0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 2: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + Identifier goodRegionId = fcal_id.module_id (1,1); + /*Identifier wrongChannelId =*/ fcal_id.channel_id (goodRegionId,0,-99); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 3: " << (std::string)except << "\n"; + } + assert (caught); +} + + diff --git a/Calorimeter/CaloIdentifier/test/larhec_id_test_common.cxx b/Calorimeter/CaloIdentifier/test/larhec_id_test_common.cxx new file mode 100644 index 0000000000000000000000000000000000000000..f4e56c55134a5db1be15494d5b6189e467a24dd3 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/larhec_id_test_common.cxx @@ -0,0 +1,323 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/larhec_id_test_common.cxx + * @author scott snyder + * @date May 2013 + * @brief Code common between LArHEC_ID_test and LArHEC_SuperCell_ID test. + * This file is meant to be included in another file, + * not compiled separately. + */ + + +#include "boost/foreach.hpp" +#include "hash_test.h" + + +// This because test differencing ignored lines containing `0x...' +std::string munghex (const std::string& h) +{ + if (h.size() > 2 && h[0] == '0' && h[1] == 'x') + return "hex(" + h.substr (2, std::string::npos) + ")"; + return h; +} +void basic_print_id (const LArHEC_Base_ID& idhelper, const Identifier& id) +{ + std::cout << idhelper.show_to_string (id) << " " + << munghex(id.getString()) << "\n"; +} + + +class LArHEC_ID_Test + : public LArHEC_Base_ID +{ +public: + using LArHEC_Base_ID::lar_field_value; + using LArHEC_Base_ID::lar_hec_field_value; +}; + + +class CellCounter +{ +public: + CellCounter(); + void count(int bec, int samp); + void report(); + + +private: + enum { + N_REG = 2, + N_SAMP = 4 + }; + unsigned m_counts[N_REG][N_SAMP]; +}; + + +CellCounter::CellCounter() +{ + for (unsigned i=0; i < N_REG; i++) + for (unsigned j=0; j < N_SAMP; j++) + m_counts[i][j] = 0; +} + + +void CellCounter::count (int reg, int samp) +{ + if (reg < 0 || reg >= N_REG) std::abort(); + if (samp < 0 || samp >= N_SAMP) std::abort(); + ++m_counts[reg][samp]; +} + + +void CellCounter::report() +{ + unsigned tot[N_REG] = {0}; + printf ("Sampling Outer Inner\n"); + for (unsigned s=0; s < N_SAMP; s++) { + printf ("%1d %6d %6d\n", + s, m_counts[0][s], m_counts[1][s]); + for (unsigned b=0; b < N_REG; b++) + tot[b] += m_counts[b][s]; + } + printf ("Total %6d %6d Grand total: %6d\n", + tot[0], tot[1], + tot[0]+tot[1]); +} + + +void test_connected (const LArHEC_Base_ID& idhelper, bool supercell) +{ + std::cout << "test_connected\n"; + + HASH_TEST1(channel,hec,HASH_TEST_EXTRA(channel)); + HASH_TEST1(region,reg,HASH_TEST_EXTRA(region)); + + CellCounter counts; + TEST_LOOP (Identifier id, idhelper.hec_range()) { + assert (idhelper.is_lar_hec (id)); + assert (idhelper.is_connected (id)); + IdentifierHash hashId = idhelper.channel_hash (id); + assert (idhelper.is_connected (hashId)); + assert (hashId == idhelper.channel_hash_binary_search (id)); + + int side = idhelper.pos_neg(id); + int samp = idhelper.sampling(id); + int reg = idhelper.region(id); + int eta = idhelper.eta(id); + int phi = idhelper.phi(id); + + assert (idhelper.is_supercell(id) == supercell); + + assert (idhelper.is_connected (side, samp, reg, eta, phi)); + assert (!idhelper.is_disconnected (side, samp, reg, eta, phi)); + + Identifier id2 = idhelper.channel_id (side, samp, reg, eta, phi); + assert (id == id2); + + Identifier reg_id = idhelper.region_id (side, samp, reg); + id2 = idhelper.channel_id (reg_id, eta, phi); + assert (id == id2); + assert (reg_id == idhelper.region_id (id)); + + counts.count (reg, samp); + + ExpandedIdentifier exp_id; + LArHEC_ID_Test* idhelper_test = (LArHEC_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_hec_field_value() + << idhelper.pos_neg(id) + << idhelper.sampling(id) + << idhelper.region(id) + << idhelper.eta(id) + << idhelper.phi(id) + << (unsigned)idhelper.is_supercell(id); + assert (idhelper.channel_id (exp_id) == id); + } + counts.report(); + + TEST_LOOP (Identifier id, idhelper.reg_range()) { + assert (idhelper.is_supercell(id) == supercell); + IdentifierHash hashId = idhelper.region_hash (id); + + printf ("Region %-18s eta: %8.6f %8.6f %1d %3d phi: %3.1f %8.6f %1d %3d\n", + idhelper.show_to_string(id).c_str(), + idhelper.eta0(hashId), + idhelper.etaGranularity(hashId), + idhelper.eta_min(id), + idhelper.eta_max(id), + idhelper.phi0(hashId), + idhelper.phiGranularity(hashId), + idhelper.phi_min(id), + idhelper.phi_max(id)); + + int side = idhelper.pos_neg(id); + int samp = idhelper.sampling(id); + int reg = idhelper.region(id); + Identifier id2 = idhelper.region_id (side, samp, reg); + assert (id == id2); + + ExpandedIdentifier exp_id; + LArHEC_ID_Test* idhelper_test = (LArHEC_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_hec_field_value() + << idhelper.pos_neg(id) + << idhelper.sampling(id) + << idhelper.region(id); + assert (idhelper.region_id (exp_id) == id); + } +} + + +void test_disco (const LArHEC_Base_ID& idhelper) +{ + std::cout << "test_disco\n"; + + // disconnected channels + std::vector<Identifier>::const_iterator itId = idhelper.disc_hec_begin(); + std::vector<Identifier>::const_iterator itIdEnd = idhelper.disc_hec_end(); + CellCounter counts; + + std::cout << " nchan " << itIdEnd - itId << "\n"; + + assert (idhelper.channel_hash_max() == idhelper.disc_channel_hash_min()); + std::vector<bool> hashvec(idhelper.disc_channel_hash_max() - idhelper.disc_channel_hash_min()); + + int hashsum = 0; + for (; itId != itIdEnd; ++itId) { + Identifier id = *itId; + assert (idhelper.is_lar_hec (id)); + assert (!idhelper.is_connected (id)); + + IdentifierHash hashId = idhelper.disc_channel_hash (id) ; + assert (!idhelper.is_connected (hashId)); + Identifier id2 = idhelper.disc_channel_id(hashId); + assert (id == id2); + assert (hashId >= idhelper.channel_hash_max()); + assert (!hashvec[hashId - idhelper.disc_channel_hash_min()]); + hashvec[hashId - idhelper.disc_channel_hash_min()] = true; + + hashsum += hashId; + + int side = idhelper.pos_neg(id); + int samp = idhelper.sampling(id); + int reg = idhelper.region(id); + counts.count (reg, samp); + + assert (idhelper.is_supercell(id) == false); + + assert (idhelper.eta(id) == -999); + assert (idhelper.phi(id) == -999); + int eta = idhelper.disc_eta(id); + int phi = idhelper.disc_phi(id); + + assert (!idhelper.is_connected (side, samp, reg, eta, phi)); + assert (idhelper.is_disconnected (side, samp, reg, eta, phi)); + + id2 = idhelper.disc_channel_id (side, samp, reg, eta, phi); + assert (id == id2); + + Identifier reg_id = idhelper.disc_region_id (side, samp, reg); + id2 = idhelper.channel_id (reg_id, eta, phi); + assert (id == id2); + + ExpandedIdentifier exp_id; + LArHEC_ID_Test* idhelper_test = (LArHEC_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_hec_field_value() + << idhelper.pos_neg(id) + << idhelper.sampling(id) + << idhelper.region(id) + << idhelper.disc_eta(id) + << idhelper.disc_phi(id) + << (unsigned)idhelper.is_supercell(id); + assert (idhelper.disc_channel_id (exp_id) == id); + } + for (size_t i = 0; i < hashvec.size(); i++) + assert (hashvec[i]); + + TEST_LOOP (Identifier id, idhelper.disc_hec_range()) { + hashsum -= idhelper.disc_channel_hash (id); + } + assert (hashsum == 0); + + hashsum = 0; + BOOST_FOREACH (Identifier id, idhelper.disc_reg_range()) { + ExpandedIdentifier exp_id; + LArHEC_ID_Test* idhelper_test = (LArHEC_ID_Test*)&idhelper; + exp_id << idhelper_test->lar_field_value() + << idhelper_test->lar_hec_field_value() + << idhelper.pos_neg(id) + << idhelper.sampling(id) + << idhelper.region(id); + assert (idhelper.disc_region_id (exp_id) == id); + ++hashsum; + } + + itId = idhelper.disc_reg_begin(); + itIdEnd = idhelper.disc_reg_end(); + for (; itId != itIdEnd; ++itId) + --hashsum; + assert (hashsum == 0); + + counts.report(); +} + + +void test_exceptions (const LArHEC_Base_ID& idhelper) +{ + std::cout << "test_exceptions\n"; + + bool caught = false; + try { + /*Identifier wrongRegionId =*/ idhelper.region_id (0,99,0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 1: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + /*Identifier wrongChannelId =*/ idhelper.channel_id (0,99,0,0,0); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 2: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + Identifier goodRegionId = idhelper.region_id (2,0,0); + /*Identifier wrongChannelId =*/ idhelper.channel_id (goodRegionId,0,-99); + } + catch(LArID_Exception & except){ + caught = true; + std::cout << "Exception 3: " << (std::string)except << "\n"; + } + assert (caught); +} + + +// hec-specific addressing. +void test_hec (const LArHEC_Base_ID& idhelper) +{ + std::cout << "test_hec\n"; + + assert (idhelper.channel_id (2, 0, 0, 5, 1) == + idhelper.channel_id (2, 0, 5, 1)); + assert (idhelper.channel_id (2, 0, 1, 3, 1) == + idhelper.channel_id (2, 0, 13, 1)); + + assert (idhelper.channel_id (2, 0, 0, 5, 1) == + idhelper.channel_id (2, 0, 0, 0, 5, 1)); + assert (idhelper.channel_id (2, 0, 0, 5, 10) == + idhelper.channel_id (2, 0, 5, 0, 5, 0)); + assert (idhelper.channel_id (2, 0, 0, 5, 11) == + idhelper.channel_id (2, 0, 5, 0, 5, 1)); +} diff --git a/Calorimeter/CaloIdentifier/test/test_calo_dm_id.cxx b/Calorimeter/CaloIdentifier/test/test_calo_dm_id.cxx new file mode 100755 index 0000000000000000000000000000000000000000..b56f53163a4172c5906f0704b9e595a744536679 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/test_calo_dm_id.cxx @@ -0,0 +1,349 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Header: /build/atlas/cvs/atlas/offline/Calorimeter/CaloIdentifier/test/test_calo_dm_id.cxx,v 1.6 2006-05-18 11:38:04 fledroit Exp $ + +#include "IdDictParser/IdDictParser.h" +#include "Identifier/IdentifierHash.h" +#include "CaloIdentifier/CaloCell_ID.h" +#include "CaloIdentifier/CaloDM_ID.h" +#include <iostream> + + +static void +check_lar_dm_id_decoding(IdDictMgr& idd) +{ + + std::cout << "=========> check_lar_dm_id_decoding" << std::endl; + std::cout << "=========> check_lar_dm_id_decoding" << std::endl; + + CaloDM_ID dm_id; + if(dm_id.initialize_from_dictionary (idd)) { + std::cout << "check_calo_dm_id_decoding - cannot init em from dict" << std::endl; + } + const CaloDM_ID* dm_p = &dm_id; + + bool verif = dm_p->do_checks(); + std::cout << "verif0 = " << verif << std::endl; + dm_p->set_do_checks(true); + verif = dm_p->do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + // test of lar hash calculation + + // zones + std::vector<Identifier>::const_iterator itId = dm_p->lar_zone_begin(); + std::vector<Identifier>::const_iterator itIdEnd = dm_p->lar_zone_end(); + + int nZon=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + Identifier zoneId = *itId; + nZon++; + + IdentifierHash hashId = dm_p->lar_zone_hash ( zoneId ); + + Identifier zoneId2 = dm_p->lar_zone_id ( hashId ); + + if ( zoneId2 != zoneId ) { + std::cout + << " lar zoneId2 incorrect: " << dm_p->show_to_string(zoneId2) + << " should be " << dm_p->show_to_string(zoneId) + << " hashId = " << hashId + << std::endl; + error = true; + } + + int detz = dm_p->pos_neg_z(zoneId); + int typ = dm_p->dmat(zoneId); + int samp = dm_p->sampling(zoneId); + int reg = dm_p->region(zoneId); + int eta = dm_p->eta(zoneId); + int phi = dm_p->phi(zoneId); + + Identifier zoneId3 = dm_p->zone_id (detz,typ,samp,reg, eta, phi); + if ( zoneId3 != zoneId ) { + std::cout + << " zoneId3 incorrect: " << dm_p->show_to_string(zoneId3) + << " should be " << dm_p->show_to_string(zoneId) + << std::endl; + error = true; + } + + Identifier regId = dm_p->region_id (zoneId); + Identifier zoneId4 = dm_p->zone_id (regId, eta, phi); + if ( zoneId4 != zoneId ) { + std::cout << "lar zoneId4 incorrect: " << dm_p->show_to_string(zoneId4) + << " should be " << dm_p->show_to_string(zoneId) + << " regId " << dm_p->show_to_string(regId) + << " input val of eta, phi= " << eta << " " << phi + << std::endl; + error = true; + } + } + std::cout << "total number of zones (ref=81794) = " << nZon + << ", lar_zone_hash_max= " << dm_p->lar_zone_hash_max() + << std::endl; + std::cout << " ====================================== " << std::endl; + + + // lar regions + itId = dm_p->lar_region_begin(); + itIdEnd = dm_p->lar_region_end(); + + int nReg=0; + + for(; itId!=itIdEnd;++itId){ + + nReg++; + Identifier regId = *itId; + + IdentifierHash hashId = dm_p->lar_region_hash ( regId ); + + std::cout << " lar region " << hashId << " etaMin, etaMax, phiMin, phiMax= " + << dm_p ->eta_min(regId) << ", " + << dm_p ->eta_max(regId) << ", " + << dm_p ->phi_min(regId) << ", " + << dm_p ->phi_max(regId) + << std::endl; + + + Identifier regId2 = dm_p->lar_region_id ( hashId ); + + if ( regId2 != regId ) { + std::cout + << " lar regId2 incorrect: " << dm_p->show_to_string(regId2) + << " should be " << dm_p->show_to_string(regId) + << " hasId = " << hashId + << std::endl; + error = true; + } + + int detz = dm_p->pos_neg_z(regId); + int typ = dm_p->dmat(regId); + int samp = dm_p->sampling(regId); + int reg = dm_p->region(regId); + Identifier regId3 = dm_p->region_id (detz,typ,samp,reg); + if ( regId3 != regId ) { + std::cout + << " regId3 incorrect: " << dm_p->show_to_string(regId3) + << " should be " << dm_p->show_to_string(regId) + << std::endl; + error = true; + } + } + std::cout << "number of LAr regions (ref=94)= " << nReg + << ", lar_region_hash_max= " << dm_p->lar_region_hash_max() + << std::endl; + + if(!error) { + std::cout << "LAr DM decoding tests ok" << std::endl; + } + +} + + +static void +check_tile_dm_id_decoding(IdDictMgr& idd) +{ + + std::cout << "=========> check_tile_dm_id_decoding" << std::endl; + std::cout << "=========> check_tile_dm_id_decoding" << std::endl; + + CaloDM_ID dm_id; + if(dm_id.initialize_from_dictionary (idd)) { + std::cout << "check_calo_dm_id_decoding - cannot init em from dict" << std::endl; + } + const CaloDM_ID* dm_p = &dm_id; + + bool verif = dm_p->do_checks(); + std::cout << "verif0 = " << verif << std::endl; + dm_p->set_do_checks(true); + verif = dm_p->do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + // test of tile hash calculation + + // zones + std::vector<Identifier>::const_iterator itId = dm_p->tile_zone_begin(); + std::vector<Identifier>::const_iterator itIdEnd = dm_p->tile_zone_end(); + + int nZon=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + Identifier zoneId = *itId; + nZon++; + + IdentifierHash hashId = dm_p->tile_zone_hash ( zoneId ); + + Identifier zoneId2 = dm_p->tile_zone_id ( hashId ); + + if ( zoneId2 != zoneId ) { + std::cout + << " tile zoneId2 incorrect: " << dm_p->show_to_string(zoneId2) + << " should be " << dm_p->show_to_string(zoneId) + << " hashId = " << hashId + << std::endl; + error = true; + } + + int detz = dm_p->pos_neg_z(zoneId); + int typ = dm_p->dmat(zoneId); + int samp = dm_p->sampling(zoneId); + int reg = dm_p->region(zoneId); + int eta = dm_p->eta(zoneId); + int phi = dm_p->phi(zoneId); + + Identifier zoneId3 = dm_p->zone_id (detz,typ,samp,reg, eta, phi); + if ( zoneId3 != zoneId ) { + std::cout + << " zoneId3 incorrect: " << dm_p->show_to_string(zoneId3) + << " should be " << dm_p->show_to_string(zoneId) + << std::endl; + error = true; + } + + Identifier regId = dm_p->region_id (zoneId); + Identifier zoneId4 = dm_p->zone_id (regId, eta, phi); + if ( zoneId4 != zoneId ) { + std::cout << "tile zoneId4 incorrect: " << dm_p->show_to_string(zoneId4) + << " should be " << dm_p->show_to_string(zoneId) + << " regId " << dm_p->show_to_string(regId) + << " input val of eta, phi= " << eta << " " << phi + << std::endl; + error = true; + } + } + std::cout << "total number of zones (ref:7426)= " << nZon << ", tile_zone_hash_max= " << dm_p->tile_zone_hash_max() << std::endl; + std::cout << " ====================================== " << std::endl; + + + // tile regions + itId = dm_p->tile_region_begin(); + itIdEnd = dm_p->tile_region_end(); + + int nReg=0; + + for(; itId!=itIdEnd;++itId){ + + nReg++; + Identifier regId = *itId; + + IdentifierHash hashId = dm_p->tile_region_hash ( regId ); + + std::cout << " tile region " << hashId << " etaMin, etaMax, phiMin, phiMax= " + << dm_p ->eta_min(regId) << ", " + << dm_p ->eta_max(regId) << ", " + << dm_p ->phi_min(regId) << ", " + << dm_p ->phi_max(regId) + << std::endl; + + + Identifier regId2 = dm_p->tile_region_id ( hashId ); + + if ( regId2 != regId ) { + std::cout + << " tile regId2 incorrect: " << dm_p->show_to_string(regId2) + << " should be " << dm_p->show_to_string(regId) + << " hasId = " << hashId + << std::endl; + error = true; + } + + int detz = dm_p->pos_neg_z(regId); + int typ = dm_p->dmat(regId); + int samp = dm_p->sampling(regId); + int reg = dm_p->region(regId); + Identifier regId3 = dm_p->region_id (detz,typ,samp,reg); + if ( regId3 != regId ) { + std::cout + << " regId3 incorrect: " << dm_p->show_to_string(regId3) + << " should be " << dm_p->show_to_string(regId) + << std::endl; + error = true; + } + } + std::cout << "number of Tile regions(ref:20)= " << nReg << ", tile_region_hash_max= " << dm_p->tile_region_hash_max() << std::endl; + + if(!error) { + std::cout << "Tile DM decoding tests ok" << std::endl; + } + + std::cout << "finally check the exception throwing (lar and tile)... " << std::endl; + + try { + /*Identifier wrongRegionId =*/ dm_p->region_id (-4,-99,0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongRegionId =*/ dm_p->region_id (5,-99,0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongRegionId =*/ dm_p->region_id (0,-99,0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + + try { + /*Identifier wrongZoneId =*/ dm_p->zone_id (4,99,0,0, 0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongZoneId =*/ dm_p->zone_id (-5,99,0,0, 0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongZoneId =*/ dm_p->zone_id (0,99,0,0, 0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + + try { + Identifier goodRegionId = dm_p->region_id (4,1,0,0); + /*Identifier wrongZoneId =*/ dm_p->zone_id (goodRegionId,0,-99); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + std::cout << "... which is ok " << std::endl; +} + + + +int main (int argc, char* argv[]) +{ + if (argc < 2) return (1); + + IdDictParser parser; + IdDictMgr& idd = parser.parse (argv[1]); + std::cout << "got dict mgr " << std::endl; + + check_lar_dm_id_decoding(idd); + check_tile_dm_id_decoding(idd); + + return 0; +} + + + + + + diff --git a/Calorimeter/CaloIdentifier/test/test_cell_id.cxx b/Calorimeter/CaloIdentifier/test/test_cell_id.cxx new file mode 100755 index 0000000000000000000000000000000000000000..3f9a29954c1e40bf0bdb484f7b39cb7b75c5b3dc --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/test_cell_id.cxx @@ -0,0 +1,611 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Header: /build/atlas/cvs/atlas/offline/Calorimeter/CaloIdentifier/test/test_cell_id.cxx,v 1.19 2006-03-20 20:32:50 ssnyder Exp $ + +#include "IdDictParser/IdDictParser.h" +#include "Identifier/IdentifierHash.h" +#include "CaloIdentifier/CaloCell_ID.h" +#include <iostream> + + +static void +check_cell_id_decoding(IdDictMgr& idd) +{ + + std::cout << "=========> check_cell_id_decoding" << std::endl; + std::cout << "=========> check_cell_id_decoding" << std::endl; + + bool error = false; + + LArEM_ID em_id; + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init em from dict" << std::endl; + error = true; + } + const LArEM_ID* em_p = &em_id; + + LArEM_SuperCell_ID sem_id; + if(sem_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init sem from dict" << std::endl; + error = true; + } + const LArEM_SuperCell_ID* sem_p = &sem_id; + + LArHEC_ID hec_id; + if(hec_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init hec from dict" << std::endl; + error = true; + } + const LArHEC_ID* hec_p = &hec_id; + + LArFCAL_ID fcal_id; + if(fcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init fcal from dict" << std::endl; + error = true; + } + const LArFCAL_ID* fcal_p = &fcal_id; + + LArMiniFCAL_ID minifcal_id; + if(minifcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init minifcal from dict" << std::endl; + error = true; + } + const LArMiniFCAL_ID* minifcal_p = &minifcal_id; + + TileID tile_id; + if(tile_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init tile from dict" << std::endl; + error = true; + } + const TileID* tile_p = &tile_id; + + CaloCell_ID* calo_id = new CaloCell_ID(em_p, hec_p, fcal_p, minifcal_p, tile_p); + if(calo_id->initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init calocell from dict" << std::endl; + error = true; + } + + bool verif = calo_id->do_checks(); + std::cout << "verif0 = " << verif << std::endl; + calo_id->set_do_checks(true); + verif = calo_id->do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + // test of hash calculation + + // channels + std::map < Identifier, int > counter_scell; + std::vector<Identifier>::const_iterator itId = calo_id->cell_begin(); + std::vector<Identifier>::const_iterator itIdEnd = calo_id->cell_end(); + + int nChan=0; + int nEm=0; + int nEmBarrel=0; + int nEmEndCap=0; + int nEmECInner=0; + int nEmECOuter=0; + int nHec=0; + int nFcal=0; + int nTile=0; + + IdentifierHash min=0; + IdentifierHash max=0; + std::cout << "Will Start the Loop" << std::endl; + + for(; itId!=itIdEnd;++itId){ + Identifier chId = *itId; + // std::cout << " ================= NCHAN = " << nChan << std::endl; + nChan++; + + if(nChan == 1) std::cout << "test show_to_string with CaloCellID; chId = " << calo_id->show_to_string(chId) << std::endl; + + if(calo_id->is_em(chId)) { + nEm++; + calo_id->calo_cell_hash_range(chId, min, max); + // std::cout << "em: min, max " << min << " " << max << std::endl; + if(calo_id->is_em_barrel(chId)) { + nEmBarrel++; + if ( (em_p->sampling(chId) == 1) || (em_p->sampling(chId)==2) ){ + std::cout << "Found : " << em_p->sampling(chId) << " "; + std::cout << chId << " "; + chId.show(); + std::cout << " "; + std::cout << em_p->show_to_string(chId); + std::cout << std::endl; + int eta_div = 999; + int phi_div = 999; + if ( em_p->sampling(chId) == 1) { + eta_div = 8; + phi_div = 1; + } else { + eta_div = 1; + phi_div = 4; + } + if ( eta_div != 999 ){ + //int region = em_p->region(chId); + //int sampling = em_p->sampling(chId); + int eta = em_p->eta(chId); + int phi = em_p->phi(chId); + eta = floorf( ((float)eta)/eta_div ); + phi = floorf( ((float)phi)/phi_div ); + + Identifier sCellID = sem_p->channel_id( em_p->region_id(chId), eta,phi); + std::cout << "\t\tFound SC : " << sem_p->sampling(sCellID) << " "; + std::cout << sCellID << " "; + sCellID.show(); + std::cout << " "; + std::cout << sem_p->show_to_string(sCellID); + std::cout << std::endl; + if ( counter_scell.find(sCellID) == counter_scell.end() ){ + counter_scell[sCellID] = 1; + } else + counter_scell[sCellID] ++; + } + else std::cout << "\tWeird!!" << std::endl; + } + + } + else if(calo_id->is_em_endcap(chId)) { + nEmEndCap++; + if(calo_id->is_em_endcap_inner(chId)) { + nEmECInner++; + } + else if(calo_id->is_em_endcap_outer(chId)) { + nEmECOuter++; + } + } + } + else if(calo_id->is_hec(chId)) { + nHec++; + calo_id->calo_cell_hash_range(chId, min, max); + // std::cout << "hec: min, max " << min << " " << max << std::endl; + } + else if(calo_id->is_fcal(chId)) { + nFcal++; + calo_id->calo_cell_hash_range(chId, min, max); + // std::cout << "fcal: min, max " << min << " " << max << std::endl; + } + else if(calo_id->is_tile(chId)) { + nTile++; + calo_id->calo_cell_hash_range(chId, min, max); + // std::cout << "tile: min, max " << min << " " << max << std::endl; + } + + IdentifierHash hashId = calo_id->calo_cell_hash ( chId ); + // std::cout << "hashId = " << hashId << std::endl; + + int subcalo1 = calo_id->sub_calo(hashId); + IdentifierHash min2=0; + IdentifierHash max2=0; + calo_id->calo_cell_hash_range(subcalo1, min2, max2); + if ( min != min2 || max != max2 ) { + std::cout << "problem with min/max, subcalo, min, min2, max, max2 = " + << subcalo1 << " " << min << " " << min2 << " " << max << " " << max2 << std::endl; + error = true; + } + + int subcalo2=-1; + if(calo_id->is_em(chId)) { + IdentifierHash emHash = calo_id->subcalo_cell_hash(hashId, subcalo2) ; + if ( subcalo2 != subcalo1 ) { + std::cout << "(em)subcalo2 incorrect: " << subcalo2 + << " should be " << subcalo1 + << " hashId = " << hashId + << std::endl; + error = true; + } + IdentifierHash caloCellHash = calo_id->calo_cell_hash(CaloCell_ID::LAREM, emHash) ; + if(hashId != caloCellHash) { + std::cout << " em return trip check failed = " << caloCellHash << " " << emHash << std::endl; + error = true; + } + } + else if(calo_id->is_hec(chId)) { + IdentifierHash hecHash = calo_id->subcalo_cell_hash(hashId, subcalo2) ; + if ( subcalo2 != subcalo1 ) { + std::cout << "(hec)subcalo2 incorrect: " << subcalo2 + << " should be " << subcalo1 + << " hashId = " << hashId + << std::endl; + error = true; + } + IdentifierHash caloCellHash = calo_id->calo_cell_hash(CaloCell_ID::LARHEC, hecHash) ; + if(hashId != caloCellHash) { + std::cout << " hec return trip check failed = " << caloCellHash << " " << hecHash << std::endl; + error = true; + } + } + else if(calo_id->is_fcal(chId)) { + IdentifierHash fcalHash = calo_id->subcalo_cell_hash(hashId, subcalo2) ; + if ( subcalo2 != subcalo1 ) { + std::cout << "(fcal)subcalo2 incorrect: " << subcalo2 + << " should be " << subcalo1 + << " hashId = " << hashId + << std::endl; + error = true; + } + IdentifierHash caloCellHash = calo_id->calo_cell_hash(CaloCell_ID::LARFCAL, fcalHash) ; + if(hashId != caloCellHash) { + std::cout << " fcal return trip check failed = " << caloCellHash << " " << fcalHash << std::endl; + error = true; + } + } + else if(calo_id->is_tile(chId)) { + IdentifierHash tileHash = calo_id->subcalo_cell_hash(hashId, subcalo2) ; + if ( subcalo2 != subcalo1 ) { + std::cout << "(tile)subcalo2 incorrect: " << subcalo2 + << " should be " << subcalo1 + << " hashId = " << hashId + << std::endl; + error = true; + } + IdentifierHash caloCellHash = calo_id->calo_cell_hash(CaloCell_ID::TILE, tileHash) ; + if(hashId != caloCellHash) { + std::cout << " tile return trip check failed = " << caloCellHash << " " << tileHash << std::endl; + error = true; + } + } + + Identifier chanId1 = calo_id->cell_id ( hashId ); + + if ( chanId1 != chId ) { + std::cout + << " chanId1 incorrect: " << calo_id->show_to_string(chanId1) + << " should be " << calo_id->show_to_string(chId) + << " hashId = " << hashId + << std::endl; + error = true; + } + + int subcalo3 = calo_id->sub_calo(chId); + if ( subcalo3 != subcalo1 ) { + std::cout << " subcalo incorrect, subcalo3, subcalo1 = " << subcalo3 << " " << subcalo1 + << " chId = " << calo_id->show_to_string(chId) + << std::endl; + error = true; + } + + int bec = 888888; + int samp = 888888; + int reg = 888888; + int eta = 888888; + int phi = 888888; + if(calo_id->is_lar(chId)) { + bec = calo_id->pos_neg(chId); + samp = calo_id->sampling(chId); + reg = calo_id->region(chId); + eta = calo_id->eta(chId); + phi = calo_id->phi(chId); + } + else if(calo_id->is_tile(chId)) { + bec = calo_id->section(chId); + samp = calo_id->side(chId); + reg = calo_id->module(chId); + eta = calo_id->tower(chId); + phi = calo_id->sample(chId); + } + + Identifier chanId3 = calo_id->cell_id (subcalo3, bec, samp, reg, eta, phi); + if ( chanId3 != chId ) { + std::cout << "chanId3 incorrect: " << calo_id->show_to_string(chanId3) + << " should be " << calo_id->show_to_string(chId) + << " input val of subcalo3, bec, samp, reg= " << subcalo3 << " " << bec << " " << samp << " " << reg + << " input val of eta, phi= " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier regId = calo_id->region_id (chId); + if(!calo_id->is_tile(chId)) { + Identifier chanId2 = calo_id->cell_id (regId, eta, phi); + if ( chanId2 != chId ) { + std::cout << "chanId2 incorrect: " << calo_id->show_to_string(chanId2) + << " should be " << calo_id->show_to_string(chId) + << " regId " << calo_id->show_to_string(regId) + << " input val of eta, phi= " << eta << " " << phi + << std::endl; + error = true; + } + } + + int subcalo4=-1; + IdentifierHash subHashId = calo_id->subcalo_cell_hash (chId, subcalo4) ; + if ( subcalo4 != subcalo1 ) { + std::cout << " subcalo incorrect, subcalo4, subcalo1 = " << subcalo4 << " " << subcalo1 + << " chId = " << calo_id->show_to_string(chId) + << std::endl; + error = true; + } + Identifier chanId4 = calo_id->cell_id ( subcalo3, subHashId ); + if ( chanId4 != chId ) { + std::cout + << " chanId4 incorrect: " << calo_id->show_to_string(chanId4) + << " should be " << calo_id->show_to_string(chId) + << " subcalo3, subHashId = " << subcalo3 << " " << subHashId + << std::endl; + error = true; + } + + + } + std::map<Identifier,int>::const_iterator it,itE; + it = counter_scell.begin(); + itE = counter_scell.end(); + for( ; it!=itE;++it){ + std::cout << "SC ID : " << sem_p->sampling((*it).first) + << " " << (*it).first << " "; + std::cout << "; Number : " << (*it).second; + std::cout << std::endl; + } + + //sub-calos + for (int subCalo = 0; subCalo < CaloCell_ID::NSUBCALO; subCalo++) { + itId = calo_id->cell_begin(subCalo); + itIdEnd = calo_id->cell_end(subCalo); + int nSubCalo = 0; + for(; itId!=itIdEnd;++itId){ + nSubCalo++; + } + calo_id->calo_cell_hash_range(subCalo,min,max); + std::cout << "subCalo, min, max " << subCalo << " " << min << " " << max << std::endl; + if ( nSubCalo != (int)(max-min) ) { + std::cout << "nSubCalo incorrect: " << nSubCalo + << " should be max - min " << max << " - " << min + << std::endl; + error = true; + } + + } + + std::cout << "total number of cells= " << nChan << ", calo_cell_hash_max= " << calo_id->calo_cell_hash_max() << std::endl; + std::cout << "number of Em, Hec, Fcal, Tile cells= " << nEm << ", " << nHec << ", " << nFcal << ", " << nTile << std::endl; + std::cout << "number of Em Barrel, EndCap cells= " << nEmBarrel << ", " << nEmEndCap << std::endl; + std::cout << "number of Em EndCap Inner, Outer cells= " << nEmECInner << ", " << nEmECOuter << std::endl; + std::cout << " ====================================== " << std::endl; + + + // AL--> TESTS + + //int LARTEST= 8321; + //const int subCalo = CaloCell_ID::GetSubCaloName( LARTEST ); + //std::cout << "====> TEST of GetSubCaloName ..." << CaloCell_ID::NSUBCALO << " Returned int= " << subCalo << std::endl; + + + + // regions + itId = calo_id->reg_begin(); + itIdEnd = calo_id->reg_end(); + + int nReg=0; + + for(; itId!=itIdEnd;++itId){ + + nReg++; + Identifier regId = *itId; + + + IdentifierHash hashId = calo_id->calo_region_hash ( regId ); + + std::cout << " region " << calo_id->sub_calo(regId) << " " << hashId << " etaMin, etaMax, phiMin, phiMax= " + << calo_id ->eta_min(regId) << ", " + << calo_id ->eta_max(regId) << ", " + << calo_id ->phi_min(regId) << ", " + << calo_id ->phi_max(regId) + << std::endl; + + // std::cout << " region " << hashId << " eta, phi granularities= " << calo_id->etaGranularity(regId) + // << ", " << calo_id->phiGranularity(regId) << std::endl; + + Identifier regId1 = calo_id->region_id ( hashId ); + if ( regId1 != regId ) { + std::cout + << " regId1 incorrect: " << calo_id->show_to_string(regId1) + << " should be " << calo_id->show_to_string(regId) + << " hasId = " << hashId + << std::endl; + error = true; + } + + + int subcalo = calo_id->sub_calo(regId); + + calo_id->calo_reg_hash_range(regId, min, max); + IdentifierHash min2=0; + IdentifierHash max2=0; + calo_id->calo_reg_hash_range(subcalo, min2, max2); + if ( min != min2 || max != max2 ) { + std::cout << "problem with region min/max, subcalo, min, min2, max, max2 = " + << subcalo << " " << min << " " << min2 << " " << max << " " << max2 << std::endl; + error = true; + } + + int subcalo2=-1; + IdentifierHash subHashId = calo_id->subcalo_region_hash (hashId, subcalo2) ; + if ( subcalo2 != subcalo ) { + std::cout << "(region loop) subcalo2 incorrect: " << subcalo2 + << " should be " << subcalo + << " hashId = " << hashId + << std::endl; + error = true; + } + IdentifierHash hashId2 = calo_id->calo_region_hash (subcalo, subHashId) ; + if ( hashId2 != hashId ) { + std::cout << "hashId2 incorrect: " << hashId2 + << " should be " << hashId + << std::endl; + error = true; + } + + int bec = calo_id->pos_neg(regId); + int samp = calo_id->sampling(regId); + int reg = calo_id->region(regId); + if(!calo_id->is_tile(regId)) { + Identifier regId2 = calo_id->region_id (subcalo, bec, samp, reg); + if ( regId2 != regId ) { + std::cout << "regId2 incorrect: " << calo_id->show_to_string(regId2) + << " should be " << calo_id->show_to_string(regId) + << " input val of subcalo, bec, samp, reg= " << subcalo << " " << bec << " " << samp << " " << reg + << std::endl; + error = true; + } + } + + int subcalo3 = -1; + IdentifierHash subHashId2 = calo_id->subcalo_region_hash (regId, subcalo3) ; + if ( subcalo3 != subcalo ) { + std::cout << "(region loop) subcalo3 incorrect: " << subcalo3 + << " should be " << subcalo + << " hashId = " << hashId + << std::endl; + error = true; + } + Identifier regId3 = calo_id->region_id ( subcalo, subHashId2 ); + if ( regId3 != regId ) { + std::cout + << " regId3 incorrect: " << calo_id->show_to_string(regId3) + << " should be " << calo_id->show_to_string(regId) + << " subHashId2 = " << subHashId2 + << std::endl; + error = true; + } + + } + std::cout << "number of regions= " << nReg << ", calo_region_hash_max= " << calo_id->calo_region_hash_max() << std::endl; + + if(!error) { + std::cout << "calo cell decoding tests ok" << std::endl; + } + + std::cout << "finally check the exception throwing... " << std::endl; + try { + /*Identifier wrongChanId =*/ calo_id->cell_id (0, 99, 0, 0, 0, 0); + } + catch ( LArID_Exception &excpt ) { + std::cout << "*** LArID_Exception caught: " << excpt.message() + << std::endl + << "*** error code: " << excpt.code() + << std::endl; + } + std::cout << "... which is ok " << std::endl; + + + +} + +static void +check_cell_neighbours(IdDictMgr& idd) +{ + + std::cout << "=========> check_cell_neighbours" << std::endl; + std::cout << "=========> check_cell_neighbours" << std::endl; + + bool error = false; + + LArEM_ID em_id; + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_neighbours - cannot init em from dict" << std::endl; + } + const LArEM_ID* em_p = &em_id; + + LArHEC_ID hec_id; + if(hec_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_neighbours - cannot init hec from dict" << std::endl; + } + const LArHEC_ID* hec_p = &hec_id; + + LArFCAL_ID fcal_id; + if(fcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_neighbours - cannot init fcal from dict" << std::endl; + } + const LArFCAL_ID* fcal_p = &fcal_id; + + LArMiniFCAL_ID minifcal_id; + if(minifcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init minifcal from dict" << std::endl; + error = true; + } + const LArMiniFCAL_ID* minifcal_p = &minifcal_id; + + TileID tile_id; + if(tile_id.initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init tile from dict" << std::endl; + error = true; + } + const TileID* tile_p = &tile_id; + + CaloCell_ID* calo_id = new CaloCell_ID(em_p, hec_p, fcal_p, minifcal_p, tile_p); + if(calo_id->initialize_from_dictionary (idd)) { + std::cout << "check_cell_id_decoding - cannot init calocell from dict" << std::endl; + error = true; + } + + + // loop on cell hashes + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 888888 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < calo_id->calo_cell_hash_max(); ++iCell){ + Identifier cellId = calo_id->cell_id(iCell); + calo_id->calo_cell_hash_range(cellId, hash_min, hash_max); + + int res_neighb = calo_id->get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + if(res_neighb) { + std::cout << "return code of get_neighbours not ok for iCell = " << iCell << "cellId = " << calo_id->show_to_string(cellId) << std::endl; + } + else { + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min || neighbourHash > hash_max) { + std::cout << " neighbour index " << neighbourHash << " outside of det boundaries for iCell " << iCell << std::endl; + error = true; + } + } + } + } + + if(!error) { + std::cout << "calo cell neighbours micro tests ok" << std::endl; + } +} + + +int main (int argc, char* argv[]) +{ + if (argc < 2) return (1); + + IdDictParser parser; + std::string lArIDFileName = "IdDictLArCalorimeter_DC3-05-Comm-01.xml"; + // std::string lArIDFileName = "IdDictLArCalorimeter.xml"; + // std::string lArIDFileName = "IdDictLArCalorimeter_H8_2004.xml"; + // std::string lArIDFileName = "IdDictLArCalorimeter_H6_2004.xml"; + parser.register_external_entity("LArCalorimeter", lArIDFileName); + IdDictMgr& idd = parser.parse (argv[1]); + std::cout << "got dict mgr " << std::endl; + + // Set some default file names for neighbours (RDS 12/2009): + idd.add_metadata("FULLATLASNEIGHBORS", "SuperCaloNeighbours-DC3-05-Comm-01.dat"); + idd.add_metadata("FCAL2DNEIGHBORS", "FCal2DNeighbors-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSNEXT", "FCal3DNeighborsNext-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSPREV", "FCal3DNeighborsPrev-DC3-05-Comm-01.txt"); + idd.add_metadata("TILENEIGHBORS", "TileNeighbour_reduced.txt"); + + + std::cout << "HELLO" << std::endl; + check_cell_neighbours(idd); + check_cell_id_decoding(idd); + + return 0; +} + + + + + + diff --git a/Calorimeter/CaloIdentifier/test/test_lar_id.cxx b/Calorimeter/CaloIdentifier/test/test_lar_id.cxx new file mode 100755 index 0000000000000000000000000000000000000000..36fcc9801923bd95b16abb6cf19c43fe894d415a --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/test_lar_id.cxx @@ -0,0 +1,2224 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Header: /build/atlas/cvs/atlas/offline/Calorimeter/CaloIdentifier/test/test_lar_id.cxx,v 1.25 2007-02-19 15:56:25 fledroit Exp $ + +#include "IdDictParser/IdDictParser.h" +#include "Identifier/Range.h" +#include "Identifier/IdentifierHash.h" +#include "CaloIdentifier/LArEM_ID.h" +#include "CaloIdentifier/LArHEC_ID.h" +#include "CaloIdentifier/LArFCAL_ID.h" +#include "CaloIdentifier/LArMiniFCAL_ID.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "GaudiKernel/System.h" +#include <iostream> + +typedef Identifier::size_type size_type ; + +#if 0 +static void tab (size_t level) +{ + for (size_t i = 0; i < level; ++i) std::cout << " "; +} +#endif + +void +check_lar_neighbour_timing(IdDictMgr& idd) +{ + + std::cout << "=====================================> Begin check_lar_neighbour_timing " << std::endl; + std::cout << "=====================================> Begin check_lar_neighbour_timing " << std::endl; + + // Check the timing for lar em + + LArEM_ID em_id; + + longlong startOfUserTime = System::userTime( System::microSec ); + longlong startOfKernelTime = System::kernelTime ( System::microSec ); + longlong startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_neighbour_timing - cannot init from dict" << std::endl; + } + + std::cout << "Timing for init from dictionary " << std::endl; + + /// following lines could be platform dependent! + longlong deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + /// + longlong deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + /// + longlong deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "tries, user, kernel, elapsed " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << std::endl; + + + /// Loop over all channel hashes + size_type hash_max = em_id.channel_hash_max (); + + std::cout << "Number of channels " << hash_max + << std::endl; + + int nloops = 300; + long long n = 0; + + + /// Empty loop + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + float num = hash_max*nloops; + std::cout << "Empty loop " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + float user = (float)deltaUser/num; + float kernel = (float)deltaKernel/num; + float elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier access + + /// Store in object the measured times + Identifier channel_id; + IdContext channelContext = em_id.channel_context(); + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + +// const std::vector<Identifier>* em_vec = em_id.em_vec(); +// std::vector<Identifier>::const_iterator em_vec_begin = em_id.em_vec()->begin(); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash (plus eta) " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier access from vector + + const std::vector<Identifier>& channel_ids = em_id.channel_ids(); + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + +// const std::vector<Identifier>* em_vec = em_id.em_vec(); +// std::vector<Identifier>::const_iterator em_vec_begin = em_id.em_vec()->begin(); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = channel_ids[i]; + n += em_id.eta(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash (plus eta) " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and barrel_ec field access + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + em_id.barrel_ec(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and access barrel_ec field " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and sampling field access + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + em_id.sampling(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and access sampling field " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and region field access + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + em_id.region(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and access region field " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and eta field access + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.phi(channel_id) + em_id.eta(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and access eta field " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and phi field access + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + em_id.phi(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and access phi field " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and region id from channel id + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + Identifier region_id; + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + em_id.region_id(channel_id).get_compact(); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and get region id from channel id " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + + /// Identifier access and hash access again + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + + em_id.channel_hash_binary_search(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and get hash back again " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + /// Identifier access and hash access again calc + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + n += em_id.eta(channel_id) + em_id.channel_hash(channel_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash and get hash back again, calc " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + + /// Identifier access, for region + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + size_type reg_hash_max = em_id.region_hash_max (); + IdContext regionContext = em_id.region_context(); + + nloops = 1000; + + float num_reg = reg_hash_max*100*nloops; + + std::cout << "Number of region " << reg_hash_max + << std::endl; + + n = 0; + for (int j = 0; j < 100*nloops; ++j) { + for (size_type i=0; i<reg_hash_max; ++i) { + ++n; +// em_id.get_id(i, region_id, ®ionContext); + region_id = em_id.region_id(i); + n += em_id.region(region_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash for region " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num_reg << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num_reg; + kernel = (float)deltaKernel/num_reg; + elapsed = (float)deltaElapsed/num_reg; + std::cout << "tries, user, kernel, elapsed " + << num_reg << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + /// Identifier access and hash access again, for region + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < 100*nloops; ++j) { + for (size_type i=0; i<reg_hash_max; ++i) { + ++n; +// em_id.get_id(i, region_id, ®ionContext); + region_id = em_id.region_id(i); + n += em_id.region(region_id) + em_id.region_hash(region_id); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID from hash for region and get hash back again " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num_reg << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num_reg; + kernel = (float)deltaKernel/num_reg; + elapsed = (float)deltaElapsed/num_reg; + std::cout << "tries, user, kernel, elapsed " + << num_reg << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + + /// Identifier and channel fields access + + /// Store in object the measured times + int barrel_ec; + int sampling; + int region; + int eta; + int phi; + + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + nloops = 100; + num = hash_max*nloops; + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + barrel_ec = em_id.barrel_ec(channel_id); + sampling = em_id.sampling(channel_id); + region = em_id.region(channel_id); + eta = em_id.eta(channel_id); + phi = em_id.phi(channel_id); + n += barrel_ec + sampling + region + eta + phi; + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID and channel fields " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + /// Identifier and channel fields access and channel ID again + + Identifier ch_id; + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + barrel_ec = em_id.barrel_ec(channel_id); + sampling = em_id.sampling(channel_id); + region = em_id.region(channel_id); + eta = em_id.eta(channel_id); + phi = em_id.phi(channel_id); + ch_id = em_id.channel_id(barrel_ec, sampling, region, eta, phi); + n += barrel_ec + sampling + region + eta + phi + ch_id.get_compact(); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID and channel fields and channel ID again " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + /// Identifier and channel fields access + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + region_id = em_id.region_id(channel_id); + eta = em_id.eta(channel_id); + phi = em_id.phi(channel_id); + n += eta + phi; + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID, region id and eta/phi fields " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + /// Identifier and channel fields access and channel ID again + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + n = 0; + for (int j = 0; j < nloops; ++j) { + for (size_type i=0; i<hash_max; ++i) { + ++n; +// em_id.get_id(i, channel_id, &channelContext); + channel_id = em_id.channel_id(i); + region_id = em_id.region_id(channel_id); + eta = em_id.eta(channel_id); + phi = em_id.phi(channel_id); + n += eta + phi + em_id.channel_id(region_id, eta, phi).get_compact(); + } + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "Get ID and eta/phi fields and channel ID again " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + /// Access to neighbours + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + try { + for (size_type i=0; i<hash_max; ++i) { + std::vector<IdentifierHash> neighbourList; + em_id.get_neighbours(i, LArNeighbours::all3D, neighbourList); + } + } + + catch ( LArID_Exception &excpt ) { + std::cout << "*** LArID_Exception caught: " << excpt.message() + << std::endl + << "*** error code: " << excpt.code() + << std::endl; + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + num = hash_max; + std::cout << "Get all neighbours " << std::endl; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << n << " " + << std::endl; + user = (float)deltaUser/num; + kernel = (float)deltaKernel/num; + elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << num << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + + + +} + +void +check_lar_timing(IdDictMgr& idd) +{ + + // Check the timing for lar em + + std::cout << "=====================================> check_lar_timing" << std::endl; + std::cout << "=====================================> check_lar_timing" << std::endl; + + LArEM_ID em_id; + + longlong startOfUserTime = System::userTime( System::microSec ); + longlong startOfKernelTime = System::kernelTime ( System::microSec ); + longlong startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_timing - cannot init from dict" << std::endl; + } + + std::cout << "Timing for init from dictionary " << std::endl; + + /// following lines could be platform dependent! + longlong deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + /// + longlong deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + /// + longlong deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "tries, user, kernel, elapsed " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << std::endl; + + // regions + IdContext regionContext = em_id.region_context(); + std::vector<Identifier>::const_iterator itId = em_id.reg_begin(); +// std::vector<Identifier>::const_iterator itIdEnd = em_id.reg_end(); + +// for(; itId!=itIdEnd;++itId){ + + Identifier reg_id = *itId; + + em_id.show(reg_id); + + std::cout << "eta min, max, phi max " << em_id.eta_min(reg_id) << " " + << em_id.eta_max(reg_id) << " " + << em_id.phi_max(reg_id) << " " + << std::endl; + int eta_min = em_id.eta_min(reg_id); + int eta_max = em_id.eta_max(reg_id); + int phiMin = 0; + int phiMax = em_id.phi_max(reg_id); + + + // Switch between doing checks or not + //em_id.set_do_checks(true); + + std::cout << "Do checks " << em_id.do_checks() << std::endl; + + // Switch between initializing neighbours or not + // em_id.set_do_neighbours(false); + + std::cout << "Do neighbours " << em_id.do_neighbours() << std::endl; + + + /// Store in object the measured times + startOfUserTime = System::userTime( System::microSec ); + startOfKernelTime = System::kernelTime ( System::microSec ); + startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + int n=0; + try { + + for (int i=0; i<1000; ++i) { + for (int eta=eta_min; eta <= eta_max; ++eta) { + for (int phi=phiMin; phi <= phiMax; ++phi) { + +// eta = 500; +// std::cout << " eta " << eta << std::endl; + + /*Identifier channel_id =*/ em_id.channel_id(reg_id, eta, phi); + n++; + + +// int bec = em_id.barrel_ec(reg_id); +// int samp = em_id.sampling(reg_id); +// int reg = em_id.region(reg_id); +// // int eta = em_id.eta(channel_id); +// // int phi = em_id.phi(channel_id); + +// std::cout << "bec, samp, reg " << std::dec << bec << " " << samp << " " << reg << std::endl; + + +// Identifier chanId = em_id.channel_id (bec, samp, reg, eta, phi); + +// std::cout << std::hex << channel_id.get_compact() << " " +// << chanId.get_compact() << " " +// << channel_id.get_compact() - chanId.get_compact() +// << std::endl; + + + } + } + } + } + + catch ( LArID_Exception &excpt ) { + std::cout << "*** LArID_Exception caught: " << excpt.message() + << std::endl + << "*** error code: " << excpt.code() + << std::endl; + } + + /// following lines could be platform dependent! + deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + + deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + + deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "tries, user, kernel, elapsed " + << n << " " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << std::endl; + float num = n; + float user = (float)deltaUser/num; + float kernel = (float)deltaKernel/num; + float elapsed = (float)deltaElapsed/num; + std::cout << "tries, user, kernel, elapsed " + << n << " " + << user << " " + << kernel << " " + << elapsed << " " + << std::endl; + + +} + +//------------------------------------------------------------------------------------------------ + +static void +check_lar_em_decoding(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_em_decoding" << std::endl; + std::cout << "=====================================> check_lar_em_decoding" << std::endl; + + LArEM_ID em_id; + + bool voisins = em_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + em_id.set_do_neighbours(false); + voisins = em_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + bool error = false; + + std::cout << "calling initialize_from_dictionary " << std::endl; + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_em_decoding - cannot init from dict" << std::endl; + error = true; + } + + std::cout << "dictionary version = " << em_id.dictionaryVersion() << std::endl; + + bool verif = em_id.do_checks(); + std::cout << "verif0 = " << verif << std::endl; + em_id.set_do_checks(true); + verif = em_id.do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + // test of hash calculation + + // channels + IdContext channelContext = em_id.channel_context(); + std::vector<Identifier>::const_iterator itId = em_id.em_begin(); + std::vector<Identifier>::const_iterator itIdEnd = em_id.em_end(); + + int nChan=0; + + + for(; itId!=itIdEnd;++itId){ + + Identifier ch_id = *itId; + if(em_id.is_lar_em(ch_id)) { + + nChan++; + IdentifierHash hashId; + int not_ok = em_id.get_hash ( ch_id, hashId, &channelContext); + if(not_ok) { + std::cout << "EM: error in get_hash, ch_id = " + << em_id.show_to_string(ch_id) + << std::endl; + error = true; + } + + Identifier ch_id2; + not_ok = em_id.get_id ( hashId, ch_id2, &channelContext); + if(not_ok) { + std::cout + << "EM: error in get_id, hashId = " + << hashId + << std::endl; + error = true; + } + + if ( ch_id2 != ch_id ) { + std::cout + << " EM: ch_id2 incorrect: " << em_id.show_to_string(ch_id2) + << " should be " << em_id.show_to_string(ch_id) + << " hasId = " << hashId + << std::endl; + error = true; + } + + IdentifierHash hashId2 = em_id.channel_hash(ch_id); + if(hashId2!=hashId) { + error=true; + } + + int bec = em_id.barrel_ec(ch_id); + int samp = em_id.sampling(ch_id); + int reg = em_id.region(ch_id); + int eta = em_id.eta(ch_id); + int phi = em_id.phi(ch_id); + + Identifier chanId ; + try { + chanId = em_id.channel_id (bec, samp, reg, eta, phi); + } + catch ( LArID_Exception &excpt ) { + std::cout << "*** LArID_Exception caught: " << excpt.message() + << std::endl + << "*** error code: " << excpt.code() + << std::endl; + } + + if ( chanId != ch_id ) { + std::cout + << "EM: chanId incorrect: " << em_id.show_to_string(chanId) + << " should be " << em_id.show_to_string(ch_id) + << " input val of bec, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier regId = em_id.region_id (bec, samp, reg); + Identifier chanId2 = em_id.channel_id (regId, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "EM: chanId2 incorrect: " << em_id.show_to_string(chanId2) + << " should be " << em_id.show_to_string(chanId) + << " regId " << em_id.show_to_string(regId) + << " input val of bec, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + } + } + + // regions + itId = em_id.reg_begin(); + itIdEnd = em_id.reg_end(); + + for(; itId!=itIdEnd;++itId){ + Identifier regId = *itId; + IdentifierHash regHash = em_id.region_hash(regId); + std::cout << "EM region, eta0, phi0 = " << em_id.show_to_string(regId) + << " " << em_id.eta0(regHash) + << " " << em_id.phi0(regHash) + << std::endl; + Identifier regId2 = em_id.region_id(regHash); + if(regId2 != regId) { + std::cout << "EM: regId2 incorrect: " << em_id.show_to_string(regId2) + << " should be " << em_id.show_to_string(regId) + << " hash reg = " << regHash + << std::endl; + } + /* + int phiMin0 = em_id.phi_min(regId); + int phiMin1 = em_id.phi_min_opt(regId); + if(phiMin0 != phiMin1) { + std::cout << " optimised phi_min giving result different from std phi_min : " + << phiMin1 << " != " << phiMin0 << std::endl; + error = true; + } + */ + } + + if(!error) { + std::cout << "lar em decoding tests ok, nChan= " << nChan << std::endl; + } + + std::cout << "finally check the exception throwing... " << std::endl; + try { + /*Identifier wrongRegionId =*/ em_id.region_id (0,99,0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongChannelId =*/ em_id.channel_id (0,99,0,0,0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + Identifier goodRegionId = em_id.region_id (1,0,0); + /*Identifier wrongChannelId =*/ em_id.channel_id (goodRegionId,0,-99); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + std::cout << "... which is ok " << std::endl; +} + +static void check_lar_disc_em_decoding(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_disc_em_decoding" << std::endl; + std::cout << "=====================================> check_lar_disc_em_decoding" << std::endl; + + LArEM_ID em_id; + + bool voisins = em_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + em_id.set_do_neighbours(false); + voisins = em_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_disc_em_decoding - cannot init from dict" << std::endl; + } + + + // disconnected channels + std::vector<Identifier>::const_iterator itId = em_id.disc_em_begin(); + std::vector<Identifier>::const_iterator itIdEnd = em_id.disc_em_end(); + + int nChan=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + + Identifier ch_id = *itId; + if(!em_id.is_connected(ch_id)) { + nChan++; + + IdentifierHash hashId = em_id.disc_channel_hash(ch_id) ; + bool ok = em_id.is_connected(hashId); + if ( ok ) { + std::cout + << " EM: pb with is_connected(hash): true in disc loop !!!" + << " ch_id = " << em_id.show_to_string(ch_id) + << " hashId = " << hashId + << std::endl; + error = true; + } + + Identifier ch_id2 = em_id.disc_channel_id(hashId); + + if ( ch_id2 != ch_id ) { + std::cout + << " EM: disc ch_id2 incorrect: " << em_id.show_to_string(ch_id2) + << " should be " << em_id.show_to_string(ch_id) + << " hashId = " << hashId + << std::endl; + error = true; + } + + IdentifierHash hashId2 = em_id.disc_channel_hash(ch_id); + // IdentifierHash hashId3 = em_id.channel_hash(ch_id); + // std::cout << "disc_hash, hash=" << hashId2 << " " << hashId3 << std::endl; + if(hashId2<em_id.channel_hash_max()) { + std::cout << " wrong disconnected hash index " << hashId2 + << " less than channel_hash_max " << em_id.channel_hash_max() + << " for channel " << em_id.show_to_string(ch_id) << std::endl; + error=true; + } + + int bec = em_id.barrel_ec(ch_id); + int samp = em_id.sampling(ch_id); + int reg = em_id.region(ch_id); + Identifier regId = em_id.disc_region_id (bec, samp, reg); + + int eta = em_id.disc_eta(ch_id); + int phi = em_id.disc_phi(ch_id); + + try{ + ok = em_id.is_connected (bec, samp, reg, eta, phi); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + if ( ok ) { + std::cout + << " EM: pb with is_connected: true in disc loop !!!" + << " bec,samp,reg,eta,phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier chanId = em_id.disc_channel_id (bec, samp, reg, eta, phi); + if ( chanId != ch_id ) { + std::cout + << "disc EM: chanId incorrect: " << em_id.show_to_string(chanId) + << " should be " << em_id.show_to_string(ch_id) + << " input val of bec, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + /* essai pour Guillaume + chanId = em_id.channel_id (bec, samp, reg, eta, phi); + std::cout << "channelId= " << em_id.show_to_string(chanId) << std::endl; + hashId = em_id.channel_hash(chanId) ; + std::cout << "hashId= " << hashId << std::endl; + */ + + Identifier chanId2 = em_id.channel_id (regId, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "disc EM: chanId2 incorrect: " << em_id.show_to_string(chanId2) + << " should be " << em_id.show_to_string(chanId) + << " regId " << em_id.show_to_string(regId) + << " input val of bec, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + } + } + if(!error) { + std::cout << "lar disc_em decoding tests ok, nChan=" << nChan << std::endl; + } +} + +static void +check_lar_hec_decoding(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_hec_decoding" << std::endl; + std::cout << "=====================================> check_lar_hec_decoding" << std::endl; + + LArHEC_ID hec_id; + + bool voisins = hec_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + hec_id.set_do_neighbours(false); + voisins = hec_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(hec_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_hec_decoding - cannot init from dict" << std::endl; + } + + std::cout << "dictionary version = " << hec_id.dictionaryVersion() << std::endl; + + bool verif = hec_id.do_checks(); + std::cout << "verif0 = " << verif << std::endl; + hec_id.set_do_checks(true); + verif = hec_id.do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + // test of hash calculation + + // channels + IdContext channelContext = hec_id.channel_context(); + std::vector<Identifier>::const_iterator itId = hec_id.hec_begin(); + std::vector<Identifier>::const_iterator itIdEnd = hec_id.hec_end(); + + int nChan=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + + Identifier ch_id = *itId; + if(hec_id.is_lar_hec(ch_id)) { + + nChan++; + IdentifierHash hashId; + int not_ok = hec_id.get_hash ( ch_id, hashId, &channelContext); + if(not_ok) { + std::cout << "HEC: error in get_hash, ch_id = " + << hec_id.show_to_string(ch_id) + << std::endl; + error = true; + } + + Identifier ch_id2; + not_ok = hec_id.get_id ( hashId, ch_id2, &channelContext); + if(not_ok) { + std::cout + << "HEC: error in get_id, hashId = " + << hashId + << std::endl; + error = true; + } + + if ( ch_id2 != ch_id ) { + std::cout + << " HEC: ch_id2 incorrect: " << hec_id.show_to_string(ch_id2) + << " should be " << hec_id.show_to_string(ch_id) + << " hasId = " << hashId + << std::endl; + error = true; + } + + int bec = hec_id.pos_neg(ch_id); + int samp = hec_id.sampling(ch_id); + int reg = hec_id.region(ch_id); + int eta = hec_id.eta(ch_id); + int phi = hec_id.phi(ch_id); + + Identifier chanId = hec_id.channel_id (bec, samp, reg, eta, phi); + if ( chanId != ch_id ) { + std::cout + << "HEC: chanId incorrect: " << hec_id.show_to_string(chanId) + << " should be " << hec_id.show_to_string(ch_id) + << " input val of pn, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier regId = hec_id.region_id (bec, samp, reg); + Identifier chanId2 = hec_id.channel_id (regId, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "HEC: chanId2 incorrect: " << hec_id.show_to_string(chanId2) + << " should be " << hec_id.show_to_string(chanId) + << " regId " << hec_id.show_to_string(regId) + << " input val of pn, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + } + } + // regions + itId = hec_id.reg_begin(); + itIdEnd = hec_id.reg_end(); + + for(; itId!=itIdEnd;++itId){ + Identifier regId = *itId; + IdentifierHash regHash = hec_id.region_hash(regId); + std::cout << "HEC region, eta0, phi0 = " << hec_id.show_to_string(regId) + << " " << hec_id.eta0(regHash) + << " " << hec_id.phi0(regHash) + << std::endl; + /* + int phiMin0 = hec_id.phi_min(regId); + int phiMin1 = hec_id.phi_min_opt(regId); + if(phiMin0 != phiMin1) { + std::cout << " optimised phi_min giving result different from std phi_min : " + << phiMin1 << " != " << phiMin0 << std::endl; + error = true; + } + */ + } + + if(!error) { + std::cout << "lar hec decoding tests ok, nChan= " << nChan << std::endl; + } + + std::cout << "finally check the exception throwing... " << std::endl; + try { + /*Identifier wrongRegionId =*/ hec_id.region_id (0,99,0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongChannelId =*/ hec_id.channel_id (0,99,0,0,0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + Identifier goodRegionId = hec_id.region_id (2,0,0); + /*Identifier wrongChannelId =*/ hec_id.channel_id (goodRegionId,0,-99); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + std::cout << "... which is ok " << std::endl; +} + +static void check_lar_disc_hec_decoding(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_disc_hec_decoding" << std::endl; + std::cout << "=====================================> check_lar_disc_hec_decoding" << std::endl; + + LArHEC_ID hec_id; + + bool voisins = hec_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + hec_id.set_do_neighbours(false); + voisins = hec_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(hec_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_disc_hec_decoding - cannot init from dict" << std::endl; + } + + + // test of hash calculation + + + + // disconnected channels + std::vector<Identifier>::const_iterator itId = hec_id.disc_hec_begin(); + std::vector<Identifier>::const_iterator itIdEnd = hec_id.disc_hec_end(); + + int nChan=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + + Identifier ch_id = *itId; + if(!hec_id.is_connected(ch_id)) { + nChan++; + + IdentifierHash hashId = hec_id.disc_channel_hash(ch_id) ; + + bool ok = hec_id.is_connected(hashId); + if ( ok ) { + std::cout + << " HEC: pb with is_connected(hash): true in disc loop !!!" + << " ch_id = " << hec_id.show_to_string(ch_id) + << " hashId = " << hashId + << std::endl; + error = true; + } + + Identifier ch_id2 = hec_id.disc_channel_id(hashId); + + if ( ch_id2 != ch_id ) { + std::cout + << " HEC: disc ch_id2 incorrect: " << hec_id.show_to_string(ch_id2) + << " should be " << hec_id.show_to_string(ch_id) + << " hashId = " << hashId + << std::endl; + error = true; + } + + int bec = hec_id.pos_neg(ch_id); + int samp = hec_id.sampling(ch_id); + int reg = hec_id.region(ch_id); + Identifier regId = hec_id.disc_region_id (bec, samp, reg); + + int eta = hec_id.disc_eta(ch_id); + int phi = hec_id.disc_phi(ch_id); + + try{ + ok = hec_id.is_connected (bec, samp, reg, eta, phi); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + if ( ok ) { + std::cout + << " HEC: pb with is_connected: true in disc loop !!!" + << " bec,samp,reg,eta,phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier chanId = hec_id.disc_channel_id (bec, samp, reg, eta, phi); + if ( chanId != ch_id ) { + std::cout + << "disc HEC: chanId incorrect: " << hec_id.show_to_string(chanId) + << " should be " << hec_id.show_to_string(ch_id) + << " input val of pn, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier chanId2 = hec_id.channel_id (regId, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "disc HEC: chanId2 incorrect: " << hec_id.show_to_string(chanId2) + << " should be " << hec_id.show_to_string(chanId) + << " regId " << hec_id.show_to_string(regId) + << " input val of pn, samp, reg, eta, phi= " << bec << " " << samp << " " << reg << " " << eta << " " << phi + << std::endl; + error = true; + } + + } + } + if(!error) { + std::cout << "lar disc_hec decoding tests ok, nChan=" << nChan << std::endl; + } +} + +static void +check_lar_fcal_decoding(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_minifcal_decoding" << std::endl; + std::cout << "=====================================> check_lar_minifcal_decoding" << std::endl; + + LArMiniFCAL_ID minifcal_id; + + + bool voisinsMF = minifcal_id.do_neighbours(); + std::cout << "voisinsMF0 = " << voisinsMF << std::endl; + minifcal_id.set_do_neighbours(false); + voisinsMF = minifcal_id.do_neighbours(); + std::cout << "voisinsMF1 = " << voisinsMF << std::endl; + + if(minifcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_minifcal_decoding - cannot init from dict" << std::endl; + } + std::cout << "dictionary version (MiniFcal) = " << minifcal_id.dictionaryVersion() << std::endl; + + bool verifm = minifcal_id.do_checks(); + std::cout << "verif0 = " << verifm << std::endl; + minifcal_id.set_do_checks(true); + verifm = minifcal_id.do_checks(); + std::cout << "verif1 = " << verifm << std::endl; + + IdContext mfchannelContext = minifcal_id.channel_context(); + std::vector<Identifier>::const_iterator itIdMF = minifcal_id.minifcal_begin(); + std::vector<Identifier>::const_iterator itIdEndMF = minifcal_id.minifcal_end(); + + int nChanMF=0; + int nChanMF2=0; + + bool errorMF = false; + + for(; itIdMF!=itIdEndMF;++itIdMF){ + + Identifier ch_id = *itIdMF; + nChanMF2++; + if(minifcal_id.is_lar_fcal(ch_id)) { + + nChanMF++; + IdentifierHash hashId; + int not_ok = minifcal_id.get_hash ( ch_id, hashId, &mfchannelContext); + if(not_ok) { + std::cout << "MINIFCAL: errorMF in get_hash, ch_id = " + << minifcal_id.show_to_string(ch_id) + << std::endl; + errorMF = true; + } + + Identifier ch_id2; + not_ok = minifcal_id.get_id ( hashId, ch_id2, &mfchannelContext); + if(not_ok) { + std::cout + << "MINIFCAL: errorMF in get_id, hashId = " + << hashId + << std::endl; + errorMF = true; + } + + if ( ch_id2 != ch_id ) { + std::cout + << " MINIFCAL: ch_id2 incorrect: " << minifcal_id.show_to_string(ch_id2) + << " should be " << minifcal_id.show_to_string(ch_id) + << " hasId = " << hashId + << std::endl; + errorMF = true; + } + + int bec = minifcal_id.pos_neg(ch_id); + int samp = minifcal_id.module(ch_id); + int depth = minifcal_id.depth(ch_id); + int eta = minifcal_id.eta(ch_id); + int phi = minifcal_id.phi(ch_id); + + Identifier chanId = minifcal_id.channel_id (bec, samp, depth, eta, phi); + if ( chanId != ch_id ) { + std::cout + << "MINIFCAL: chanId incorrect: " << minifcal_id.show_to_string(chanId) + << " should be " << minifcal_id.show_to_string(ch_id) + << " input val of pn, mod, depth, eta, phi= " << bec << " " << samp << " " << depth << " " << eta << " " << phi + << std::endl; + errorMF = true; + } + + Identifier regId = minifcal_id.module_id (bec, samp); + Identifier chanId2 = minifcal_id.channel_id (regId, depth, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "MINIFCAL: chanId2 incorrect: " << minifcal_id.show_to_string(chanId2) + << " should be " << minifcal_id.show_to_string(chanId) + << " modId " << minifcal_id.show_to_string(regId) + << " input val of pn, mod, depth, eta, phi= " << bec << " " << samp << " " << depth << " " << eta << " " << phi + << std::endl; + errorMF = true; + } + } + } + + // regions + itIdMF = minifcal_id.mod_begin(); + itIdEndMF = minifcal_id.mod_end(); + + for(; itIdMF!=itIdEndMF;++itIdMF){ + Identifier modId = *itIdMF; + IdentifierHash modHash = minifcal_id.module_hash(modId); + std::cout << "MINIFCAL region, eta0, phi0 = " << minifcal_id.show_to_string(modId) + << " " << minifcal_id.eta0(modHash) + << " " << minifcal_id.phi0(modHash) + << std::endl; + + } + + if(!errorMF) { + std::cout << "lar minifcal decoding tests ok, nChanMF= " << nChanMF << " and really all: " << nChanMF2 << std::endl; + } + std::cout << "finally check the exception throwing... " << std::endl; + try { + /*Identifier wrongModuleId =*/ minifcal_id.module_id (0,99); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongChannelId =*/ minifcal_id.channel_id (0,99,0,0,0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + Identifier goodModuleId = minifcal_id.module_id (2,0); + /*Identifier wrongChannelId =*/ minifcal_id.channel_id (goodModuleId,0, 99, 0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + std::cout << "... which is ok ...? " << std::endl; + + + std::cout << "=====================================> check_lar_fcal_decoding" << std::endl; + std::cout << "=====================================> check_lar_fcal_decoding" << std::endl; + + LArFCAL_ID fcal_id; + + bool voisins = fcal_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + fcal_id.set_do_neighbours(false); + voisins = fcal_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(fcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_fcal_decoding - cannot init from dict" << std::endl; + } + + std::cout << "dictionary version = " << fcal_id.dictionaryVersion() << std::endl; + + bool verif = fcal_id.do_checks(); + std::cout << "verif0 = " << verif << std::endl; + fcal_id.set_do_checks(true); + verif = fcal_id.do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + // test of hash calculation + + // channels + IdContext channelContext = fcal_id.channel_context(); + std::vector<Identifier>::const_iterator itId = fcal_id.fcal_begin(); + std::vector<Identifier>::const_iterator itIdEnd = fcal_id.fcal_end(); + + int nChan=0; + int nChan2=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + + Identifier ch_id = *itId; + nChan2++; + if(fcal_id.is_lar_fcal(ch_id)) { + + nChan++; + IdentifierHash hashId; + int not_ok = fcal_id.get_hash ( ch_id, hashId, &channelContext); + if(not_ok) { + std::cout << "FCAL: error in get_hash, ch_id = " + << fcal_id.show_to_string(ch_id) + << std::endl; + error = true; + } + + Identifier ch_id2; + not_ok = fcal_id.get_id ( hashId, ch_id2, &channelContext); + if(not_ok) { + std::cout + << "FCAL: error in get_id, hashId = " + << hashId + << std::endl; + error = true; + } + + if ( ch_id2 != ch_id ) { + std::cout + << " FCAL: ch_id2 incorrect: " << fcal_id.show_to_string(ch_id2) + << " should be " << fcal_id.show_to_string(ch_id) + << " hasId = " << hashId + << std::endl; + error = true; + } + + int bec = fcal_id.pos_neg(ch_id); + int samp = fcal_id.module(ch_id); + int eta = fcal_id.eta(ch_id); + int phi = fcal_id.phi(ch_id); + + Identifier chanId = fcal_id.channel_id (bec, samp, eta, phi); + if ( chanId != ch_id ) { + std::cout + << "FCAL: chanId incorrect: " << fcal_id.show_to_string(chanId) + << " should be " << fcal_id.show_to_string(ch_id) + << " input val of pn, mod, eta, phi= " << bec << " " << samp << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier regId = fcal_id.module_id (bec, samp); + Identifier chanId2 = fcal_id.channel_id (regId, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "FCAL: chanId2 incorrect: " << fcal_id.show_to_string(chanId2) + << " should be " << fcal_id.show_to_string(chanId) + << " modId " << fcal_id.show_to_string(regId) + << " input val of pn, mod, eta, phi= " << bec << " " << samp << " " << eta << " " << phi + << std::endl; + error = true; + } + } + } + // regions + itId = fcal_id.mod_begin(); + itIdEnd = fcal_id.mod_end(); + + for(; itId!=itIdEnd;++itId){ + Identifier modId = *itId; + IdentifierHash modHash = fcal_id.module_hash(modId); + std::cout << "FCAL region, eta0, phi0 = " << fcal_id.show_to_string(modId) + << " " << fcal_id.eta0(modHash) + << " " << fcal_id.phi0(modHash) + << std::endl; + /* + int phiMin0 = fcal_id.phi_min(modId); + int phiMin1 = fcal_id.phi_min_opt(modId); + if(phiMin0 != phiMin1) { + std::cout << " optimised phi_min giving result different from std phi_min : " + << phiMin1 << " != " << phiMin0 << std::endl; + error = true; + } + */ + } + + if(!error) { + std::cout << "lar fcal decoding tests ok, nChan= " << nChan << " and really all: " << nChan2 << std::endl; + } + std::cout << "finally check the exception throwing... " << std::endl; + try { + /*Identifier wrongModuleId =*/ fcal_id.module_id (0,99); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongChannelId =*/ fcal_id.channel_id (0,99,0,0); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + Identifier goodModuleId = fcal_id.module_id (2,1); + /*Identifier wrongChannelId =*/ fcal_id.channel_id (goodModuleId,0,-99); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + std::cout << "... which is ok " << std::endl; +} + +static void check_lar_disc_fcal_decoding(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_disc_fcal_decoding" << std::endl; + std::cout << "=====================================> check_lar_disc_fcal_decoding" << std::endl; + + LArFCAL_ID fcal_id; + + bool voisins = fcal_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + fcal_id.set_do_neighbours(false); + voisins = fcal_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(fcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_disc_fcal_decoding - cannot init from dict" << std::endl; + } + + + // test of hash calculation + + + + // disconnected channels + std::vector<Identifier>::const_iterator itId = fcal_id.disc_fcal_begin(); + std::vector<Identifier>::const_iterator itIdEnd = fcal_id.disc_fcal_end(); + + int nChan=0; + + bool error = false; + + for(; itId!=itIdEnd;++itId){ + + Identifier ch_id = *itId; + if(!fcal_id.is_connected(ch_id)) { + nChan++; + + IdentifierHash hashId = fcal_id.disc_channel_hash(ch_id) ; + + bool ok = fcal_id.is_connected(hashId); + if ( ok ) { + std::cout + << " FCAL: pb with is_connected(hash): true in disc loop !!!" + << " ch_id = " << fcal_id.show_to_string(ch_id) + << " hashId = " << hashId + << std::endl; + error = true; + } + Identifier ch_id2 = fcal_id.disc_channel_id(hashId); + + if ( ch_id2 != ch_id ) { + std::cout + << " FCAL: disc ch_id2 incorrect: " << fcal_id.show_to_string(ch_id2) + << " should be " << fcal_id.show_to_string(ch_id) + << " hashId = " << hashId + << std::endl; + error = true; + } + + int bec = fcal_id.pos_neg(ch_id); + int samp = fcal_id.module(ch_id); + Identifier regId = fcal_id.disc_module_id (bec, samp); + + int eta = fcal_id.disc_eta(ch_id); + int phi = fcal_id.disc_phi(ch_id); + + try{ + ok = fcal_id.is_connected (bec, samp, eta, phi); + } + catch(LArID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + if ( ok ) { + std::cout + << " FCAL: pb with is_connected: true in disc loop !!!" + << " bec,samp,eta,phi= " << bec << " " << samp << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier chanId = fcal_id.disc_channel_id (bec, samp, eta, phi); + if ( chanId != ch_id ) { + std::cout + << "disc FCAL: chanId incorrect: " << fcal_id.show_to_string(chanId) + << " should be " << fcal_id.show_to_string(ch_id) + << " input val of pn, mod, eta, phi= " << bec << " " << samp << " " << eta << " " << phi + << std::endl; + error = true; + } + + Identifier chanId2 = fcal_id.channel_id (regId, eta, phi); + if ( chanId2 != chanId ) { + std::cout << "disc FCAL: chanId2 incorrect: " << fcal_id.show_to_string(chanId2) + << " should be " << fcal_id.show_to_string(chanId) + << " modId " << fcal_id.show_to_string(regId) + << " input val of pn, mod, eta, phi= " << bec << " " << samp << " " << eta << " " << phi + << std::endl; + error = true; + } + + } + } + if(!error) { + std::cout << "lar disc_fcal decoding tests ok, nChan=" << nChan << std::endl; + } +} + + +static void check_lar_neighbour(IdDictMgr& idd) +{ + + std::cout << "=====================================> check_lar_neighbour" << std::endl; + std::cout << "=====================================> check_lar_neighbour" << std::endl; + + LArEM_ID em_id; + + bool voisins = em_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + em_id.set_do_neighbours(true); + voisins = em_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(em_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_neighbour - cannot init from dict" << std::endl; + } + + std::vector<IdentifierHash> neighbourList; + IdentifierHash hash_min = 999999 ; + IdentifierHash hash_max = 0 ; + for (unsigned int iCell = 0 ; iCell < em_id.channel_hash_max(); ++iCell){ + /*Identifier cellId =*/ em_id.channel_id(iCell); + + em_id.get_neighbours(iCell, LArNeighbours::all3D, neighbourList); + + std::vector<IdentifierHash>::iterator first=neighbourList.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min ) { + hash_min = neighbourHash; + } + if(neighbourHash > hash_max) { + hash_max = neighbourHash; + } + + } + } + + std::cout << " = = = = = = = = = = = " << std::endl; + std::cout << "lar_neighbour tests: " + << " min em neighbour index = " << hash_min + << " max em neighbour index = " << hash_max + << " channel_hash_max = " << em_id.channel_hash_max() + << std::endl; + std::cout << " = = = = = = = = = = = " << std::endl; + + LArHEC_ID hec_id; + + voisins = hec_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + hec_id.set_do_neighbours(true); + voisins = hec_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(hec_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_neighbour - cannot init from dict" << std::endl; + } + + std::vector<IdentifierHash> neighbourList2; + IdentifierHash hash_min2 = 999999 ; + IdentifierHash hash_max2 = 0 ; + for (unsigned int iCell = 0 ; iCell < hec_id.channel_hash_max(); ++iCell){ + /*Identifier cellId =*/ hec_id.channel_id(iCell); + + hec_id.get_neighbours(iCell, LArNeighbours::all3D, neighbourList2); + + std::vector<IdentifierHash>::iterator first=neighbourList2.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList2.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min2 ) { + hash_min2 = neighbourHash; + } + if(neighbourHash > hash_max2) { + hash_max2 = neighbourHash; + } + + } + } + + std::cout << " = = = = = = = = = = = " << std::endl; + std::cout << "lar_neighbour tests: " + << " min hec neighbour index = " << hash_min2 + << " max hec neighbour index = " << hash_max2 + << " channel_hash_max = " << hec_id.channel_hash_max() + << std::endl; + std::cout << " = = = = = = = = = = = " << std::endl; + + LArFCAL_ID fcal_id; + + voisins = fcal_id.do_neighbours(); + std::cout << "voisins0 = " << voisins << std::endl; + fcal_id.set_do_neighbours(true); + voisins = fcal_id.do_neighbours(); + std::cout << "voisins1 = " << voisins << std::endl; + + if(fcal_id.initialize_from_dictionary (idd)) { + std::cout << "check_lar_neighbour - cannot init from dict" << std::endl; + } + + std::vector<IdentifierHash> neighbourList3; + IdentifierHash hash_min3 = 999999 ; + IdentifierHash hash_max3 = 0 ; + for (unsigned int iCell = 0 ; iCell < fcal_id.channel_hash_max(); ++iCell){ + /*Identifier cellId =*/ fcal_id.channel_id(iCell); + + fcal_id.get_neighbours(iCell, LArNeighbours::all3D, neighbourList3); + + std::vector<IdentifierHash>::iterator first=neighbourList3.begin(); + std::vector<IdentifierHash>::iterator last=neighbourList3.end(); + for (;last!=first; first++){ + + IdentifierHash neighbourHash=(*first); + if(neighbourHash < hash_min3 ) { + hash_min3 = neighbourHash; + } + if(neighbourHash > hash_max3) { + hash_max3 = neighbourHash; + } + + } + } + + std::cout << " = = = = = = = = = = = " << std::endl; + std::cout << "lar_neighbour tests: " + << " min fcal neighbour index = " << hash_min3 + << " max fcal neighbour index = " << hash_max3 + << " channel_hash_max = " << fcal_id.channel_hash_max() + << std::endl; + std::cout << " = = = = = = = = = = = " << std::endl; +} + + +int main (int argc, char* argv[]) +{ + if (argc < 2) return (1); + + + longlong startOfUserTime = System::userTime( System::microSec ); + longlong startOfKernelTime = System::kernelTime ( System::microSec ); + longlong startOfElapsedTime = System::ellapsedTime ( System::microSec ); + + + + IdDictParser parser; + + //<<<<<<< test_lar_id.cxx + // standard dict: + //std::string lArIDFileName = "IdDictLArCalorimeter_DC3-05-Comm-01.xml"; + // For sLHC: + std::string lArIDFileName = "IdDictLArCalorimeter_sLHC-MiniFcal-00.xml"; + // std::string lArIDFileName = "IdDictLArCalorimeter_H8_2004.xml"; + // std::string lArIDFileName = "IdDictLArCalorimeter_H6_2004.xml"; + parser.register_external_entity("LArCalorimeter", lArIDFileName); + std::string caloIDFileName = "IdDictCalorimeter_L1Onl.xml"; + parser.register_external_entity("Calorimeter", caloIDFileName); + IdDictMgr& idd = parser.parse (argv[1]); +// IdDictMgr& idd = parser.parse (argv[1], "initial_layout"); + + + // Set some default file names for neighbours (RDS 12/2009): + idd.add_metadata("FULLATLASNEIGHBORS", "SuperCaloNeighbours-DC3-05-Comm-01.dat"); + idd.add_metadata("FCAL2DNEIGHBORS", "FCal2DNeighbors-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSNEXT", "FCal3DNeighborsNext-DC3-05-Comm-01.txt"); + idd.add_metadata("FCAL3DNEIGHBORSPREV", "FCal3DNeighborsPrev-DC3-05-Comm-01.txt"); + idd.add_metadata("TILENEIGHBORS", "TileNeighbour_reduced.txt"); + + std::cout << "Timing for parsing dictionaries " << std::endl; + + /// following lines could be platform dependent! + longlong deltaUser = System::userTime ( System::microSec ) - startOfUserTime ; + /// + longlong deltaKernel = System::kernelTime ( System::microSec ) - startOfKernelTime ; + /// + longlong deltaElapsed = System::ellapsedTime( System::microSec ) - startOfElapsedTime ; + + std::cout << "tries, user, kernel, elapsed " + << deltaUser << " " + << deltaKernel << " " + << deltaElapsed << " " + << std::endl; + + + + + std::cout << "got dict mgr " << std::endl; +// std::cout << "regenerate for tag = initial_layout " << std::endl; +// idd.generate_implementation ("initial_layout"); + + check_lar_em_decoding(idd); + + check_lar_disc_em_decoding(idd); + + check_lar_hec_decoding(idd); + + check_lar_disc_hec_decoding(idd); + + check_lar_fcal_decoding(idd); + + check_lar_disc_fcal_decoding(idd); + + check_lar_neighbour(idd); + + // check_lar_timing(idd); + + // check_lar_neighbour_timing(idd); + + return 0; +} + + + + + + diff --git a/Calorimeter/CaloIdentifier/test/test_lvl1_id.cxx b/Calorimeter/CaloIdentifier/test/test_lvl1_id.cxx new file mode 100755 index 0000000000000000000000000000000000000000..abb50a89cfe8b574f4337c5e8bf98d383bd8d7e8 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/test_lvl1_id.cxx @@ -0,0 +1,450 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + + +// $Header: /build/atlas/cvs/atlas/offline/Calorimeter/CaloIdentifier/test/test_lvl1_id.cxx,v 1.7 2006-12-13 23:03:15 ssnyder Exp $ + +#include "IdDictParser/IdDictParser.h" +#include "Identifier/IdentifierHash.h" +#include "CaloIdentifier/CaloLVL1_ID.h" +#include <iostream> +#include <cassert> + +static void +test_id(const CaloLVL1_ID& idh, Identifier id) +{ + if(idh.is_tile (id)) std::cout << "is_tile" << std::endl; + if(idh.is_indet (id)) std::cout << "is_indet" << std::endl; + if(idh.is_lar (id)) std::cout << "is_lar" << std::endl; + if(idh.is_muon (id)) std::cout << "is_muon" << std::endl; + if(idh.is_calo (id)) std::cout << "is_calo" << std::endl; + if(idh.is_lvl1_trig_towers(id)) std::cout << "is_lvl" << std::endl; + if(idh.is_pixel (id)) std::cout << "is_pixel" << std::endl; + if(idh.is_sct (id)) std::cout << "is_sct" << std::endl; + if(idh.is_trt (id)) std::cout << "is_trt" << std::endl; + if(idh.is_lar_em (id)) std::cout << "is_lar_em" << std::endl; + if(idh.is_lar_hec (id)) std::cout << "is_lar_hec" << std::endl; + if(idh.is_lar_fcal (id)) std::cout << "is_lar_fcal" << std::endl; + if(idh.is_lar_dm (id)) std::cout << "is_lar_dm" << std::endl; + if(idh.is_tile_dm (id)) std::cout << "is_tile_dm" << std::endl; + if(idh.is_mdt (id)) std::cout << "is_mdt" << std::endl; + if(idh.is_csc (id)) std::cout << "is_csc" << std::endl; + if(idh.is_tgc (id)) std::cout << "is_tgc" << std::endl; + if(idh.is_rpc (id)) std::cout << "is_rpc" << std::endl; +} + +static void +check_lvl1_id_decoding(IdDictMgr& idd) +{ + + std::cout << "=========> check_lvl1_id_decoding" << std::endl; + std::cout << "=========> check_lvl1_id_decoding" << std::endl; + + CaloLVL1_ID lvl1_id; + if(lvl1_id.initialize_from_dictionary (idd)) { + std::cout << "check_lvl1_id_decoding - cannot init lvl1 from dict" << std::endl; + } + + // Test LVL1 + Identifier id = lvl1_id.layer_id(-1, 1, 2, 0, 5, 2); + std::cout << "id " << lvl1_id.show_to_string(id) + << " " << id << std::endl; + test_id(lvl1_id, id); + + + // Test LVL1 + id = lvl1_id.lar_lvl1(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + + // Test LAr DM + id = lvl1_id.lar_dm(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + // Test Tile DM + id = lvl1_id.tile_dm(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + + id = lvl1_id.indet(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.lar(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.tile(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + std::cout << "is_tile " << lvl1_id.is_tile(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.muon(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.calo(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.pixel(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.sct(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.trt(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.lar_em(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.lar_hec(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.lar_fcal(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.mdt(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.csc(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.rpc(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); + + id = lvl1_id.tgc(); + std::cout << "id " << lvl1_id.show_to_string(id) << std::endl; + test_id(lvl1_id, id); +} + +static void +check_lvl1_helper(IdDictMgr& idd) +{ + + std::cout << "=========> check_lvl1_helper" << std::endl; + std::cout << "=========> check_lvl1_helper" << std::endl; + + CaloLVL1_ID lvl1Id; + if(lvl1Id.initialize_from_dictionary (idd)) { + std::cout << "check_lvl1_helper - cannot init lvl1 from dict" << std::endl; + } + const CaloLVL1_ID* lvl1_id = &lvl1Id; + + + bool verif = lvl1_id->do_checks(); + std::cout << "verif0 = " << verif << std::endl; + lvl1_id->set_do_checks(true); + verif = lvl1_id->do_checks(); + std::cout << "verif1 = " << verif << std::endl; + + + IdContext towerContext = lvl1_id->tower_context(); + IdContext layerContext = lvl1_id->layer_context(); + IdContext regionContext = lvl1_id->region_context(); + + // regions + std::vector<Identifier>::const_iterator itId = lvl1_id->region_begin(); + std::vector<Identifier>::const_iterator itIdEnd = lvl1_id->region_end(); + + bool error = false; + int nreg=0; + + for(; itId!=itIdEnd;++itId){ + Identifier regId = *itId; + // std::cout << " ================= NREG = " << nreg << std::endl; + nreg++; + + // + // ... in tower context + // + int posNeg = lvl1_id->pos_neg_z(regId); + int sampling = lvl1_id->sampling(regId); + int region = lvl1_id->region(regId); + + Identifier regId2 = lvl1_id->region_id (posNeg, sampling, region) ; + + if (regId2 != regId) { + std::cout + << "error in region_id " + << " regId " << lvl1_id->show_to_string(regId) + << " regId2 " << lvl1_id->show_to_string(regId2) + << std::endl; + error = true; + } + std::cout << "region: " << lvl1_id->show_to_string(regId) << std::endl; + std::cout << "etamin, etamax= " << lvl1_id->eta_min(regId) + << " " << lvl1_id->eta_max(regId) << std::endl; + std::cout << "phimax, laymax= " << lvl1_id->phi_max(regId) + << " " << lvl1_id->layer_max(regId) << std::endl; + } + std::cout << "number of regions= " << nreg << ", region_hash_max= " << lvl1_id->region_hash_max() << std::endl; + + + // towers + itId = lvl1_id->tower_begin(); + itIdEnd = lvl1_id->tower_end(); + + int nChan=0; + + for(; itId!=itIdEnd;++itId){ + Identifier ttId = *itId; + // std::cout << " ================= NCHAN = " << nChan << std::endl; + nChan++; + + // + // ... in tower context + // + int posNeg = lvl1_id->pos_neg_z(ttId); + int sampling = lvl1_id->sampling(ttId); + int region = lvl1_id->region(ttId); + int eta = lvl1_id->eta(ttId); + int phi = lvl1_id->phi(ttId); + + Identifier regId = lvl1_id->region_id (posNeg, sampling, region) ; + + IdentifierHash regHash; + int not_ok = lvl1_id->get_hash ( regId, regHash, ®ionContext); + if(not_ok) { + std::cout + << "error in get_hash" + << " regId " << lvl1_id->show_to_string(regId) + << std::endl; + error = true; + } + Identifier regId2; + not_ok = lvl1_id->get_id (regHash, regId2, ®ionContext); + if(not_ok) { + std::cout + << "error in get_id (region constext)" + << " regId2 " << lvl1_id->show_to_string(regId2) + << " regHash " << regHash + << std::endl; + error = true; + } + Identifier regId3 = lvl1_id->region_id(regHash); + if (regId3 != regId) { + std::cout + << "error in region_id(regHash)" + << " regId " << lvl1_id->show_to_string(regId) + << " regId3 " << lvl1_id->show_to_string(regId3) + << " regHash = " << regHash + << std::endl; + error = true; + } + + + Identifier ttId3 = lvl1_id->tower_id (regId, eta, phi) ; + if (ttId3 != ttId) { + std::cout + << "error in tower_id(regId, eta, phi)" + << " ttId " << lvl1_id->show_to_string(ttId) + << " ttId3 " << lvl1_id->show_to_string(ttId3) + << "input fields = " << lvl1_id->show_to_string(regId) << " " << eta << " " << phi + << std::endl; + error = true; + } + Identifier ttId2 = lvl1_id->tower_id (posNeg, sampling, region, eta, phi) ; + if (ttId2 != ttId) { + std::cout + << "error in tower_id(posNeg, sampling, region, eta, phi)" + << " ttId " << lvl1_id->show_to_string(ttId) + << " ttId2 " << lvl1_id->show_to_string(ttId2) + << "input fields = " << posNeg << " " << sampling << " " << region << " " << eta << " " << phi + << std::endl; + error = true; + } + + // + // ... now test 'return trip' to hash + // + // ... in tower context + // + IdentifierHash hashId; + + not_ok = lvl1_id->get_hash ( ttId, hashId, &towerContext); + if(not_ok) { + std::cout + << "error in get_hash" + << " ttId " << lvl1_id->show_to_string(ttId) + << std::endl; + error = true; + } + + assert (lvl1_id->tower_hash(ttId) == hashId); + + not_ok = lvl1_id->get_id ( hashId, ttId2, &towerContext); + if(not_ok) { + std::cout + << "error in get_id" + << " id " << lvl1_id->show_to_string(ttId2) + << " hash " << hashId + << std::endl; + error = true; + } + assert (ttId == ttId2); + + ttId2 = lvl1_id->tower_id(hashId); + assert (ttId == ttId2); + + } + std::cout << "number of towers= " << nChan << ", tower_hash_max= " << lvl1_id->tower_hash_max() << std::endl; + std::cout << ", region_hash_max= " << lvl1_id->region_hash_max() << std::endl; + + // + // ... then in layer context + // + + itId = lvl1_id->layer_begin(); + itIdEnd = lvl1_id->layer_end(); + + nChan=0; + + for(; itId!=itIdEnd;++itId){ + Identifier layId = *itId; + // std::cout << " ================= NCHAN = " << nChan << std::endl; + nChan++; + + // + // ... in layer context + // + int posNeg = lvl1_id->pos_neg_z(layId); + int sampling = lvl1_id->sampling(layId); + int region = lvl1_id->region(layId); + int eta = lvl1_id->eta(layId); + int phi = lvl1_id->phi(layId); + int lay = lvl1_id->layer(layId); + + Identifier ExtTtId ; + try { + ExtTtId = lvl1_id->layer_id (posNeg, sampling, region, eta, phi, lay) ; + } + catch(CaloID_Exception & except){ + error = true; + std::cout + << " CaloId exception 1 " + << (std::string)except + << std::endl; + } + + Identifier ttId = lvl1_id->tower_id(layId) ; + Identifier ExtTtId2 ; + try { + ExtTtId2 = lvl1_id->layer_id (ttId, lay) ; + } + catch(CaloID_Exception & except){ + error = true; + std::cout + << " CaloId exception 2 " + << (std::string)except + << std::endl; + } + assert ( ExtTtId2 == ExtTtId); + + // + // ... then return trip to hash in layer context + // + IdentifierHash hashId; + int not_ok = lvl1_id->get_hash ( ExtTtId, hashId, &layerContext); + if(not_ok) { + std::cout + << "error in get_hash" + << " ExtTtId " << lvl1_id->show_to_string(ExtTtId) + << " hashId " << hashId + << std::endl; + error = true; + } + + not_ok = lvl1_id->get_id ( hashId, ExtTtId2, &layerContext); + if(not_ok) { + std::cout + << "error in get_id" + << " id " << lvl1_id->show_to_string(ExtTtId2) + << " hash " << hashId + << std::endl; + error = true; + } + + assert (ExtTtId == ExtTtId2); + + } // end loop on lay + + std::cout << "number of layers= " << nChan << ", layer_hash_max= " << lvl1_id->layer_hash_max() << std::endl; + + if(!error) { + std::cout << "calo decoding tests ok" << std::endl; + } + + std::cout << "finally check the exception throwing (lar and tile)... " << std::endl; + + try { + /*Identifier wrongRegionId =*/ lvl1_id->region_id (0,-99,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + /*Identifier wrongTowerId =*/ lvl1_id->tower_id (0,-99,0, 0,0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + + try { + /*Identifier wrongLayerId =*/ lvl1_id->layer_id (4,99,0, 0,0, 0); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + Identifier goodRegionId = lvl1_id->region_id (-1,0,0); + /*Identifier wrongTowerId =*/ lvl1_id->tower_id (goodRegionId,0,-99); + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + try { + Identifier goodTowerId = lvl1_id->tower_id (-1,0,0, 0,0); + std::cout << lvl1_id->show_to_string(goodTowerId) << std::endl; + Identifier wrongLayerId = lvl1_id->layer_id (goodTowerId, -99); + std::cout << lvl1_id->show_to_string(wrongLayerId) << std::endl; + } + catch(CaloID_Exception & except){ + std::cout << (std::string) except << std::endl ; + } + std::cout << "... which is ok " << std::endl; +} + +int main (int argc, char* argv[]) +{ + if (argc < 2) return (1); + + IdDictParser parser; + IdDictMgr& idd = parser.parse (argv[1]); + std::cout << "got dict mgr " << std::endl; + + check_lvl1_id_decoding(idd); + check_lvl1_helper(idd); + + return 0; +} + + + + + + diff --git a/Calorimeter/CaloIdentifier/test/tile_id_test_common.cxx b/Calorimeter/CaloIdentifier/test/tile_id_test_common.cxx new file mode 100644 index 0000000000000000000000000000000000000000..233f32c6c00b104afdea34e204f73e53e1bdf570 --- /dev/null +++ b/Calorimeter/CaloIdentifier/test/tile_id_test_common.cxx @@ -0,0 +1,519 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file CaloIdentifier/test/tile_id_test_common.cxx + * @author scott snyder + * @date Aug 2012 + * @brief Code common between TileID_test and Tile_SuperCell_ID test. + * This file is meant to be included in another file, + * not compiled separately. + */ + + +#include "hash_test.h" + + +// This because test differencing ignored lines containing `0x...' +std::string munghex (const std::string& h) +{ + if (h.size() > 2 && h[0] == '0' && h[1] == 'x') + return "hex(" + h.substr (2, std::string::npos) + ")"; + return h; +} +void basic_print_id (const Tile_Base_ID& idhelper, const Identifier& id) +{ + std::cout << idhelper.show_to_string (id) << " " + << munghex(id.getString()) << "\n"; +} + + +class Tile_ID_Test + : public Tile_Base_ID +{ +public: + using Tile_Base_ID::tile_field_value; +}; + + +class CellCounter +{ +public: + CellCounter(); + void count(int sect, int samp); + void report(); + + +private: + enum { + N_REG = 4, + N_SAMP = 4 + }; + unsigned m_counts[N_REG][N_SAMP]; +}; + + +CellCounter::CellCounter() +{ + for (unsigned i=0; i < N_REG; i++) + for (unsigned j=0; j < N_SAMP; j++) + m_counts[i][j] = 0; +} + + +void CellCounter::count (int sect, int samp) +{ + sect -= 1; + if (sect >= N_REG) sect = N_REG-1; + if (samp < 0 || samp >= N_SAMP) std::abort(); + ++m_counts[sect][samp]; +} + + +void CellCounter::report() +{ + unsigned tot[N_REG] = {0}; + printf ("Sampling Barrel Ext Barrel Gap Other\n"); + for (unsigned s=0; s < N_SAMP; s++) { + printf ("%2d %4d %4d %4d %4d\n", + s, + m_counts[0][s], m_counts[1][s], m_counts[2][s], + m_counts[3][s]); + for (unsigned b=0; b < N_REG; b++) + tot[b] += m_counts[b][s]; + } + printf ("Total %4d %4d %4d %4d Grand total: %4d\n", + tot[0], tot[1], tot[2], tot[3], + tot[0]+tot[1]+tot[2]+tot[3]); +} + + +void region_check (const Tile_Base_ID& idhelper, Identifier id) +{ + assert (idhelper.is_tile (id)); + int sect = idhelper.section(id); + if (sect == Tile_Base_ID::BARREL) { + assert ( idhelper.is_tile_barrel(id)); + assert (!idhelper.is_tile_extbarrel(id)); + assert (!idhelper.is_tile_gap(id)); + assert (!idhelper.is_tile_aux(id)); + } + else if (sect == Tile_Base_ID::EXTBAR) { + assert (!idhelper.is_tile_barrel(id)); + assert ( idhelper.is_tile_extbarrel(id)); + assert (!idhelper.is_tile_gap(id)); + assert (!idhelper.is_tile_aux(id)); + } + else if (sect == Tile_Base_ID::GAPDET) { + assert (!idhelper.is_tile_barrel(id)); + assert (!idhelper.is_tile_extbarrel(id)); + assert ( idhelper.is_tile_gap(id)); + assert (!idhelper.is_tile_aux(id)); + } + else { + assert (!idhelper.is_tile_barrel(id)); + assert (!idhelper.is_tile_extbarrel(id)); + assert (!idhelper.is_tile_gap(id)); + assert ( idhelper.is_tile_aux(id)); + } + + int side = idhelper.side(id); + if (side == Tile_Base_ID::NEGATIVE) { + assert ( idhelper.is_negative(id)); + assert (!idhelper.is_positive(id)); + assert (!idhelper.is_twosides(id)); + } + else if (side == Tile_Base_ID::POSITIVE) { + assert (!idhelper.is_negative(id)); + assert ( idhelper.is_positive(id)); + assert (!idhelper.is_twosides(id)); + } + else if (side == Tile_Base_ID::TWOSIDES) { + assert (!idhelper.is_negative(id)); + assert (!idhelper.is_positive(id)); + assert ( idhelper.is_twosides(id)); + } + + int adc = idhelper.adc(id); + if (adc == Tile_Base_ID::LOWGAIN) { + assert ( idhelper.is_low_gain(id)); + assert (!idhelper.is_high_gain(id)); + } + else if (adc == Tile_Base_ID::HIGHGAIN) { + assert (!idhelper.is_low_gain(id)); + assert ( idhelper.is_high_gain(id)); + } + + int samp = idhelper.sample (id); + if (samp == Tile_Base_ID::SAMP_E) + assert (idhelper.is_tile_gapscin(id)); + else + assert (!idhelper.is_tile_gapscin(id)); + + assert (idhelper.system(id) == 5); // tile + + if (sect == Tile_Base_ID::AUXDET) + assert (idhelper.sample(id) == Tile_Base_ID::SAMP_X); + else + assert (idhelper.sample(id) == idhelper.sampling(id)); +} + + +void test_connected (const Tile_Base_ID& idhelper, bool supercell) +{ + std::cout << "test_connected\n"; + + HASH_TEST(cell); + HASH_TEST(module); + HASH_TEST(region); + HASH_TEST(tower); + HASH_TEST(pmt); + HASH_TEST(adc); + + CellCounter counts; + TEST_LOOP(Identifier id, idhelper.cell_range()) { + IdContext context = idhelper.cell_context(); + IdentifierHash hashId; + assert (idhelper.get_hash (id, hashId, &context) == 0); + assert (id == idhelper.cell_id (hashId)); + assert (hashId == idhelper.cell_hash (id)); + assert (idhelper.is_supercell(id) == supercell); + + int sect = idhelper.section(id); + int side = idhelper.side(id); + int mod = idhelper.module(id); + int tow = idhelper.tower(id); + int samp = idhelper.sample(id); + + Identifier id2 = idhelper.cell_id (sect, side, mod, tow, samp); + assert (id == id2); + + Identifier reg_id = idhelper.region_id (id); + Identifier id3; + assert (idhelper.cell_id (reg_id, mod, tow, samp, id3)); + assert (id == id3); + assert (!idhelper.cell_id (reg_id, 100, tow, samp, id3)); + assert (!idhelper.cell_id (reg_id, mod, 100, samp, id3)); + assert (!idhelper.cell_id (reg_id, mod, tow, 4, id3)); + + counts.count (sect, samp); + + ExpandedIdentifier exp_id; + Tile_ID_Test* idhelper_test = (Tile_ID_Test*)&idhelper; + exp_id << idhelper_test->tile_field_value() + << (idhelper.section(id) + (supercell ? Tile_Base_ID::SUPERCELL_MASK : 0)) + << idhelper.side(id) + << idhelper.module(id) + << idhelper.tower(id) + << idhelper.sample(id); + assert (idhelper.cell_id (exp_id) == id); + } + counts.report(); + + + TEST_LOOP(Identifier id, idhelper.module_range()) { + int sect = idhelper.section(id); + int side = idhelper.side(id); + int mod = idhelper.module(id); + assert (idhelper.module_id (sect, side, mod) == id); + assert (idhelper.is_supercell(id) == supercell); + + Identifier reg_id = idhelper.region_id (id); + Identifier id2; + assert (idhelper.module_id (reg_id, mod, id2)); + assert (id == id2); + assert (!idhelper.module_id (reg_id, 100, id2)); + + ExpandedIdentifier exp_id; + Tile_ID_Test* idhelper_test = (Tile_ID_Test*)&idhelper; + exp_id << idhelper_test->tile_field_value() + << (idhelper.section(id) + (supercell ? Tile_Base_ID::SUPERCELL_MASK : 0)) + << idhelper.side(id) + << idhelper.module(id); + assert (idhelper.module_id (exp_id) == id); + } + + TEST_LOOP(Identifier id, idhelper.tower_range()) { + int sect = idhelper.section(id); + int side = idhelper.side(id); + int mod = idhelper.module(id); + int tow = idhelper.tower(id); + assert (idhelper.tower_id (sect, side, mod, tow) == id); + assert (idhelper.is_supercell(id) == supercell); + + Identifier reg_id = idhelper.region_id (id); + Identifier id2; + assert (idhelper.tower_id (reg_id, mod, tow, id2)); + assert (id == id2); + assert (!idhelper.tower_id (reg_id, 100, tow, id2)); + assert (!idhelper.tower_id (reg_id, mod, 100, id2)); + + ExpandedIdentifier exp_id; + Tile_ID_Test* idhelper_test = (Tile_ID_Test*)&idhelper; + exp_id << idhelper_test->tile_field_value() + << (idhelper.section(id) + (supercell ? Tile_Base_ID::SUPERCELL_MASK : 0)) + << idhelper.side(id) + << idhelper.module(id) + << idhelper.tower(id); + assert (idhelper.tower_id (exp_id) == id); + } + + TEST_LOOP(Identifier id, idhelper.pmt_range()) { + Identifier cell_id = idhelper.cell_id (id); + int pmt = idhelper.pmt (id); + + Identifier id2; + assert (idhelper.pmt_id (cell_id, pmt, id2)); + assert (id == id2); + assert (!idhelper.pmt_id (cell_id, 2, id2)); + + ExpandedIdentifier exp_id; + Tile_ID_Test* idhelper_test = (Tile_ID_Test*)&idhelper; + exp_id << idhelper_test->tile_field_value() + << (idhelper.section(id) + (supercell ? Tile_Base_ID::SUPERCELL_MASK : 0)) + << idhelper.side(id) + << idhelper.module(id) + << idhelper.tower(id) + << idhelper.sample(id) + << idhelper.pmt(id); + assert (idhelper.pmt_id (exp_id) == id); + } + + TEST_LOOP(Identifier id, idhelper.adc_range()) { + int sect = idhelper.section(id); + int side = idhelper.side(id); + int mod = idhelper.module(id); + int tow = idhelper.tower(id); + int samp = idhelper.sample(id); + int pmt = idhelper.pmt(id); + int adc = idhelper.adc(id); + assert (idhelper.is_supercell(id) == supercell); + + Identifier module_id = idhelper.module_id (sect, side, mod); + assert (module_id == idhelper.module_id (id)); + assert (idhelper.is_supercell(module_id) == supercell); + + Identifier tower_id = idhelper.tower_id (sect, side, mod, tow); + assert (tower_id == idhelper.tower_id (id)); + assert (idhelper.is_supercell(tower_id) == supercell); + + Identifier cell_id = idhelper.cell_id (sect, side, mod, tow, samp); + assert (cell_id == idhelper.cell_id (id)); + assert (idhelper.is_supercell(cell_id) == supercell); + + Identifier pmt_id = idhelper.pmt_id (sect, side, mod, tow, samp, pmt); + assert (pmt_id == idhelper.pmt_id (id)); + assert (pmt_id == idhelper.pmt_id (cell_id, pmt)); + assert (idhelper.is_supercell(pmt_id) == supercell); + + assert (id == idhelper.adc_id (sect, side, mod, tow, samp, pmt, adc)); + assert (id == idhelper.adc_id (pmt_id, adc)); + assert (id == idhelper.adc_id (cell_id, pmt, adc)); + + Identifier reg_id = idhelper.region_id (sect, side); + assert (reg_id == idhelper.region_id (id)); + assert (idhelper.is_supercell(reg_id) == supercell); + + Identifier id2; + assert (idhelper.adc_id (pmt_id, adc, id2)); + assert (id == id2); + assert (!idhelper.adc_id (pmt_id, 2, id2)); + id2 = Identifier(); + assert (idhelper.adc_id (cell_id, pmt, adc, id2)); + assert (id == id2); + assert (!idhelper.adc_id (cell_id, pmt, 2, id2)); + assert (!idhelper.adc_id (cell_id, 2, adc, id2)); + + region_check (idhelper, id); + + ExpandedIdentifier exp_id; + Tile_ID_Test* idhelper_test = (Tile_ID_Test*)&idhelper; + exp_id << idhelper_test->tile_field_value() + << (idhelper.section(id) + (supercell ? Tile_Base_ID::SUPERCELL_MASK : 0)) + << idhelper.side(id) + << idhelper.module(id) + << idhelper.tower(id) + << idhelper.sample(id) + << idhelper.pmt(id) + << idhelper.adc(id); + assert (idhelper.adc_id (exp_id) == id); + } + + TEST_LOOP(Identifier id, idhelper.region_range()) { + IdContext context = idhelper.region_context(); + IdentifierHash hashId; + assert (idhelper.get_hash (id, hashId, &context) == 0); + assert (id == idhelper.region_id (hashId)); + assert ((int)hashId == idhelper.region (id)); + assert (idhelper.is_supercell(id) == supercell); + + int sect = idhelper.section(id); + int side = idhelper.side(id); + assert (id == idhelper.region_id (sect, side)); + assert ((int)hashId == idhelper.region (sect, side)); + + printf ("Region %-18s eta: %2d %3d %2d %3d phi: %3d\n", + idhelper.show_to_string(id).c_str(), + idhelper.eta_min(id), + idhelper.eta_max(id), + idhelper.region_eta_min(id), + idhelper.region_eta_max(id), + idhelper.phi_max(id)); + + ExpandedIdentifier exp_id; + Tile_ID_Test* idhelper_test = (Tile_ID_Test*)&idhelper; + exp_id << idhelper_test->tile_field_value() + << (idhelper.section(id) + (supercell ? Tile_Base_ID::SUPERCELL_MASK : 0)) + << idhelper.side(id); + assert (idhelper.region_id (exp_id) == id); + } +} + + +void test_exceptions (const Tile_Base_ID& idhelper) +{ + std::cout << "test_exceptions\n"; + + bool caught = false; + try { + idhelper.region_id (255, 1); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 1: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.module_id (1, 1, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 2: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.tower_id (1, 1, 0, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 3: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.cell_id (1, 1, 0, 0, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 4: " << (std::string)except << "\n"; + } + assert (caught); + + Identifier cell_id = idhelper.cell_id (1, 1, 0, 0, 0); + caught = false; + try { + idhelper.pmt_id (cell_id, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 5: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.pmt_id (1, 1, 0, 0, 0, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 6: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.adc_id (cell_id, 0, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 7: " << (std::string)except << "\n"; + } + assert (caught); + + Identifier pmt_id = idhelper.pmt_id (1, 1, 0, 0, 0, 0); + caught = false; + try { + idhelper.adc_id (pmt_id, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 8: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.adc_id (1, 1, 0, 0, 0, 0, 99); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 9: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.cell_id (999999); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 10: " << (std::string)except << "\n"; + } + assert (caught); + + caught = false; + try { + idhelper.cell_hash (Identifier()); + } + catch(TileID_Exception & except){ + caught = true; + std::cout << "Exception 11: " << (std::string)except << "\n"; + } + assert (caught); +} + + +void test_to_string (const Tile_Base_ID& idhelper, bool supercell) +{ + std::cout << "test_to_string\n"; + Identifier id; + if (supercell) + id = idhelper.adc_id (1, 1, 0, 4, 2, 0, 0); + else + id = idhelper.adc_id (1, 1, 0, 0, 1, 1, 1); + + IdContext contexts[8] = { + idhelper.adc_context(), // 0 + idhelper.region_context(), // 1 + idhelper.region_context(), // 2 + idhelper.module_context(), // 3 + idhelper.tower_context(), // 4 + idhelper.cell_context(), // 5 + idhelper.pmt_context(), // 6 + idhelper.adc_context(), // 7 + }; + for (int i=2; i < 8; i++) { + IdentifierHash hashId; + assert (idhelper.get_hash (id, hashId, &contexts[i]) == 0); + + std::cout << i << " " << idhelper.to_string (id, i) << "\n"; + std::cout << i << " " << idhelper.to_string (hashId, i) << "\n"; + } +}