diff --git a/CMakeLists.txt b/CMakeLists.txt index 912eed0533b4eccdd03c7f4570cc156764e080dd..2f45be29c869a1ab1453f9c28c5b489af704eeba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,7 +72,6 @@ include(external/brpc) include(external/pcre) include(external/boost) include(flags) -include(configure) include(generic) include(paddlepaddle) include(external/opencv) @@ -99,8 +98,6 @@ endif() add_subdirectory(bsl) add_subdirectory(ullib) -add_subdirectory(spreg) -add_subdirectory(configure) add_subdirectory(proto_configure) add_subdirectory(mempool) add_subdirectory(predictor) diff --git a/bsl/CMakeLists.txt b/bsl/CMakeLists.txt index 98cd461b42140fce3ce6d753b653e31a7e21a7f9..36954eff6873f027e7586d9d6eadaf840d9c719f 100644 --- a/bsl/CMakeLists.txt +++ b/bsl/CMakeLists.txt @@ -33,5 +33,5 @@ add_library(bsl) add_dependencies(bsl utils alloc archive containers pool buffer exception check_cast ResourcePool interface var_utils implement) target_link_libraries(bsl - utils archive pool buffer exception check_cast + buffer utils archive pool exception check_cast ResourcePool var_utils implement) diff --git a/configure/BCLOUD b/configure/BCLOUD deleted file mode 100644 index b62974a041ab8a8307d762dfb1c263b13a7c7a1d..0000000000000000000000000000000000000000 --- a/configure/BCLOUD +++ /dev/null @@ -1,53 +0,0 @@ -#edit-mode: -*- python -*- -#coding:gbk - -#工作路径. -WORKROOT('../../') -CC('g++') - -#C预处理器参数. -#CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\\"1.9.8.7\\\"') - -#C编译参数. -CFLAGS('-pipe -fsigned-char -Wall -W -g -fPIC -Woverloaded-virtual') - -#C++编译参数. -CXXFLAGS('-pipe -fsigned-char -Wall -W -g -fPIC -Woverloaded-virtual') - -#IDL编译参数 -#IDLFLAGS('--compack') - -#UBRPC编译参数 -#UBRPCFLAGS('--compack') - -#头文件路径. -INCPATHS('. compiler/src') - -#使用库 -#LIBS('./libconfigure.a') - -#链接参数. -#LDFLAGS('-lpthread -lcrypto -lrt') - -#依赖模块 -CONFIGS('lib2-64/bsl@bsl_1-1-8-0_PD_BL') -CONFIGS('lib2-64/ullib@ullib_3-1-43-2_PD_BL') -CONFIGS('public/spreg@spreg_1-0-3-0_PD_BL') -CONFIGS('third-64/pcre@pcre_7-7-0-0_PD_BL') - -user_sources='FileReloader.cpp ConfigReloader.cpp CmdOption.cpp ConfigError.cpp ConfigGroup.cpp ConfigUnit.cpp Configure.cpp constraint/Constraint.cpp constraint/ConstraintFunction.cpp constraint/cc_default.cpp reader/RawData.cpp reader/Reader.cpp utils/init.cpp utils/trans.cpp cfgext.cpp cfgflag.cpp compiler/src/idl.c compiler/src/idl_lex.c compiler/src/idl_gram.c' -user_headers='ConfigGroup.h Configure.h ConfigReloader.h ConfigArray.h cfgext.h CmdOption.h ConfigUnit.h ConfigError.h FileReloader.h EnvGet.h cfgflag.h' - -HEADERS('utils/*.h', '$INC/utils') -HEADERS('constraint/*.h', '$INC/constraint') -HEADERS('compiler/src/idl_conf_if.h', '$INC') -#可执行文件 -#Application('configure',Sources(user_sources)) -#静态库 -StaticLibrary('config',Sources(user_sources),HeaderFiles(user_headers)) -#共享库 -#SharedLibrary('configure',Sources(user_sources),HeaderFiles(user_headers)) -#子目录 -#Directory('demo') - - diff --git a/configure/CMakeLists.txt b/configure/CMakeLists.txt deleted file mode 100644 index 3a6b4614054a7675fb81ab85f46bae6ab015f2cc..0000000000000000000000000000000000000000 --- a/configure/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -LIST(APPEND configure_srcs - ${CMAKE_CURRENT_LIST_DIR}/FileReloader.cpp - ${CMAKE_CURRENT_LIST_DIR}/ConfigReloader.cpp - ${CMAKE_CURRENT_LIST_DIR}/CmdOption.cpp - ${CMAKE_CURRENT_LIST_DIR}/ConfigError.cpp - ${CMAKE_CURRENT_LIST_DIR}/ConfigGroup.cpp - ${CMAKE_CURRENT_LIST_DIR}/ConfigUnit.cpp - ${CMAKE_CURRENT_LIST_DIR}/Configure.cpp - ${CMAKE_CURRENT_LIST_DIR}/constraint/Constraint.cpp - ${CMAKE_CURRENT_LIST_DIR}/constraint/ConstraintFunction.cpp - ${CMAKE_CURRENT_LIST_DIR}/constraint/cc_default.cpp - ${CMAKE_CURRENT_LIST_DIR}/reader/RawData.cpp - ${CMAKE_CURRENT_LIST_DIR}/reader/Reader.cpp - # ${CMAKE_CURRENT_LIST_DIR}/utils/init.cpp - ${CMAKE_CURRENT_LIST_DIR}/utils/trans.cpp - ${CMAKE_CURRENT_LIST_DIR}/cfgext.cpp - ${CMAKE_CURRENT_LIST_DIR}/cfgflag.cpp - ${CMAKE_CURRENT_LIST_DIR}/compiler/src/idl.c - ${CMAKE_CURRENT_LIST_DIR}/compiler/src/idl_lex.c - ${CMAKE_CURRENT_LIST_DIR}/compiler/src/idl_gram.c -) - -SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_LIST_DIR}/compiler/src/idl.c - ${CMAKE_CURRENT_LIST_DIR}/compiler/src/idl_lex.c - ${CMAKE_CURRENT_LIST_DIR}/compiler/src/idl_gram.c PROPERTIES LANGUAGE CXX) - -add_library(configure ${configure_srcs}) -add_dependencies(configure bsl brpc ullib spreg) -target_include_directories(configure PUBLIC - ${CMAKE_CURRENT_LIST_DIR}/ - ${CMAKE_CURRENT_LIST_DIR}/compiler/src - ${CMAKE_CURRENT_LIST_DIR}/../ullib/include - ${CMAKE_CURRENT_LIST_DIR}/../spreg/ - ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) -target_link_libraries(configure bsl ullib pcre spreg) diff --git a/configure/ChangeLog b/configure/ChangeLog deleted file mode 100755 index d72f84f898f4cdb404f94623f69f3a61f34eb840..0000000000000000000000000000000000000000 --- a/configure/ChangeLog +++ /dev/null @@ -1,37 +0,0 @@ -1.2.0 - * add configUnit的写支持。add_unit/copy_unit/del_unit/set_value - -1.1.0 - * add 增加热加载支持. ConfigReloader/FileReloader - -1.0.7 - * fix 消除多线程so使用中析构两次error_unit的问题 - -1.0.6 - * fix loadIVar时不给非特殊字符串增加引号 - * add 支持对configure对象进行约束检查. configure.check_once - -1.0.5 - * fix 解决configure和idlcompiler的命名冲突问题 - * fix Configure::loadIVar中,整数和浮点类型的IVar转成的字符串中去掉双引号 - * fix 将int32等类型定义改成带comcfg_前缀的命名,避免和别处的定义冲突。 - * fix error unit改成单例模式 - * fix 解决-Woverloaded-virtual编译参数引起编译warning的问题 - * add 增加遍历接口get_sub_unit(),配合size()和selfType()可以完成对configure的遍历 - * add 增加接口get_key_name(),获取key的名字 - -1.0.4 - * fix getErrKeyPath方法增加const修饰,并从Configure中移到ConfigUnit中。 - * add 抛出的Exception中增加出错路径信息 - * add 增加NOSUCHKEY以外的各种读配置错误的具体路径信息。包括:1). - OUTOFRANGE 超出范围;2). FORMATERROR 格式错误;3). NULLVALUE 值为空;4). - NULLBUFFER 传出参数指针为NULL;5). GROUPTOUNIT 使用group的取值方法 - -1.0.3.1 nsfw 2009/08/07 - * fix 修复autoConfigGen函数中的内存泄露 - * fix autoConfigGen()对数组改成只生成一份配置,一份注释的配置 - * add 增加Configure::getErrKeyPath()接口,获取不存在的key失败时,返回导致出错的key具体路径。 - * add 增加to_xxx系列提供默认值的重载函数 - * add 增加ConfigUnit::deepGet()接口,长路径的直接获取 - * add 增加读取环境变量的宏 - diff --git a/configure/CmdOption.cpp b/configure/CmdOption.cpp deleted file mode 100644 index 0a3c3e7d7ff1a299cc3e61ef512bfd75b7c8f293..0000000000000000000000000000000000000000 --- a/configure/CmdOption.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: CmdOption.cpp,v 1.6 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file CmdOption.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 21:50:42 - * @version $Revision: 1.6 $ - * @brief - * - **/ - -#include "CmdOption.h" -#include "ConfigUnit.h" -#include "utils/cc_utils.h" -#include - -namespace comcfg{ - CmdOption :: CmdOption(){ - } - - int CmdOption :: setOptString(const char * p){ - int ret = 0; - const char *prev = NULL; - memset(ch, 0, sizeof(ch)); - while(*p != '\0'){ - if(*p == ':'){ - if(prev == NULL || ch[(unsigned char)(*prev)] == CMD_OPT2){ - ret = -1; - break; - } - else{ - ++ ch[(unsigned char)(*prev)]; - } - } - else{ - if(ch[(unsigned char)(*p)]){ - ret = -1; - break; - } - ch[(unsigned char)(*p)] = CMD_OPT0; - } - prev = p; - ++p; - } - return ret; - } - - int CmdOption :: init(int argc, char * const * argv, const char * optstring){ - if(argv == NULL || optstring == NULL){ - LOG(WARNING) << "Null pointer in CmdOption::init....."; - return -1; - } - if(setOptString(optstring) != 0){ - LOG(WARNING) << "optstring error."; - return -1; - } - int ret = 0; - //反序处理 - try{ - for(int i = argc - 1; i >= 0; --i){ - if(argv[i][0] == '-'){ - str_t key, value; - //option - if(argv[i][1] == '-'){ - //long option - key = argv[i] + 2; - size_t sz;// = key.find('=', 0); - for(sz = 0; sz < key.size(); ++sz){ - if(key[sz] == '='){ - break; - } - } - if(sz != key.size()){ - value = key.substr(sz+1); - key = key.substr(0, sz); - LOG(INFO) << "[CmdOption init - long opt] key=" << key.c_str() << " value=" << value.c_str(); - } - if( push(key, new ConfigUnit(key, value, NULL, this)) ){ - ret = -1; - } - } - - else if(ch[(unsigned char)(argv[i][1])] == CMD_OPT0){ - //opt 0 - key = ""; - key.push_back(argv[i][1]); - if( push(key, new ConfigUnit(key, value, NULL, this)) ){ - ret = -1; - } - } - - else if(ch[(unsigned char)(argv[i][1])] == CMD_OPT1){ - //opt 1 - key = ""; - key.push_back(argv[i][1]); - value = argv[i] + 2; - if(value.size() == 0){ - if(arg.size() == 0){ - LOG(WARNING) << "Option [-" << argv[i][1] << ":] without any argument."; - ret = -1; - } - else{ - value = arg[arg.size() - 1]; - arg.pop_back(); - } - } - if( push(key, new ConfigUnit(key, value, NULL, this)) ){ - ret = -1; - } - } - - else if(ch[(unsigned char)(argv[i][1])] == CMD_OPT2){ - //opt 2 - key = ""; - key.push_back(argv[i][1]); - value = argv[i] + 2; - if(value.size() == 0){ - LOG(WARNING) << "Option [-" << argv[i][1] << "::] without any argument."; - ret = -1; - } - if( push(key, new ConfigUnit(key, value, NULL, this)) ){ - ret = -1; - } - } - else{ - LOG(WARNING) << "Option [-" << argv[i][1] << "] unknown."; - ret = -1; - } - } - else{ - arg.push_back(str_t(argv[i])); - } - } - } - catch(...){ - LOG(WARNING) << "Option error.."; - ret = -1; - } - return ret; - } - - bool CmdOption :: hasOption(const char * s) const { - return (*this)[s].selfType() != CONFIG_ERROR_TYPE; - } - size_t CmdOption :: argSize() const { - return arg.size(); - } - const char * CmdOption :: getArg(int n) const { - if(n >= (int)arg.size()){ - return NULL; - } - //反序的 - return arg[(int)arg.size() - n - 1].c_str(); - } - int CmdOption :: registHook(const char * option, hook_t hook){ - pair_t p; - p.first = str_t(option); - p.second = hook; - hkmap.insert(p); - return 0; - } - int CmdOption :: runHook(){ - itr_t itr; - for(itr = fieldMap.begin(); itr != fieldMap.end(); ++itr){ - hk_pair_t p = hkmap.equal_range(itr->first); - for(hkitr_t hkitr = p.first; hkitr != p.second; ++hkitr){ - (hkitr->second)(this); - } - } - return 0; - } -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/CmdOption.h b/configure/CmdOption.h deleted file mode 100644 index ea39aef137ecdbac9b753ff35e275157508f80d1..0000000000000000000000000000000000000000 --- a/configure/CmdOption.h +++ /dev/null @@ -1,143 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: CmdOption.h,v 1.6 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file CmdOption.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 21:47:53 - * @version $Revision: 1.6 $ - * @brief - * - **/ - - -#ifndef __CMDOPTION_H_ -#define __CMDOPTION_H_ - -#include "ConfigGroup.h" -#include "utils/cc_utils.h" - -namespace comcfg{ - /** - * @brief 与getopt行为不一致的地方: - * 如果optstring = "a:b:" - * 当:./run -a -b c d - * optstring会把 -b作为-a的参数 - * 而CmdOption会把c, d堆栈处理,把c给-b,把d给-a - * - */ - class CmdOption : public ConfigGroup{ - public: - /** - * @brief 命令行参数初始化(不可以重复调用) - * - * @param [in] argc : int 参数个数 - * @param [in] argv : char* const* 参数 - * @param [in] optstring : const char* 选项信息,与getopt相同 - * @return int 0为成功,其它为失败 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:47:13 - **/ - int init(int argc, char * const * argv, const char * optstring); - /** - * @brief 命令行参数中是否存在某个选项 - * - * @return bool - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:48:08 - **/ - bool hasOption(const char *) const; - /** - * @brief 末尾参数个数(注意:不是总的参数个数) - * 如:argc = 5, argv = {"./run", "-a", "xxx", "-h", "yyy", "zzz"}, optstring = "a:h" - * 那么这里的argSize = 3 (分别是./run, yyy和zzz),其中xxx是-a的参数 - * - * @return size_t 参数个数 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:49:16 - **/ - size_t argSize() const; - /** - * @brief 获取第n个参数 - * - * @param [in] n : int 参数位置(0 ~ argSize-1) - * @return const char* - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:51:34 - **/ - const char * getArg(int n) const; - - typedef int (*hook_t)(CmdOption * ); - /** - * @brief 注册参数钩子,如果存在option参数,runHook时就执行相应的钩子 - * 一个option可注册多个钩子 - * - * @param [in] option : const char* - * @param [in] hook : hook_t - * @return int - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:52:09 - **/ - int registHook(const char * option, hook_t hook); - /** - * @brief 运行钩子 - * - * @return int 无意义(runHook不管钩子的运行结果) - * 如关心钩子的运行结果,请在钩子中以异常抛出,自行处理 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:52:53 - **/ - int runHook(); - virtual ConfigUnit & operator= (ConfigUnit & unit) { - return ConfigUnit::operator=(unit); - } - CmdOption(); - protected: - static const int CHAR_TABLE_SIZE = 256; - char ch[CHAR_TABLE_SIZE]; - static const char CMD_NONE = 0; - static const char CMD_OPT0 = 1; - static const char CMD_OPT1 = 2; - static const char CMD_OPT2 = 3; - std::vector arg; - std::multimap hkmap; - typedef std::pair pair_t; - typedef std::multimap :: iterator hkitr_t; - typedef std::pair hk_pair_t; - - int setOptString(const char *); - }; -} - - - - - - - - - - - - -#endif //__CMDOPTION_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/ConfigArray.h b/configure/ConfigArray.h deleted file mode 100644 index 3f7c6f34b2266db7753bf0f67db7d12eda5e7ffe..0000000000000000000000000000000000000000 --- a/configure/ConfigArray.h +++ /dev/null @@ -1,242 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConfigArray.h,v 1.11 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConfigArray.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 10:49:08 - * @version $Revision: 1.11 $ - * @brief - * - **/ - - -#ifndef __CONFIGARRAY_H_ -#define __CONFIGARRAY_H_ - -#include "ConfigGroup.h" -#include "bsl/var/Array.h" -namespace comcfg{ - class ConfigArray : public ConfigGroup{ - public: - virtual int push(str_t key, ConfigUnit* unit){ - LOG(INFO) << "[" << getFather() << "]ConfigArray[" << this << "] [" << key.c_str() << "].push"; - vec.push_back(unit); - return 0; - } - ConfigArray(const char * __name, ConfigGroup * __father=NULL){ - if(*__name == '@'){ - ++__name; - } - create(__name, __father); - } - virtual int selfType() const{ - return CONFIG_ARRAY_TYPE; - } - virtual bsl::var::IVar& to_IVar(bsl::ResourcePool * vpool, ErrCode* errCode = NULL)const{ - if(vpool == NULL){ - LOG(INFO) << "Configure: visit ConfigArray.to_IVar() failed : NULLBUFFER"; - setErrorKeyPath(this->_name); - popError(errCode, NULLBUFFER); - return bsl::var::Null::null; - } - bsl::var::Array &arr = vpool->create(); - for(int i = 0; i < (int)vec.size(); ++i){ - arr.set( i, vec[i]->to_IVar(vpool, errCode) ); - } - return arr; - } - - void print(int indent = 0) const{ - pindent(indent); - printf("Array--------[%s] : {\n", getName()); - for(int i = 0; i < (int)vec.size(); ++i){ - vec[i]->print(indent+1); - } - pindent(indent); - printf("}\n"); - } - - const ConfigUnit & operator[] (int idx) const{ - if(idx < (int)vec.size()){ - return *vec[idx]; - } - LOG(INFO) << "Configure: visit element not exist ConfigArray[int] : " << _name.c_str() << "[" << idx << "]"; - str_t tmp=this->_name; - char tmpid[64]; - snprintf(tmpid,64, "%d",idx); - tmp.append("[").append(tmpid).append("]"); - setErrorKeyPath(tmp); - return *get_err_unit(); - } - const ConfigUnit & operator[] (const char *str) const { - LOG(INFO) << "Configure: visit ConfigArray[char *] : " << _name.c_str() << "[" << str << "]"; - str_t tmp=this->_name; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - return *get_err_unit(); - } - const ConfigUnit & operator[] (const str_t &str) const{ - LOG(INFO) << "Configure: visit ConfigArray[str_t] : " << _name.c_str() << "[" << str.c_str() << "]"; - str_t tmp=this->_name; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - return *get_err_unit(); - } - ConfigUnit & operator[] (int idx) { - if(idx < (int)vec.size()){ - return *vec[idx]; - } - LOG(INFO) << "Configure: visit element not exist ConfigArray[int] : " << _name.c_str() << "[" << idx << "]"; - str_t tmp=this->_name; - char tmpid[64]; - snprintf(tmpid,64, "%d",idx); - tmp.append("[").append(tmpid).append("]"); - setErrorKeyPath(tmp); - return *get_err_unit(); - } - ConfigUnit & operator[] (const char *str) { - LOG(INFO) << "Configure: visit ConfigArray[char *] : " << _name.c_str() << "[" << str << "]"; - str_t tmp=this->_name; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - return *get_err_unit(); - } - ConfigUnit & operator[] (const str_t &str) { - LOG(INFO) << "Configure: visit ConfigArray[str_t] : " << _name.c_str() << "[" << str.c_str() << "]"; - str_t tmp=this->_name; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - return *get_err_unit(); - } - virtual ConfigUnit & operator= (ConfigUnit & unit) { - return ConfigUnit::operator=(unit); - } - virtual ~ConfigArray(){ - for(int i = 0; i < (int)vec.size(); ++i){ - delete vec[i]; - } - } - - virtual size_t size()const{ - return vec.size(); - } - - const ConfigUnit & get_sub_unit(int index) const { - if ((0<=index) && (index < (int)vec.size())){ - return *vec[index]; - } - return *get_err_unit(); - } - /** - * @brief 比较是否相等 - * - * @return int 0表示相等 -1不相等 - * @author zhang_rui - **/ - virtual int equals(const ConfigUnit & conf) const { - try { - for(int i = 0; i < (int)vec.size(); ++i){ - if (0 != vec[i]->equals(conf[i])) { - return -1; - } - } - return 0; - } catch (bsl::Exception) { - return -1; - } - return -1; - } - /** - * @brief 增加一个unit - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int add_unit(const bsl_string & key, const bsl_string& value, - const int objtype, int except, ConfigUnit ** ref){ - ConfigUnit * tmp=NULL; - if (0 < vec.size() && objtype != vec[0]->selfType()) { - goto adderr; - } - tmp = create_unit(key, value, objtype, this->getFather()); - if (NULL == tmp){ - goto adderr; - } - this->push(key,tmp); - if (NULL != ref) { - *ref = tmp; - } - return 0; - adderr: - if (except) { - popError(NULL, CONFIG_ERROR); - } - return CONFIG_ERROR; - } - /** - * @brief 删除一个unit - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int del_unit(const bsl_string & key, int except) { - long long val; - int ret = Trans :: str2int64(key, &val); - long long sz = vec.size(); - if (0 == ret && 0 <= val && sz > val) { - ConfigUnit * delu = NULL; - std::vector :: iterator iter; - iter = vec.begin(); - iter += val; - delu = *iter; - vec.erase(iter); - if (delu) { - delete delu; - } - return 0; - } else { - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "Configure: failed to write error buffer"; - } - popError(NULL, NOSUCHKEY); - } - return NOSUCHKEY; - } - return 0; - } - protected: - std::vector vec; - - /** - * @brief 清除内容 - * - * @return void - * @author zhang_rui - **/ - virtual void clear() { - for(int i = 0; i < (int)vec.size(); ++i){ - delete vec[i]; - } - vec.clear(); - } - }; -} - - - - - - - - -#endif //__CONFIGARRAY_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/ConfigError.cpp b/configure/ConfigError.cpp deleted file mode 100644 index 212f2e520f7f7c8e22e620620ab41be975068b92..0000000000000000000000000000000000000000 --- a/configure/ConfigError.cpp +++ /dev/null @@ -1,367 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConfigError.cpp,v 1.9 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConfigError.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 14:22:03 - * @version $Revision: 1.9 $ - * @brief - * - **/ -#include "ConfigError.h" - -namespace comcfg{ - - char ConfigError :: to_char(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return char(); - } - - unsigned char ConfigError :: to_uchar(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return (unsigned char)(0); - } - - int16_t ConfigError :: to_int16(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return int16_t(); - } - - u_int16_t ConfigError :: to_uint16(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return u_int16_t(); - } - - int ConfigError :: to_int32(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return int(); - } - - u_int32_t ConfigError :: to_uint32(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return u_int32_t(); - } - - long long ConfigError :: to_int64(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return (long long)(0); - } - - unsigned long long ConfigError :: to_uint64(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return (unsigned long long)(0); - } - - float ConfigError :: to_float(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return float(); - } - - double ConfigError :: to_double(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return double(); - } -#if 1 - bsl_string ConfigError :: to_bsl_string(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return bsl_string(); - } -#endif -#if 0 - std_string ConfigError :: to_std_string(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return std_string(); - } -#endif - str_t ConfigError :: to_raw_string(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return str_t(); - } - const char * ConfigError :: to_cstr(ErrCode * errCode)const{ - popError(errCode, NOSUCHKEY); - return NULL; - } - - - //----------------to_xxx with default value - char ConfigError :: to_char(ErrCode * errCode, const char & def)const { - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - unsigned char ConfigError :: to_uchar(ErrCode * errCode, const unsigned char & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - int16_t ConfigError :: to_int16(ErrCode * errCode, const int16_t & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - u_int16_t ConfigError :: to_uint16(ErrCode * errCode, const u_int16_t & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - int ConfigError :: to_int32(ErrCode * errCode, const int & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - u_int32_t ConfigError :: to_uint32(ErrCode * errCode, const u_int32_t & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - long long ConfigError :: to_int64(ErrCode * errCode, const long long & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - unsigned long long ConfigError :: to_uint64(ErrCode * errCode, const unsigned long long & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - float ConfigError :: to_float(ErrCode * errCode, const float & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - double ConfigError :: to_double(ErrCode * errCode, const double & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - bsl_string ConfigError :: to_bsl_string(ErrCode * errCode, const bsl_string & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - str_t ConfigError :: to_raw_string(ErrCode * errCode, const str_t & def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - //获取C风格的字符串(常量) - const char * ConfigError :: to_cstr(ErrCode * errCode, const char * def)const{ - if(errCode){ - *errCode = NOSUCHKEY; - } - return def; - } - - ErrCode ConfigError :: get_char(char * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uchar(unsigned char * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_int16(int16_t * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uint16(u_int16_t * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_int32(int * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uint32(u_int32_t * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_int64(long long * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uint64(unsigned long long * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_float(float * /*valueBuf*/)const{ - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_double(double * /*valueBuf*/)const{ - return NOSUCHKEY; - } -#if 1 - ErrCode ConfigError :: get_bsl_string(bsl_string * /*valueBuf*/)const{ - return NOSUCHKEY; - } -#endif -#if 0 - ErrCode ConfigError :: get_std_string(std_string * /*valueBuf*/)const{ - return NOSUCHKEY; - } -#endif - ErrCode ConfigError :: get_raw_string(str_t * /*valueBuf*/)const{ - return NOSUCHKEY; - } - ErrCode ConfigError :: get_cstr(char * /*valueBuf*/, size_t /*len*/)const{ - return NOSUCHKEY; - } - - //--------------get_xx with default----------- - - ErrCode ConfigError :: get_char(char * valueBuf, const char & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uchar(unsigned char * valueBuf, const unsigned char & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_int16(int16_t * valueBuf, const int16_t & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uint16(u_int16_t * valueBuf, const u_int16_t & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_int32(int * valueBuf, const int & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uint32(u_int32_t * valueBuf, const u_int32_t & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_int64(long long * valueBuf, const long long & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_uint64(unsigned long long * valueBuf, const unsigned long long & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_float(float * valueBuf, const float & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_double(double * valueBuf, const double & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_bsl_string(bsl_string * valueBuf, const bsl_string & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_raw_string(str_t * valueBuf, const str_t & def)const{ - if (valueBuf) { - *valueBuf = def; - } - return NOSUCHKEY; - } - - ErrCode ConfigError :: get_cstr(char * valueBuf, size_t len, const char * def)const{ - if (valueBuf) { - snprintf(valueBuf, len, "%s", def); - } - return NOSUCHKEY; - } - - bsl::var::IVar& ConfigError :: to_IVar(bsl::ResourcePool * /*vpool*/, ErrCode* errCode)const{ - popError(errCode, NOSUCHKEY); - return bsl::var::Null::null; - } - - int ConfigError :: equals(const ConfigUnit & conf) const { - if (CONFIG_ERROR_TYPE == conf.selfType()) { - return 0; - } else { - return -1; - } - return -1; - } - - int ConfigError :: set_value(const bsl_string & /*value*/, int except){ - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, NOSUCHKEY); - } - return NOSUCHKEY; - } - int ConfigError :: copy_unit(const ConfigUnit & /*unit*/, int except) { - if (except) { - popError(NULL, NOSUCHKEY); - } - return ERROR; - } -} - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/ConfigError.h b/configure/ConfigError.h deleted file mode 100644 index 202bc8fc5861a539c6205a35e0ab34a8bfb9e199..0000000000000000000000000000000000000000 --- a/configure/ConfigError.h +++ /dev/null @@ -1,166 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConfigError.h,v 1.11 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConfigUnit.h - * @author yingxiang(com@baidu.com) - * @date 2008/11/26 20:53:09 - * @version $Revision: 1.11 $ - * @brief - * - **/ - - -#ifndef __CONFIGERROR_H_ -#define __CONFIGERROR_H_ - -#include "utils/cc_utils.h" -#include "ConfigUnit.h" -namespace comcfg{ - - class ConfigError : public ConfigUnit{ - public: - - virtual ~ConfigError(){}; - - virtual char to_char(ErrCode * errCode = NULL)const; - virtual unsigned char to_uchar(ErrCode * errCode = NULL)const; - virtual int16_t to_int16(ErrCode * errCode = NULL)const; - virtual u_int16_t to_uint16(ErrCode * errCode = NULL)const; - virtual int to_int32(ErrCode * errCode = NULL)const; - virtual u_int32_t to_uint32(ErrCode * errCode = NULL)const; - virtual long long to_int64(ErrCode * errCode = NULL)const; - virtual unsigned long long to_uint64(ErrCode * errCode = NULL)const; - virtual float to_float(ErrCode * errCode = NULL)const; - virtual double to_double(ErrCode * errCode = NULL)const; - virtual bsl_string to_bsl_string(ErrCode * errCode = NULL)const; - //virtual std_string to_std_string(ErrCode * errCode = NULL)const; - virtual str_t to_raw_string(ErrCode * errCode = NULL)const; - virtual const char * to_cstr(ErrCode * errCode = NULL)const; - - /** - * @brief 带有默认值的to_XXX系列函数 - * 返回值与to_xxx系列完全相同。 - * 唯一的不同是:当errCode不为0(即发生错误), 返回def默认值 - * - * @param [out] errCode : ErrCode* 出错信息 - * @param [in] def : const & 默认值 - * @return - **/ - virtual char to_char(ErrCode * errCode, const char & def)const; - virtual unsigned char to_uchar(ErrCode * errCode, const unsigned char & def)const; - virtual int16_t to_int16(ErrCode * errCode, const int16_t & def)const; - virtual u_int16_t to_uint16(ErrCode * errCode, const u_int16_t & def)const; - virtual int to_int32(ErrCode * errCode, const int & def)const; - virtual u_int32_t to_uint32(ErrCode * errCode, const u_int32_t & def)const; - virtual long long to_int64(ErrCode * errCode, const long long & def)const; - virtual unsigned long long to_uint64(ErrCode * errCode, const unsigned long long & def)const; - virtual float to_float(ErrCode * errCode, const float & def)const; - virtual double to_double(ErrCode * errCode, const double & def)const; - virtual bsl_string to_bsl_string(ErrCode * errCode, const bsl_string & def)const; - virtual str_t to_raw_string(ErrCode * errCode, const str_t & def)const; - //获取C风格的字符串(常量) - virtual const char * to_cstr(ErrCode * errCode, const char * def)const; - - virtual ErrCode get_char(char * valueBuf)const; - virtual ErrCode get_uchar(unsigned char * valueBuf)const; - virtual ErrCode get_int16(int16_t * valueBuf)const; - virtual ErrCode get_uint16(u_int16_t * valueBuf)const; - virtual ErrCode get_int32(int * valueBuf)const; - virtual ErrCode get_uint32(u_int32_t * valueBuf)const; - virtual ErrCode get_int64(long long * valueBuf)const; - virtual ErrCode get_uint64(unsigned long long * valueBuf)const; - virtual ErrCode get_float(float * valueBuf)const; - virtual ErrCode get_double(double * valueBuf)const; - virtual ErrCode get_bsl_string(bsl_string * valueBuf)const; - //virtual ErrCode get_std_string(std_string * valueBuf)const; - virtual ErrCode get_raw_string(str_t * valueBuf) const; - virtual ErrCode get_cstr(char * valueBuf, size_t len) const; - - /** - * @brief 带有默认值的ge_XXX系列函数 - * 返回值与get_xxx系列完全相同。 - * 唯一的不同是:当返回值不为0(即发生错误)valueBuf中使用def默认值 - * - * @param [out] valueBuf : char* 传出的值 - * @param [in] def : const char& 默认值 - * @return ErrCode - * @retval - * @see - **/ - virtual ErrCode get_char(char * valueBuf, const char & def)const; - virtual ErrCode get_uchar(unsigned char * valueBuf, const unsigned char & def)const; - virtual ErrCode get_int16(int16_t * valueBuf, const int16_t & def)const; - virtual ErrCode get_uint16(u_int16_t * valueBuf, const u_int16_t & def)const; - virtual ErrCode get_int32(int * valueBuf, const int & def)const; - virtual ErrCode get_uint32(u_int32_t * valueBuf, const u_int32_t & def)const; - virtual ErrCode get_int64(long long * valueBuf, const long long & def)const; - virtual ErrCode get_uint64(unsigned long long * valueBuf, const unsigned long long & def)const; - virtual ErrCode get_float(float * valueBuf, const float & def)const; - virtual ErrCode get_double(double * valueBuf, const double & def)const; - virtual ErrCode get_bsl_string(bsl_string * valueBuf, const bsl_string & def)const; - virtual ErrCode get_raw_string(str_t * valueBuf, const str_t & def)const; - virtual ErrCode get_cstr(char * valueBuf, size_t len, const char * def)const; - - virtual bsl::var::IVar& to_IVar(bsl::ResourcePool* vpool, ErrCode* errCode = NULL)const; - - virtual int selfType() const{ - return CONFIG_ERROR_TYPE; - } - virtual size_t size()const{ - return 0; - } - - virtual str_t info() const{ - return str_t("[Error: No such key.]"); - } - /** - * @brief 比较是否相等 - * - * @return int 0表示相等 -1不相等 - * @author zhang_rui - **/ - virtual int equals(const ConfigUnit & conf) const; - /** - * @brief 删除一个unit - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int set_value(const bsl_string & value, int except=0); - /** - * @brief 复制一个unit, 深拷贝 - * - * 将unit的内容复制到本对象。 - * 类型需要匹配,只能从group复制到group,array复制到array - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int copy_unit(const ConfigUnit & unit, int except=0); - virtual ConfigUnit & operator= (ConfigUnit & unit){ - return ConfigUnit::operator=(unit); - } - protected: - //str_t key; - //str_t value; - }; - -} - - - - - - - - - -#endif //__CONFIGERROR_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/ConfigGroup.cpp b/configure/ConfigGroup.cpp deleted file mode 100644 index 490bf6124142a6a2f99d42693c2094915713fd20..0000000000000000000000000000000000000000 --- a/configure/ConfigGroup.cpp +++ /dev/null @@ -1,813 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConfigGroup.cpp,v 1.15 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConfigGroup.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 18:10:28 - * @version $Revision: 1.15 $ - * @brief - * - **/ - -#include "ConfigGroup.h" -#include "ConfigArray.h" -#include "Configure.h" -#include "utils/cc_utils.h" -#include "bsl/var/Dict.h" - -namespace comcfg{ - ConfigUnit * ConfigGroup :: relativeSection(ConfigUnit *globalSec, str_t str, int *depth){ - LOG(INFO) << "Config : [relativeSection]Current section : [" << getName() << "] depth[" << *depth << "]"; - if(str == ""){ - return this; - } - str_t child; - size_t global_len = strlen(CONFIG_GLOBAL); - if(str.substr(0, global_len) == str_t(CONFIG_GLOBAL) && - (str.size() == global_len || str[global_len] == '.')){ - ConfigGroup * sec = this; - while(sec->getFather()){ - sec = sec->getFather(); - } - (*depth) = 0; - str = str.size() > global_len ? str.substr(global_len+1) : ""; - LOG(INFO) << "Config : switch to global [" << sec->getName() << "] <-- This must be GLOBAL"; - return sec->relativeSection(globalSec, str, depth); - } - for(int i = 0; i < (int)str.size(); ++i){ - if(str[i] == '.'){ - child = str.substr(0, i); - str = str.substr(i+1); - ptr_t ptr = fieldMap.find(child); - if(NULL == ptr){ - LOG(WARNING) << "Configure : No previous section named [" << child.c_str() << "]"; - throw ConfigException(); - } - ++(*depth); - return (ptr->second)->relativeSection(globalSec, str, depth); - } - } - ConfigGroup *gSec = (ConfigGroup *)globalSec; - ptr_t ptr = fieldMap.find(str); - if(NULL == ptr){ - ConfigGroup * tmp = new ConfigGroup(str.c_str(), this); - - if((str[0] != '@') && !( (GROUP_DUP_LEVEL0 == gSec->_dupLevel) || (GROUP_DUP_LEVEL1==gSec->_dupLevel && 1<*depth))){ - struct dup_position dpos = {gSec->_at_file, gSec->_at_line,}; - dup_vector dvec; - dvec.push_back(dpos); - gSec->_dupMap.set(tmp, dvec, 1); - } - - ++(*depth); - push(str, tmp); - return tmp; - } - else{ - ++(*depth); - if((ptr->second)->selfType() != CONFIG_GROUP_TYPE){ - LOG(WARNING) << "Config : Duplicate key or group name [" << str.c_str() << "]"; - throw ConfigException(); - } - else if(!( (GROUP_DUP_LEVEL0 == gSec->_dupLevel) || (GROUP_DUP_LEVEL1==gSec->_dupLevel && 1<*depth))){ - dup_ptr dtr = gSec->_dupMap.find(ptr->second); - if(NULL == dtr){ - LOG(WARNING) << "Config : dup-map failed to find [" << str.c_str() << "]"; - throw ConfigException(); - } - struct dup_position dpos = {gSec->_at_file, gSec->_at_line,}; - (dtr->second).push_back(dpos); - } - - return ptr->second; - } - } - void ConfigGroup :: create(const char * __name, ConfigGroup * __father){ - const char *p = __name; - if(*p == '@'){ - ++p; - } - while(*p != 0){ - if((!isalpha(*p)) && (!isdigit(*p)) && *p != '_'){ - LOG(WARNING) << "Configure : Unsupport _name [" << __name << "]"; - throw ConfigException(); - //throw ConfigException("Unsupport section _name"); - } - ++p; - } - LOG(INFO) << "Config: this=" << this << ", Set _name = " << __name << ", _father = " << __father << "[" << (__father==NULL?"NULL":__father->getName()) <<"]"; - _name = __name; - _father = __father; - fieldMap.create(256); - if(_father){ - _level = _father->getLevel() + 1; - } - else{ - _level = 0; - } - } - - int ConfigGroup :: push(const str_t& key, ConfigUnit* unit){ - LOG(INFO) << "Configure : Push key [" << key.c_str() << "] to [" << getName() << "]"; - if(key[0] != '@'){ - if(NULL == fieldMap.find(key)){ - fieldMap.set(key, unit, 1); - fieldList.push_back(key); - } - else{ - LOG(WARNING) << "Configure : [" << getName() << "] Duplicate key [" << key.c_str() << "]"; - throw ConfigException(); - return -1; - } - } - else{ - ptr_t ptr = fieldMap.find(key.substr(1)); - if(NULL != ptr){ - if(ptr->second->selfType() == CONFIG_ARRAY_TYPE){ - ((ConfigArray*)(ptr->second))->push(key, unit); - } - else{ - LOG(WARNING) << "Configure : ambiguity key [" << key.c_str() << "]"; - throw ConfigException(); - return -1; - } - } - else{ - ConfigArray * array = new ConfigArray(key.c_str() + 1, this); - if(this->push(key.substr(1), array) == 0){ - //fieldList.push_back(key.substr(1)); - LOG(INFO) << "Config : we have new array [" << key.c_str() + 1 << "]"; - array->push(key, unit); - } - } - } - return 0; - } - - const ConfigUnit & ConfigGroup :: operator[] (const char * str) const{ - return (*this)[str_t(str)]; - } - const ConfigUnit & ConfigGroup :: operator[] (const str_t & str) const{ - ptr_t ptr = fieldMap.find(str); - if(NULL != ptr){ - return *(ptr->second); - } - LOG(INFO) << "Configure: visiting key not found: ConfigGroup[str_t] : " << _name.c_str() << "[" << str.c_str() << "]"; - str_t tmp = this->_name; - if (tmp == CONFIG_GLOBAL){ - tmp = str; - } else { - tmp.append(".").append(str); - } - setErrorKeyPath(tmp); - return *get_err_unit(); - } - const ConfigUnit & ConfigGroup :: operator[] (int idx) const{ - LOG(WARNING) << "Configure: visit ConfigGroup[int] : " << _name.c_str() << "[" << idx << "]"; - str_t tmp=this->_name; - char tmpid[64]; - snprintf(tmpid,64, "%d",idx); - tmp.append("[").append(tmpid).append("]");; - setErrorKeyPath(tmp); - return *get_err_unit(); - } - ConfigUnit & ConfigGroup :: operator[] (const char * str) { - return (*this)[str_t(str)]; - } - ConfigUnit & ConfigGroup :: operator[] (const str_t & str) { - ptr_t ptr = fieldMap.find(str); - if(NULL != ptr){ - return *(ptr->second); - } - LOG(INFO) << "Configure: visiting key not found: ConfigGroup[str_t] : " << _name.c_str() << "[" << str.c_str() << "]"; - str_t tmp = this->_name; - if (tmp == CONFIG_GLOBAL){ - tmp = str; - } else { - tmp.append(".").append(str); - } - setErrorKeyPath(tmp); - return *get_err_unit(); - } - ConfigUnit & ConfigGroup :: operator[] (int idx) { - LOG(WARNING) << "Configure: visit ConfigGroup[int] : "<< _name.c_str() << "[" << idx << "]"; - str_t tmp=this->_name; - char tmpid[64]; - snprintf(tmpid,64, "%d",idx); - tmp.append("[").append(tmpid).append("]");; - setErrorKeyPath(tmp); - return *get_err_unit(); - } - ConfigGroup :: ~ConfigGroup(){ - clear(); - if(0 != fieldMap.destroy()) - LOG(WARNING) << "Configure::~CofigGroup() : fieldMap.destory() failed "; - } - void ConfigGroup :: print(int indent) const{//for debug - str_t sec; - get_full_path(sec); - pindent(indent); - printf("Section-------[%s]\n", sec.c_str()); - for(int i = 0; i < (int)fieldList.size(); ++i){ - if(fieldMap.find(fieldList[i])-> second -> selfType() == CONFIG_UNIT_TYPE){ - fieldMap.find(fieldList[i]) -> second -> print(indent + 1); - } - } - for(int i = 0; i < (int)fieldList.size(); ++i){ - if(fieldMap.find(fieldList[i]) -> second -> selfType() == CONFIG_ARRAY_TYPE){ - fieldMap.find(fieldList[i]) -> second -> print(indent + 1); - } - } - for(int i = 0; i < (int)fieldList.size(); ++i){ - if(fieldMap.find(fieldList[i]) -> second -> selfType() == CONFIG_GROUP_TYPE){ - fieldMap.find(fieldList[i]) -> second -> print(indent + 1); - } - } - } - - bsl::var::IVar& ConfigGroup :: to_IVar(bsl::ResourcePool * vpool, ErrCode* errCode)const{ - if(vpool == NULL){ - LOG(WARNING) << "Configure: visit ConfigGroup.to_IVar() failed : NULLBUFFER"; - setErrorKeyPath(this->_name); - popError(errCode, NULLBUFFER); - return bsl::var::Null::null; - } - bsl::var::Dict & dict = vpool->create(); - for(int i = 0; i < (int)fieldList.size(); ++i){ - ConfigUnit * p = fieldMap.find(fieldList[i]) -> second; - bsl::var::IVar & son = p->to_IVar(vpool, errCode); - dict.set( fieldList[i], son ); - } - return dict; - } - - char ConfigGroup :: to_char(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return char(); - } - - unsigned char ConfigGroup :: to_uchar(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return (unsigned char)(0); - } - - int16_t ConfigGroup :: to_int16(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return int16_t(); - } - - u_int16_t ConfigGroup :: to_uint16(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return u_int16_t(); - } - - int ConfigGroup :: to_int32(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return int(); - } - - u_int32_t ConfigGroup :: to_uint32(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return u_int32_t(); - } - - long long ConfigGroup :: to_int64(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return (long long)(0); - } - - unsigned long long ConfigGroup :: to_uint64(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return (unsigned long long)(0); - } - - float ConfigGroup :: to_float(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return float(); - } - - double ConfigGroup :: to_double(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return double(); - } -#if 1 - bsl_string ConfigGroup :: to_bsl_string(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return bsl_string(); - } -#endif - str_t ConfigGroup :: to_raw_string(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return str_t(); - } - const char * ConfigGroup :: to_cstr(ErrCode * errCode)const{ - setErrorKeyPath(this->_name); - popError(errCode, GROUPTOUNIT); - return NULL; - } - - //----------------to_xxx with default value - char ConfigGroup :: to_char(ErrCode * errCode, const char & def)const { - if(errCode){ - *errCode = GROUPTOUNIT; - } - setErrorKeyPath(this->_name); - return def; - } - unsigned char ConfigGroup :: to_uchar(ErrCode * errCode, const unsigned char & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - int16_t ConfigGroup :: to_int16(ErrCode * errCode, const int16_t & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - u_int16_t ConfigGroup :: to_uint16(ErrCode * errCode, const u_int16_t & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - int ConfigGroup :: to_int32(ErrCode * errCode, const int & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - u_int32_t ConfigGroup :: to_uint32(ErrCode * errCode, const u_int32_t & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - long long ConfigGroup :: to_int64(ErrCode * errCode, const long long & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - unsigned long long ConfigGroup :: to_uint64(ErrCode * errCode, const unsigned long long & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - float ConfigGroup :: to_float(ErrCode * errCode, const float & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - double ConfigGroup :: to_double(ErrCode * errCode, const double & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - bsl_string ConfigGroup :: to_bsl_string(ErrCode * errCode, const bsl_string & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - str_t ConfigGroup :: to_raw_string(ErrCode * errCode, const str_t & def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - //获取C风格的字符串(常量) - const char * ConfigGroup :: to_cstr(ErrCode * errCode, const char * def)const{ - setErrorKeyPath(this->_name); - if(errCode){ - *errCode = GROUPTOUNIT; - } - return def; - } - - ErrCode ConfigGroup :: get_char(char * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uchar(unsigned char * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_int16(int16_t * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uint16(u_int16_t * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_int32(int * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uint32(u_int32_t * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_int64(long long * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uint64(unsigned long long * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_float(float * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_double(double * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } -#if 1 - ErrCode ConfigGroup :: get_bsl_string(bsl_string * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } -#endif - ErrCode ConfigGroup :: get_raw_string(str_t * /*valueBuf*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - ErrCode ConfigGroup :: get_cstr(char * /*valueBuf*/, size_t /*len*/)const{ - setErrorKeyPath(this->_name); - return GROUPTOUNIT; - } - - //--------------get_xx with default----------- - - ErrCode ConfigGroup :: get_char(char * valueBuf, const char & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uchar(unsigned char * valueBuf, const unsigned char & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_int16(int16_t * valueBuf, const int16_t & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uint16(u_int16_t * valueBuf, const u_int16_t & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_int32(int * valueBuf, const int & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uint32(u_int32_t * valueBuf, const u_int32_t & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_int64(long long * valueBuf, const long long & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_uint64(unsigned long long * valueBuf, const unsigned long long & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_float(float * valueBuf, const float & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_double(double * valueBuf, const double & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_bsl_string(bsl_string * valueBuf, const bsl_string & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_raw_string(str_t * valueBuf, const str_t & def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - *valueBuf = def; - } - return GROUPTOUNIT; - } - - ErrCode ConfigGroup :: get_cstr(char * valueBuf, size_t len, const char * def)const{ - setErrorKeyPath(this->_name); - if (valueBuf) { - snprintf(valueBuf, len, "%s", def); - } - return GROUPTOUNIT; - } - - const ConfigUnit & ConfigGroup :: get_sub_unit(int index) const { - int susize = (int) fieldMap.size(); - if ((0 > index) || (index >= susize)) { - return *get_err_unit(); - } - ConfigUnit * p = fieldMap.find(fieldList[index]) -> second; - if (NULL == p) { - return *get_err_unit(); - } - return *p; - } - - int ConfigGroup :: equals(const ConfigUnit & conf) const { - try { - const_itr_t itr; - for (itr = fieldMap.begin();itr != fieldMap.end(); ++itr) { - if (0 != itr->second->equals(conf[itr->first])) { - return -1; - } - } - return 0; - } catch (bsl::Exception) { - return -1; - } - return -1; - } - - int ConfigGroup :: add_unit(const bsl_string & key, const bsl_string& value, - const int objtype, int except, ConfigUnit ** ref) { - if (CONFIG_ERROR_TYPE == (*this)[key].selfType()) { - ConfigUnit * tmp = create_unit(key, value, objtype, this); - if (NULL == tmp){ - if (except) { - popError(NULL, CONFIG_ERROR); - } - return CONFIG_ERROR; - } - this->push(key,tmp); - if (NULL != ref) { - *ref = tmp; - } - } else { - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "Configure: failed to write error buffer"; - } - popError(NULL, DUPLICATED_KEY); - } - return DUPLICATED_KEY; - } - return 0; - } - int ConfigGroup :: del_unit(const bsl_string & key, int except) { - if (CONFIG_ERROR_TYPE != (*this)[key].selfType()) { - std::vector :: iterator iter; - for ( iter = fieldList.begin(); iter != fieldList.end(); ) - { - if ( *iter == key ) - { - iter = fieldList.erase( iter ); - break; - } - iter++; - } - ConfigUnit * delu = NULL; - ptr_t ptr = fieldMap.find(key); - if(NULL != ptr){ - delu = ptr->second; - fieldMap.erase(ptr->first); - } - if (delu) { - delete delu; - } - } else { - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "Configure: failed to write error buffer"; - } - popError(NULL, NOSUCHKEY); - } - return NOSUCHKEY; - } - return 0; - } - int ConfigGroup :: _append_unit(const ConfigUnit & unit,int check, int except) { - int ret = 0; - int i; - int size; - if (this->selfType()!= unit.selfType()) { - ret = ERROR; - goto cpend; - } - size = unit.size(); - - if (check) { - for (i=0; i< size; ++i) { - const comcfg::ConfigUnit & su = unit.get_sub_unit(i); - if (CONFIG_ERROR_TYPE == su.selfType()) { - ret = ERROR; - goto cpend; - } - if (CONFIG_ERROR_TYPE != (*this)[su.get_key_name()].selfType()) { - bsl_string ep = this->_name; - ep.append(su.get_key_name()); - setErrorKeyPath(ep); - ret = DUPLICATED_KEY; - goto cpend; - } - } - } - - for (i=0; i< size; ++i) { - const comcfg::ConfigUnit & subunit = unit.get_sub_unit(i); - switch (subunit.selfType()) { - case comcfg :: CONFIG_ERROR_TYPE: - ret = ERROR; - break; - case comcfg :: CONFIG_ARRAY_TYPE: - case comcfg :: CONFIG_GROUP_TYPE: - ConfigUnit * adu; - ret = add_unit(subunit.get_key_name(), "", subunit.selfType(), 0, &adu); - if (0 == ret) { - ret = adu->_append_unit(subunit,0, except); - } - if (0 != ret) { - goto cpend; - } - break; - case comcfg :: CONFIG_UNIT_TYPE: - ret = add_unit(subunit.get_key_name(), subunit.to_raw_string(), subunit.selfType()); - if (0 != ret) { - goto cpend; - } - break; - default: - ret = ERROR; - break; - } - if (0 != ret) { - break; - } - } - - cpend: - if (except && (0 != ret)) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, ERROR); - } - return ret; - } - - void ConfigGroup :: clear() { - itr_t itr = fieldMap.begin(); - while(itr != fieldMap.end()){ - delete itr->second; - ++itr; - } - fieldMap.clear(); - fieldList.clear(); - } - - int ConfigGroup :: copy_unit(const ConfigUnit & unit, int except){ - int ret =0; - if (this->selfType()!= unit.selfType()) { - ret = ERROR; - goto cpend; - } - clear(); - return _append_unit(unit, 1, except); - cpend: - if (except && (0 != ret)) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, ERROR); - } - return ret; - } - int ConfigGroup::printGroup(){ - if(_dupLevel == GROUP_DUP_LEVEL0){ - return 0; - } - size_t threshold = 2; - if(_dupLevel == GROUP_DUP_LEVEL3){ - threshold = 1; - } - int dupNum = 0; - for(dup_itr itr=_dupMap.begin(); itr!=_dupMap.end(); itr++){ - if(itr->second.size() >= threshold){ - ++ dupNum ; - } - } - LOG(INFO) << "ConfigGroup: There are " << dupNum << " (duplicate) group names in total:"; - for(dup_itr itr=_dupMap.begin(); itr!=_dupMap.end(); itr++){ - const char *groupName = ((ConfigGroup*)itr->first)->getName(); - const int groupDepth = ((ConfigGroup *)itr->first)->getLevel(); - dup_vector &dvec = itr->second; - if(dvec.size() >= threshold){ - for(size_t i=0; i_name; - } - - /** - * @brief 比较是否相等 - * - * @return int 0表示相等 -1不相等 - * @author zhang_rui - **/ - virtual int equals(const ConfigUnit & conf) const; - /** - * @brief 增加一个子unit - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int add_unit(const bsl_string & key, const bsl_string& value, - const int objtype=CONFIG_UNIT_TYPE,int except=0, ConfigUnit ** ref=NULL); - - /** - * @brief 删除一个unit - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int del_unit(const bsl_string & key, int except=0); - /** - * @brief 复制一个unit, 深拷贝 - * - * 将unit的内容复制到本对象。 - * 类型需要匹配,只能从group复制到group,array复制到array - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int copy_unit(const ConfigUnit & unit, int except=0); - protected: - friend class Reader; - friend class Constraint; - friend class Configure; - friend class ConfigUnit; - friend class CFdefault; - void create(const char * __name, ConfigGroup * __father = NULL); - ConfigUnit * relativeSection(ConfigUnit *globalSec, str_t str, int * depth); - int push(const str_t& key, ConfigUnit* unit); - const char * getName() const{ - return _name.c_str(); - } - virtual int selfType() const{ - return CONFIG_GROUP_TYPE; - } - int getLevel() const{ - return _level; - } - - int _level; - - //ConfigGroup * _father; - str_t _name; - std::vector fieldList; - typedef bsl::hashmap :: iterator itr_t; - typedef bsl::hashmap :: const_iterator const_itr_t; - typedef bsl::hashmap :: _Pair * ptr_t; - bsl::hashmap fieldMap; - - /** - * @brief 清除内容 - * - * @return void - * @author zhang_rui - **/ - virtual void clear(); - - /* - * @brief 根据_dupLevel允许的重名等级打印group名 - * - * @return 0,正常;DUPLICATED_GROUP,存在重名的group - 在_dupLevel为GROUP_DUP_LEVEL0或GROUP_DUP_LEVEL3时,返回0 - * @author Lin_jieqiong - */ - int printGroup(); - struct dup_position{ - str_t file; - int line; - }; - typedef std::vector dup_vector; - typedef bsl::hashmap :: iterator dup_itr; - typedef bsl::hashmap :: _Pair * dup_ptr; - - bsl::hashmap _dupMap; - int _dupLevel; - public: - /** - * @brief 复制一个group的子unit, 深拷贝 - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int _append_unit(const ConfigUnit & unit,int check=1, int except=0); - - }; - -} - - - - - - - - - - - - - - - - -#endif //__CONFIGGROUP_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/ConfigReloader.cpp b/configure/ConfigReloader.cpp deleted file mode 100644 index a118c0039f017dbb079224479044c368e45b223e..0000000000000000000000000000000000000000 --- a/configure/ConfigReloader.cpp +++ /dev/null @@ -1,521 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2010 Baidu.com, Inc. All Rights Reserved - * - **************************************************************************/ - - - -/** - * @file ConfigReloader.cpp - * @author zhang_rui(com@baidu.com) - * @date 2010-1-21 - * @brief - * - **/ - - -#include "ConfigReloader.h" -#include -#include - -static const int hashmap_bitems = 256; - -namespace comcfg { - -#define COMCFG_SAFEFREE(obj) do {if (NULL != (obj)) { delete (obj); (obj)=NULL; }} while(0) - -ConfigReloader :: ConfigReloader() : _finit(0), _last_modify(0) { - _config[0] = 0; - _config[1] = 0; - _config_curid = 0; - _load_param.filename = ""; - _load_param.rangename = ""; - _load_param.path = ""; - _load_param.version = CONFIG_VERSION_1_0; - - _chrcbmap.create(hashmap_bitems); - _strcbmap.create(hashmap_bitems); - _intcbmap.create(hashmap_bitems); - _uint64cbmap.create(hashmap_bitems); - _floatcbmap.create(hashmap_bitems); - _groupcbmap.create(hashmap_bitems); -} - -/** - * @brief 设定要监控的配置文件 - * - * @param [in] path : const char* 配置文件的路径 - * @param [in] conf : const char* 配置文件名 - * @param [in] range : const char* 约束文件,约束文件不进行更新检查 - * @param [in] version : int 文件格式的版本(暂未使用) - * @return int 0表示成功,其余为失败 - **/ -int ConfigReloader :: init(const char * path, const char * conf, - const char * range, int version) { - if(path == NULL || conf == NULL){ - LOG(WARNING) << "ConfigReloader.init : path or filename error..."; - return -1; - } - if (_finit) { - LOG(WARNING) << "ConfigReloader.init : already init. Can not init twice."; - return -1; - } - _load_param.filename = conf; - if (NULL != range) { - _load_param.rangename = range; - } else { - _load_param.rangename = ""; - } - _load_param.path = path; - _load_param.version = version; - int ret=0; - _config[_config_curid] = new comcfg::Configure; - ret = _config[_config_curid]->load(path, conf,range,version); - if (0 != ret) { - COMCFG_SAFEFREE(_config[_config_curid]); - return ret; - } - _last_modify = _config[_config_curid]->lastConfigModify(); - if (0 == _last_modify) { - LOG(WARNING) << "ConfigReloader.init : get last modify time error..."; - COMCFG_SAFEFREE(_config[_config_curid]); - return -1; - } - if (0 == ret) { - _finit = 1; - } - return ret; -} - -int ConfigReloader :: _add_key_monitor(config_monmap_t * map, const char * key, - key_change_cb_t proc, void * prm) { - if(key == NULL || NULL == proc){ - LOG(WARNING) << "ConfigReloader._add_key_monitor : NULL key or callback"; - return -1; - } - bsl::string kstr = key; - config_monitor_t * pmon = new config_monitor_t; - pmon->callback = proc; - pmon->param = prm; - config_monmap_pr_t ptr; - ptr = map->find(kstr); - if(NULL != ptr) { - if (NULL != ptr->second) { - delete ptr->second; - } - map->erase(ptr->first); - LOG(WARNING) << "ConfigReloader._add_key_monitor : " - "same key exist, update callback("<< proc << "), param(" << prm << ")"; - } - (*map).set(kstr, pmon, 1); - return 0; -} - -int ConfigReloader :: reload() { - int nextid = (_config_curid + 1) % 2; - COMCFG_SAFEFREE(_config[nextid]); - _config[nextid] = new comcfg :: Configure; - int ret = _config[nextid]->load(_load_param.path.c_str(), _load_param.filename.c_str(), - _load_param.rangename.c_str(), _load_param.version); - if (0 != ret) { - COMCFG_SAFEFREE(_config[nextid]); - return -1; - } - _config_curid = nextid; - return ret; -} - -int ConfigReloader :: check() { - int oldid = (_config_curid + 1) % 2; - try { - int ret = 0; - bsl::hashmap :: iterator itr; - //先检查合法 - for(itr = _chrcbmap.begin(); itr != _chrcbmap.end(); ++itr){ - _config[_config_curid]->deepGet(itr->first).to_char(); - } - for (itr = _strcbmap.begin(); itr != _strcbmap.end(); ++itr) { - _config[_config_curid]->deepGet(itr->first).to_bsl_string(); - } - for (itr = _intcbmap.begin(); itr != _intcbmap.end(); ++itr) { - _config[_config_curid]->deepGet(itr->first).to_int64(); - } - for (itr = _uint64cbmap.begin(); itr != _uint64cbmap.end(); ++itr) { - _config[_config_curid]->deepGet(itr->first).to_uint64(); - } - for (itr = _floatcbmap.begin(); itr != _floatcbmap.end(); ++itr) { - _config[_config_curid]->deepGet(itr->first).to_double(); - } - for (itr = _groupcbmap.begin(); itr != _groupcbmap.end(); ++itr) { - int ty = _config[_config_curid]->deepGet(itr->first).selfType(); - if (CONFIG_GROUP_TYPE != ty && CONFIG_ARRAY_TYPE != ty) { - LOG(WARNING) << "ConfigReloader.add_group_monitor :" - " (" << itr->first.c_str() << ") is not group or array"; - return -1; - } - } - - - //再检查数据是否改变 - for(itr = _chrcbmap.begin(); itr != _chrcbmap.end(); ++itr){ - if (NULL != itr->second) { - config_monitor_t * pmon = (config_monitor_t *) (itr->second); - if (_config[_config_curid]->deepGet(itr->first).to_char() != - _config[oldid]->deepGet(itr->first).to_char()) { - pmon->callback(_config[oldid]->deepGet(itr->first), - _config[_config_curid]->deepGet(itr->first), pmon->param); - ++ret; - } - } - } - for (itr = _strcbmap.begin(); itr != _strcbmap.end(); ++itr) { - if (NULL != itr->second) { - config_monitor_t * pmon = (config_monitor_t *) (itr->second); - if (_config[_config_curid]->deepGet(itr->first).to_bsl_string() - != _config[oldid]->deepGet(itr->first).to_bsl_string()) { - pmon->callback(_config[oldid]->deepGet(itr->first), - _config[_config_curid]->deepGet(itr->first), - pmon->param); - ++ret; - } - } - } - for (itr = _intcbmap.begin(); itr != _intcbmap.end(); ++itr) { - if (NULL != itr->second) { - config_monitor_t * pmon = (config_monitor_t *) (itr->second); - if (_config[_config_curid]->deepGet(itr->first).to_int64() - != _config[oldid]->deepGet(itr->first).to_int64()) { - pmon->callback(_config[oldid]->deepGet(itr->first), - _config[_config_curid]->deepGet(itr->first), - pmon->param); - ++ret; - } - } - } - for (itr = _uint64cbmap.begin(); itr != _uint64cbmap.end(); ++itr) { - if (NULL != itr->second) { - config_monitor_t * pmon = (config_monitor_t *) (itr->second); - if (_config[_config_curid]->deepGet(itr->first).to_uint64() - != _config[oldid]->deepGet(itr->first).to_uint64()) { - pmon->callback(_config[oldid]->deepGet(itr->first), - _config[_config_curid]->deepGet(itr->first), - pmon->param); - ++ret; - } - } - } - for (itr = _floatcbmap.begin(); itr != _floatcbmap.end(); ++itr) { - if (NULL != itr->second) { - config_monitor_t * pmon = (config_monitor_t *) (itr->second); - if (_config[_config_curid]->deepGet(itr->first).to_double() - != _config[oldid]->deepGet(itr->first).to_double()) { - pmon->callback(_config[oldid]->deepGet(itr->first), - _config[_config_curid]->deepGet(itr->first), - pmon->param); - ++ret; - } - } - } - for (itr = _groupcbmap.begin(); itr != _groupcbmap.end(); ++itr) { - if (NULL != itr->second) { - config_monitor_t * pmon = (config_monitor_t *) (itr->second); - if (0 != _config[_config_curid]->deepGet(itr->first) - .equals(_config[oldid]->deepGet(itr->first)) ) { - pmon->callback(_config[oldid]->deepGet(itr->first), - _config[_config_curid]->deepGet(itr->first), - pmon->param); - ++ret; - } - } - } - for(int i = 0; i < (int)_filecblist.size(); ++i){ - config_monitor_t * pmon = _filecblist[i]; - if (NULL != pmon && NULL!= pmon->callback) { - pmon->callback(*(_config[oldid]), *(_config[_config_curid]), pmon->param); - ++ret; - } - } - return ret; - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.check : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.check : unknown error"; - return -1; - } - LOG(WARNING) << "ConfigReloader.check : unknown error, the codes lost road."; - return -1; -} - -/** - * @brief 检查配置文件是否发生变化。 - * - * @return int 0表示配置没有不安化,1表示配置发生了变化并进行了通知,-1表示更新后的配置内容错误或约束错误。 - * -2表示其他错误 - **/ -int ConfigReloader :: monitor() { - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.monitor : NULL config(" << _config_curid << "), init failed?"; - return -2; - } - time_t modtime = _config[_config_curid]->lastConfigModify(); - if (modtime > _last_modify) { - if (0 != reload()) { - LOG(WARNING) << "ConfigReloader.monitor : reload error("<< _load_param.filename.c_str() << ")"; - return -1; - } - int ret = check(); - if (-1 == ret) { - LOG(WARNING) << "ConfigReloader.monitor : check error(" << _load_param.filename.c_str() << ")"; - int oldid = _config_curid; - _config_curid = (_config_curid + 1) % 2; - - COMCFG_SAFEFREE(_config[oldid]); - return -2; - } - _last_modify = modtime; - return ret; - } else { - return 0; - } - LOG(WARNING) << "ConfigReloader.monitor : unknown error(" << _load_param.filename.c_str() << ")"; - return -2; -} -/** - * @brief 增加要监控的整数key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_key_int(const char * key, key_change_cb_t proc, void * prm) { - try { - if (NULL == key) { - LOG(WARNING) << "ConfigReloader.add_key_int : NULL key."; - return -1; - } - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_key_int : NULL config. init failed?"; - return -1; - } - _config[_config_curid]->deepGet(key).to_int64(); - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.add_key_int : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.add_key_int : unknown error"; - return -1; - } - return _add_key_monitor(&_intcbmap, key, proc, prm); -} -/** - * @brief 增加要监控的uint64 key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_key_uint64(const char * key, key_change_cb_t proc, void * prm) { - try { - if (NULL == key) { - LOG(WARNING) << "ConfigReloader.add_key_uint64 : NULL key."; - return -1; - } - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_key_uint64 : NULL config. init failed?"; - return -1; - } - _config[_config_curid]->deepGet(key).to_uint64(); - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.add_key_uint64 : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.add_key_uint64 : unknown error"; - return -1; - } - return _add_key_monitor(&_uint64cbmap, key, proc, prm); -} -/** - * @brief 增加要监控的浮点类型key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_key_float(const char * key, key_change_cb_t proc, void * prm) { - try { - if (NULL == key) { - LOG(WARNING) << "ConfigReloader.add_key_float : NULL key."; - return -1; - } - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_key_float : NULL config. init failed?"; - return -1; - } - _config[_config_curid]->deepGet(key).to_double(); - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.add_key_float : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.add_key_float : unknown error"; - return -1; - } - return _add_key_monitor(&_floatcbmap, key, proc, prm); -} -/** - * @brief 增加要监控的字符key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_key_char(const char * key, key_change_cb_t proc, void * prm) { - try { - if (NULL == key) { - LOG(WARNING) << "ConfigReloader.add_key_char : NULL key."; - return -1; - } - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_key_char : NULL config. init failed?"; - return -1; - } - _config[_config_curid]->deepGet(key).to_char(); - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.add_key_char : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.add_key_char : unknown error"; - return -1; - } - return _add_key_monitor(&_chrcbmap, key, proc, prm); -} -/** - * @brief 增加要监控的字符串key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_key_string(const char * key, key_change_cb_t proc, void * prm) { - try { - if (NULL == key) { - LOG(WARNING) << "ConfigReloader.add_key_string : NULL key."; - return -1; - } - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_key_string : NULL config. init failed?"; - return -1; - } - _config[_config_curid]->deepGet(key).to_bsl_string(); - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.add_key_string : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.add_key_string : unknown error"; - return -1; - } - return _add_key_monitor(&_strcbmap, key, proc, prm); -} -/** - * @brief 增加监控[group]的回调 - * - * @param [in] group : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_group_monitor(const char * group, key_change_cb_t proc, void * prm) { - try { - if (NULL == group) { - LOG(WARNING) << "ConfigReloader.add_group_monitor : NULL key."; - return -1; - } - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_group_monitor : NULL config. init failed?"; - return -1; - } - int ty =_config[_config_curid]->deepGet(group).selfType(); - if (CONFIG_GROUP_TYPE != ty && CONFIG_ARRAY_TYPE != ty) { - LOG(WARNING) << "ConfigReloader.add_group_monitor :" - " (" << group << ") is not group or array"; - return -1; - } - } catch (bsl::Exception &e) { - LOG(WARNING) << "ConfigReloader.add_group_monitor : error(" << e.what() << ")"; - return -1; - } catch (...) { - LOG(WARNING) << "ConfigReloader.add_group_monitor : unknown error"; - return -1; - } - return _add_key_monitor(&_groupcbmap, group, proc, prm); -} -/** - * @brief 增加监控整个文件的回调 - * - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ -int ConfigReloader :: add_file_monitor(key_change_cb_t proc, void * prm) { - if (NULL == _config[_config_curid]) { - LOG(WARNING) << "ConfigReloader.add_file_monitor : NULL config. init failed?"; - return -1; - } - if(NULL == proc) { - LOG(WARNING) << "ConfigReloader.add_file_monitor : NULL callback"; - return -1; - } - - for(int i = 0; i < (int)_filecblist.size(); ++i){ - config_monitor_t * pmon = _filecblist[i]; - if (NULL != pmon && proc == pmon->callback) { - pmon->param = prm; - LOG(WARNING) << "ConfigReloader.add_file_monitor : " - "same callback exist, updated param to " << prm; - return -1; - } - } - - config_monitor_t * pmon = new config_monitor_t; - pmon->callback = proc; - pmon->param = prm; - _filecblist.push_back(pmon); - return 0; -} - -Configure * ConfigReloader :: get_config() { - return _config[_config_curid]; -} - - -void ConfigReloader :: _free_map(bsl::hashmap *map) { - bsl::hashmap::iterator itr; - for(itr = map->begin(); itr != map->end(); ++itr) { - if (NULL != itr->second) { - delete itr->second; - } - } - if(0 != map->destroy()) - LOG(WARNING) << "ConfigReloader._free_map : " - "map->destory() failed "; -} - -void ConfigReloader :: _free_list(std::vector *list) { - for(int i = 0; i < (int)list->size(); ++i){ - if (NULL != (*list)[i]) { - delete (*list)[i]; - } - } -} -ConfigReloader :: ~ConfigReloader() { - _free_map(&_chrcbmap); - _free_map(&_strcbmap); - _free_map(&_intcbmap); - _free_map(&_uint64cbmap); - _free_map(&_floatcbmap); - _free_map(&_groupcbmap); - _free_list(&_filecblist); - COMCFG_SAFEFREE(_config[0]); - COMCFG_SAFEFREE(_config[1]); -} - -}//namespace comcfg diff --git a/configure/ConfigReloader.h b/configure/ConfigReloader.h deleted file mode 100644 index edda8b08720ed456e3661c399376a78cbf2ad255..0000000000000000000000000000000000000000 --- a/configure/ConfigReloader.h +++ /dev/null @@ -1,179 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2010 Baidu.com, Inc. All Rights Reserved - * - **************************************************************************/ - - - -/** - * @file ConfigReloader.h - * @author zhang_rui(com@baidu.com) - * @date 2010-1-21 - * @brief - * - **/ - - -#ifndef CONFIGRELOADER_H_ -#define CONFIGRELOADER_H_ - -#include "Configure.h" - -namespace comcfg { - -typedef int (*key_change_cb_t)(const ConfigUnit &keyold, \ - const ConfigUnit &keynew, void * prm); /**< 处理配置项变更的回调函数类型 */ - -typedef struct _load_param_t { - bsl::string path; /**< 路径 */ - bsl::string filename; /**< 配置文件 */ - bsl::string rangename; /**< 约束文件 */ - int version; /**< 版本 */ -}load_param_t ; - -typedef struct _config_monitor_t { - key_change_cb_t callback; - void * param; -} config_monitor_t; - -class ConfigReloader { - typedef bsl::hashmap config_monmap_t; - typedef bsl::hashmap :: iterator config_monmap_itr_t; - typedef bsl::hashmap :: _Pair* config_monmap_pr_t; -private: - int _finit; /**< 初始化标志 */ - load_param_t _load_param; /**< load 参数 */ - Configure * _config[2]; /**< configure对象,原文件和更新文件 */ - int _config_curid; /**< load 参数 */ - time_t _last_modify; /**< 最近修改时间 */ - std::vector _filecblist; /**< 处理文件变更的回调 */ - bsl::hashmap _chrcbmap; /**< 存储监控的字符key和回调 */ - bsl::hashmap _strcbmap; /**< 存储监控的字符串key和回调 */ - bsl::hashmap _intcbmap; /**< 存储监控的整数key和回调 */ - bsl::hashmap _uint64cbmap; /**< 存储监控的浮点key和回调 */ - bsl::hashmap _floatcbmap; /**< 存储监控的浮点key和回调 */ - bsl::hashmap _groupcbmap; /**< 存储监控的group和回调 */ - - /** - * @brief 增加一个监控回调到map中 - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @param [in] prm : 参数 - * @return int 0表示成功,-1为失败 - **/ - int _add_key_monitor(config_monmap_t * map, const char * key, key_change_cb_t proc, void * prm); - /** - * @brief 释放存储的数据 - * - * @param [in] map : bsl::hashmap - * @return void - **/ - void _free_map(bsl::hashmap *map); - /** - * @brief 释放存储的数据 - * - * @param [in] map : bsl::hashmap - * @return void - **/ - void _free_list(std::vector *list); - - /** - * @brief 重新载入configure文件 - * @return int 0表示成功 其他失败 - **/ - int reload(); - /** - * @brief 检查各个监控值。 - * @return int 0表示配置没有检查项,>=1表示配置发生了变化并进行了通知,-1表示错误。 - **/ - int check(); -public : - /** - * @brief 设定要监控的配置文件 - * - * @param [in] path : const char* 配置文件的路径 - * @param [in] conf : const char* 配置文件名 - * @param [in] range : const char* 约束文件,约束文件不进行更新检查 - * @param [in] version : int 文件格式的版本(暂未使用) - * @return int 0表示成功,其余为失败 - **/ - int init(const char * path, const char * conf, const char * range = NULL, int version = CONFIG_VERSION_1_0); - /** - * @brief 检查配置文件是否发生变化。 - * - * @return int 0表示配置没有不安化,正数表示配置发生了变化并进行了通知的回调个数,-1表示更新后的配置内容错误或约束错误。 - * -2表示其他错误 - **/ - int monitor(); - /** - * @brief 增加要监控的整数key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_key_int(const char * key, key_change_cb_t proc, void * prm); - /** - * @brief 增加要监控的uint64 key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_key_uint64(const char * key, key_change_cb_t proc, void * prm); - /** - * @brief 增加要监控的浮点类型key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_key_float(const char * key, key_change_cb_t proc, void * prm); - /** - * @brief 增加要监控的字符key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_key_char(const char * key, key_change_cb_t proc, void * prm); - /** - * @brief 增加要监控的字符串key - * - * @param [in] key : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_key_string(const char * key, key_change_cb_t proc, void * prm); - /** - * @brief 增加监控[group]的回调 - * - * @param [in] group : const char* 配置项的全路径 - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_group_monitor(const char * group, key_change_cb_t proc, void * prm); - /** - * @brief 增加监控整个文件的回调 - * - * @param [in] proc : key_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_file_monitor(key_change_cb_t proc, void * prm); - /** - * @brief 获取当前的configure - **/ - Configure * get_config(); - - ConfigReloader(); - ~ConfigReloader(); -}; - - - -}//namespace comcfg - - -#endif /* CONFIGRELOADER_H_ */ diff --git a/configure/ConfigUnit.cpp b/configure/ConfigUnit.cpp deleted file mode 100644 index 2808ae8ea96f9e0530c0414f90da9664088f420a..0000000000000000000000000000000000000000 --- a/configure/ConfigUnit.cpp +++ /dev/null @@ -1,1017 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConfigUnit.cpp,v 1.16 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConfigUnit.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 20:26:57 - * @version $Revision: 1.16 $ - * @brief - * - **/ - -#include "ConfigUnit.h" -#include "ConfigError.h" -#include "ConfigArray.h" - -#include "utils/cc_utils.h" -#include "reader/Reader.h" -#include "bsl/var/String.h" -namespace comcfg{ - - ConfigUnit * ConfigUnit :: get_err_unit() { - static ConfigUnit* g_err_unit = NULL; - if (NULL == g_err_unit) { - g_err_unit = new ConfigError(); - } - return g_err_unit; - } - - class ErrorUnitControl { - private: - static int _needfree; - public: - ErrorUnitControl() { - ConfigUnit :: get_err_unit(); - } - ~ErrorUnitControl() { - if (_needfree) { - _needfree =0; - ConfigUnit *eu = ConfigUnit :: get_err_unit(); - delete eu; - } - } - }; - - int ErrorUnitControl::_needfree = 1; - - static ErrorUnitControl err_unit_control; - - //Reader * g_cur_reader = NULL; - //str_t ConfigUnit :: g_unknown = "Unknown"; - - const ConfigUnit & ConfigUnit :: operator[] (const char * str) const { - if (selfType() == CONFIG_UNIT_TYPE) { - LOG(INFO) << "Configure: visit ConfigUnit[char *] : " << _key.c_str() << "[" << str << "]"; - str_t tmp=this->_key; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - } - return *get_err_unit(); - } - const ConfigUnit & ConfigUnit :: operator[] (const str_t & str) const{ - if (selfType() == CONFIG_UNIT_TYPE) { - LOG(INFO) << "Configure: visit ConfigUnit[str_t] : " << _key.c_str() << "[" << str.c_str() << "]"; - str_t tmp=this->_key; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - } - return *get_err_unit(); - } - const ConfigUnit & ConfigUnit :: operator[] (int idx) const{ - if (selfType() == CONFIG_UNIT_TYPE) { - LOG(INFO) << "Configure: visit ConfigUnit[int] : " << _key.c_str() << "[" << idx << "]"; - str_t tmp=this->_key; - char tmpid[64]; - snprintf(tmpid,64, "%d",idx); - tmp.append("[").append(tmpid).append("]");; - setErrorKeyPath(tmp); - } - return *get_err_unit(); - } - ConfigUnit & ConfigUnit :: operator[] (const char * str) { - if (selfType() == CONFIG_UNIT_TYPE) { - LOG(INFO) << "Configure: visit ConfigUnit[char *] : " << _key.c_str() << "[" << str << "]"; - str_t tmp=this->_key; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - } - return *get_err_unit(); - } - ConfigUnit & ConfigUnit :: operator[] (const str_t & str) { - if (selfType() == CONFIG_UNIT_TYPE) { - LOG(INFO) << "Configure: visit ConfigUnit[str_t] : " << _key.c_str() << "[" << str.c_str() << "]"; - str_t tmp=this->_key; - tmp.append(".").append(str); - setErrorKeyPath(tmp); - } - return *get_err_unit(); - } - ConfigUnit & ConfigUnit :: operator[] (int idx) { - if (selfType() == CONFIG_UNIT_TYPE) { - LOG(INFO) << "Configure: visit ConfigUnit[int] : " << _key.c_str() << "[" << idx << "]"; - str_t tmp=this->_key; - char tmpid[64]; - snprintf(tmpid,64, "%d",idx); - tmp.append("[").append(tmpid).append("]");; - setErrorKeyPath(tmp); - } - return *get_err_unit(); - } - - ConfigUnit & ConfigUnit :: operator= (ConfigUnit & unit) { - copy_unit(unit, 1); - return *this; - } - ConfigUnit :: ConfigUnit(): _key(""), _at_file ("NULL"), _at_line(-1), _father(NULL), _bConstrainted(false) { - } - ConfigUnit :: ConfigUnit(const str_t& __key, const str_t& __value, const Reader * __cur_reader, ConfigGroup * father) - : _at_file("NULL"), _at_line(-1){ - for(int i = 0; i < (int)__key.size(); ++i){ - if(i == 0 && __key[i] == '@'){ - continue; - } - if((!isalpha(__key[i])) && (!isdigit(__key[i])) && __key[i] != '_'){ - LOG(WARNING) << "Unsupport _key format [" << __key.c_str() << "]"; - throw ConfigException(); - } - } - _key = __key; - _value = __value; - _cstr = _value; - _cstr_err = 0; - _father = father; - _bConstrainted = false; - if(__cur_reader != NULL){ - //如果这个reader被释放了,_at_file就会指向非法内存片 - setFilePosition(__cur_reader->_cur_file.c_str(), __cur_reader->_cur_line); - } - if(_value.size() > 0 && _value[0] == '"'){ - _cstr_err = Trans :: str2str(_value, &_cstr); - if(_cstr_err){ - LOG(WARNING) << "Config : Error format : _key[" << _key.c_str() << "] _value[" << _value.c_str() << "]"; - } - } - } - - const char * ConfigUnit :: seeError(const ErrCode & err)const{ - switch(err){ - case ERROR : - return "Something error"; - case OK : - return "OK"; - case FORMATERROR : - return "Format error"; - case OUTOFRANGE : - return "Out of range"; - case NULLVALUE : - return "Value is null"; - case NULLBUFFER : - return "Given buffer is null"; - case NOSUCHKEY : - return "No such _key"; - case CONSTRAINT_ERROR : - return "Constraint error"; - case CONFIG_ERROR : - return "config error"; - case GROUPTOUNIT : - return "use group as key"; - case DUPLICATED_KEY : - return "duplicated key"; - case UNKNOWN : - default: - return "Unknown error"; - } - return "Unknown error"; - } - void ConfigUnit :: popError(ErrCode * err, ErrCode code)const{ - if(err){ - *err = code; - } - else{ - ConfigThrower::throwException(code); - } - } - - void ConfigUnit :: setErrorKeyPath(str_t str)const{ - str_t errkeypath = str; //this->_key; - //errkeypath.append(".").append(str); - const ConfigGroup * top = this->_father; - for (;NULL != top; top = top->_father){ - if (top->_name == CONFIG_GLOBAL){ - break; - } else { - errkeypath = str_t(top->_name).append(".").append(errkeypath); - } - } - if (0 != ul_seterrbuf("%s", errkeypath.c_str())) { - LOG(WARNING) << "Configure: failed to write Error key path to error buffer"; - } - } - - ConfigUnit :: ~ConfigUnit(){} - char ConfigUnit :: to_char(ErrCode * errCode)const{ - char tmp; - popError(errCode, get_char(&tmp)); - return tmp; - } - - unsigned char ConfigUnit :: to_uchar(ErrCode * errCode)const{ - unsigned char tmp; - popError(errCode, get_uchar(&tmp)); - return tmp; - } - - int16_t ConfigUnit :: to_int16(ErrCode * errCode)const{ - int16_t tmp; - popError(errCode, get_int16(&tmp)); - return tmp; - } - - u_int16_t ConfigUnit :: to_uint16(ErrCode * errCode)const{ - u_int16_t tmp; - popError(errCode, get_uint16(&tmp)); - return tmp; - } - - int ConfigUnit :: to_int32(ErrCode * errCode)const{ - int tmp; - popError(errCode, this->get_int32(&tmp)); - return tmp; - } - - u_int32_t ConfigUnit :: to_uint32(ErrCode * errCode)const{ - u_int32_t tmp; - popError(errCode, get_uint32(&tmp)); - return tmp; - } - - long long ConfigUnit :: to_int64(ErrCode * errCode)const{ - long long tmp; - popError(errCode, get_int64(&tmp)); - return tmp; - } - - unsigned long long ConfigUnit :: to_uint64(ErrCode * errCode)const{ - unsigned long long tmp; - popError(errCode, get_uint64(&tmp)); - return tmp; - } - - float ConfigUnit :: to_float(ErrCode * errCode)const{ - float tmp; - popError(errCode, get_float(&tmp)); - return tmp; - } - - double ConfigUnit :: to_double(ErrCode * errCode)const{ - double tmp; - popError(errCode, get_double(&tmp)); - return tmp; - } -#if 1 - bsl_string ConfigUnit :: to_bsl_string(ErrCode * errCode)const{ - bsl_string tmp; - popError(errCode, get_bsl_string(&tmp)); - return tmp; - } -#endif -#if 0 - std_string ConfigUnit :: to_std_string(ErrCode * errCode)const{ - std_string tmp; - popError(errCode, get_std_string(&tmp)); - return tmp; - } -#endif - str_t ConfigUnit :: to_raw_string(ErrCode * errCode)const{ - str_t tmp; - popError(errCode, get_raw_string(&tmp)); - return tmp; - } -#if 1 - const char * ConfigUnit :: to_cstr(ErrCode * errCode)const{ - if (_cstr_err) { - LOG(INFO) << "Configure: visit ConfigUnit.to_cstr() failed"; - setErrorKeyPath(this->_key); - } - popError(errCode, _cstr_err); - return _cstr.c_str(); - } -#endif - - //----------------to_xxx with default value - char ConfigUnit :: to_char(ErrCode * errCode, const char & def)const { - char ret; - *errCode = get_char(&ret, def); - return ret; - } - unsigned char ConfigUnit :: to_uchar(ErrCode * errCode, const unsigned char & def)const{ - unsigned char ret; - *errCode = get_uchar(&ret, def); - return ret; - } - int16_t ConfigUnit :: to_int16(ErrCode * errCode, const int16_t & def)const{ - int16_t ret; - *errCode = get_int16(&ret, def); - return ret; - } - u_int16_t ConfigUnit :: to_uint16(ErrCode * errCode, const u_int16_t & def)const{ - u_int16_t ret; - *errCode = get_uint16(&ret, def); - return ret; - } - int ConfigUnit :: to_int32(ErrCode * errCode, const int & def)const{ - int ret; - *errCode = get_int32(&ret, def); - return ret; - } - u_int32_t ConfigUnit :: to_uint32(ErrCode * errCode, const u_int32_t & def)const{ - u_int32_t ret; - *errCode = get_uint32(&ret, def); - return ret; - } - long long ConfigUnit :: to_int64(ErrCode * errCode, const long long & def)const{ - long long ret; - *errCode = get_int64(&ret, def); - return ret; - } - unsigned long long ConfigUnit :: to_uint64(ErrCode * errCode, const unsigned long long & def)const{ - unsigned long long ret; - *errCode = get_uint64(&ret, def); - return ret; - } - float ConfigUnit :: to_float(ErrCode * errCode, const float & def)const{ - float ret; - *errCode = get_float(&ret, def); - return ret; - } - double ConfigUnit :: to_double(ErrCode * errCode, const double & def)const{ - double ret; - *errCode = get_double(&ret, def); - return ret; - } - bsl_string ConfigUnit :: to_bsl_string(ErrCode * errCode, const bsl_string & def)const{ - bsl_string ret; - *errCode = get_bsl_string(&ret, def); - return ret; - } - str_t ConfigUnit :: to_raw_string(ErrCode * errCode, const str_t & def)const{ - str_t ret; - *errCode = get_raw_string(&ret, def); - return ret; - } - //获取C风格的字符串(常量) - const char * ConfigUnit :: to_cstr(ErrCode * errCode, const char * def)const{ - str_t str; - *errCode = get_bsl_string(&str); - if (0 != *errCode){ - return def; - } - return _cstr.c_str(); - } - - - ErrCode ConfigUnit :: get_char(char * valueBuf)const{ - LOG(INFO) << "Config : Get char from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_char() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - str_t buf; - int ret = Trans :: str2str(_value, &buf); - if(ret){ - LOG(INFO) << "Configure: visit ConfigUnit.get_char() failed"; - setErrorKeyPath(this->_key); - return ret; - } - if(buf.size()){ - *valueBuf = char(buf[0]); - } - else{ - LOG(INFO) << "Configure: visit ConfigUnit.get_char() failed: NULLVALUE"; - setErrorKeyPath(this->_key); - return NULLVALUE; - } - return 0; - } - ErrCode ConfigUnit :: get_uchar(unsigned char * valueBuf)const{ - LOG(INFO) << "Config : Get uchar from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_uchar() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - str_t buf; - int ret = Trans :: str2str(_value, &buf); - if(ret){ - LOG(INFO) << "Configure: visit ConfigUnit.get_uchar() failed"; - setErrorKeyPath(this->_key); - return ret; - } - if(buf.size()){ - *valueBuf = (unsigned char)(buf[0]); - } - else{ - LOG(INFO) << "Configure: visit ConfigUnit.get_uchar() failed: NULLVALUE"; - setErrorKeyPath(this->_key); - return NULLVALUE; - } - return 0; - } - - ErrCode ConfigUnit :: get_int16(int16_t * valueBuf)const{ - LOG(INFO) << "Config : Get int16 from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_int16() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - long long val; - int ret = Trans :: str2int64(_value, &val); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_int16() failed"; - setErrorKeyPath(this->_key); - return ret; - } - if( val > (long long)0x7fff || val < -(long long)0x8000 ) { - LOG(WARNING) << "Config : Get [" << _key.c_str() << "] : out of range."; - setErrorKeyPath(this->_key); - return OUTOFRANGE; - } - *valueBuf = (int16_t)val; - return 0; - } - - ErrCode ConfigUnit :: get_uint16(u_int16_t * valueBuf)const{ - LOG(INFO) << "Config : Get uint16 from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_uint16() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - unsigned long long val; - int ret = Trans :: str2uint64(_value, &val); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_uint16() failed"; - setErrorKeyPath(this->_key); - return ret; - } - if( val > (unsigned long long)0xffff ) { - LOG(WARNING) << "Config : Get [" << _key.c_str() << "] : out of range."; - setErrorKeyPath(this->_key); - return OUTOFRANGE; - } - *valueBuf = (u_int16_t)val; - return 0; - } - - ErrCode ConfigUnit :: get_int32(int * valueBuf)const{ - LOG(INFO) << "Config : Get int32 from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_int32() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - long long val; - int ret = Trans :: str2int64(_value, &val); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_int32() failed"; - setErrorKeyPath(this->_key); - return ret; - } - if( val > (long long)0x7fffffff || val < -(long long)0x80000000 ) { - LOG(WARNING) << "Config : Get [" << _key.c_str() << "] : out of range."; - setErrorKeyPath(this->_key); - return OUTOFRANGE; - } - *valueBuf = (int)val; - return 0; - } - - ErrCode ConfigUnit :: get_uint32(u_int32_t * valueBuf)const{ - LOG(INFO) << "Config : Get uint32 from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_uint32() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - unsigned long long val; - int ret = Trans :: str2uint64(_value, &val); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_uint32() failed"; - setErrorKeyPath(this->_key); - return ret; - } - if( val > (unsigned long long)0xffffffff ) { - LOG(WARNING) << "Config : Get [" << _key.c_str() << "] : out of range."; - setErrorKeyPath(this->_key); - return OUTOFRANGE; - } - *valueBuf = (u_int32_t)val; - return 0; - } - - ErrCode ConfigUnit :: get_int64(long long * valueBuf)const{ - LOG(INFO) << "Config : Get int64 from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_int64() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - long long val; - int ret = Trans :: str2int64(_value, &val); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_int64() failed"; - setErrorKeyPath(this->_key); - return ret; - } - *valueBuf = val; - return 0; - } - - ErrCode ConfigUnit :: get_uint64(unsigned long long * valueBuf)const{ - LOG(INFO) << "Config : Get uint64 from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_uint64() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - unsigned long long val; - int ret = Trans :: str2uint64(_value, &val); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_uint64() failed"; - setErrorKeyPath(this->_key); - return ret; - } - *valueBuf = val; - return 0; - } - - - ErrCode ConfigUnit :: get_float(float * valueBuf)const{ - LOG(INFO) << "Config : Get float from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_float() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - double buf = 0.0; - int ret = Trans :: str2double(_value, &buf); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_float() failed"; - setErrorKeyPath(this->_key); - } - *valueBuf = float(buf); - return ret; - } - ErrCode ConfigUnit :: get_double(double * valueBuf)const{ - LOG(INFO) << "Config : Get double from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_double() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - int ret = Trans :: str2double(_value, valueBuf); - if(ret) { - LOG(INFO) << "Configure: visit ConfigUnit.get_double() failed"; - setErrorKeyPath(this->_key); - } - return ret; - } -#if 0 - ErrCode ConfigUnit :: get_std_string(std_string * valueBuf) const{ - LOG(INFO) << "Config : Get std::string from _key [%s]", _key.c_str()); - if(valueBuf == NULL){ - return NULLBUFFER; - } - return Trans :: str2str(_value, valueBuf); - } -#endif - ErrCode ConfigUnit :: get_bsl_string(bsl_string * valueBuf) const{ - LOG(INFO) << "Config : Get std::string from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_bsl_string() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - int ret = Trans :: str2str(_value, valueBuf); - if(ret) { - LOG(INFO) <<"Configure: visit ConfigUnit.get_bsl_string() failed"; - setErrorKeyPath(this->_key); - } - return ret; - } - ErrCode ConfigUnit :: get_raw_string(str_t * valueBuf) const{ - LOG(INFO) << "Config : Get raw string from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_raw_string() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - *valueBuf = _value; - return 0; - } - ErrCode ConfigUnit :: get_cstr(char * valueBuf, size_t len) const{ - LOG(INFO) << "Config : Get c style string from _key [" << _key.c_str() << "]"; - if(valueBuf == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.get_cstr() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - return NULLBUFFER; - } - str_t str; - int ret = get_bsl_string(&str); - if(ret == 0){ - snprintf(valueBuf, len, "%s", str.c_str()); - } else { - LOG(INFO) << "Configure: visit ConfigUnit.get_cstr() failed"; - setErrorKeyPath(this->_key); - } - return ret; - } - //--------------get_xx with default----------- - - ErrCode ConfigUnit :: get_char(char * valueBuf, const char & def)const{ - ErrCode ret = get_char(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_uchar(unsigned char * valueBuf, const unsigned char & def)const{ - ErrCode ret = get_uchar(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_int16(int16_t * valueBuf, const int16_t & def)const{ - ErrCode ret = get_int16(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_uint16(u_int16_t * valueBuf, const u_int16_t & def)const{ - ErrCode ret = get_uint16(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_int32(int * valueBuf, const int & def)const{ - ErrCode ret = get_int32(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_uint32(u_int32_t * valueBuf, const u_int32_t & def)const{ - ErrCode ret = get_uint32(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_int64(long long * valueBuf, const long long & def)const{ - ErrCode ret = get_int64(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_uint64(unsigned long long * valueBuf, const unsigned long long & def)const{ - ErrCode ret = get_uint64(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_float(float * valueBuf, const float & def)const{ - ErrCode ret = get_float(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_double(double * valueBuf, const double & def)const{ - ErrCode ret = get_double(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_bsl_string(bsl_string * valueBuf, const bsl_string & def)const{ - ErrCode ret = get_bsl_string(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_raw_string(str_t * valueBuf, const str_t & def)const{ - ErrCode ret = get_raw_string(valueBuf); - if(ret != 0){ - *valueBuf = def; - } - return ret; - } - - ErrCode ConfigUnit :: get_cstr(char * valueBuf, size_t len, const char * def)const{ - ErrCode ret = get_cstr(valueBuf, len); - if(ret != 0){ - snprintf(valueBuf, len, "%s", def); - } - return ret; - } - - //-------------------to_IVar------------------ - bsl::var::IVar& ConfigUnit :: to_IVar(bsl::ResourcePool * vpool, ErrCode* errCode)const{ - if(vpool == NULL){ - LOG(INFO) << "Configure: visit ConfigUnit.to_IVar() failed : NULLBUFFER"; - setErrorKeyPath(this->_key); - popError(errCode, NULLBUFFER); - return bsl::var::Null::null; - } - if (_cstr_err) { - setErrorKeyPath(this->_key); - } - popError(errCode, _cstr_err); - bsl::var::IVar & var = vpool->create(_cstr); - return var; - } - - const ConfigUnit & ConfigUnit :: deepGet(const str_t path) const{ - for (int i=0; i<(int)path.size(); ++i){ - if ('.' == path[i]){ - str_t first = path.substr(0,i); - str_t sub = path.substr(i+1); - return deepGetSegment(first).deepGet(sub); - } - } - return deepGetSegment(path); - } - - const ConfigUnit & ConfigUnit :: deepGetSegment(const str_t segment) const { - int idleft=0; - int idright=-1; - for (int i=0; i<(int)segment.size(); ++i){ - if ('['==segment[i]){ - idleft = i+1; - } else if (']' == segment[i]) { - idright = i-1; - } - } - if (idright >= idleft) { - str_t arrid = segment.substr(idleft, idright-idleft+1); - if (Trans::isInteger(arrid)) { - return (*this)[segment.substr(0,idleft-1)][atoi(arrid.c_str())]; - } else { - return (*this)[segment.substr(0,idleft-1)][arrid]; - } - } else { - return (*this)[segment]; - } - } - - const char * ConfigUnit :: getErrKeyPath() const{ - return ul_geterrbuf(); - } - - const ConfigUnit & ConfigUnit :: get_sub_unit(int /*index*/) const { - return *get_err_unit(); - } - - void ConfigUnit :: get_full_path(bsl::string &path, const int get_global)const { - path = get_key_name(); - ConfigGroup * tmp = getFather(); - if(get_global){ - while(tmp != NULL){ - const char * group_name = tmp->get_key_name().c_str(); - str_t app = path; - path.setf("%s.%s", group_name, app.c_str()); - tmp = tmp->getFather(); - } - } - else{ - while(tmp != NULL){ - const char * group_name = tmp->get_key_name().c_str(); - if(strcmp(group_name, CONFIG_GLOBAL)){ //ignore CONFIG_GLOBAL - str_t app = path; - path.setf("%s.%s", group_name, app.c_str()); - } - tmp = tmp->getFather(); - } - } - } - - int ConfigUnit :: equals(const ConfigUnit & conf) const { - try { - if (conf.to_bsl_string() == to_bsl_string()) { - return 0; - } - return -1; - } catch (bsl::Exception) { - return -1; - } - return -1; - } - - int ConfigUnit :: add_unit(const bsl_string & /*key*/, const bsl_string& /*value*/, - const int /*objtype*/, int except, ConfigUnit ** /*ref*/) { - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, ERROR); - } - return ERROR; - } - - int ConfigUnit :: _append_unit(const ConfigUnit & /*unit*/,int /*check*/, int except) { - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, ERROR); - } - return ERROR; - } - - int ConfigUnit :: append_unit(const ConfigUnit & unit, int except) { - return _append_unit(unit, 1, except); - } - - int ConfigUnit :: copy_unit(const ConfigUnit & unit, int except) { - int ret = 0; - if (this->selfType()!= unit.selfType()) { - ret = ERROR; - goto cpend; - } - /* - if (NULL != this->_father && CONFIG_ERROR_TYPE == (*_father)[unit._key].selfType()) { - ret = init_unit(unit._key, unit._value); - } else { - ret = DUPLICATED_KEY; - } - */ - ret = init_unit(unit._key, unit._value); - return ret; - cpend: - if (except && (0 != ret)) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, ERROR); - } - return ret; - } - int ConfigUnit :: del_unit(const bsl_string & /*key*/, int except) { - if (except) { - if (0 != ul_seterrbuf("%s", "")) { - LOG(WARNING) << "ConfigUnit: failed to write error buffer"; - } - popError(NULL, NOSUCHKEY); - } - return NOSUCHKEY; - } - - int ConfigUnit :: set_value(const bsl_string & value, int /*except*/){ - _value = value; - _cstr = _value; - if(_value.size() > 0 && _value[0] == '"'){ - _cstr_err = Trans :: str2str(_value, &_cstr); - if(_cstr_err){ - LOG(WARNING) << "Config : Error format : _key[" << _key.c_str() << "] _value[" << _value.c_str() << "]"; - } - } - return 0; - } - int ConfigUnit :: traverse_unit(cb_tr cb_fn, void *cb_arg) - { - for(size_t i=0; isize(); ++i){ - ConfigUnit & subunit = const_cast(this->get_sub_unit(i)); - int ret = cb_fn(&subunit, cb_arg); - if(ret != 0){ - return ret; - } - switch (subunit.selfType()) { - case CONFIG_UNIT_TYPE: - case CONFIG_ERROR_TYPE: - break; - case CONFIG_ARRAY_TYPE: - case CONFIG_GROUP_TYPE: - ret = subunit.traverse_unit(cb_fn, cb_arg); - if(ret != 0){ - return ret; - } - break; - } - } - return 0; - } - int ConfigUnit :: traverse_unit_order(cb_tr cb_fn, void *cb_arg) - { - return traverse_sub_type(cb_fn, cb_arg, CONFIG_ERROR_TYPE) - || traverse_sub_type(cb_fn, cb_arg, CONFIG_UNIT_TYPE) - || traverse_sub_type(cb_fn, cb_arg, CONFIG_ARRAY_TYPE) - || traverse_sub_type(cb_fn, cb_arg, CONFIG_GROUP_TYPE); - } - int ConfigUnit :: traverse_sub_type(cb_tr cb_fn, void *cb_arg, const int type) - { - int ret = 0; - for(size_t i=0; isize() && !ret; ++i){ - ConfigUnit & subunit = const_cast(this->get_sub_unit(i)); - if(subunit.selfType() != type){ - continue; - } - int ret = cb_fn(&subunit, cb_arg); - if(type == CONFIG_GROUP_TYPE || type == CONFIG_ARRAY_TYPE){ - ret = ret || subunit.traverse_unit_order(cb_fn, cb_arg); - } - } - return ret; - } - ConfigUnit * ConfigUnit :: create_unit(const bsl_string & key, const bsl_string& value, - int objtype, ConfigGroup * father) { - ConfigUnit * tmp=NULL; - try { - switch (objtype) { - case CONFIG_UNIT_TYPE : - tmp = new ConfigUnit(key, value, NULL, father); - return tmp; - break; - case CONFIG_GROUP_TYPE : - tmp = new ConfigGroup(key.c_str(), father); - return tmp; - break; - case CONFIG_ARRAY_TYPE : - tmp = new ConfigArray(key.c_str(), father); - return tmp; - break; - default : - break; - } - } catch (...) { - if (tmp) { - delete tmp; - } - return NULL; - } - return NULL; - } - - void ConfigUnit :: clear() { - return; - } - - int ConfigUnit :: init_unit(const str_t& /*__key*/, const str_t& __value) { - /* - for(int i = 0; i < (int)__key.size(); ++i){ - if(i == 0 && __key[i] == '@'){ - continue; - } - if((!isalpha(__key[i])) && (!isdigit(__key[i])) && __key[i] != '_'){ - ul_writelog(Log::warning(), "Unsupport _key format [%s]", __key.c_str()); - return FORMATERROR; - } - } - _key = __key; - */ - _value = __value; - _cstr = _value; - _cstr_err = 0; - if(_value.size() > 0 && _value[0] == '"'){ - _cstr_err = Trans :: str2str(_value, &_cstr); - if(_cstr_err){ - LOG(WARNING) << "Config : Error format : _key[" << _key.c_str() << "] _value[" << _value.c_str() << "]"; - } - } - return 0; - } - - -}; - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/ConfigUnit.h b/configure/ConfigUnit.h deleted file mode 100644 index fe153cd4cdc6e12bb75afba7f71b369ac1535a63..0000000000000000000000000000000000000000 --- a/configure/ConfigUnit.h +++ /dev/null @@ -1,463 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConfigUnit.h,v 1.19 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConfigUnit.h - * @author yingxiang(com@baidu.com) - * @date 2008/11/26 20:53:09 - * @version $Revision: 1.19 $ - * @brief - * - **/ - - -#ifndef __CONFIGUNIT_H_ -#define __CONFIGUNIT_H_ - -#include "utils/cc_utils.h" -#include "bsl/var/IVar.h" -#include "bsl/var/Ref.h" -#include "bsl/ResourcePool.h" -#include "bsl/containers/hash/bsl_hashmap.h" -#include - -namespace comcfg{ - enum{ - CONFIG_UNIT_TYPE = 0, - CONFIG_GROUP_TYPE, - CONFIG_ARRAY_TYPE, - CONFIG_ERROR_TYPE - }; - class Reader; - class ConfigGroup; - class ConfigUnit{ - public: - /** - * @brief 方括号重载(三个函数),支持以方括号获取相应字段 - * 支持字符串、bsl::string和int下标。int下标Array专用。 - * 如果出错,返回一个ConfigError类型的常量 - * 可以用 conf[""].selfType() != CONFIG_ERROR_TYPE来判断 - * - * @return const ConfigUnit& [] - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:18:13 - **/ - virtual const ConfigUnit & operator[] (const char *) const; - virtual const ConfigUnit & operator[] (const str_t &) const; - virtual const ConfigUnit & operator[] (int) const; - - virtual ConfigUnit & operator[] (const char *) ; - virtual ConfigUnit & operator[] (const str_t &) ; - virtual ConfigUnit & operator[] (int) ; - virtual ConfigUnit & operator= (ConfigUnit & unit) ; - - /** - * @brief 将一个ErrCode转化为一个对应的字符串信息 - * ErrCode内部就是一个int, 0为OK,非0为出错信息 - * - * @return const char* - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:21:07 - **/ - virtual const char * seeError(const ErrCode &) const; - virtual ~ConfigUnit(); - - /** - * @brief 从一个字段中获取特定类型的数据 - * XXX to_XXX() 表示以XXX类型获取该配置项 - * - * @param [out] errCode : ErrCode* 出错信息 - * errCode不为NULL时,错误号将会写入*errCode - * 当此处errCode为默认值NULL时,出错将会以异常的形式抛出 - * 抛出的异常为:ConfigException或其子类 - * @return char - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:22:07 - **/ - virtual char to_char(ErrCode * errCode = NULL)const; - virtual unsigned char to_uchar(ErrCode * errCode = NULL)const; - virtual int16_t to_int16(ErrCode * errCode = NULL)const; - virtual u_int16_t to_uint16(ErrCode * errCode = NULL)const; - virtual int to_int32(ErrCode * errCode = NULL)const; - virtual u_int32_t to_uint32(ErrCode * errCode = NULL)const; - virtual long long to_int64(ErrCode * errCode = NULL)const; - virtual unsigned long long to_uint64(ErrCode * errCode = NULL)const; - virtual float to_float(ErrCode * errCode = NULL)const; - virtual double to_double(ErrCode * errCode = NULL)const; - virtual bsl_string to_bsl_string(ErrCode * errCode = NULL)const; - //to_std_string : 返回值为std::string,如果是双引号开头的串,这里的字符串是经过转义的,\'\x41\' -> 'A' - //virtual std_string to_std_string(ErrCode * errCode = NULL)const; - //to_raw_string : 未经过转义处理的字符串 - virtual str_t to_raw_string(ErrCode * errCode = NULL)const; - //获取C风格的字符串(常量) - virtual const char * to_cstr(ErrCode * errCode = NULL)const; - - /** - * @brief 带有默认值的to_XXX系列函数 - * 返回值与to_xxx系列完全相同。 - * 唯一的不同是:当errCode不为0(即发生错误), 返回def默认值 - * - * @param [out] errCode : ErrCode* 出错信息 - * @param [in] def : const & 默认值 - * @return - * @author zhang_rui - * @date 2009/03/11 22:37:46 - **/ - virtual char to_char(ErrCode * errCode, const char & def)const; - virtual unsigned char to_uchar(ErrCode * errCode, const unsigned char & def)const; - virtual int16_t to_int16(ErrCode * errCode, const int16_t & def)const; - virtual u_int16_t to_uint16(ErrCode * errCode, const u_int16_t & def)const; - virtual int to_int32(ErrCode * errCode, const int & def)const; - virtual u_int32_t to_uint32(ErrCode * errCode, const u_int32_t & def)const; - virtual long long to_int64(ErrCode * errCode, const long long & def)const; - virtual unsigned long long to_uint64(ErrCode * errCode, const unsigned long long & def)const; - virtual float to_float(ErrCode * errCode, const float & def)const; - virtual double to_double(ErrCode * errCode, const double & def)const; - virtual bsl_string to_bsl_string(ErrCode * errCode, const bsl_string & def)const; - virtual str_t to_raw_string(ErrCode * errCode, const str_t & def)const; - //获取C风格的字符串(常量) - virtual const char * to_cstr(ErrCode * errCode, const char * def)const; - - - - /** - * @brief 与to_XXX功能相同的函数。不过get_XXX系列为C风格 - * 传入为用于放值的buffer,返回值是错误号 - * - * @param [out] valueBuf : char* - * @return ErrCode - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:25:52 - **/ - virtual ErrCode get_char(char * valueBuf)const; - virtual ErrCode get_uchar(unsigned char * valueBuf)const; - virtual ErrCode get_int16(int16_t * valueBuf)const; - virtual ErrCode get_uint16(u_int16_t * valueBuf)const; - virtual ErrCode get_int32(int * valueBuf)const; - virtual ErrCode get_uint32(u_int32_t * valueBuf)const; - virtual ErrCode get_int64(long long * valueBuf)const; - virtual ErrCode get_uint64(unsigned long long * valueBuf)const; - virtual ErrCode get_float(float * valueBuf)const; - virtual ErrCode get_double(double * valueBuf)const; - virtual ErrCode get_bsl_string(bsl_string * valueBuf)const; - //virtual ErrCode get_std_string(std_string * valueBuf) const; - virtual ErrCode get_raw_string(str_t * valueBuf) const; - //获取C风格的字符串,将字符串填入valueBuf,len是valueBuf长度,自动补0,最多填充len-1个字符 - virtual ErrCode get_cstr(char * valueBuf, size_t len) const; - - - /** - * @brief 带有默认值的ge_XXX系列函数 - * 返回值与get_xxx系列完全相同。 - * 唯一的不同是:当返回值不为0(即发生错误)valueBuf中使用def默认值 - * - * @param [out] valueBuf : char* 传出的值 - * @param [in] def : const char& 默认值 - * @return ErrCode - * @retval - * @see - * @author yingxiang - * @date 2009/03/11 22:37:46 - **/ - virtual ErrCode get_char(char * valueBuf, const char & def)const; - virtual ErrCode get_uchar(unsigned char * valueBuf, const unsigned char & def)const; - virtual ErrCode get_int16(int16_t * valueBuf, const int16_t & def)const; - virtual ErrCode get_uint16(u_int16_t * valueBuf, const u_int16_t & def)const; - virtual ErrCode get_int32(int * valueBuf, const int & def)const; - virtual ErrCode get_uint32(u_int32_t * valueBuf, const u_int32_t & def)const; - virtual ErrCode get_int64(long long * valueBuf, const long long & def)const; - virtual ErrCode get_uint64(unsigned long long * valueBuf, const unsigned long long & def)const; - virtual ErrCode get_float(float * valueBuf, const float & def)const; - virtual ErrCode get_double(double * valueBuf, const double & def)const; - virtual ErrCode get_bsl_string(bsl_string * valueBuf, const bsl_string & def)const; - virtual ErrCode get_raw_string(str_t * valueBuf, const str_t & def)const; - virtual ErrCode get_cstr(char * valueBuf, size_t len, const char * def)const; - - /** - * @brief 将自身转化为一个IVar - * - * 会抛异常 - * - * @param [in/out] vpool : VarPool* IVar句柄表,所以新分配的IVar都注册到VarPool - * 当需要销毁我创建的IVar时,只需要vpool->destroy(); - * @param [in] errCode : ErrCode* 错误号,0为正确,其余表示出错 - * @return IVar& - * @retval - * @see - * @author yingxiang - * @date 2009/03/11 22:00:48 - **/ - virtual bsl::var::IVar& to_IVar(bsl::ResourcePool* vpool, ErrCode* errCode = NULL)const; - /** - * @brief 获取自己的类型 - * - * @return int - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:35:27 - **/ - virtual int selfType()const{ - return CONFIG_UNIT_TYPE; - } - - /** - * @brief 获取元素个数 - * - * @return size_t 个数 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 02:00:28 - **/ - virtual size_t size()const{ - return 1; - } - - /** - * @brief 长路径Unit的直接获取 - * - * @param [in] path : const str_t 长路径,例如 group.sub.key - * @return const ConfigUnit& 长路径获取的ConfigUnit - * @date 2009/07/16 15:50:47 - **/ - virtual const ConfigUnit & deepGet(const str_t path) const; - - /** - * @brief 访问不存在的key后,给出不存在的key的具体路径。比如 group.sub.nokey - * - * @return const char* 不存在的key的路径 - * @author zhang_rui - * @date 2009/07/17 10:20:09 - **/ - const char * getErrKeyPath() const; - - /** - * @brief 获取子unit。ConfigUnit直接返回error unit - * - * @return ConfigUnit & - * @author zhang_rui - **/ - virtual const ConfigUnit & get_sub_unit(int index) const; - /** - * @brief 比较是否相等 - * - * @return int 0表示相等 -1不相等 - * @author zhang_rui - **/ - virtual int equals(const ConfigUnit & conf) const; - - //以下函数的参数中,except为0则用错误号表示错误, - //except为1则用异常表示错误 - /** - * @brief 增加一个unit, 连接到子unit,不做深拷贝 - * - * @param [in] key : 新增unit的key - * @param [in] value : 新增unit的value - * @param [in] objtype : unit类型。 - * CONFIG_UNIT_TYPE表示unit; - * CONFIG_GROUP_TYPE表示group; - * CONFIG_ARRAY_TYPE表示array; - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int add_unit(const bsl_string & key, const bsl_string& value, - const int objtype=CONFIG_UNIT_TYPE, int except=0, ConfigUnit ** ref=NULL); - - /** - * @brief 复制一个unit, 深拷贝 - * - * 将unit的内容追加到本对象下面。 - * 类型需要匹配,只能从group复制到group,array复制到array - * group要检查key是否重复,不重复则追加 - * array直接追加 - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int append_unit(const ConfigUnit & unit, int except=0); - - /** - * @brief 复制一个unit, 深拷贝 - * - * 将unit的内容复制到本对象。 - * 类型需要匹配,只能从group复制到group,array复制到array - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int copy_unit(const ConfigUnit & unit, int except=0); - - /** - * @brief 删除一个unit - * - * key : 要删除的unit的key - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int del_unit(const bsl_string & key, int except=0); - /** - * @brief 修改unit中value的值 - * - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int set_value(const bsl_string & value, int except=0); - /** - * @brief 遍历load()完成后的comcfg::Configure结构,使用用户提供的callback函数对每个unit进行操作 - * @note 深度优先搜索,子节点的访问无先后顺序 - * @param [in] cb_fn: 用户提供的callback函数 - * @param [in] cb_arg: 用户callback函数所需要的参数 - * - * @return int 0 成功,其他是错误号 - * @author linjieqiong - **/ - typedef int (* cb_tr)(ConfigUnit *, void *); - virtual int traverse_unit(cb_tr cb_fn, void *cb_arg); - /** - * @brief 类似于traverse_unit(),区别是遍历一个group时按照CONFIG_ERROR_TYPE, CONFIG_UNIT_TYPE, CONFIG_ARRAY_TYPE, CONFIG_GROUP_TYPE的顺序访问子节点 - * - * @param [in] cb_fn: 用户提供的callback函数 - * @param [in] cb_arg: 用户callback函数所需要的参数 - * - * @return int 0 成功,其他是错误号 - * - * @version 1.2.9 - * @author linjieqiong - * @date 2013/04/28 16:25:47 - */ - virtual int traverse_unit_order(cb_tr cb_fn, void *cb_arg); - - //-----------------从这里往下的东西用户不需要关心----------------- - - //构造函数, - ConfigUnit(); - ConfigUnit(const str_t& __key, const str_t& __value, const Reader * __cur_reader = NULL, ConfigGroup * father = NULL); - - //调试打印时用,缩进 - void pindent(int ind)const{ - while(ind--){ - printf(" "); - } - } - //打印 - virtual void print(int indent = 0)const{ - pindent(indent); - printf("=[%s], _value=[%s]\n", _key.c_str(), _value.c_str()); - } - - - //for debug or writelog - virtual str_t info() const{ - //const int INFO_BUF_SIZE = 256; - //char buf[INFO_BUF_SIZE] = ""; - str_t buf; - buf.appendf("[File:%s Line:%d Key:%s Value:%s]", - _at_file ? _at_file : "NULL", _at_line, _key.c_str(), _value.c_str()); - return buf; - } - //for child class - virtual ConfigUnit * relativeSection(ConfigUnit *, str_t, int* ){ - return NULL; - } - inline const char * getFileName(){ - return _at_file; - } - inline int getFileLine(){ - return _at_line; - } - inline void setConstrainted(const bool bCons){ - _bConstrainted = bCons; - } - inline bool getConstrainted()const{ - return _bConstrainted; - } - static ConfigUnit* get_err_unit(); - virtual void get_full_path(bsl::string &path, const int get_global = 0) const; - inline virtual const bsl::string & get_key_name() const{ - return _key; - } - inline ConfigGroup * getFather()const{ - return _father; - } - protected: - inline void setFilePosition(const char *cur_file = "NULL", const int cur_line = -1){ - _at_file = cur_file; - _at_line = cur_line; - } - inline void setFileLine(const int cur_line = -1){ - _at_line = cur_line; - } - virtual void popError(ErrCode *, ErrCode) const; - void setErrorKeyPath(str_t str)const; - #if __GNUC__ == 4 && __GNUC_MINOR__ >= 4 - const ConfigUnit & deepGetSegment(const str_t segment) const; - #else - const ConfigUnit & ConfigUnit :: deepGetSegment(const str_t segment) const; - #endif - - static const str_t g_unknown; - str_t _key; - str_t _value; - str_t _cstr; //专门的一个被解析后的string,只有当value以"为开头时才起作用 - int _cstr_err; - str_t _vstring; - const char * _at_file; - int _at_line; - ConfigGroup * _father; - bool _bConstrainted; - //mutable str_t _to_def_str; - ConfigUnit * create_unit(const bsl_string & key, const bsl_string& value, - int objtype, ConfigGroup * father); - - /** - * @brief 清除内容 - * - * @return void - * @author zhang_rui - **/ - virtual void clear(); - - public: - /** - * @brief 复制一个unit, 深拷贝 - * - * 将unit的内容复制到本对象下面。 - * 类型需要匹配,只能从group复制到group,array复制到array - * group要检查key是否重复,不重复则追加 - * array直接追加 - * @return int 0 成功,其他是错误号 - * @author zhang_rui - **/ - virtual int _append_unit(const ConfigUnit & unit,int check=1, int except=0); - private: - int init_unit(const str_t& __key, const str_t& __value); - //访问类型为type的子节点,如果子节点是group/array,递归访问 - int traverse_sub_type(cb_tr cb_fn, void *cv_arg, const int type); - }; - -} - - - - - - - - - -#endif //__CONFIGUNIT_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/Configure.cpp b/configure/Configure.cpp deleted file mode 100644 index 6b9a958fdfb277f728486d86d57b2a979c004b28..0000000000000000000000000000000000000000 --- a/configure/Configure.cpp +++ /dev/null @@ -1,734 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved -<<<<<<< Configure.cpp - * $Id: Configure.cpp,v 1.21 2010/04/13 09:59:41 scmpf Exp $ -======= - * $Id: Configure.cpp,v 1.21 2010/04/13 09:59:41 scmpf Exp $ ->>>>>>> 1.18 - * - **************************************************************************/ - - - -/** - * @file Configure.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 18:09:35 -<<<<<<< Configure.cpp - * @version $Revision: 1.21 $ -======= - * @version $Revision: 1.21 $ ->>>>>>> 1.18 - * @brief - * - **/ - -#include "Configure.h" -#include "reader/Reader.h" -#include "constraint/Constraint.h" -#include "utils/cc_utils.h" -#include "idl_conf_if.h" -#include "bsl/var/Dict.h" -#include "bsl/var/Array.h" - -namespace comcfg{ - - using bsl::var::IVar; - - //extern Reader * g_cur_reader; - int Configure :: load(const char * path, const char * conf, const char * range, int /*version*/){ - return load_1_0(path, conf, range); - } - - int Configure :: load_ex(const char * path, const char * conf, const char * range, - int dupLevel, int /*version*/) - { - if(dupLevel < GROUP_DUP_LEVEL0 || dupLevel > GROUP_DUP_LEVEL3){ - LOG(WARNING) << "Configure.load_ex : parameter @dupLevel is wrong."; - return ERROR; - } - _dupLevel = dupLevel; - if(_dupLevel != GROUP_DUP_LEVEL0 ){ - _dupMap.create(256); - } - int ret = load_1_0(path, conf, range); - return ret!=0 ? ret : printGroup(); - } - - int Configure :: load_ex2(const char * path, const char * conf, const char * range, int /*version*/) - { - int ret = load_1_0(path, conf, range); - if(ret == 0 && range != NULL && *range != 0){ - return checkConstraint(); - } - return ret; - } - - int Configure :: load_1_0(const char * path, const char * conf, const char *range){ - int ret = 0; - if(path == NULL || (conf == NULL && range == NULL)){ - LOG(WARNING) << "Configure.load : path or filename error..."; - return ERROR; - } - if(0 == strcmp(path, "")) { - _path = "."; //set as current dir - } - else { - _path = path; - } - if(_readers.size() != 0){ - LOG(WARNING) << "Configure.load : Configure can't be reused, create a new object for load."; - return ERROR; - } -#if 0 - if(conf != NULL){ - Reader * reader = new Reader(); - _cur_reader = reader; - _cur_level = 0; - _readers.push_back(reader); - ret = reader->read(conf, this); - _cur_reader = NULL; - } -#endif - size_t idx = 0; - pushSubReader(conf, 0);//config文件进入队列,因为可能有$include,按广度优先处理 - while(idx < _readers.size()){ - ReaderNode & r = (*_readers[idx]); - _cur_reader = r.reader; - _cur_level = r.level; - _section = this;//切换到GLOBAL - _depth = 0; - _at_file = r.filename.c_str(); - ret = r.reader->read(_at_file, this); - if(ret != 0){ - LOG(WARNING) << "Reader configure file [" << r.filename.c_str() << "] error. Stop."; - return CONFIG_ERROR; - } - ++idx; - } - - if(range != NULL && 0 != *range){ - str_t range_file; - range_file.append(_path).append("/").append(range); - if(check_once(range_file.c_str()) != 0){ - return CONSTRAINT_ERROR; - } - } - if(ConstraintLibrary :: getInstance() -> checkGlobalConstraint(this) != 0){ - return CONSTRAINT_ERROR; - } - return 0; - } - void Configure :: pushSubReader(const char * conf, int level){ - if(conf == NULL){ - return; - } - if(level < 0){ - level = _cur_level + 1; - } - LOG(INFO) << "Config $include : " << conf << ", MAX_DEPTH=" << MAX_INCLUDE_DEPTH << ", level=" << level; - if(level > MAX_INCLUDE_DEPTH){ - LOG(WARNING) << "Config error: Max $include level is " << MAX_INCLUDE_DEPTH << " [" << _cur_reader->_cur_file.c_str() << ":" << _cur_reader->_cur_line << "]"; - return; - } - ReaderNode * newNode = new ReaderNode(); - _readers.push_back(newNode); - ReaderNode & r = *(_readers[_readers.size() - 1]); - r.reader = new Reader(); - r.filename.append(_path).append("/").append(conf); - r.level = level; - LOG(INFO) << "Config : $include : " << r.filename.c_str() << ", level=" << r.level; - } - - char * Configure :: getRebuildBuffer(size_t __size){ - if(_readers.size() == 0){ - _path = "."; - pushSubReader(REBUILD_CONF, 0); - } - else{ - LOG(WARNING) << "getRebuildBuffer : This Configure Object can't be re-used. Create a new one."; - return NULL; - } - if(_readers.size() == 0){ - return NULL; - } - //return _readers[0].reader->getRebuildBuffer(__size); - return _readers[0]->reader->getRebuildBuffer(__size); - } - - int Configure :: rebuild(){ - if(_readers.size() == 0){ - return -1; - } - //_cur_reader = _readers[0].reader; - _cur_reader = _readers[0]->reader; - _cur_level = 0; - int ret = _cur_reader->rebuild(this); - _cur_reader = NULL; - return ret; - } - - char * Configure :: dump(size_t * __size){ - //多个子文件合并的时候,需要在子文件的头部添加 [GLOBAL] - const char * global = "\n[" CONFIG_GLOBAL "]\n"; - size_t len = strlen(global); - if(_dump_buffer != NULL){ - if(__size){ - *__size = _dump_size; - } - return _dump_buffer; - } - if(_readers.size() == 0){ - return NULL; - } - _dump_size = 0; - std::vector bufs; - std::vector rsize; - for(size_t i = 0; i < _readers.size(); ++i){ - size_t tmpsize = 0; - //char * p = _readers[i].reader->dump(&tmpsize); - char * p = _readers[i]->reader->dump(&tmpsize); - rsize.push_back(tmpsize); - bufs.push_back(p); - //LOG(INFO) << "dump file : %s, size=%zu", _readers[i].filename.c_str(), tmpsize); - LOG(INFO) << "dump file : " << _readers[i]->filename.c_str() << ", size=" << tmpsize; - if(p == NULL){ - return NULL; - } - _dump_size += tmpsize; - if(i){ - _dump_size += len; - } - } - - size_t bufsize = ((_dump_size >> 12) + 1) << 12; - _dump_buffer = (char *)malloc(bufsize); - if(_dump_buffer == NULL){ - LOG(WARNING) << "Can't build dump buffer"; - return NULL; - } - - size_t pos = 0; - for(size_t i = 0; i < _readers.size(); ++i){ - if(i){ - memcpy(_dump_buffer + pos, global, len); - pos += len; - } - memcpy(_dump_buffer + pos, bufs[i], rsize[i]); - pos += rsize[i]; - } - if(_dump_size != pos){ - LOG(WARNING) << "What's wrong??? _dump_size(" << _dump_size << ") != real size("<< pos << ")"; - return NULL; - } - _dump_buffer[_dump_size] = '\0'; - if(__size){ - *__size = _dump_size; - } - return _dump_buffer; - } - - struct dump_conf{ - enum{ - RC_COMMENT = 0, - RC_NO_COMMENT, - RC_POSITION, - }; - int rc_type; - std::vector *files; - void *father; - str_t dumpedstr; - }; - - int cb_dumpConf(ConfigUnit *unit, void * dumpconf){ - int unit_type = unit->selfType(); - //以下两类节点是在内存中新建的,在配置文件中无对应节点 - if(unit_type == CONFIG_ARRAY_TYPE || unit_type == CONFIG_ERROR_TYPE){ - return 0; - } - struct dump_conf * conf = static_cast(dumpconf); - str_t group_path; - - //父节点发生变化,重新获取其路径 - if(unit_type == CONFIG_UNIT_TYPE && conf->father != unit->getFather()){ - conf->father = unit->getFather(); - unit->getFather()->get_full_path(group_path); - conf->dumpedstr.appendf("[%s]\n", group_path.c_str()); - } - //从当前配置行往上获取该配置的注释信息 - if(conf->rc_type != dump_conf :: RC_NO_COMMENT){ - str_t comment; - std::vector & ReaderNodes = *conf->files; - for(size_t i=0; igetFileName(), ReaderNodes[i]->filename.c_str())){ - continue; - } - Reader * & rd = ReaderNodes[i]->reader; - //该配置行的注释在原配置文件中的起始行号 - int line = unit->getFileLine() - 2; - rd->getCommentUpwards(comment, line); - } - conf->dumpedstr.append(comment); - } - //dump该配置的在原配置文件中的位置 - if(conf->rc_type == dump_conf :: RC_POSITION){ - conf->dumpedstr.appendf("#[%s:%d]\n", unit->getFileName(), unit->getFileLine()); - } - //dump该配置项 - if(unit_type == CONFIG_UNIT_TYPE){ - conf->dumpedstr.appendf("%s : %s\n", unit->get_key_name().c_str(), unit->to_cstr()); - } - else{//CONFIG_GROUP_TYPE, traverse_unit()是深搜, 接下来会遍历子节点 - conf->father = unit; - unit->get_full_path(group_path); - conf->dumpedstr.appendf("[%s]\n", group_path.c_str()); - } - return 0; - } - - int Configure :: dump_ex(char *buf, const size_t bufsize, const int restoreComment){ - if(buf == NULL || bufsize <= 0 || restoreComment < 0 || restoreComment > 2){ - LOG(WARNING) << "wrong parameter(s) of dump_ex()."; - return -1; - } - struct dump_conf conf = {restoreComment, &_readers, this, str_t(),}; - conf.dumpedstr.reserve(bufsize); - - traverse_unit_order(cb_dumpConf, &conf); - - size_t rsize = conf.dumpedstr.size() + 1; - if(rsize > bufsize){ - LOG(WARNING) << "@bufsize is too small. at least " << rsize << " is required."; - return 0 - rsize; - } - memcpy(buf, conf.dumpedstr.c_str(), rsize); - return rsize; - } - - void Configure :: changeSection(str_t str){ - LOG(INFO) << "Configure: This is [" << this->getName() << "], current section[" << _section->getName() << "], depth=" << _depth << ", father[" << (_section->getFather()?_section->getFather()->getName():"NULL") << "]"; - if(str[0] != '.'){ - _section = this; - _depth = 0; - } - else{ - int i; - for(i = 0; i < (int)str.size(); ++i){ - if(str[i] != '.'){ - break; - } - } - - if((int)i > _depth){ - LOG(WARNING) << "Configure : Section Error [" << str.c_str() << "] Ignored."; - throw ConfigException(); - } - str = str.substr(i); - //--i; - i = _depth - i; - while(i > 0){ - _section = (ConfigGroup *)_section->getFather(); - _depth--; - i--; - } - } - - ConfigGroup * _bak_section = _section; - LOG(INFO) << "Config : set Section: New[" << str.c_str() << "] -> Father[" << _section->getName() << "]"; - _section = (ConfigGroup *)_section->relativeSection(this, str, &_depth); - if(_section == NULL){ - _section = _bak_section; - } - if(_section && _cur_reader){ - _section->setFilePosition(_cur_reader->_cur_file.c_str(), _cur_reader->_cur_line); - } - LOG(INFO) << "Config : Now _section in : [" << (_section?_section->getName():"NULL") << "]"; - } - - void Configure :: pushPair(const str_t& key, const str_t& value){ - ConfigUnit * tmp = new ConfigUnit(key, value, _cur_reader, _section); - if(_section && (_section->push(key, tmp) != 0)){ - delete tmp; - free(tmp); - throw ConfigException(); - } - } - - time_t Configure :: lastConfigModify(){ - time_t t = time_t(0); - struct stat st; - for(int i = 0; i < (int)_readers.size(); ++i){ - //if(_readers[i].level <= MAX_INCLUDE_DEPTH){ - if(_readers[i]->level <= MAX_INCLUDE_DEPTH){ - //const char * f = _readers[i].filename.c_str(); - const char * f = _readers[i]->filename.c_str(); - if(stat(f, &st) == 0){ - if(t < st.st_mtime){ - t = st.st_mtime; - } - } - else{ - LOG(WARNING) << "Check lastConfigModify : I can't stat file [" << f << "]"; - //有一个特例: - //如果A文件include了B,运行中,我在A中去掉了$include : B,并且删除了B文件,导致我stat失败 - //此时,按理是合法的,配置文件可以被重新读取,lastConfigModify只要返回A的更新时间就可以了 - //不过建议还是不要删除B文件 - //我选择的是返回0,表示有一个文件无法被stat - return time_t(0); - } - } - } - return t; - } - - - enum _VarType{ - VAR_ARRAY = 0, - VAR_DICT, - VAR_UNIT - }; - - int varType(const IVar& ivar){ - if(ivar.is_array()){ - return VAR_ARRAY; - } - else if(ivar.is_dict()){ - return VAR_DICT; - } - return VAR_UNIT; - } - - //----------loadIVar------------- - str_t seeVarUnit(const IVar & ivar, const char * key, bool isArray); - str_t seeVarDict(const IVar & ivar, str_t * section); - str_t seeVar(const IVar & ivar, str_t * section, const char * key = ""); - - bool isVarUnit(const IVar & a, int dep = 1){ - if(dep < 0){ - throw ConfigException() << BSL_EARG << "Multi-dimension array is not supported."; - } - if(a.is_array()){ - return isVarUnit(a[0], dep-1); - } - if(a.is_dict()){ - return false; - } - return true; - } - - str_t seeVarUnit(const IVar & ivar, const char * key, bool isArray){ - //把一个基本的IVar转化为config文本 Key : value - str_t ret; - str_t value = ivar.to_string(); - str_t tmp; - if (ivar.is_int32() || ivar.is_int64() || ivar.is_double()) { - tmp = value; - } else { - str_t strcontent=""; - int yinhao = 0; - - for(int i = 0; i < (int)value.size(); ++i){ - //特殊字符 - if(value[i] < 32 || value[i] >= 127 || value[i] == '\"' || value[i] == '\'' || value[i] == '\\'){ - strcontent.appendf("\\x%02x", value[i]); - yinhao =1; - } - else{ - strcontent.appendf("%c", value[i]); - } - } - if (yinhao) { - tmp = "\""; - tmp.append(strcontent); - tmp.append("\""); - } else { - tmp = strcontent; - } - } - ret.appendf("%s%s : %s\n", isArray?"@":"", key, tmp.c_str()); - return ret; - } - - str_t nextSectionName(const str_t section, const char * key, bool isArray = false){ - str_t nsec; - if(section == str_t(CONFIG_GLOBAL)){ - nsec = ""; - nsec.appendf("%s%s", isArray ? "@" : "", key); - } - else if(strstr(section.c_str(), "@") != NULL){ - nsec = "."; - for(int i = 0; i < (int)section.size(); ++i){ - if(section[i] == '.'){ - nsec.appendf("."); - } - } - nsec.appendf("%s%s", isArray ? "@" : "", key); - } - else{ - nsec = section; - nsec.appendf("%s%s%s", nsec.size() == 0 ? "" : ".", isArray ? "@" : "", key); - } - return nsec; - } - - - str_t seeVarDict(const IVar & ivar, str_t * section){ - //把一个Dict转化为config文本 - LOG(INFO) << "Var " << ivar.to_string().c_str() << " is dict."; - const IVar & dict = ivar; // no dynamic cast - bsl::var::Dict::dict_const_iterator iter = dict.dict_begin(); - bsl::var::Dict::dict_const_iterator end = dict.dict_end(); - str_t bak_section = *section; - str_t ret; - ret.appendf("[%s]\n", section->c_str()); - for(; iter != end; ++ iter ){ - if( isVarUnit(iter->value()) ){ - ret.append( seeVar(iter->value(), section, iter->key().c_str()) ); - } - } - for(iter = dict.dict_begin(); iter != end; ++ iter ){ - if(! isVarUnit(iter->value()) ){ - ret.append( seeVar(iter->value(), section, iter->key().c_str()) ); - if(*section != bak_section){ - *section = bak_section; - } - } - } - return ret; - } - - - str_t seeVar(const IVar & ivar, str_t * section, const char * key){ - //把一个IVar类型转为config文本 - str_t ret; - //str_t bak_section = *section; - if(varType(ivar) == VAR_ARRAY){ - // 先判断是否为数组 - LOG(INFO) << "Var " << ivar.to_string().c_str() << " is array."; - if(varType(ivar[0]) == VAR_DICT ){ - *section = nextSectionName(*section, key, true); - } - for(int i = 0; i < (int)ivar.size(); ++i){ - if(varType(ivar[i]) == VAR_ARRAY){ - throw ConfigException() << BSL_EARG << "Multi-dimension array is not supported."; - } - if(varType(ivar[i]) != varType(ivar[0])){ - throw ConfigException() << BSL_EARG << "array elements should be the same type."; - } - if(varType(ivar[i]) == VAR_DICT){ - ret.append( seeVarDict(ivar[i], section) ); - } - else{ - ret.append( seeVarUnit(ivar[i], key, true) ); - } - } - } - else if(varType(ivar) == VAR_DICT){ - *section = nextSectionName(*section, key); - ret.append( seeVarDict(ivar, section) ); - } - else{ - ret.append( seeVarUnit(ivar, key, false) ); - } - //*section = bak_section; - return ret; - } - - - int Configure :: loadIVar(const IVar & ivar){ -#if 0 - if(ivar == NULL){ - LOG(WARNING) << "loadIVar : ivar = NULL"); - return -1; - } -#endif - try{ - if( ! ivar.is_dict()){ - LOG(WARNING) << "loadIVar : ivar should be a dict!"; - return -1; - } - - str_t section = ""; - str_t s = seeVar(ivar, §ion, CONFIG_GLOBAL); - //printf("====result===== \n%s", s.c_str()); - char * dest = getRebuildBuffer(s.size()); - if(dest == NULL){ - throw ConfigException() << BSL_EARG << "No memory???"; - } - strcpy(dest, s.c_str()); - return rebuild(); - }catch(bsl::Exception e){ - LOG(WARNING) << "loadIVar : catch exception : [" << e.file() << ":" << e.line() << "]" << e.what(); - return -1; - }catch(...){ - LOG(WARNING) << "loadIVar : other err..."; - return -1; - } - return 0; - } - - - Configure :: Configure(){ - create(CONFIG_GLOBAL); - _section = this; - _depth = 0; - _idl = NULL; - _cur_reader = NULL; - _cur_level = -1; - _dump_buffer = NULL; - //get_err_unit(); - } - - Configure :: ~Configure(){ - for(size_t i = 0; i < _readers.size(); ++i){ - delete _readers[i]->reader; - delete _readers[i]; - } - if(_idl){ - free_idl(_idl); - } - if(_dump_buffer){ - free(_dump_buffer); - } - } - - //callback函数cb_sgConstraint()的参数 - struct cb_cons_arg{ - enum{ - SG_TYPE_SET = 0, //set _bConstrainted,此处为将其置为false - SG_TYPE_GET, //get _bConstrainted,存入vector,为打印做准备 - }; - int sg_type; - void *arg; //callback函数需要的参数,根据作用类型有不同 - }; - //callback函数,用于set/get _bConstrainted - int cb_sgConstraint(ConfigUnit * unit, void *arg) - { - struct cb_cons_arg * cons_arg = (struct cb_cons_arg *)arg; - if(cons_arg->sg_type == cb_cons_arg::SG_TYPE_SET){ - unit->setConstrainted(*(bool *)cons_arg->arg); - } - else if(cons_arg->sg_type == cb_cons_arg::SG_TYPE_GET) - { - if(unit->selfType() == CONFIG_UNIT_TYPE && unit->getConstrainted() == false){ - std::vector *units = (std::vector *)cons_arg->arg; - units->push_back(unit); - } - } - return 0; - } - - int Configure :: check_once(const char * range, int /*version*/) { - if(range == NULL){ - LOG(WARNING) << "Configure.check_once : range filename error..."; - return ERROR; - } - bool bClear = false; - struct cb_cons_arg cons_arg = {cb_cons_arg::SG_TYPE_SET, &bClear}; - traverse_unit(cb_sgConstraint, (void *)&cons_arg); - - if(_idl){ - free_idl(_idl); - _idl = NULL; - } - _idl = confIDL::alloc_idl(); - load_idl(range, _idl); - Constraint cons; - int ret = cons.run(_idl, this); - return ret==0 ? OK : CONSTRAINT_ERROR; - } - - int Configure :: checkConstraint() - { - std::vector unconstraintedUnits; - struct cb_cons_arg cons_arg = {cb_cons_arg::SG_TYPE_GET, &unconstraintedUnits}; - traverse_unit(cb_sgConstraint, (void *)&cons_arg); - - int ret=0, errcode=0; - for(size_t i=0; iget_key_name().c_str() << " : " << unconstraintedUnits[i]->to_cstr(&errcode, "ERROR") << "]"; - ret = CONSTRAINT_ERROR; - } - return ret; - } - - int Configure :: printKeyConstraint(const char *key_path, const char *range) - { - if(range != NULL){ - int ret = check_once(range); - if(ret != 0){ - return ret; - } - } - if(_idl == NULL){ - LOG(WARNING) << - "Configure.printKeyConstraint: conf not constrainted, please check_once() or specify a range file"; - return CONSTRAINT_ERROR; - } - - str_t key = str_t(key_path); - int key_depth = 0; - confIDL :: group_t *cur_group = NULL; - for(size_t i = 0; i < key.length();){ - if(key[i] != '.'){ - ++ i; - continue; - } - if(i == 0){ - LOG(WARNING) << - "Configure.printKeyConstraint: key_path[" << key_path << "] is not well formatted!"; - return CONSTRAINT_ERROR; - } - str_t group_var = key.substr(0, i); - key = key.substr(i+1); - i = 0; - ++ key_depth; - - confIDL :: var_map_t * vmap = (key_depth == 1) ? &_idl->var_map : &cur_group->var_map; - confIDL :: var_map_t :: iterator vitr = vmap->find(group_var); - if(vitr == vmap->end()){ - LOG(WARNING) << - "Configure.printKeyConstraint: var[" << group_var.c_str() << "] in key_path[" << key_path << "] is not found or not constrainted!"; - return CONSTRAINT_ERROR; - } - - str_t group_type = vitr->second->type.data; - confIDL :: group_map_t :: iterator gitr = _idl->group_map.find(group_type); - if(gitr == _idl->group_map.end()){ - LOG(WARNING) << - "Configure.printKeyConstraint: type[" << group_type.c_str() << "] of var[" << group_var.c_str() << "] in key_path[" << key_path << "] is not found!"; - return CONSTRAINT_ERROR; - } - cur_group = gitr->second; - } - - confIDL :: var_map_t * vmap = (key_depth == 0) ? &_idl->var_map : &cur_group->var_map; - confIDL :: var_map_t :: iterator itr = vmap->find(key); - if(itr == vmap->end()){ - LOG(WARNING) << - "Configure.printKeyConstraint: var[" << key.c_str() << "] in key_path[" << key_path << "] is not found or not constrainted!"; - return CONSTRAINT_ERROR; - } - - LOG(INFO) << "Configure.printKeyConstraint: the constraints of key[" << key_path << "]:"; - confIDL :: cf_list_t &cf_list = itr->second->cf_list; - confIDL :: cf_list_t :: iterator cf_it; - for(cf_it=cf_list.begin(); cf_it!=cf_list.end(); ++cf_it){ - confIDL :: cf_t &cf = **cf_it; - LOG(INFO) << "\t\t\tconstraint function: " << cf.func.data.c_str() << "()"; - confIDL :: meta_list_t &arg_list=cf.arg_list; - confIDL :: meta_list_t :: iterator arg_it; - for(arg_it=arg_list.begin();arg_it!=arg_list.end();++arg_it){ - confIDL :: meta_t &arg=**arg_it; - LOG(INFO) << "\t\t\t\tfunction argument: " << arg.data.c_str(); - } - } - return 0; - } -} - - - - - diff --git a/configure/Configure.h b/configure/Configure.h deleted file mode 100644 index 46e0a8dd4b7aacc4d865e7759c895f3b55bf9161..0000000000000000000000000000000000000000 --- a/configure/Configure.h +++ /dev/null @@ -1,279 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: Configure.h,v 1.15 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file Configure.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 17:59:12 - * @version $Revision: 1.15 $ - * @brief 新的Configure库 - * 更多资料请参见: - * http://com.baidu.com/twiki/bin/view/Main/LibConfig - * - **/ - - -#ifndef __CONFIGURE_H_ -#define __CONFIGURE_H_ - -#include "ConfigGroup.h" -#include "sys/uio.h" -#include - -#define CONFIG_GLOBAL "GLOBAL" -#define CONFIG_INCLUDE "$include" - -namespace confIDL{ - struct idl_t; -} -namespace comcfg{ - const int MAX_INCLUDE_DEPTH = 1; - class Reader; - enum{ - CONFIG_VERSION_1_0, //Config Version 1.0 - }; - /** - * @brief 配置句柄,其实是一个全局的[GLOBAL]配置组 - * - * Configure是immutable的,即:无法修改,无法复用 - * 所以load, rebuild, loadIVar三个接口互斥 - * 要重新load,必须创建一个新的Configure句柄进行操作 - * - */ - class Configure : public ConfigGroup{ - public: - /** - * @brief 从指定的文件中载入配置文件和约束文件 - * - * @param [in] path : const char* 配置文件的路径 - * @param [in] conf : const char* 配置文件名 - * @param [in] range : const char* 约束文件 - * @param [in] version : int 文件格式的版本(暂未使用) - * @return int 0表示成功,其余为失败 - * bsl::CONSTRAINT_ERROR 约束检查错误(如果不关心约束,可无视此错误) - * bsl::CONFIG_ERROR 配置文件解析错误 - * bsl::ERROR 其它错误 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:36:54 - **/ - int load(const char * path, const char * conf, const char * range = NULL, int version = CONFIG_VERSION_1_0); - /** - * @brief 从指定的文件中载入配置文件和约束文件,并检查是否有group重名情况,最后打印到日志 - * 默认行为与load()接口相同 - * - * @param [in] path : const char* 配置文件的路径 - * @param [in] conf : const char* 配置文件名 - * @param [in] range : const char* 约束文件 - * @param [in] dupLevel : enum GROUP_DUP_LEVEL 指定的重名等级,下列值之一 - * 0: GROUP_DUP_LEVEL0 不检测是否有重名,与原接口行为相同,不打印 - * 1: GROUP_DUP_LEVEL1 检测第一级group是否重名 - * 2: GROUP_DUP_LEVEL2 检测所有深度下group是否重名 - * 3: GROUP_DUP_LEVEL3 记录所有group名 - * @param [in] version : int 文件格式的版本(暂未使用) - * @return int 0表示成功,其他值为失败 - * bsl::CONSTRAINT_ERROR 约束检查错误(如果不关心约束,可无视此错误) - * bsl::CONFIG_ERROR 配置文件解析错误 - * bsl::ERROR 其它错误 - * DUPLICATED_GROUP 有组重名,在GROUP_DUP_LEVEL0和GROUP_DUP_LEVEL3下,正常则返回0 - * @retval - * @see - * @author linjieqiong - * @date 20012/12/28 11:36:54 - **/ - int load_ex(const char * path, const char * conf, const char * range = NULL, - int dupLevel = GROUP_DUP_LEVEL0, int version = CONFIG_VERSION_1_0); - /** - * @brief 从指定的文件中载入配置文件和约束文件,如果存在未被约束的配置项,则打印并报错 - * - * @param [in] path : const char* 配置文件的路径 - * @param [in] conf : const char* 配置文件名 - * @param [in] range : const char* 约束文件,如果指定了约束文件,则会在会后打印出未被约束的配置项 - * @param [in] version : int 文件格式的版本(暂未使用) - * @return int 0表示成功,其余为失败 - * bsl::CONSTRAINT_ERROR 约束检查错误(不满足约束,存在未被约束的配置项)(如果不关心约束,可无视此错误) - * bsl::CONFIG_ERROR 配置文件解析错误 - * bsl::ERROR 其它错误 - * @retval - * @see - * @author linjieqiong - * @date 2013/01/06 21:36:54 - **/ - int load_ex2(const char * path, const char * conf, const char * range = NULL, int version = CONFIG_VERSION_1_0); - /** - * @brief 将数据串行化到一个字节流,可以发网网络 - * 如果将这个字节流直接写入磁盘文件,不可以直接load回来,而需要读取后再rebuild - * @note 本api只能序列化原始配置文件镜像或ivar,不能反映在内存中对configure对象的修改 - * 如需序列化实时内容,请使用dump_ex() - * - * @param [out] size_t * : 输出的字节流长度 - * @return char* 输出的字节流 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:38:35 - **/ - char * dump(size_t *); - - /** - * @brief 序列化configure对象的实时内存内容 - * - * @param [in] buf : dump_ex()输出的位置 - * @param [in] bufsize : buf的长度 - * @param [in] restoreComment : const int - * 0 RC_COMMENT 还原配置文件中的注释到输出 - * 1 RC_NO_COMMENT 不还原配置文件中的注释内容到输出 - * 2 RC_POSITION 还原的同时标记配置项在配置文件中的位置,格式: - * #this is the original comment - * #[FILE:LINE] - * [group] - * #[FILE:LINE] - * key : value - * - * @return int 写入buf的数据长度 - * 如果发生错误,返回-1 - * 如果buf不够,返回实际长度的相反数 - * 自动添加\0 - * - * @author linjieqiong - * @version 1.2.9 - * @date 2013/04/24 14:56:31 - */ - int dump_ex(char *buf, const size_t bufsize, const int restoreComment = 0); - - /** - * @brief 根据dump的字节流创建Configure - * 根据字节流重建一个Configure的步骤是: - * 1,getRebuildBuffer(size) 获取一个内部缓冲区 - * 2,将字节流中的数据拷贝到这个缓冲区 - * 3,调用rebuild重建数据 - * - * 调用本接口会清空现有的数据。 - * - * @param [in] size : size_t 字节流长度 - * @return char* 缓冲区 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:39:38 - **/ - char * getRebuildBuffer(size_t size); - /** - * @brief 根据获得的字节流重建Configure数据 - * - * @return int 0为成功,其他为失败 - * @retval - * @see - * @author yingxiang - * @date 2008/12/30 01:43:05 - **/ - int rebuild(); - /** - * @brief 检查所有配置文件的最后更新时间(包括被$include)的配置文件 - * $include 限制层数为:MAX_INCLUDE_DEPTH - * 在执行lastConfigModify(),应确保原来的配置文件都没有被删除 - * - * @return time_t 所有配置文件中的最后更新时间 - * 返回0表示出错 - * @retval - * @see - * @author yingxiang - * @date 2009/03/10 14:23:47 - **/ - time_t lastConfigModify(); - /** - * @brief 从一个IVar载入配置文件的数据 - * 本接口与load/rebuild互斥 - * 这个IVar必须是一个Dict类型 - * - * @return int 0成功,其余失败 - * @retval - * @see - * @author yingxiang - * @date 2009/03/11 17:29:56 - **/ - int loadIVar(const bsl::var::IVar & ); - /** - * @brief 用约束文件检查一次 - * @param [in] range : const char* 约束文件 - * @param [in] version : int 文件格式的版本(暂未使用) - * @return int 0表示成功,其余为失败 - * bsl::CONSTRAINT_ERROR 约束检查错误 - * bsl::ERROR 其它错误 - **/ - int check_once(const char * range, int version = CONFIG_VERSION_1_0); - /** - * @brief 检查conf文件中所有unit是否被约束,如果存在未被约束的项,则打印并返回错误 - * - * @return int 0 成功,其他是错误号 - * bsl::CONSTRAINT_ERROR 约束检查错误 - * @author linjieqiong - * @date 2013/01/07 17:32:10 - **/ - int checkConstraint(); - /** - * @brief 获取一个key的约束函数列表,注意group和array类型的约束函数是无作用的 - * @param [in] key_path : const char* 该key在conf文件中的完整路径 - * @param [in] range : const char* 约束文件, - * 如果非空,先进行约束检查; - * 如果为空,将使用最近一次load类函数或check_once()函数所使用的约束文件 - * - * @return int 0 成功,其他是错误号 - * bsl::CONSTRAINT_ERROR 约束检查错误 - * bsl::ERROR 其它错误 - * - * @author linjieqiong - * @date 2013/01/10 10:50:00 - **/ - int printKeyConstraint(const char *key_path, const char *range = NULL); - - virtual ConfigUnit & operator= (ConfigUnit & unit) { - return ConfigUnit::operator=(unit); - } - - Configure(); - ~Configure(); - protected: - - int load_1_0(const char * path, const char * conf, const char *range); - void pushSubReader(const char * conf, int level = -1); - friend class Reader; - friend class Constraint; - friend class ConfigGroup; - friend class ConfigUnit; - friend struct dump_conf; - friend int cb_dumpConf(ConfigUnit *, void *); - - struct ReaderNode{//每一个conf文件 - str_t filename; - Reader * reader; - int level; - }; - std::vector _readers; - str_t _path; - Reader * _cur_reader;//当前在处理的文件 - int _cur_level;//当前文件的深度($include的层次) - char * _dump_buffer; - size_t _dump_size; - confIDL::idl_t * _idl; - void changeSection(str_t str); - void pushPair(const str_t& key, const str_t& value); - - ConfigGroup* _section; - //depth是一个调试变量 - int _depth; - }; -} - - - -#endif //__CONFIGURE_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/EnvGet.h b/configure/EnvGet.h deleted file mode 100644 index 4b9310667596752bf86d432b6339bf39bb31143d..0000000000000000000000000000000000000000 --- a/configure/EnvGet.h +++ /dev/null @@ -1,73 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * EnvGet.h 2009/07/17 14:24:22 zhang_rui Exp - * - **************************************************************************/ - - - -/** - * @file EnvGet.h - * @author zhang_rui(com@baidu.com) - * @date 2009/07/17 14:24:22 - * @brief - * - **/ - - - -#ifndef __ENVGET_H_ -#define __ENVGET_H_ - -#include "utils/cc_struct.h" -#define ENV_CHAR_DECL(envstr, deft) \ - static const char g_char_##envstr = (NULL == getenv(#envstr))? \ - deft : getenv(#envstr)[0] -#define ENV_UCHAR_DECL(envstr, deft) \ - static const unsigned char g_uchar_##envstr = (NULL == getenv(#envstr))? \ - deft : (unsigned char)getenv(#envstr)[0] - -#define ENV_INT16_DECL(envstr, deft) \ - static const int16_t g_int16_##envstr = (NULL == getenv(#envstr))? \ - deft : (int16_t)strtoll(getenv(#envstr), NULL, 0) -#define ENV_UINT16_DECL(envstr, deft) \ - static const u_int16_t g_uint16_##envstr = (NULL == getenv(#envstr))? \ - deft : (u_int16_t)strtoll(getenv(#envstr), NULL, 0) - -#define ENV_INT32_DECL(envstr, deft) \ - static const int g_int32_##envstr = (NULL == getenv(#envstr))? \ - deft : (int)strtoll(getenv(#envstr), NULL, 0) - -#define ENV_UINT32_DECL(envstr, deft) \ - static const u_int32_t g_uint32_##envstr = (NULL == getenv(#envstr))? \ - deft : (u_int32_t)strtoll(getenv(#envstr), NULL, 0) - -#define ENV_INT64_DECL(envstr, deft) \ - static const long long g_int64_##envstr = (NULL == getenv(#envstr))? \ - deft : (long long)strtoll(getenv(#envstr), NULL, 0) -#define ENV_UINT64_DECL(envstr, deft) \ - static const unsigned long long g_uint64_##envstr = (NULL == getenv(#envstr))? \ - deft : (unsigned long long)strtoull(getenv(#envstr), NULL, 0) - -#define ENV_FLOAT_DECL(envstr, deft) \ - static const float g_float_##envstr = (NULL == getenv(#envstr))? \ - deft : (float)strtod(getenv(#envstr), NULL) -#define ENV_DOUBLE_DECL(envstr, deft) \ - static const float g_double_##envstr = (NULL == getenv(#envstr))? \ - deft : (double)strtod(getenv(#envstr), NULL) - -#define ENV_BSLSTR_DECL(envstr, deft) \ - static const bsl_string g_bslstr_##envstr = (NULL == getenv(#envstr))? \ - deft : bsl_string(getenv(#envstr)) - - - - - - - - -#endif //__ENVGET_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/FileReloader.cpp b/configure/FileReloader.cpp deleted file mode 100644 index 35b18e3ffeff000caf44d8cfb45cf0ee1a86fb8a..0000000000000000000000000000000000000000 --- a/configure/FileReloader.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2010 Baidu.com, Inc. All Rights Reserved - * - **************************************************************************/ - - - -/** - * @file FileReloader.cpp - * @author zhang_rui(com@baidu.com) - * @date 2010-2-1 - * @brief - * - **/ - -#include "FileReloader.h" -#include -#include -#include -#include - -namespace comcfg { - -static time_t get_file_time(const char * filename) { - - if (NULL == filename) { - LOG(WARNING) << "FileReloader.add_file_monitor : NULL filename"; - return -1; - } - time_t t = time_t(0); - struct stat st; - if(stat(filename, &st) == 0){ - if(t < st.st_mtime){ - t = st.st_mtime; - } - } else { - LOG(WARNING) << "FileReloader add_file_monitor : Can not stat file " << filename; - return -1; - } - return t; -} - -int FileReloader :: monitor() { - int ret = 0; - bsl::hashmap :: iterator itr; - for(itr = _filemap.begin(); itr != _filemap.end(); ++itr){ - config_filemonitor_t * fm = itr->second; - time_t tnow = get_file_time(itr->first.c_str()); - if (tnow<0) { - return -1; - } - if (tnow > fm->_last_modify) { - fm->_last_modify = tnow; - fm->callback(itr->first.c_str(), fm->param); - ++ret; - } - } - return ret; -} - -int FileReloader :: add_file_monitor(const char * filename, file_change_cb_t proc, void * prm) { - if (NULL == filename) { - LOG(WARNING) << "FileReloader.add_file_monitor : NULL filename"; - return -1; - } - if (NULL == proc) { - LOG(WARNING) << "FileReloader.add_file_monitor : NULL callback"; - return -1; - } - if (!_filemap.is_created()) - { - LOG(WARNING) << "Initial FileReloader : create filemap"; - _filemap.create(256); - } - time_t t = get_file_time(filename); - if (0 > t) { - return -1; - } - - config_filemonitor_t * pmon = new config_filemonitor_t; - pmon->callback = proc; - pmon->param = prm; - pmon->_last_modify = t; - - bsl::string kstr = filename; - bsl::hashmap :: _Pair *itr; - itr = _filemap.find(kstr); - if(NULL != itr) { - if (NULL != itr->second){ - delete itr->second; - } - LOG(WARNING) << "FileReloader.add_file_monitor : same file("<< filename << ") exist, update callback(" << proc << "), param(" << prm << ")"; - } - _filemap.set(kstr,pmon,1); - return 0; -} - -FileReloader :: ~FileReloader() { - bsl::hashmap::iterator itr; - for(itr = _filemap.begin(); itr != _filemap.end(); ++itr) { - if (NULL != itr->second) { - delete itr->second; - } - } - if(0 != _filemap.destroy()){ - LOG(WARNING) << "FileReloader.~FileReloader : _filemap.destory() failed "; - } -} - -}//namespace comcfg diff --git a/configure/FileReloader.h b/configure/FileReloader.h deleted file mode 100644 index 76e3cbf9f3ab4269ba3b352546c42f4b1d796f7b..0000000000000000000000000000000000000000 --- a/configure/FileReloader.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2010 Baidu.com, Inc. All Rights Reserved - * - **************************************************************************/ - - - -/** - * @file FileReloader.h - * @author zhang_rui(com@baidu.com) - * @date 2010-2-1 - * @brief - * - **/ - - -#ifndef FILERELOADER_H_ -#define FILERELOADER_H_ - -#include -#include "butil/logging.h" -#include "bsl/containers/string/bsl_string.h" -#include "bsl/containers/hash/bsl_hashmap.h" - -namespace comcfg { - -typedef int (*file_change_cb_t)(const char * filename, void * prm); /**< 处理文件变更的回调函数类型 */ - -typedef struct _config_filemonitor_t { - file_change_cb_t callback; /**< 处理文件变更的回调函数 */ - void * param; /**< 参数 */ - time_t _last_modify; /**< 最近修改时间 */ -} config_filemonitor_t; - -class FileReloader { - typedef bsl::hashmap config_filemonmap_t; -private : - config_filemonmap_t _filemap; -public : - /** - * @brief 检查配置文件是否发生变化。 - * - * @return int 0表示没有不安化,1表示配置发生了变化并进行了通知,-1表示文件stat失败,可能被删除。 - **/ - int monitor(); - /** - * @brief 增加监控整个文件的回调 - * - * @param [in] proc : file_change_cb_t 处理回调函数 - * @return int 0表示成功,-1为失败 - **/ - int add_file_monitor(const char * filename, file_change_cb_t proc, void * prm); - - /** - * @brief 构造函数 - **/ - FileReloader(){ - _filemap.create(256); - } - - /** - * @brief 析构函数 - **/ - ~FileReloader(); -}; - -}//namespace comcfg - -#endif /* FILERELOADER_H_ */ diff --git a/configure/Makefile b/configure/Makefile deleted file mode 100644 index 226de6720425f9f3d208c248f99136f4062b9b81..0000000000000000000000000000000000000000 --- a/configure/Makefile +++ /dev/null @@ -1,202 +0,0 @@ -########################################################################### -# Automatically generated by comake (1.0.0) # -########################################################################### - -#################设计系统参数####################################### -WORKROOT ?= ../../ -IDLCC := $(WORKROOT)/public/idlcompiler/output/bin/mcy -RPCCC := $(WORKROOT)/public/ubrpc/servlet/ubrpcgen -CC := g++ -CXX := g++ -LEX := flex -YACC := yacc -CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -LEXFLAGS := -YACCFLAGS := -IDLFLAGS := -LINKFLAGS := -rdynamic -LINK := g++ -AR := ar cqs -RANLIB := -COMAKE := comake - -###############baidu lib 的32位 64位支持################# -HARDWARE_PLATFORM := $(shell uname -m) -ifeq ($(HARDWARE_PLATFORM),x86_64) - lib2=lib2-64 - third=third-64 -else - lib2=lib2-arm32 - third=third-arm32 -endif -########################################## - -# 编译参数 -DEP_INCPATH = -I$(WORKROOT)/public/spreg/output//include/ -I$(WORKROOT)/$(lib2)/ullib//include/ -I$(WORKROOT)/$(third)/pcre//include/ -I$(WORKROOT)/$(lib2)/bsl//include/ -DEP_LDFLAGS = -L$(WORKROOT)/$(lib2)/bsl//lib/ -L$(WORKROOT)/$(third)/pcre//lib/ -L$(WORKROOT)/$(lib2)/ullib//lib/ -L$(WORKROOT)/public/spreg/output//lib/ -DEP_LDLIBS = -lspreg -lpcre -lpcrecpp -lpcreposix -lbsl -lullib -INCPATH = -I. -Icompiler/src -MAKDEP = Makefile.dep - - -#start target -first : all - -############# 默认推到公式 -.SUFFIXES: .c .cpp .cc .cxx .C .idl .des -.PRECIOUS: %.cpp - -.cpp.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.cc.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.cxx.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.C.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.c.o: - $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) $(INCPATH) - -.idl.cpp: - $(IDLCC) --ns=$(*F) -o $* $< $(CPPFLAGS) $(INCPATH) $(IDLFLAGS) - -############# -###cpp 支持 -%info : % - ccp $< -############# - - -#__$MAKEFILE_RULES$__ - - - -###############编译目标 -all : target output -.PHONY : all clean test output comake src conf - -target : libconfig.a -#target : rpcidl libconfig.a -#target : -#__$target_CMDLINE$__ - -rpcidl : - -clean_rpcidl : - - -test : - - -comake : - -make clean - -comake - -#-include $(MAKDEP) --include $(MAKDEP) - -#----------------build target : libconfig.a-------------------- - -libconfig.a : CC := g++ -libconfig.a : CXX := g++ -libconfig.a : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -Woverloaded-virtual -libconfig.a : CPPFLAGS := -libconfig.a : IDLFLAGS := -libconfig.a : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -libconfig.a : INCPATH := -I. -Icompiler/src $(DEP_INCPATH) -libconfig.a : LDLIBS := -lm -lpthread $(DEP_LDLIBS) -libconfig.a : LDFLAGS := $(DEP_LDFLAGS) -libconfig.a : LINKFLAGS := -rdynamic - -libconfig_a_SOURCES := $(wildcard comake_autogen.cpp FileReloader.cpp ConfigReloader.cpp CmdOption.cpp ConfigError.cpp ConfigGroup.cpp ConfigUnit.cpp Configure.cpp constraint/Constraint.cpp constraint/ConstraintFunction.cpp constraint/cc_default.cpp reader/RawData.cpp reader/Reader.cpp utils/init.cpp utils/trans.cpp cfgext.cpp cfgflag.cpp compiler/src/idl.c compiler/src/idl_lex.c compiler/src/idl_gram.c) -#libconfig_a_HEADERS := $(wildcard *.h) -libconfig_a_HEADERS := *.h -libconfig_a_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -libconfig_a_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(libconfig_a_IDLSRC)) -libconfig_a_IDLSRCH := $(patsubst %.idl,%.h, $(libconfig_a_IDLSRC)) -libconfig_a_CONFDES := $(wildcard __$CONFDES$_VALUE$__ libconfig.a.des) -libconfig_a_CONFRANGE := $(patsubst %.des,%.range, $(libconfig_a_CONFDES)) -libconfig_a_OBJS := $(libconfig_a_IDLSRC:.idl=.o) -libconfig_a_OBJS += $(libconfig_a_SOURCES:.c=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.cc=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.cpp=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.cxx=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.C=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.idl=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.yacc=.o) -libconfig_a_OBJS := $(libconfig_a_OBJS:.lex=.o) -libconfig.a : $(libconfig_a_OBJS) - rm -f $@ || echo - ar cr $@ $^ - - -define libconfig_a_output - mkdir -p output output/lib output/include output/include/utils output/include/constraint - cp -rf *.h output/include/ - cp -rf utils/*.h output/include/utils/ - cp -rf constraint/*.h output/include/constraint/ - cp -rf compiler/src/idl_conf_if.h output/include/ - cp libconfig.a output/lib -endef - - -define libconfig_a_clean - -rm -rf $(libconfig_a_OBJS) $(libconfig_a_IDLSRCCPP) $(libconfig_a_IDLSRCH) libconfig.a.range conf/libconfig.a.range - -rm -rf libconfig.a - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define libconfig_a_ccpc - ccp $(libconfig_a_SOURCES) --formatter vim -endef - - -define libconfig_a_cov - -endef - - - - -#---------------------end build target : libconfig.a------------------ - -define _output - $(libconfig_a_output) -endef - - -define _clean - $(libconfig_a_clean) -endef - - -ccpc : - $(libconfig_a_ccpc) - -cov : - cov01 -1 - make clean - make - cov01 -0 - - - -output : libconfig.a - $(_output) - rm -rf $(MAKDEP) - -$(MAKDEP) : $(wildcard comake_autogen.cpp FileReloader.cpp ConfigReloader.cpp CmdOption.cpp ConfigError.cpp ConfigGroup.cpp ConfigUnit.cpp Configure.cpp constraint/Constraint.cpp constraint/ConstraintFunction.cpp constraint/cc_default.cpp reader/RawData.cpp reader/Reader.cpp utils/init.cpp utils/trans.cpp cfgext.cpp cfgflag.cpp compiler/src/idl.c compiler/src/idl_lex.c compiler/src/idl_gram.c) - -$(CC) -MG -MM $(CPPFLAGS) $(INCPATH) $(DEP_INCPATH) $^ > $@ - -clean: - $(_clean) - rm -rf $(MAKDEP) - - diff --git a/configure/README b/configure/README deleted file mode 100644 index ffcf42e86d64a756ec69f6532206407082f07e7a..0000000000000000000000000000000000000000 --- a/configure/README +++ /dev/null @@ -1,6 +0,0 @@ -1 鎵嬪姩缂栬瘧鏈簱鐨勬柟寮忥細 -make clean -export MAC=64 -make - -2 configure瀵硅薄涓嶆敮鎸佹嫹璐濊涔夛紝璇峰嬁浣跨敤浼犲兼柟寮忎紶閫抍onfigure瀵硅薄 diff --git a/configure/build.sh b/configure/build.sh deleted file mode 100644 index ff507a277c7554164dbc1bf91730742fad45204a..0000000000000000000000000000000000000000 --- a/configure/build.sh +++ /dev/null @@ -1,25 +0,0 @@ -cd ../../ -#rm -r lib2/bsl -f -cvs co lib2/bsl - -#rm -r lib2-64/bsl -f -cvs co lib2-64/bsl - -#rm -r lib2-64/ullib -f -cvs co lib2-64/ullib - -#rm -r lib2/ullib -f -cvs co lib2/ullib - -#rm -r third/pcre -f -cvs co third/pcre - -#rm -r third-64/pcre -f -cvs co third-64/pcre - -#rm -r public/spreg -f -cvs co public/spreg -make -C public/spreg - -cd public/configure -make diff --git a/configure/build_force.sh b/configure/build_force.sh deleted file mode 100644 index 29081d8e3b56774129dedf660ee433538077d838..0000000000000000000000000000000000000000 --- a/configure/build_force.sh +++ /dev/null @@ -1,25 +0,0 @@ -cd ../../ -rm -r lib2/bsl -f -cvs co lib2/bsl - -rm -r lib2-64/bsl -f -cvs co lib2-64/bsl - -rm -r lib2-64/ullib -f -cvs co lib2-64/ullib - -rm -r lib2/ullib -f -cvs co lib2/ullib - -rm -r third/pcre -f -cvs co third/pcre - -rm -r third-64/pcre -f -cvs co third-64/pcre - -rm -r public/spreg -f -cvs co public/spreg -make -C public/spreg - -cd public/configure -make diff --git a/configure/cfgext.cpp b/configure/cfgext.cpp deleted file mode 100644 index 09210f22faefd028d500997a9c2295efade9ad01..0000000000000000000000000000000000000000 --- a/configure/cfgext.cpp +++ /dev/null @@ -1,202 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: cfgext.cpp,v 1.4 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file cfgext.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/03/10 21:48:10 - * @version $Revision: 1.4 $ - * @brief - * - **/ - -#include "cfgext.h" -#include "idl_conf_if.h" -#include "Configure.h" - -#define ARRAY_FUNC "array" -#define COMMENT_FUNC "comment" -#define DEFAULT_FUNC "default" - -namespace comcfg{ - - // is basic type - // in constraint/Constraint.cpp - extern bool isBaseType(const str_t & s); - - void printBaseType(confIDL::idl_t * idl, confIDL::var_t * var, str_t * conf, str_t * section, bool isArray); - void printGroup(confIDL::idl_t * idl, confIDL::var_t * var, str_t * conf, str_t * section, bool isArray); - void printVar(confIDL::idl_t * idl, confIDL::var_t * var, str_t * conf, str_t * section); - - void printBaseType(confIDL::idl_t * /*idl*/, confIDL::var_t * var, str_t * conf, str_t * /*section*/, bool isArray){ - //comment - confIDL::cf_map_t::iterator cfitr = var->cf_map.find(str_t(COMMENT_FUNC)); - if(cfitr != var->cf_map.end() && cfitr->second->arg_list.size() > 0){ - conf->appendf("#%s\n", cfitr->second->arg_vec[0]->data.c_str()); - } - //key - conf->appendf("%s%s : ", isArray?"@":"", var->name.data.c_str()); - - //default value - cfitr = var->cf_map.find(str_t(DEFAULT_FUNC)); - if(cfitr != var->cf_map.end() && cfitr->second->arg_list.size() > 0){ - conf->appendf("%s", cfitr->second->arg_vec[0]->data.c_str()); - } - //end of line - conf->append("\n"); - } - - void printGroup(confIDL::idl_t * idl, confIDL::var_t * var, str_t * conf, str_t * section, bool isArray){ - confIDL::group_map_t::iterator gitr = idl->group_map.find(var->type.data); - if(gitr == idl->group_map.end()){ - throw ConfigException() << BSL_EARG << "Unknown type : " << var->type.data.c_str() << " [ " - << var->type.file.c_str() << " : " << var->type.lineno << " }"; - } - if(*section == str_t(CONFIG_GLOBAL)){ - *section = ""; - section->appendf("%s%s", isArray?"@":"", var->name.data.c_str()); - } - else{ - if(strstr(section->c_str(), "@") != NULL){ - //前面的已经有数组了,只能使用相对位置 - str_t tmp; - for(int i = 0; i < (int)section->size(); ++i){ - if((*section)[i] == '.'){ - tmp.append("."); - } - } - *section = tmp; - } - section->appendf(".%s%s", isArray?"@":"", var->name.data.c_str()); - } - conf->appendf("\n[%s]\n", section->c_str()); - confIDL::var_list_t::iterator vitr; - str_t bak_section = *section; - for(vitr = gitr->second->var_list.begin(); vitr != gitr->second->var_list.end(); ++vitr){ - if(isBaseType((*vitr)->type.data)){ - printVar(idl, *vitr, conf, section); - } - } - for(vitr = gitr->second->var_list.begin(); vitr != gitr->second->var_list.end(); ++vitr){ - if(! isBaseType((*vitr)->type.data)){ - if(*section != bak_section){ - *section = bak_section; - //conf->appendf("\n[%s]\n", section->c_str()); - } - printVar(idl, *vitr, conf, section); - } - } - } - - - - void printVar(confIDL::idl_t * idl, confIDL::var_t * var, str_t * conf, str_t * section){ - bool isArray = false; - int arrSize = 1; - - confIDL::cf_map_t::iterator cfitr = var->cf_map.find(str_t(ARRAY_FUNC)); - if(cfitr != var->cf_map.end()){ - isArray = true; - unsigned long long s; - if(cfitr->second->arg_list.size() > 0){ - if(Trans::str2uint64(cfitr->second->arg_vec[0]->data, &s) == 0){ - arrSize = (int)s; - } - } - } - - if(arrSize <= 0){ - arrSize = 1; - } - - str_t bak_section = *section; - //*section = bak_section; - if(isBaseType(var->type.data)){ - printBaseType(idl, var, conf, section, isArray); - } - else{ - printGroup(idl, var, conf, section, isArray); - } - //增加注释的元素 - if (1 < arrSize) - { - //把数组元素的配置字符串写到cmt中 - str_t cmt = ""; - str_t cmted = ""; - *section = bak_section; - if(isBaseType(var->type.data)){ - printBaseType(idl, var, &cmt, section, isArray); - } - else{ - cmted.append("\n"); - printGroup(idl, var, &cmt, section, isArray); - } - cmt.append("\n"); - //对cmt中每行字符串前面增加#,改写到cmted中 - int prelinehead = 0; - for (int i=0; i<(int) cmt.size(); ++i) - { - if ('\n'==cmt[i]) - { - if (i>prelinehead){ - cmted.append("#").append(cmt.substr(prelinehead, i - prelinehead + 1)); - } - prelinehead = i+1; - } - } - //将注释的配置字符串cmted加到conf中 - conf->append(cmted); - } - } - - - str_t autoConfigGen(const char * range_file){ - confIDL::idl_t * idl; - idl = confIDL::alloc_idl(); - - load_idl(range_file, idl); - if(idl->retval != 0){ - confIDL:: err_list_t :: iterator itr; - ConfigException e; - e << range_file << ": Read File Error\n"; - for(itr = idl->err_list.begin(); itr != idl->err_list.end(); ++itr){ - e << itr->file.c_str() << ":" << itr->lineno << " " << itr->data.c_str() << "\n"; - } - free_idl(idl); - throw e; - } - - confIDL :: var_list_t :: iterator vitr; - str_t conf; - str_t section = CONFIG_GLOBAL; - for(vitr = idl->var_list.begin(); vitr != idl->var_list.end(); ++vitr){ - if(isBaseType((*vitr)->type.data) && section != CONFIG_GLOBAL){ - conf.append("\n[" CONFIG_GLOBAL "]\n"); - } - section = CONFIG_GLOBAL; - printVar(idl, *vitr, &conf, §ion); - } - free_idl(idl); - return conf; - } - - - - - - - - - - - - -}//namespace comcfg - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/cfgext.h b/configure/cfgext.h deleted file mode 100644 index 5db9436e0a394a519d52d3d6576639b48817a036..0000000000000000000000000000000000000000 --- a/configure/cfgext.h +++ /dev/null @@ -1,59 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: cfgext.h,v 1.2 2009/03/23 03:14:52 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file cfgext.h - * @author yingxiang(com@baidu.com) - * @date 2009/03/10 21:39:54 - * @version $Revision: 1.2 $ - * @brief - * - **/ - - -#ifndef __CFGEXT_H_ -#define __CFGEXT_H_ - -#include "utils/cc_utils.h" - -namespace comcfg{ -/** - * @brief 根据一个约束文件,自动生成一个空配置文件 - * 线下使用,便于RD生成一份配置文件模板 - * - * @param [in] range_file : const char* 约束文件地址 - * @return bsl::string 返回配置文件的文本内容。直接write到某个文件即可。 - * - * 当出错时抛出ConfigException异常 - * - * @retval - * @see - * @author yingxiang - * @date 2009/03/10 21:42:44 -**/ -bsl::string autoConfigGen(const char * range_file); - - - - - - - - - -}//namespace comcfg - - - - - - -#endif //__CFGEXT_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/cfgflag.cpp b/configure/cfgflag.cpp deleted file mode 100644 index 3fa38c07a41c669b8cc6d0fbaa32c711ff10f882..0000000000000000000000000000000000000000 --- a/configure/cfgflag.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: cfgflag.cpp,v 1.3 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file init.cpp - * @author xiaowei(com@baidu.com) - * @date 2009/02/12 13:57:10 - * @version $Revision: 1.3 $ - * @brief - * - **/ - -#include "cfgflag.h" -#include "cfgext.h" - -namespace comcfg -{ - -const char *DEFHELP = - " -d: conf_dir\n" - " -f: conf_file\n" - " -r: range_file\n" - " -h: show this help page\n" - " -t: check config file syntax\n" - " -g: generate config sample file\n" - " -v: show version infomation\n "; - -void Flag::default_version() -{ - std::cout<<"call default_version function, you must reload it"<=0 && s[z] != flag); - return z; -} - -Flag::Flag(fun_t ver, fun_t help) -{ - _modname = ""; - _cfpath = ""; - _cffile = ""; - _cfrange = ""; - _version = ver; - _help = help; -} - -Flag::~Flag() -{ -} - -bsl::string Flag::get_defrange(const bsl::string &file) -{ - bsl::string str=file; - if (file.size() > 5 && file.substr(file.size()-5) == ".conf") { - str = file.substr(0,file.size()-5); - } - str.append(".range"); - return str; -} - -bsl::string Flag::get_defconf(const bsl::string &mod) -{ - int pos = comcfg::rfind(mod.c_str(), '/'); - bsl::string cf; - if (pos < 0) { - cf = bsl::string(mod.c_str()).append(".conf"); - } else { - cf = bsl::string(mod.c_str()+pos+1).append(".conf"); - } - return bsl::string("conf/").append(cf); -} - -int Flag::init(int argc, char **argv, const char *optstr) -{ - int ret = 0; - try { - if (optstr == NULL) { - ret = _opt.init(argc, argv, bsl::string("f:d:r:gtvh").c_str()); - } else { - ret = _opt.init(argc, argv, bsl::string("f:d:r:gtvh").append(optstr).c_str()); - } - if (ret != 0) return ret; - - _modname = argv[0]; - - if (_opt.hasOption("d")) { - _cfpath = _opt["d"].to_cstr(); - } else if (_opt.hasOption("dir")) { - _cfpath = _opt["dir"].to_cstr(); - } else { - _cfpath = ""; - } - - if (_opt.hasOption("f")) { - _cffile = _opt["f"].to_cstr(); - } else if (_opt.hasOption("conf")) { - _cffile = _opt["conf"].to_cstr(); - } else { - _cffile = ""; - } - - if (_opt.hasOption("r")) { - _cfrange = _opt["r"].to_cstr(); - } else { - _cfrange = ""; - } - - if (_opt.hasOption("v") || _opt.hasOption("version")) { - _version(); - exit (0); - } - if (_opt.hasOption("h") || _opt.hasOption("help")) { - _help(); - exit (0); - } - if (_opt.hasOption("t")) { - ret = 0; - try { - ret = this->loadconfig(); - } catch (bsl::Exception &e) { - LOG(WARNING) << "check configure error : exception " << e.what() << ", at " << e.stack(); - ret = -1; - } - if (ret != 0) { - LOG(WARNING) << "check configure[" << this->_cfpath.c_str() << "/" << this->_cffile.c_str() << "] error"; - } else { - LOG(INFO) << "check configure[" << _cfpath.c_str() << "/" << _cffile.c_str() << "] success"; - } - exit (0); - } - if (_opt.hasOption("g")) { - bsl::string file = ""; - try { - auto_def(); - file = comcfg::autoConfigGen(fullpath(_cfpath, _cfrange).c_str()); - } catch (bsl::Exception &e) { - LOG(WARNING) << "auto gen configure error for " << _cfpath.c_str() << "/" << _cffile.c_str() << ":\nExp " << e.what() << ", " << e.name() << ", " << e.stack(); - exit(0); - } - bsl::string path = _cfpath; - path.append("/").append(_cffile); - FILE *fp = fopen(path.c_str(), "w"); - if (fp == NULL) { - LOG(WARNING) << "auto gen configure error for can't open file [" << path.c_str() << "]"; - exit(0); - } - fwrite(file.c_str(), 1, file.size(), fp); - fclose(fp); - LOG(INFO) << "auto configure " << path.c_str() << " success"; - exit (0); - } - - return 0; - } catch (bsl::Exception &e) { - return -1; - } -} - -bsl::string Flag::fullpath(const bsl::string &path, const bsl::string &file) -{ - bsl::string full = path; - return full.append("/").append(file); -} - -bool Flag::file_exist(const char *fn) -{ - FILE *fp = fopen(fn, "r"); - if (fp) { - fclose(fp); - return true; - } - return false; -} - -int Flag::loadconfig() -{ - try { - auto_def(); - const char *r = NULL; - if (file_exist(fullpath(_cfpath, _cfrange).c_str())) { - r = _cfrange.c_str(); - } - if (r != NULL) { - LOG(INFO) << "configure.load(" << _cfpath.c_str() << ", " << _cffile.c_str() << ", " << r << "); check range: " << _cfrange.c_str() << " exist"; - } else { - LOG(INFO) << "configure.load(" << _cfpath.c_str() << ", " << _cffile.c_str() << ", NULL); check range: " << _cfrange.c_str() << " noexist"; - } - int ret = _cfg.load(_cfpath.c_str(), _cffile.c_str(), r); - if (ret != 0) { - return ret; - } - } catch (bsl::Exception &e) { - return -1; - } - return 0; -} - -int Flag::loadconfig(const char *path, const char *conf) -{ - if (path == NULL) { - _cfpath = ""; - } else { - _cfpath = path; - } - if (conf == NULL) { - _cffile = ""; - } else { - _cffile = conf; - } - return loadconfig(); -} - -void Flag::set_confpath(const char *path, const char *file, const char *range) -{ - if (path) { - set_cfpath(path); - } else { - set_cfpath(""); - } - if (file) { - set_cffile(file); - } else { - set_cffile(""); - } - if (range) { - set_cfrange(range); - } else { - set_cfrange(""); - } -} - -void Flag::auto_def() -{ - if (_cffile.size() == 0) { - _cffile = get_defconf(_modname); - } - if (_cfpath.size() == 0) { - int pos = rfind(_cffile.c_str(), '/'); - if (pos >= 0) { - _cfpath = _cffile.substr(0, pos+1); - _cffile = _cffile.substr(pos+1); - } else { - _cfpath = "./"; - } - } - if (_cfrange.size() == 0) { - _cfrange = get_defrange(_cffile); - } -} - -} - -/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */ diff --git a/configure/cfgflag.h b/configure/cfgflag.h deleted file mode 100644 index 3bdc2d296054d26b69508b7d455d6aa48f2441e3..0000000000000000000000000000000000000000 --- a/configure/cfgflag.h +++ /dev/null @@ -1,290 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: cfgflag.h,v 1.3 2009/08/13 07:23:01 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file init.h - * @author xiaowei(com@baidu.com) - * @date 2009/02/12 13:57:53 - * @version $Revision: 1.3 $ - * @brief - * - **/ - - -#ifndef __XAUTOFRAME_H_ -#define __XAUTOFRAME_H_ - -#include -#include "Configure.h" -#include "CmdOption.h" - -namespace comcfg -{ - -extern const char *DEFHELP; - -class Flag -{ - - typedef void (*fun_t)(); - - bsl::string _modname; - bsl::string _cfpath; - bsl::string _cffile; - bsl::string _cfrange; - - comcfg::CmdOption _opt; - comcfg::Configure _cfg; - - fun_t _version; - fun_t _help; -public: - /** - * @brief 初始化类 - * - * @param [in/out] ver : fun_t 显示版本的函数 - * @param [in/out] help : fun_t 显示帮助的函数 - * @see - * @author xiaowei - * @date 2009/03/09 15:26:51 - **/ - Flag(fun_t ver=Flag::default_version, fun_t help=Flag::default_help); - - virtual ~Flag(); - - /** - * @brief 根据void main(int argc, void **argv)初始化flag - * - * @param [in/out] argc : int - * @param [in/out] argv : char** - * @param [in/out] optstr : const char* 与CmdOption的第三个参数一致 - * @return int 成功返回0,其他失败 - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:28:22 - **/ - virtual int init(int argc, char **argv, const char *optstr=NULL); - - /** - * @brief 返回获取命令行参数的控制句柄 - * - * @return const comcfg::CmdOption& - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:29:36 - **/ - inline const comcfg::CmdOption & opt() const { return _opt; } - /** - * @brief 返回获取命令行参数的控制句柄 - * - * @return comcfg::CmdOption& - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:30:23 - **/ - inline comcfg::CmdOption & opt() { return _opt; } - /** - * @brief 根据key返回这个key对应的命令行参数值 - * - * @param [in/out] str : const char* 指定的key - * @return const comcfg::ConfigUnit& - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:31:41 - **/ - inline const comcfg::ConfigUnit & opt(const char *str) const { return _opt[str]; } - - /** - * @brief 返回配置文件句柄 - * - * @return const comcfg::Configure& - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:30:42 - **/ - inline const comcfg::Configure & cfg() const { return _cfg; } - /** - * @brief 返回配置文件句柄 - * - * @return comcfg::Configure& - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:31:16 - **/ - inline comcfg::Configure & cfg() { return _cfg; } - - /** - * @brief 根据key返回指定的配置文件项目 - * - * @param [in/out] str : const char* - * @return const comcfg::ConfigUnit& - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:32:25 - **/ - inline const comcfg::ConfigUnit & cfg(const char *str) const { return _cfg[str]; } - - /** - * @brief 设置配置路径 - * - * @param [in/out] cfpath : const bsl::string& - * @return void - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:43:21 - **/ - inline void set_cfpath(const bsl::string &__cfpath) { _cfpath = __cfpath; } - /** - * @brief 返回配置路径 - * - * @return const char* - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:43:34 - **/ - inline const char * cfpath() const { return _cfpath.c_str(); } - - /** - * @brief 设置配置文件名 - * - * @param [in/out] cffile : const bsl::string& - * @return void - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:43:42 - **/ - inline void set_cffile(const bsl::string &__cffile) { _cffile = __cffile; } - /** - * @brief 返回配置文件名 - * - * @return const char* - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:43:50 - **/ - inline const char * cffile() const { return _cffile.c_str(); } - - /** - * @brief 设置约束文件名 - * - * @param [in/out] cfrange : const bsl::string& - * @return void - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:44:00 - **/ - inline void set_cfrange(const bsl::string &__cfrange) { _cfrange = __cfrange; } - /** - * @brief 返回约束文件名 - * - * @return const char* - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:44:13 - **/ - inline const char *cfrange() const { return _cfrange.c_str(); } - - /** - * @brief 设置配置文件信息 - * - * @param [in/out] path : const char* 配置文件路径 - * @param [in/out] file : const char* 配置文件名 - * @param [in/out] range : const char* 约束文件名 - * @return void - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:44:23 - **/ - void set_confpath(const char *path, const char *file, const char *range=NULL); - - /** - * @brief 设置显示版本函数 - * - * @param [in/out] fun : fun_t - * @return void - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:50:01 - **/ - inline void set_version(fun_t fun) { _version = fun; } - /** - * @brief 设置显示帮助函数 - * - * @param [in/out] fun : fun_t - * @return void - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:50:13 - **/ - inline void set_help(fun_t fun) { _help = fun; } - - /** - * @brief 读取配置 - * - * @return int 成功返回0,其他失败 - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:50:21 - **/ - virtual int loadconfig(); - /** - * @brief 根据指定的配置文件名读取配置 - * - * @param [in/out] path : const char* 配置路径 - * @param [in/out] conf : const char* 配置文件名 - * @return int - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:51:05 - **/ - virtual int loadconfig(const char *path, const char *conf); - -protected: - static void default_version(); - static void default_help(); - - /** - * @brief 根据配置文件名,获取默认的约束文件名 - * - * @param [in/out] file : const bsl::string& - * @return bsl::string - * @retval - * @see - * @author xiaowei - * @date 2009/03/09 15:52:10 - **/ - bsl::string get_defrange(const bsl::string &file); - bsl::string get_defconf(const bsl::string &mod); - void auto_def(); - bool file_exist(const char *fn); - bsl::string fullpath(const bsl::string &path, const bsl::string &file); -}; -} - -#endif //__XAUTOFRAME_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */ diff --git a/configure/compiler/Makefile b/configure/compiler/Makefile deleted file mode 100755 index d502051848ad5c267c95eb6f0420404bbf146111..0000000000000000000000000000000000000000 --- a/configure/compiler/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -#* -*- makefile -*- -# copy[write] by dirlt(zhang_yan@baidu.com) -# date time:Mon Nov 17 22:44:02 CST 2008 -# file name:Makefile -all: - make -C ./src -clean: - make -C ./src clean - make -C ./demo clean - rm -rf output -test: - make -C ./testcase -mydemo: - make -C ./demo -output: - mkdir ./output - cp -r ./include ./output - cp -r ./lib ./output -dist: - tar czvf ../idlcompiler.tar.gz ../idlcompiler - diff --git a/configure/compiler/demo/Makefile b/configure/compiler/demo/Makefile deleted file mode 100755 index 66149c22c2d646334071035acdcc5bd90b794ec9..0000000000000000000000000000000000000000 --- a/configure/compiler/demo/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#* -*- makefile -*- -# copy[write] by dirlt(zhang_yan@baidu.com) -# date time:Mon Nov 17 22:52:18 CST 2008 -# file name:Makefile -CC=g++ -OBJS=main.o -CPPFLAGS=-fsigned-char -Wall -W -pipe -Wno-unused-parameter -g -LDFLAGS=-lpthread -lm -lidlcompiler -INCLUDES=-I../output/include -LDPATH=-L../output/lib -LIB= #create the lib -TARGET=main #create the exe file - -#32-biit and 64-bit platforms -ifeq ($(MAC),64) -else -endif - -all:$(TARGET) -$(TARGET):clean $(OBJS) - $(CC) $(CPPFLAGS) -o $@ $(OBJS) $(LDPATH) $(LDFLAGS) -$(LIB):$(OBJS) - ar cr $(LIB) $(OBJS) -%.o:%.cpp - $(CC) $(INCLUDES) $(CPPFLAGS) -o $@ -c $< -clean: - rm -rf $(OBJS) $(TARGET) $(LIBS) - rm -rf *~ -test: - valgrind ./main `ls ../testcase/*.def` diff --git a/configure/compiler/demo/main.cpp b/configure/compiler/demo/main.cpp deleted file mode 100755 index 42af024b19622e473671e6264d561fa1e69b7153..0000000000000000000000000000000000000000 --- a/configure/compiler/demo/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Mon Nov 17 17:08:24 CST 2008 - file name:main.cpp */ - -#include -#include -#include "idl_interface.h" -using namespace IDL; - -int main(int argc,char **argv) -{ - int i; - char *file; - idl_t *idl_data; - for(i=1;i -> { } - * -> << | >> - * -> { } - * -> + | - - * -> { } - * -> * | \ - * -> ( ) | number - * number -> [0-9]*.[0-9]* - * - */ - -#include - -#define __expr__error(fmt, arg...) \ -{ \ - fprintf(stdout, "%s:%d "fmt"\n", __FILE__, __LINE__, ##arg); \ -} - -namespace xarthop -{ - -struct int_t {}; -struct double_t {}; - -template -struct traits -{ - typedef int_t type; -}; - -template<> -struct traits -{ - typedef double_t type; -}; - -template <> -struct traits -{ - typedef double_t type; -}; - -template -int exp(const char *, int *, type_t *); - -char xget(const char *str, int *pos) -{ - return str[++(*pos)]; -} - -char xatskip(const char *str, int *pos) -{ - char token = str[*pos]; - while (' ' == token || '\t' == token) { - token = xget(str, pos); - } - return token; -} - -template -inline type_t number(type_t, int_t) -{ - return 0; -} - -template -inline type_t number(type_t t, double_t) -{ - return t; -} - - -template -int number(const char *str, int *pos, type_t *val) -{ - char token = xatskip(str, pos); - type_t temp = 0; - if (token < '0' || token > '9') { - __expr__error ("get factor __expr__error from \"%s\" at pos[%d] __expr__error", str, *pos); - return -1; - } - - while (token >= '0' && token <='9') { - temp = temp * 10 + token - '0'; - token = xget(str, pos); - } - - *val = temp; - - if ('.' == token) { - token = xget(str, pos); - if (token < '0' || token > '9') { - __expr__error ("get factor __expr__error from \"%s\" at pos[%d] __expr__error", str, *pos); - return -1; - } - type_t cnt = 1; - temp = 0; - while (token >= '0' && token <='9') { - temp = (token - '0') + temp * 10; - cnt = cnt * 10; - token = xget(str, pos); - } - typedef typename traits::type type; - *val += number(temp/cnt, type()); - } - - return 0; -} - -template -int factor(const char *str, int *pos, type_t *val) -{ - type_t temp = 0; - char token = xatskip(str, pos); - if (token == 0) { - __expr__error ("get factor err from \"%s\" %d", str, *pos); - return -1; - } - if (token == '(') { - xget(str, pos); - if (exp(str, pos, &temp) != 0) { - return -1; - } - *val = temp; - token = xatskip(str, pos); - if (token != ')') { - __expr__error ("get exp ) from \"%s\" at pos[%d] __expr__error", str, *pos); - return -1; - } - xget(str, pos); - return 0; - } - - if (number(str, pos, &temp) != 0) { - return -1; - } - - *val = temp; - return 0; -} - -template -int term(const char *str, int *pos, type_t *val) -{ - type_t temp = 0; - if (factor(str, pos, &temp) != 0) { - return -1; - } - *val = temp; - char token = xatskip(str, pos); - while ('*' == token || '/' == token) { - xget(str, pos); - if (factor(str, pos, &temp) != 0) { - return -1; - } - switch (token) { - case '*': - *val *= temp; - break; - case '/': - *val /= temp; - } - token = xatskip(str, pos); - } - return 0; -} - -template -int movter(const char *str, int *pos, type_t *val) -{ - type_t temp = 0; - if (term(str, pos, &temp) != 0) { - return -1; - } - *val = temp; - char token = xatskip(str, pos); - while ( ('+' == token) || ('-' == token) ) { - xget(str, pos); - if (term(str, pos, &temp) != 0) { - return -1; - } - switch (token) { - case '+': - *val += temp; - break; - case '-': - *val -= temp; - break; - } - token = xatskip(str, pos); - } - return 0; -} - -template -int exp_ini(const char *str, int *pos, type_t *val, char token, double_t) -{ - __expr__error("double can't use << | >> operation from \"%s\" from pos[%d] __expr__error", str, *pos); - return -1; -} - -template -int exp_ini(const char *str, int *pos, type_t *val, char token, int_t) -{ - type_t temp; - if (token == '<') { - token = xget(str, pos); - if (token != '<') { - __expr__error("get term from \"%s\" from pos[%d] __expr__error", str, *pos); - return -1; - } - xget(str, pos); - if (movter(str, pos, &temp) != 0) { - return -1; - } - *val = (*val) << temp; - } else if (token == '>') { - token = xget(str, pos); - if (token != '>') { - __expr__error("get term from \"%s\" from pos[%d] __expr__error", str, *pos); - return -1; - } - xget(str, pos); - if (movter(str, pos, &temp) != 0) { - return -1; - } - *val = (*val) >> temp; - } - return 0; -} - -template -int exp(const char *str, int *pos, type_t *val) -{ - typedef typename traits::type type; - type_t temp = 0; - if (movter(str, pos, &temp) != 0) { - return -1; - } - *val = temp; - char token = xatskip(str, pos); - while (token == '<' || token == '>') { - if (exp_ini(str, pos, val, token, type())) { - return -1; - } - token = xatskip(str, pos); - } - return 0; -} - - -/** - * @brief - * - * @param [in/out] str : const char* 表达式 - * @param [in/out] val : type_t* 返回值 - * @return int 0 表示计算成功, -1 表示失败 - * @retval - * @see - * @note - * @author xiaowei - * @date 2008/11/21 17:25:38 -**/ -template -int calc (const char *str, type_t *val) -{ - if (str == NULL || val == NULL) { - __expr__error("invalid param"); - return -1; - } - if (str[0] == 0) { - __expr__error("invalid exp in str\n"); - return -1; - } - int pos = 0; - int ret = exp(str, &pos, val); - if (ret != 0) { - return -1; - } - char token = xatskip(str, &pos); - if (token != 0 && token != '\n') { - __expr__error("invalid exp in \"%s\", at pos[%d] %c", str, pos, token); - return -1; - } - return 0; -} - -}; - - -#endif //__EXPR_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */ diff --git a/configure/compiler/src/flex.32 b/configure/compiler/src/flex.32 deleted file mode 100755 index d401026e634559198a67871d4041840a12640795..0000000000000000000000000000000000000000 Binary files a/configure/compiler/src/flex.32 and /dev/null differ diff --git a/configure/compiler/src/flex.64 b/configure/compiler/src/flex.64 deleted file mode 100755 index c0bcc7369b1d942bc6ad3d027bad180a00042bc3..0000000000000000000000000000000000000000 Binary files a/configure/compiler/src/flex.64 and /dev/null differ diff --git a/configure/compiler/src/flex.arm32 b/configure/compiler/src/flex.arm32 deleted file mode 100755 index 88ed52919b630fa95a7f337ef4a1578991a340f4..0000000000000000000000000000000000000000 Binary files a/configure/compiler/src/flex.arm32 and /dev/null differ diff --git a/configure/compiler/src/idl.c b/configure/compiler/src/idl.c deleted file mode 100755 index 2be4cf81c88562168304d3d0c4c318f4f321ac10..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl.c +++ /dev/null @@ -1,516 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Wed Nov 19 23:43:27 CST 2008 - file name:idl.c */ - - -/** - * @file idl.c - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:43:27 CST 2008 - * @version - * @brief the implementation of internal IDL compiler,contains some basic routines - */ - -#include -#include -#include "idl_conf_if.h" -#include "idl.h" -#include "idl_lex.h" -/* the already known keywords */ -const int ECHO_BUFF_SIZE = 2048; -static const char *type_keywords[]={ - "raw", - "char", - "uchar", - "int8_t", - "uint8_t", - "int16_t", - "uint16_t", - "int32_t", - "uint32_t", - "int64_t", - "uint64_t", - "float", - "double", - "string", -}; -int is_keyword_type(meta_t &type) -{ - int size=sizeof(type_keywords)/sizeof(const char*); - int i; - for(i=0;irc_meta_list.push_back(meta); - return meta; -} -cf_t *alloc_cf(idl_t *idl) -{ - assert(idl!=NULL); - cf_t *cf=new cf_t; - idl->rc_cf_list.push_back(cf); - return cf; -} -var_t *alloc_var(idl_t *idl) -{ - assert(idl!=NULL); - var_t *var=new var_t; - idl->rc_var_list.push_back(var); - return var; -} -group_t *alloc_group(idl_t *idl) -{ - assert(idl!=NULL); - group_t *group=new group_t; - idl->rc_group_list.push_back(group); - return group; -} - -void add_idl_error(idl_t *idl,meta_t &errinfo) -{ - assert(idl!=NULL); - idl->err_list.push_back(errinfo); - return ; -} - -void add_idl_var(idl_t *idl,var_t *var) -{ - assert(idl!=NULL); - if(var==NULL)return ; - - meta_t &name=var->name; - meta_t &type=var->type; - var_map_t &var_map=idl->var_map; - var_list_t &var_list=idl->var_list; - group_map_t &group_map=idl->group_map; - - /* 1.we have to assure the var doesn't exist in - the config right now */ - if(var_map.find(name.data)!=var_map.end()){/* exists */ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=name.file; - errinfo.lineno=name.lineno; - - var_t *before=var_map.find(name.data)->second; - snprintf(tmp,sizeof(tmp),"var '%s' already exists at %s:%d", - name.data.c_str(), - before->name.file.c_str(), - before->name.lineno); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - return ; - } - - /* 2.we have to assure the if the typename is not - keyword type,it should exist in the idl */ - if(!is_keyword_type(type) && - group_map.find(type.data)==group_map.end()){ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=type.file; - errinfo.lineno=type.lineno; - snprintf(tmp,sizeof(tmp),"type '%s' doesn't exist", - type.data.c_str()); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - } - var_map[name.data]=var; - var_list.push_back(var); - return ; -} - -void add_idl_group(idl_t *idl,group_t *grp) -{ - assert(idl!=NULL); - if(grp==NULL)return ; - - meta_t &name=grp->name; - group_map_t &group_map=idl->group_map; - group_list_t &group_list=idl->group_list; - /* 1.the group has already exists in the idl */ - if(group_map.find(name.data)!=group_map.end()){ - group_t *group=group_map.find(name.data)->second; - meta_t &before=group->name; - - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=name.file; - errinfo.lineno=name.lineno; - snprintf(tmp,sizeof(tmp),"groups '%s' already exists at %s:%d", - name.data.c_str(), - before.file.c_str(), - before.lineno); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - return ; - } - group_map[(grp->name).data]=grp; - group_list.push_back(grp); - return ; -} - - -void assemble_idl_cf(cf_t *cf,meta_t *fn,meta_list_t *arg_list) -{ - assert(cf!=NULL); - meta_vec_t arg_vec; - cf->func=(*fn); - cf->arg_list=(*arg_list); - meta_list_t::iterator arg_it; - for(arg_it=arg_list->begin();arg_it!=arg_list->end();++arg_it){ - arg_vec.push_back(*arg_it); - } - cf->arg_vec=arg_vec; - return ; -} - -void assemble_idl_var(idl_t *idl,var_t *var,meta_t *id,meta_t *type,cf_list_t *cf_list) -{ - assert(idl!=NULL); - assert(var!=NULL); - assert(id!=NULL); - assert(type!=NULL); - assert(cf_list!=NULL); - - cf_map_t cf_map; - var->name=(*id); - var->type=(*type); - var->cf_list=(*cf_list); - cf_list_t::iterator cf_it; - for(cf_it=cf_list->begin();cf_it!=cf_list->end();++cf_it){ - cf_t *cf=*cf_it; - if(cf_map.find(cf->func.data)!=cf_map.end()){ - char tmp[ECHO_BUFF_SIZE]; - meta_t errinfo; - cf_t *before_cf=cf_map[cf->func.data]; - errinfo.file=cf->func.file; - errinfo.lineno=cf->func.lineno; - snprintf(tmp,sizeof(tmp),"constraint function '%s' has declared before at %s:%d", - before_cf->func.data.c_str(), - before_cf->func.file.c_str(), - before_cf->func.lineno); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - }else{ - cf_map[cf->func.data]=cf; - } - } - var->cf_map=cf_map; - return ; -} - -void assemble_idl_group(idl_t *idl,group_t *group,meta_t *id,var_list_t *var_list) -{ - assert(idl!=NULL); - assert(group!=NULL); - assert(id!=NULL); - assert(var_list!=NULL); - - group_map_t &group_map=idl->group_map; - group->name=(*id); - group->parent_name=(*id); - group->var_list=(*var_list); - - var_map_t &var_map=group->var_map; - var_list_t::iterator it; - for(it=var_list->begin();it!=var_list->end();++it){ - var_t *each_var=*it; - /* 1. if the filed in the group - is duplicate */ - if(var_map.find((each_var->name).data)!=var_map.end()){ - var_t *before=var_map.find((each_var->name).data)->second; - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=each_var->name.file; - errinfo.lineno=each_var->name.lineno; - snprintf(tmp,sizeof(tmp),"field '%s' already exists group '%s' at %s:%d", - (each_var->name).data.c_str(), - (id->data).c_str(), - before->name.file.c_str(), - before->name.lineno); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - continue; - } - - meta_t type=each_var->type; - /* 2.we have to assure the if the typename is not - keyword type,it should exist in the idl */ - if(!is_keyword_type(type) && - group_map.find(type.data)==group_map.end()){ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=type.file; - errinfo.lineno=type.lineno; - snprintf(tmp,sizeof(tmp),"type '%s' doesn't exist", - type.data.c_str()); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - continue; - } - var_map[(each_var->name).data]=each_var; - } - return ; -} - -void overwrite_idl_group(idl_t *idl,group_t *group,meta_t *new_id,meta_t *old_id,var_list_t *var_list) -{ - assert(idl!=NULL); - assert(group!=NULL); - assert(new_id!=NULL); - assert(old_id!=NULL); - assert(var_list!=NULL); - - group_map_t &group_map=idl->group_map; - - /* 1. if the old id doesn't exist in group, - we make a group by calling 'assmeble_idl_group' */ - if(group_map.find(old_id->data)==group_map.end()){ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=old_id->file; - errinfo.lineno=old_id->lineno; - snprintf(tmp,sizeof(tmp),"group '%s' to be overwrited doesn't exist", - old_id->data.c_str()); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - return assemble_idl_group(idl,group,new_id,var_list); - }else{ - /* copy the old conf cons */ - (*group)=(*group_map[old_id->data]); - group->name=(*new_id); - - /* find the topest parent */ - meta_t *tmp_id=old_id; - while(!((tmp_id->data)==(group_map[tmp_id->data]->name.data))){ - tmp_id=&(group_map[tmp_id->data]->name); - } - group->parent_name=(*tmp_id); - - /* set the map */ - var_map_t &var_map=group->var_map; - var_list_t::iterator it; - for(it=var_list->begin();it!=var_list->end();++it){ - var_t *each_var=*it; - if(var_map.find((each_var->name).data)==var_map.end()){ - /* 2. should overwrite the old_id group fileds */ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=each_var->name.file; - errinfo.lineno=each_var->name.lineno; - snprintf(tmp,sizeof(tmp),"field '%s' doesn't exist in group '%s'", - each_var->name.data.c_str(), - old_id->data.c_str()); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - continue; - } - - - meta_t type=each_var->type; - /* 2.we have to assure the if the typename is not - keyword type,it should exist in the idl */ - if(!is_keyword_type(type) && - group_map.find(type.data)==group_map.end()){ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - errinfo.file=type.file; - errinfo.lineno=type.lineno; - snprintf(tmp,sizeof(tmp),"type '%s' doesn't exist", - type.data.c_str()); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - continue; - } - - var_t *new_var=alloc_var(idl); - (*new_var)=(*each_var); - var_map[(each_var->name).data]=new_var; - } - - /* reorganize the var list */ - var_list_t old_var_list=group->var_list; - var_list_t new_var_list; - for(it=old_var_list.begin();it!=old_var_list.end();++it){ - var_t *each_var=*it; - if(var_map.find((each_var->name).data)!=var_map.end()){ - var_t *new_var=var_map[(each_var->name).data]; - new_var_list.push_back(new_var); - } - } - group->var_list=new_var_list; - return ; - } -} - -extern int cfgidlparse(yyscan_t scanner,meta_t *loc,idl_t *idl); -namespace confIDL{ -/* the inteface provied to the user */ -void print_idl(idl_t *idl) -{ - assert(idl!=NULL); - group_list_t &group_list=idl->group_list; - group_list_t::iterator group_it; - - printf("idl groups:\n"); - for(group_it=group_list.begin();group_it!=group_list.end();++group_it){ - group_t &group=**group_it; - printf("\tgroup:%s,overwrited from %s\n",\ - group.name.data.c_str(),\ - group.parent_name.data.c_str()); - - var_list_t &var_list=group.var_list; - var_list_t::iterator var_it; - for(var_it=var_list.begin();var_it!=var_list.end();++var_it){ - var_t &var=**var_it; - printf("\t\tvar:%s,type:%s\n",var.name.data.c_str(),\ - var.type.data.c_str()); - - cf_list_t &cf_list=var.cf_list; - cf_list_t::iterator cf_it; - for(cf_it=cf_list.begin();cf_it!=cf_list.end();++cf_it){ - cf_t &cf=**cf_it; - printf("\t\t\tfunc:%s\n",cf.func.data.c_str()); - - meta_list_t &arg_list=cf.arg_list; - meta_list_t::iterator arg_it; - for(arg_it=arg_list.begin();arg_it!=arg_list.end();++arg_it){ - meta_t &arg=**arg_it; - printf("\t\t\t\targ:%s\n",arg.data.c_str()); - } - } - } - } - - printf("idl vars:\n"); - var_list_t &var_list=idl->var_list; - var_list_t::iterator var_it; - for(var_it=var_list.begin();var_it!=var_list.end();++var_it){ - var_t &var=**var_it; - printf("\tvar:%s,type:%s\n",var.name.data.c_str(),\ - var.type.data.c_str()); - - cf_list_t &cf_list=var.cf_list; - cf_list_t::iterator cf_it; - for(cf_it=cf_list.begin();cf_it!=cf_list.end();++cf_it){ - cf_t &cf=**cf_it; - printf("\t\tfunc:%s\n",cf.func.data.c_str()); - - meta_list_t &arg_list=cf.arg_list; - meta_list_t::iterator arg_it; - for(arg_it=arg_list.begin();arg_it!=arg_list.end();++arg_it){ - meta_t &arg=**arg_it; - printf("\t\t\targ:%s\n",arg.data.c_str()); - } - } - } - - printf("idl error:\n"); - err_list_t &err_list=idl->err_list; - err_list_t::iterator err_it; - for(err_it=err_list.begin();err_it!=err_list.end();++err_it){ - meta_t &err=*err_it; - printf("\t%s:%d:%s\n", - err.file.c_str(), - err.lineno, - err.data.c_str()); - } - return ; -} - -idl_t *alloc_idl() -{ - idl_t *idl = new idl_t; - idl->cmdreserve = 0; - return idl; -} -void free_idl(idl_t *idl) -{ - if(idl==NULL)return ; - meta_list_t &rc_meta_list=idl->rc_meta_list; - meta_list_t::iterator meta_it; - for(meta_it=rc_meta_list.begin();meta_it!=rc_meta_list.end();++meta_it) - delete *meta_it; - - cf_list_t &rc_cf_list=idl->rc_cf_list; - cf_list_t::iterator cf_it; - for(cf_it=rc_cf_list.begin();cf_it!=rc_cf_list.end();++cf_it) - delete *cf_it; - - var_list_t &rc_var_list=idl->rc_var_list; - var_list_t::iterator var_it; - for(var_it=rc_var_list.begin();var_it!=rc_var_list.end();++var_it) - delete *var_it; - - group_list_t &rc_grp_list=idl->rc_group_list; - group_list_t::iterator grp_it; - for(grp_it=rc_grp_list.begin();grp_it!=rc_grp_list.end();++grp_it) - delete *grp_it; - - cf_list_p &cflp=idl->parse_list; - cf_list_p::iterator cflp_it; - for(cflp_it=cflp.begin();cflp_it!=cflp.end();++cflp_it) - delete *cflp_it; - - var_list_p &varlp=idl->parse_var_list; - var_list_p::iterator varlp_it; - for(varlp_it=varlp.begin();varlp_it!=varlp.end();++varlp_it) - delete *varlp_it; - - meta_list_p &mtlp=idl->parse_meta_list; - meta_list_p::iterator mtlp_it; - for(mtlp_it=mtlp.begin();mtlp_it!=mtlp.end();++mtlp_it) - delete *mtlp_it; - - delete idl; - return ; -} - -void load_idl(const char *file, - idl_t *idl) -{ - meta_t loc; - FILE *fin; - yyscan_t scanner; - - /* haven't allocate the space */ - if(idl==NULL) - return ; - /* init the lexical process */ - loc.file=file; - loc.lineno=1; - - fin=fopen(file,"r"); - if(fin==NULL){ - /* can't open the file */ - meta_t errinfo; - char tmp[ECHO_BUFF_SIZE]; - snprintf(tmp,sizeof(tmp),"can't open file '%s'",file); - errinfo.file=file; - errinfo.lineno=0; - errinfo.data=tmp; - add_idl_error(idl,errinfo); - idl->retval=1; - return ; - } - - cfgidllex_init(&scanner); - cfgidlset_in(fin,scanner); - cfgidlparse(scanner,&loc,idl); - cfgidllex_destroy(scanner); - fclose(fin); - - /* set the return value */ - idl->retval=((idl->err_list).empty())?0:1; - return ; -} -}; diff --git a/configure/compiler/src/idl.gcno b/configure/compiler/src/idl.gcno deleted file mode 100644 index 4751eda30262b03255669e682f4570ba21f7bbf2..0000000000000000000000000000000000000000 Binary files a/configure/compiler/src/idl.gcno and /dev/null differ diff --git a/configure/compiler/src/idl.gram b/configure/compiler/src/idl.gram deleted file mode 100755 index b30373bcd74ad25de96a2456f883a72d5dcb4b51..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl.gram +++ /dev/null @@ -1,342 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Mon Nov 17 12:06:46 CST 2008 - file name:idl.gram */ -%{ -#include -#include -#include "idl.h" -/* to cancel the flex internal definition of idllex:-) */ -#define YY_DECL -#include "idl_gram.h" -#include "idl_lex.h" - extern int cfgidllex(YYSTYPE* yylval,yyscan_t scanner, - meta_t *loc,idl_t *idl); - static void cfgidlerror(yyscan_t scanner,meta_t *loc, - idl_t *idl,char *msg); -%} - -/* generate the header file */ -%defines -/* the output file is idl_gram.c and idl_gram.h */ -%output="idl_gram.c" -/* we want the name prefix */ -%name-prefix="cfgidl" -/* we want to get the much more detail error message */ -%error-verbose -/* lex-param */ -%lex-param{yyscan_t scanner} -%lex-param{meta_t *loc} -%lex-param{idl_t *idl} -/* parse param */ -%parse-param {yyscan_t scanner} -%parse-param{meta_t *loc} -%parse-param {idl_t *idl} - -/* reentrant parser */ -%pure-parser -/* generate the output file */ -%verbose -%union{ - meta_t *meta; - var_t *var; - group_t *grp; - cf_list_t *cf_list; - meta_list_t *meta_list; - var_list_t *var_list; - cf_t *cf; -} - - -%token KW_OVERWRITE KW_STRUCT -%token KW_RAW -%token KW_CHAR KW_UCHAR -%token KW_INT8 KW_UINT8 -%token KW_INT16 KW_UINT16 -%token KW_INT32 KW_UINT32 -%token KW_INT64 KW_UINT64 -%token KW_FLOAT KW_DOUBLE -%token KW_STRING INTEGER ID LITERAL_STRING DOUBLE -%token VAR_CMD - -%type variable -%type variable_list -%type group -%type optional_array -%type optional_cmd -%type optional_constraint constraint_list -%type constraint_function -%type constraint_function_param_list -%type type_name cons_func_param - -/* designate the start symbol */ -%start program - -%% -program -:program variable -{ - add_idl_var(idl,$2); -} -|program group -{ - add_idl_group(idl,$2); -} -| -; - -variable -:type_name ID optional_array optional_constraint ';' optional_cmd -{ - meta_t *type=$1,*id=$2; - meta_list_t *array_size_list=$3; - meta_list_t *cmdval = $6; - cf_list_t *cf_list=$4; - cf_t *cf; - - var_t *var=alloc_var(idl); - - //allocate the necessary space - if(cf_list==NULL) { - cf_list=new cf_list_t; - idl->parse_list.push_back(cf_list); - } - if(array_size_list==NULL) { - array_size_list=new meta_list_t; - idl->parse_meta_list.push_back(array_size_list); - } - - if(array_size_list->size()!=0){ - /* the arary size list does exist */ - cf=alloc_cf(idl); - - meta_t func; - func.data="array"; - func.file=id->file; - func.lineno=id->lineno; - assemble_idl_cf(cf,&func,array_size_list); - - cf_list->push_back(cf); - } - if (cmdval != NULL) { - meta_t func ; - func.data = "comment"; - func.file = id->file; - func.lineno = id->lineno; - cf_t *cf = alloc_cf(idl); - assemble_idl_cf(cf, &func, cmdval); - cf_list->push_back(cf); - - //delete cmdval; - } - assemble_idl_var(idl,var,id,type,cf_list); - //delete cf_list; - //delete array_size_list; - - - - $$=var; -} -; -optional_cmd -:VAR_CMD -{ - meta_list_t *lst = new meta_list_t; - idl->parse_meta_list.push_back(lst); - lst->push_back($1); - idl->cmdreserve = 0; - $$ = lst; -} -| -{ - idl->cmdreserve = 0; - $$ = NULL; -} -; - -optional_array -:optional_array '[' INTEGER ']' -{ - meta_list_t *array_size_list=$1; - meta_t *array_tag=$3; - int array_size=atoi(array_tag->data.c_str()); - /* we have to validate here */ - if(array_size<=0){ - char tmpstr[2048]; - meta_t errinfo; - snprintf(tmpstr,sizeof(tmpstr),"array size %d is invalid",array_size); - errinfo.data=tmpstr; - errinfo.file=array_tag->file; - errinfo.lineno=array_tag->lineno; - add_idl_error(idl,errinfo); - array_tag->data="0"; - } - array_size_list->push_back(array_tag); - $$=array_size_list; -} -| optional_array '[' ']' -{ - meta_list_t *array_size_list=$1; - meta_t *array_size=alloc_meta(idl); - array_size->data="0"; - array_size->file=loc->file; - array_size->lineno=loc->lineno; - array_size_list->push_back(array_size); - $$=array_size_list; -} -| - { - meta_list_t *array_size_list=new meta_list_t; - idl->parse_meta_list.push_back(array_size_list); - $$=array_size_list; - } -; - -type_name -:KW_RAW {$$=$1;} -|KW_CHAR {$$=$1;} -|KW_UCHAR {$$=$1;} -|KW_INT8 {$$=$1;} -|KW_UINT8 {$$=$1;} -|KW_INT16 {$$=$1;} -|KW_UINT16 {$$=$1;} -|KW_INT32 {$$=$1;} -|KW_UINT32 {$$=$1;} -|KW_INT64 {$$=$1;} -|KW_UINT64 {$$=$1;} -|KW_FLOAT {$$=$1;} -|KW_DOUBLE {$$=$1;} -|KW_STRING {$$=$1;} -|ID {$$=$1;} -; - -optional_constraint -:'=' constraint_list -{ - $$=$2; - idl->cmdreserve = 1; -} -| -{ - $$=NULL; - idl->cmdreserve = 1; -} -; - -constraint_list -:constraint_list ',' constraint_function -{ - cf_list_t *cf_list=$1; - cf_t *cf=$3; - cf_list->push_back(cf); - $$=cf_list; -} -| constraint_function -{ - cf_list_t *cf_list=new cf_list_t; - idl->parse_list.push_back(cf_list); - cf_t *cf=$1; - cf_list->push_back(cf); - $$=cf_list; -} -; - -constraint_function -:ID '(' constraint_function_param_list ')' -{ - meta_t *func=$1; - meta_list_t *arg_list=$3; - cf_t *cf=alloc_cf(idl); - assemble_idl_cf(cf,func,arg_list); - //delete arg_list; - $$=cf; -} -|ID '(' ')' -{ - meta_t *func=$1; - meta_list_t *arg_list=new meta_list_t; - cf_t *cf=alloc_cf(idl); - assemble_idl_cf(cf,func,arg_list); - delete arg_list; - $$=cf; -} -; - -constraint_function_param_list -:constraint_function_param_list ',' cons_func_param -{ - meta_list_t *param_list=$1; - meta_t *param=$3; - param_list->push_back(param); - $$=param_list; -} -| cons_func_param -{ - meta_list_t *param_list=new meta_list_t; - idl->parse_meta_list.push_back(param_list); - meta_t *param=$1; - param_list->push_back(param); - $$=param_list; -} -; - -cons_func_param -:LITERAL_STRING {$$=$1;} -|ID {$$=$1;} -|INTEGER {$$=$1;} -|DOUBLE {$$=$1;} -; - -group -:KW_STRUCT ID '{' variable_list '}' ';' -{ - meta_t *id=$2; - var_list_t *var_list=$4; - group_t *grp; - grp=alloc_group(idl); - assemble_idl_group(idl,grp,id,var_list); - //delete var_list; - $$=grp; -} -|ID KW_OVERWRITE ID '{' variable_list '}' ';' -{ - meta_t *new_id=$1,*old_id=$3; - var_list_t *var_list=$5; - group_t *grp; - grp=alloc_group(idl); - overwrite_idl_group(idl,grp,new_id,old_id,var_list); - //delete var_list; - $$=grp; -} -; - -variable_list -:variable_list variable -{ - var_list_t *var_list=$1; - var_t *var=$2; - var_list->push_back(var); - $$=var_list; -} -| -{ - var_list_t *var_list=new var_list_t; - idl->parse_var_list.push_back(var_list); - $$=var_list; -} -; - -%% -void cfgidlerror(yyscan_t scanner,meta_t *loc,idl_t *idl,char *msg) -{ - char tmp[2048]; - meta_t errinfo; - errinfo.file=loc->file; - errinfo.lineno=loc->lineno; - snprintf(tmp,sizeof(tmp),"%s before char:'%c'", - msg, - cfgidlget_text(scanner)[0]); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - return ; -} diff --git a/configure/compiler/src/idl.h b/configure/compiler/src/idl.h deleted file mode 100755 index 394a13a3f1f5db33b2a32c5e57ece448a5b5fd69..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Wed Nov 19 23:33:00 CST 2008 - file name:idl.h */ - -#ifndef _IDL_H_ -#define _IDL_H_ - -/** - * @file idl.h - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:33:00 CST 2008 - * @version - * @brief the interface of internal implementation - */ - -#include "idl_conf_if.h" -using namespace confIDL; - -/** - * @brief allocated a meta struct from IDL resource pool - * @param idl the IDL on which the meta is allocated - * @return meta allocated - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:33:40 CST 2008 -*/ -extern meta_t *alloc_meta(idl_t *idl); - -/** - * @brief allocated a constraint function struct from IDL resource pool - * @param idl the IDL on which the constraint function is allocated - * @return constraint function allocated - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:33:40 CST 2008 -*/ -extern cf_t *alloc_cf(idl_t *idl); - -/** - * @brief allocated a variable struct from IDL resource pool - * @param idl the IDL on which the variable is allocated - * @return variable allocated - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:33:40 CST 2008 -*/ -extern var_t *alloc_var(idl_t *idl); - -/** - * @brief allocated a group struct from IDL resource pool - * @param idl the IDL on which the group is allocated - * @return group allocated - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:33:40 CST 2008 -*/ - -extern group_t *alloc_group(idl_t *idl); - - -/** - * @brief add the error information to the IDL error messages queue - * @param idl the IDL struct which contains the message queue - * @param errinfo the error message information - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:36:39 CST 2008 -*/ -extern void add_idl_error(idl_t *idl,meta_t &errinfo); - -/** - * @brief add the variable struct to the IDL - * @param idl the IDL struct which contains all variables which described in the IDL file - * @param var the variable to be added - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:36:39 CST 2008 -*/ -extern void add_idl_var(idl_t *idl,var_t *var); - -/** - * @brief add the group struct to the IDL - * @param idl the IDL struct which contains all groups which described in the IDL file - * @param grp the group to be added - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:36:39 CST 2008 -*/ -extern void add_idl_group(idl_t *idl,group_t *grp); - -/** - * @brief assemble the constraint function - * @param cf the constraint function struct - * @param fn the constraint function function name - * @param arg_list argument list - * @see - * @note - * @author zhang_yan@baidu.com - * @date Tue Dec 2 11:01:04 CST 2008 -*/ -extern void assemble_idl_cf(cf_t *cf,meta_t *fn,meta_list_t *arg_list); - -/** - * @brief assemble the variable - * @param idl the idl struct - * @param var the variable which to be assembled - * @param id the variable id - * @param type the variable type - * @param cf_list the list of constraint function - * @note - * @author zhang_yan@baidu.com - * @date Tue Dec 2 11:02:10 CST 2008 -*/ -extern void assemble_idl_var(idl_t *idl,var_t *var,meta_t *id,meta_t *type,cf_list_t *cf_list); - - -/** - * @brief assmeble a group with specific id and fields in it - * @param idl the IDL struct which contains all groups - * @param group the group to be assembles - * @param idl the group name information - * @param varlist the fields in the group - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:39:26 CST 2008 -*/ - -extern void assemble_idl_group(idl_t *idl,group_t *group,meta_t *id,\ - var_list_t *varlist); - -/** - * @brief overwrite a old group to generate a new group - * @param idl the IDL struct which contains all groups - * @param group the group to be generated by overwriting - * @param new_id the new group name information - * @param old_id the old group name information,which will be overwrited - * @param varlist the fields to be overwrited - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:40:59 CST 2008 -*/ -extern void overwrite_idl_group(idl_t *idl,group_t *group,\ - meta_t *new_id,meta_t *old_id,\ - var_list_t *varlist); - - -#endif - diff --git a/configure/compiler/src/idl.lex b/configure/compiler/src/idl.lex deleted file mode 100755 index 55c39fcc3861f9c276809ab6b8b1723bd68b6411..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl.lex +++ /dev/null @@ -1,197 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Mon Nov 17 12:06:46 CST 2008 - file name:idl.lex */ -%{ -#include -#include -#include -#include "idl.h" -#include "idl_gram.h" - -#define MAX_TEMP_BUFFER 2048 - -#define YY_DECL int cfgidllex(YYSTYPE *yylval,yyscan_t yyscanner,meta_t *loc,idl_t *idl) - static void do_keyword(YYSTYPE *yylval,yyscan_t cfgidlscanner,meta_t *loc,idl_t *idl); - static int do_special_cmd(YYSTYPE *yylval,yyscan_t cfgidlscanner,meta_t *loc,idl_t *idl); - static void do_meta_data(YYSTYPE *yylval,yyscan_t cfgidlscanner,meta_t *loc,idl_t *idl); - static void do_comment(yyscan_t cfgidlscanner,meta_t *loc); - static void update(yyscan_t cfgidlscanner,meta_t *loc, idl_t *idl); -%} - -/* we don't need to handle file more than one */ -%option noyywrap -/* give out warnings */ -%option warn -/* using 8 bit a character */ -%option 8bit - -/* we want idllex this class */ -%option prefix="cfgidl" -/* output file is idl_lex.c */ -%option outfile="idl_lex.c" -/* header file is idl_lex.h */ -%option header-file="idl_lex.h" -%option reentrant - -/* the letter is so generous except - (),whitespace and ; */ -letter [a-zA-Z_] -digit [0-9] - -%% - -"#" {do_comment(yyscanner,loc);} -"raw" {do_keyword(yylval,yyscanner,loc,idl);return KW_RAW;} -"char" {do_keyword(yylval,yyscanner,loc,idl);return KW_CHAR;} -"uchar" {do_keyword(yylval,yyscanner,loc,idl);return KW_UCHAR;} -"int8_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_INT8;} -"uint8_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_UINT8;} -"int16_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_INT16;} -"uint16_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_UINT16;} -"int32_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_INT32;} -"uint32_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_UINT32;} -"int64_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_INT64;} -"uint64_t" {do_keyword(yylval,yyscanner,loc,idl);return KW_UINT64;} -"float" {do_keyword(yylval,yyscanner,loc,idl);return KW_FLOAT;} -"double" {do_keyword(yylval,yyscanner,loc,idl);return KW_DOUBLE;} -"string" {do_keyword(yylval,yyscanner,loc,idl);return KW_STRING;} -"struct" {do_keyword(yylval,yyscanner,loc,idl);return KW_STRUCT;} -"overwrite" {do_keyword(yylval,yyscanner,loc,idl);return KW_OVERWRITE;} - -\/\/[^\n]* { - if (do_special_cmd(yylval,yyscanner,loc,idl) != 0) { - return VAR_CMD; - } -} -\"[^\"]*\" {do_meta_data(yylval,yyscanner,loc,idl);return LITERAL_STRING;} -[+-]?({digit})+ {do_meta_data(yylval,yyscanner,loc,idl);return INTEGER;} -[+-]?((({digit})+)|(\.({digit})+)|((({digit})+)\.(({digit})+)))([Ee]({digit})+)? {do_meta_data(yylval,yyscanner,loc,idl);return DOUBLE;} -{letter}({letter}|{digit})* {do_meta_data(yylval,yyscanner,loc,idl);return ID;} -[ \t\n\f]+ {update(yyscanner,loc, idl);} -. {return yytext[0];} - -%% -void do_keyword(YYSTYPE *yylval,yyscan_t scanner,meta_t *loc,idl_t *idl) -{ - char *text=cfgidlget_text(scanner); -#ifdef DEBUG - printf("call %s,%s\n",__func__,text); -#endif - meta_t *meta=alloc_meta(idl); - meta->file=loc->file; - meta->lineno=loc->lineno; - meta->data=text; - yylval->meta=meta; -} - -void do_meta_data(YYSTYPE *yylval,yyscan_t scanner,meta_t *loc,idl_t *idl) -{ - char *text=cfgidlget_text(scanner); - int leng=cfgidlget_leng(scanner); -#ifdef DEBUG - printf("call %s,%s\n",__func__,text); -#endif - meta_t *meta=alloc_meta(idl); - meta->file=loc->file; - meta->lineno=loc->lineno; - meta->data=cfgidlget_text(scanner); - yylval->meta=meta; - - int i; - for(i=0;ilineno++; - } - return ; -} - -int do_special_cmd(YYSTYPE *yylval,yyscan_t scanner,meta_t *loc,idl_t *idl) -{ - char *text = cfgidlget_text(scanner); - meta_t *meta=alloc_meta(idl); - meta->file=loc->file; - meta->lineno=loc->lineno; - meta->data=text; - yylval->meta=meta; - - loc->lineno++; - - int ret = idl->cmdreserve; - idl->cmdreserve = 0; - return ret; -} - - -static int cdirective(char *tmp,int *lineno,char **filename) -{ - int i,j; - if(tmp[0]!='#' || tmp[1]!=' ' || !isdigit(tmp[2]))return 0; - i=2; - while(isdigit(tmp[i]))i++; - tmp[i++]=0; - *lineno=atoi(tmp+2); - - j=i+1; - if(tmp[i]!='"')return 0; - i++; - while(tmp[i]!='"')i++; - tmp[i]=0; - *filename=tmp+j; - - return 1; -} - -void do_comment(yyscan_t scanner,meta_t *loc) -{ - char ch; - char tmp[MAX_TEMP_BUFFER]; - int i; - - i=0; - if(cfgidlget_text(scanner)[0]=='#'){ - tmp[0]='#'; - i=1; - } - while(1){ - ch=yyinput(scanner); - if(ch=='\n' || ch==EOF)break; - if(i < (int)sizeof(tmp) - 1) { - tmp[i++]=ch; - } - } - tmp[i]=0; - loc->lineno++; - - char *tmp_file; - int tmp_lineno; - if(cdirective(tmp,&tmp_lineno,&tmp_file)==1){ - loc->lineno=tmp_lineno; - loc->file=tmp_file; -#ifdef DEBUG - printf("new file:%s,lineno:%d\n", - loc->file.c_str(), - loc->lineno); -#endif - } - return ; -} - -void update(yyscan_t scanner,meta_t *loc, idl_t *idl) -{ - int i; - int leng=cfgidlget_leng(scanner); - char *text=cfgidlget_text(scanner); - int cnt = 0; - for(i=0;ilineno++; - //printf("update[%d]: %c\n", i, text[i]); - ++ cnt; - } - } - if (cnt > 0) { - idl->cmdreserve = 0; - } - return ; -} diff --git a/configure/compiler/src/idl_conf_if.h b/configure/compiler/src/idl_conf_if.h deleted file mode 100755 index def3fa340bf9c2aa5c0bbb278dd5bff55fd8a563..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl_conf_if.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Wed Nov 19 23:22:32 CST 2008 - file name:idl_conf_if.h */ - -#ifndef _IDL_CONF_IF_H_ -#define _IDL_CONF_IF_H_ - -/** - * @file idl_conf_if.h - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:22:32 CST 2008 - * @version - * @brief the IDL conf_if provided to the user - */ - -#include -#include -#include -#include -#include "bsl/containers/string/bsl_string.h" - -namespace confIDL{ -/** -* @brief the meta data structure -*/ - typedef bsl::string idl_str_t; - struct meta_t - { - idl_str_t file;/**< the meta data in which file */ - int lineno;/**< the meta data in which line */ - idl_str_t data;/**< what is the data in it?? */ - }; - typedef std::list meta_list_t; - typedef std::vectormeta_vec_t; - typedef std::list err_list_t; - -/** -* @brief constraint function structure -* detail using it to describe the constraint function -*/ - struct cons_func_t{ - meta_t func;/**< constraint function name */ - meta_list_t arg_list;/**< constraint function arguments(in idl_str_t form) */ - meta_vec_t arg_vec;/**< constraint function arguments(in idl_str_t form) */ - }; - typedef cons_func_t cf_t; - typedef std::list cf_list_t; - typedef std::mapcf_map_t; - - typedef std::list cf_list_p; - typedef std::list meta_list_p; - -/** -* @brief variable structure -* detail using it to descibel the variable or the fields in the class -*/ - struct var_t{ - meta_t name; - meta_t type; - cf_list_t cf_list; - cf_map_t cf_map; - }; - typedef std::listvar_list_t; - typedef std::mapvar_map_t; - - typedef std::list var_list_p; - -/** -* @brief struct structure -* detail using it to describle the class or the strucut or some -* complex object -*/ - struct group_t{ - meta_t name;/**< the struct name */ - meta_t parent_name;/**< the struct which this struct is overwrited from */ - var_list_t var_list; - var_map_t var_map; - }; - typedef std::mapgroup_map_t; - typedef std::listgroup_list_t; -/** -* @brief IDL struct -* detail contain all the information collected from the IDL file -* also including the resource pool -*/ - struct idl_t - { - group_map_t group_map;/**< structs in the IDL */ - var_map_t var_map;/**< the variables in the IDL */ - group_list_t group_list; - var_list_t var_list; - - /* resource pool */ - meta_list_t rc_meta_list;/**< the allocated meta data */ - cf_list_t rc_cf_list;/**< the allocated constraint functions */ - var_list_t rc_var_list;/**< the allocated variables */ - group_list_t rc_group_list;/**< the allocated groups*/ - - int cmdreserve; - int retval;/**< return value of parsing the IDL file */ - err_list_t err_list;/**< the generated detail error messages when we parse the IDL file */ - - cf_list_p parse_list; /**< the allocated cflist in parsing*/ - meta_list_p parse_meta_list; /**< the allocated metalist in parsing*/ - var_list_p parse_var_list; /**< the allocated varlist in parsing*/ - }; - - - /** - * @brief allocated a IDL struct - * @return return the allocated IDL struct - * @see idl_t - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:28:47 CST 2008 - */ - extern confIDL::idl_t *alloc_idl(); - - /** - * @brief deallocated the IDL struct - * @param idl the IDl struct allocated by alloc_idl() this function - * @see alloc_idl - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:29:36 CST 2008 - */ - extern void free_idl(confIDL::idl_t *idl); - - /** - * @brief load the IDL structu from the file - * @param file the IDL file - * @param idl the IDL strucut we want to load into - * @see alloc_idl free_idl - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:30:52 CST 2008 - */ - extern void load_idl(const char *file,confIDL::idl_t *idl); - - /** - * @brief print the IDL struct in the indented form - * @param idl the IDL struct to be printed - * @see load_idl - * @author zhang_yan@baidu.com - * @date Wed Nov 19 23:30:55 CST 2008 - */ - extern void print_idl(confIDL::idl_t *idl); - -}; - -#endif - diff --git a/configure/compiler/src/idl_gram.c b/configure/compiler/src/idl_gram.c deleted file mode 100644 index 609a8354b209a52513357dbe1e49ccf0ea969d5f..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl_gram.c +++ /dev/null @@ -1,1704 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875c. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Written by Richard Stallman by simplifying the original so called - ``semantic'' parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 1 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* If NAME_PREFIX is specified substitute the variables and functions - names. */ -#define yyparse cfgidlparse -#define yylex cfgidllex -#define yyerror cfgidlerror -#define yylval cfgidllval -#define yychar cfgidlchar -#define yydebug cfgidldebug -#define yynerrs cfgidlnerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - KW_OVERWRITE = 258, - KW_STRUCT = 259, - KW_RAW = 260, - KW_CHAR = 261, - KW_UCHAR = 262, - KW_INT8 = 263, - KW_UINT8 = 264, - KW_INT16 = 265, - KW_UINT16 = 266, - KW_INT32 = 267, - KW_UINT32 = 268, - KW_INT64 = 269, - KW_UINT64 = 270, - KW_FLOAT = 271, - KW_DOUBLE = 272, - KW_STRING = 273, - INTEGER = 274, - ID = 275, - LITERAL_STRING = 276, - DOUBLE = 277, - VAR_CMD = 278 - }; -#endif -#define KW_OVERWRITE 258 -#define KW_STRUCT 259 -#define KW_RAW 260 -#define KW_CHAR 261 -#define KW_UCHAR 262 -#define KW_INT8 263 -#define KW_UINT8 264 -#define KW_INT16 265 -#define KW_UINT16 266 -#define KW_INT32 267 -#define KW_UINT32 268 -#define KW_INT64 269 -#define KW_UINT64 270 -#define KW_FLOAT 271 -#define KW_DOUBLE 272 -#define KW_STRING 273 -#define INTEGER 274 -#define ID 275 -#define LITERAL_STRING 276 -#define DOUBLE 277 -#define VAR_CMD 278 - - - - -/* Copy the first part of user declarations. */ -#line 5 "idl.gram" - -#include -#include -#include "idl.h" -/* to cancel the flex internal definition of idllex:-) */ -#define YY_DECL -#include "idl_gram.h" -#include "idl_lex.h" - extern int cfgidllex(YYSTYPE* yylval,yyscan_t scanner, - meta_t *loc,idl_t *idl); - static void cfgidlerror(yyscan_t scanner,meta_t *loc, - idl_t *idl,char *msg); - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 1 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 40 "idl.gram" -typedef union YYSTYPE { - meta_t *meta; - var_t *var; - group_t *grp; - cf_list_t *cf_list; - meta_list_t *meta_list; - var_list_t *var_list; - cf_t *cf; -} YYSTYPE; -/* Line 191 of yacc.c. */ -#line 155 "idl_gram.c" -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 214 of yacc.c. */ -#line 167 "idl_gram.c" - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -# ifndef YYFREE -# define YYFREE free -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# endif - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca -# endif -# else -# if defined (alloca) || defined (_ALLOCA_H) -# define YYSTACK_ALLOC alloca -# else -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined (__GNUC__) && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 84 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 33 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 13 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 41 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 62 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 278 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 29, 30, 2, 2, 28, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 24, - 2, 27, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 25, 2, 26, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 31, 2, 32, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned char yyprhs[] = -{ - 0, 0, 3, 6, 9, 10, 17, 19, 20, 25, - 29, 30, 32, 34, 36, 38, 40, 42, 44, 46, - 48, 50, 52, 54, 56, 58, 60, 63, 64, 68, - 70, 75, 79, 83, 85, 87, 89, 91, 93, 100, - 108, 111 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yysigned_char yyrhs[] = -{ - 34, 0, -1, 34, 35, -1, 34, 44, -1, -1, - 38, 20, 37, 39, 24, 36, -1, 23, -1, -1, - 37, 25, 19, 26, -1, 37, 25, 26, -1, -1, - 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, - 10, -1, 11, -1, 12, -1, 13, -1, 14, -1, - 15, -1, 16, -1, 17, -1, 18, -1, 20, -1, - 27, 40, -1, -1, 40, 28, 41, -1, 41, -1, - 20, 29, 42, 30, -1, 20, 29, 30, -1, 42, - 28, 43, -1, 43, -1, 21, -1, 20, -1, 19, - -1, 22, -1, 4, 20, 31, 45, 32, 24, -1, - 20, 3, 20, 31, 45, 32, 24, -1, 45, 35, - -1, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short yyrline[] = -{ - 0, 77, 77, 81, 85, 89, 142, 151, 158, 177, - 188, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 214, 220, 227, 234, - 245, 254, 266, 273, 284, 285, 286, 287, 291, 301, - 314, 322 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "KW_OVERWRITE", "KW_STRUCT", "KW_RAW", - "KW_CHAR", "KW_UCHAR", "KW_INT8", "KW_UINT8", "KW_INT16", "KW_UINT16", - "KW_INT32", "KW_UINT32", "KW_INT64", "KW_UINT64", "KW_FLOAT", - "KW_DOUBLE", "KW_STRING", "INTEGER", "ID", "LITERAL_STRING", "DOUBLE", - "VAR_CMD", "';'", "'['", "']'", "'='", "','", "'('", "')'", "'{'", "'}'", - "$accept", "program", "variable", "optional_cmd", "optional_array", - "type_name", "optional_constraint", "constraint_list", - "constraint_function", "constraint_function_param_list", - "cons_func_param", "group", "variable_list", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 59, 91, 93, 61, 44, 40, - 41, 123, 125 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 33, 34, 34, 34, 35, 36, 36, 37, 37, - 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 39, 39, 40, 40, - 41, 41, 42, 42, 43, 43, 43, 43, 44, 44, - 45, 45 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 2, 2, 0, 6, 1, 0, 4, 3, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 3, 1, - 4, 3, 3, 1, 1, 1, 1, 1, 6, 7, - 2, 0 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned char yydefact[] = -{ - 4, 0, 1, 0, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 2, - 0, 3, 0, 0, 10, 41, 0, 27, 0, 41, - 0, 0, 0, 25, 0, 40, 0, 0, 9, 0, - 26, 29, 7, 38, 0, 8, 0, 0, 6, 5, - 39, 36, 35, 34, 37, 31, 0, 33, 28, 0, - 30, 32 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yysigned_char yydefgoto[] = -{ - -1, 1, 35, 49, 27, 20, 32, 40, 41, 56, - 57, 21, 28 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -7 -static const yysigned_char yypact[] = -{ - -7, 52, -7, -6, -7, -7, -7, -7, -7, -7, - -7, -7, -7, -7, -7, -7, -7, -7, 18, -7, - 2, -7, 15, 5, -7, -7, 16, -1, -5, -7, - -3, 25, 24, -7, 26, -7, 23, 27, -7, 20, - 43, -7, 28, -7, 30, -7, 54, 25, -7, -7, - -7, -7, -7, -7, -7, -7, 14, -7, -7, -2, - -7, -7 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yysigned_char yypgoto[] = -{ - -7, -7, 76, -7, -7, -7, -7, -7, 31, -7, - 21, -7, 50 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 -static const unsigned char yytable[] = -{ - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 22, 33, 37, 51, 52, 53, - 54, 23, 24, 38, 30, 26, 31, 34, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 59, 33, 60, 39, 25, 29, 42, 46, - 43, 48, 2, 45, 50, 44, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 47, 18, 51, 52, 53, 54, 19, 58, 36, - 61, 0, 0, 0, 55 -}; - -static const yysigned_char yycheck[] = -{ - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 20, 20, 19, 19, 20, 21, - 22, 3, 20, 26, 25, 20, 27, 32, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 28, 20, 30, 20, 31, 31, 24, 29, - 24, 23, 0, 26, 24, 32, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 28, 20, 19, 20, 21, 22, 1, 47, 29, - 59, -1, -1, -1, 30 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned char yystos[] = -{ - 0, 34, 0, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 20, 35, - 38, 44, 20, 3, 20, 31, 20, 37, 45, 31, - 25, 27, 39, 20, 32, 35, 45, 19, 26, 20, - 40, 41, 24, 24, 32, 26, 29, 28, 23, 36, - 24, 19, 20, 21, 22, 30, 42, 43, 41, 28, - 30, 43 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (scanner, loc, idl, "syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - ((Current).first_line = (Rhs)[1].first_line, \ - (Current).first_column = (Rhs)[1].first_column, \ - (Current).last_line = (Rhs)[N].last_line, \ - (Current).last_column = (Rhs)[N].last_column) -#endif - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, YYLEX_PARAM) -#else -# define YYLEX yylex (&yylval, scanner, loc, idl) -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YYDSYMPRINT(Args) \ -do { \ - if (yydebug) \ - yysymprint Args; \ -} while (0) - -# define YYDSYMPRINTF(Title, Token, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Token, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short *bottom, short *top) -#else -static void -yy_stack_print (bottom, top) - short *bottom; - short *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YYDSYMPRINT(Args) -# define YYDSYMPRINTF(Title, Token, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -# ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - } - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yytype, yyvaluep) - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (yyscan_t scanner, meta_t *loc, idl_t *idl); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (yyscan_t scanner, meta_t *loc, idl_t *idl) -#else -int -yyparse (scanner, loc, idl) - yyscan_t scanner; - meta_t *loc; - idl_t *idl; -#endif -#endif -{ - /* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 78 "idl.gram" - { - add_idl_var(idl,yyvsp[0].var); -;} - break; - - case 3: -#line 82 "idl.gram" - { - add_idl_group(idl,yyvsp[0].grp); -;} - break; - - case 5: -#line 90 "idl.gram" - { - meta_t *type=yyvsp[-5].meta,*id=yyvsp[-4].meta; - meta_list_t *array_size_list=yyvsp[-3].meta_list; - meta_list_t *cmdval = yyvsp[0].meta_list; - cf_list_t *cf_list=yyvsp[-2].cf_list; - cf_t *cf; - - var_t *var=alloc_var(idl); - - //allocate the necessary space - if(cf_list==NULL) { - cf_list=new cf_list_t; - idl->parse_list.push_back(cf_list); - } - if(array_size_list==NULL) { - array_size_list=new meta_list_t; - idl->parse_meta_list.push_back(array_size_list); - } - - if(array_size_list->size()!=0){ - /* the arary size list does exist */ - cf=alloc_cf(idl); - - meta_t func; - func.data="array"; - func.file=id->file; - func.lineno=id->lineno; - assemble_idl_cf(cf,&func,array_size_list); - - cf_list->push_back(cf); - } - if (cmdval != NULL) { - meta_t func ; - func.data = "comment"; - func.file = id->file; - func.lineno = id->lineno; - cf_t *cf = alloc_cf(idl); - assemble_idl_cf(cf, &func, cmdval); - cf_list->push_back(cf); - - //delete cmdval; - } - assemble_idl_var(idl,var,id,type,cf_list); - //delete cf_list; - //delete array_size_list; - - - - yyval.var=var; -;} - break; - - case 6: -#line 143 "idl.gram" - { - meta_list_t *lst = new meta_list_t; - idl->parse_meta_list.push_back(lst); - lst->push_back(yyvsp[0].meta); - idl->cmdreserve = 0; - yyval.meta_list = lst; -;} - break; - - case 7: -#line 151 "idl.gram" - { - idl->cmdreserve = 0; - yyval.meta_list = NULL; -;} - break; - - case 8: -#line 159 "idl.gram" - { - meta_list_t *array_size_list=yyvsp[-3].meta_list; - meta_t *array_tag=yyvsp[-1].meta; - int array_size=atoi(array_tag->data.c_str()); - /* we have to validate here */ - if(array_size<=0){ - char tmpstr[2048]; - meta_t errinfo; - snprintf(tmpstr,sizeof(tmpstr),"array size %d is invalid",array_size); - errinfo.data=tmpstr; - errinfo.file=array_tag->file; - errinfo.lineno=array_tag->lineno; - add_idl_error(idl,errinfo); - array_tag->data="0"; - } - array_size_list->push_back(array_tag); - yyval.meta_list=array_size_list; -;} - break; - - case 9: -#line 178 "idl.gram" - { - meta_list_t *array_size_list=yyvsp[-2].meta_list; - meta_t *array_size=alloc_meta(idl); - array_size->data="0"; - array_size->file=loc->file; - array_size->lineno=loc->lineno; - array_size_list->push_back(array_size); - yyval.meta_list=array_size_list; -;} - break; - - case 10: -#line 188 "idl.gram" - { - meta_list_t *array_size_list=new meta_list_t; - idl->parse_meta_list.push_back(array_size_list); - yyval.meta_list=array_size_list; - ;} - break; - - case 11: -#line 196 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 12: -#line 197 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 13: -#line 198 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 14: -#line 199 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 15: -#line 200 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 16: -#line 201 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 17: -#line 202 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 18: -#line 203 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 19: -#line 204 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 20: -#line 205 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 21: -#line 206 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 22: -#line 207 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 23: -#line 208 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 24: -#line 209 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 25: -#line 210 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 26: -#line 215 "idl.gram" - { - yyval.cf_list=yyvsp[0].cf_list; - idl->cmdreserve = 1; -;} - break; - - case 27: -#line 220 "idl.gram" - { - yyval.cf_list=NULL; - idl->cmdreserve = 1; -;} - break; - - case 28: -#line 228 "idl.gram" - { - cf_list_t *cf_list=yyvsp[-2].cf_list; - cf_t *cf=yyvsp[0].cf; - cf_list->push_back(cf); - yyval.cf_list=cf_list; -;} - break; - - case 29: -#line 235 "idl.gram" - { - cf_list_t *cf_list=new cf_list_t; - idl->parse_list.push_back(cf_list); - cf_t *cf=yyvsp[0].cf; - cf_list->push_back(cf); - yyval.cf_list=cf_list; -;} - break; - - case 30: -#line 246 "idl.gram" - { - meta_t *func=yyvsp[-3].meta; - meta_list_t *arg_list=yyvsp[-1].meta_list; - cf_t *cf=alloc_cf(idl); - assemble_idl_cf(cf,func,arg_list); - //delete arg_list; - yyval.cf=cf; -;} - break; - - case 31: -#line 255 "idl.gram" - { - meta_t *func=yyvsp[-2].meta; - meta_list_t *arg_list=new meta_list_t; - cf_t *cf=alloc_cf(idl); - assemble_idl_cf(cf,func,arg_list); - delete arg_list; - yyval.cf=cf; -;} - break; - - case 32: -#line 267 "idl.gram" - { - meta_list_t *param_list=yyvsp[-2].meta_list; - meta_t *param=yyvsp[0].meta; - param_list->push_back(param); - yyval.meta_list=param_list; -;} - break; - - case 33: -#line 274 "idl.gram" - { - meta_list_t *param_list=new meta_list_t; - idl->parse_meta_list.push_back(param_list); - meta_t *param=yyvsp[0].meta; - param_list->push_back(param); - yyval.meta_list=param_list; -;} - break; - - case 34: -#line 284 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 35: -#line 285 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 36: -#line 286 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 37: -#line 287 "idl.gram" - {yyval.meta=yyvsp[0].meta;;} - break; - - case 38: -#line 292 "idl.gram" - { - meta_t *id=yyvsp[-4].meta; - var_list_t *var_list=yyvsp[-2].var_list; - group_t *grp; - grp=alloc_group(idl); - assemble_idl_group(idl,grp,id,var_list); - //delete var_list; - yyval.grp=grp; -;} - break; - - case 39: -#line 302 "idl.gram" - { - meta_t *new_id=yyvsp[-6].meta,*old_id=yyvsp[-4].meta; - var_list_t *var_list=yyvsp[-2].var_list; - group_t *grp; - grp=alloc_group(idl); - overwrite_idl_group(idl,grp,new_id,old_id,var_list); - //delete var_list; - yyval.grp=grp; -;} - break; - - case 40: -#line 315 "idl.gram" - { - var_list_t *var_list=yyvsp[-1].var_list; - var_t *var=yyvsp[0].var; - var_list->push_back(var); - yyval.var_list=var_list; -;} - break; - - case 41: -#line 322 "idl.gram" - { - var_list_t *var_list=new var_list_t; - idl->parse_var_list.push_back(var_list); - yyval.var_list=var_list; -;} - break; - - - } - -/* Line 1000 of yacc.c. */ -#line 1465 "idl_gram.c" - - yyvsp -= yylen; - yyssp -= yylen; - - - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (YYPACT_NINF < yyn && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - int yytype = YYTRANSLATE (yychar); - const char* yyprefix; - char *yymsg; - int yyx; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 0; - - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); - yycount += 1; - if (yycount == 5) - { - yysize = 0; - break; - } - } - yysize += (sizeof ("syntax error, unexpected ") - + yystrlen (yytname[yytype])); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); - yyp = yystpcpy (yyp, yytname[yytype]); - - if (yycount < 5) - { - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - yyp = yystpcpy (yyp, yyprefix); - yyp = yystpcpy (yyp, yytname[yyx]); - yyprefix = " or "; - } - } - yyerror (scanner, loc, idl, yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror (scanner, loc, idl, (char *)"syntax error; also virtual memory exhausted"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror (scanner, loc, idl, (char *)"syntax error"); - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* If at end of input, pop the error token, - then the rest of the stack, then return failure. */ - if (yychar == YYEOF) - for (;;) - { - YYPOPSTACK; - if (yyssp == yyss) - YYABORT; - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[*yyssp], yyvsp); - } - } - else - { - YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); - yydestruct (yytoken, &yylval); - yychar = YYEMPTY; - - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - -#ifdef __GNUC__ - /* Pacify GCC when the user code never invokes YYERROR and the label - yyerrorlab therefore never appears in user code. */ - if (0) - goto yyerrorlab; -#endif - - yyvsp -= yylen; - yyssp -= yylen; - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[yystate], yyvsp); - YYPOPSTACK; - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; - - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror (scanner, loc, idl, (char *)"parser stack overflow"); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} - - -#line 329 "idl.gram" - -void cfgidlerror(yyscan_t scanner,meta_t *loc,idl_t *idl,char *msg) -{ - char tmp[2048]; - meta_t errinfo; - errinfo.file=loc->file; - errinfo.lineno=loc->lineno; - snprintf(tmp,sizeof(tmp),"%s before char:'%c'", - msg, - cfgidlget_text(scanner)[0]); - errinfo.data=tmp; - add_idl_error(idl,errinfo); - return ; -} - diff --git a/configure/compiler/src/idl_gram.gcno b/configure/compiler/src/idl_gram.gcno deleted file mode 100644 index a50763f436d5fdc6d77464c663dbd12fb68736de..0000000000000000000000000000000000000000 Binary files a/configure/compiler/src/idl_gram.gcno and /dev/null differ diff --git a/configure/compiler/src/idl_gram.h b/configure/compiler/src/idl_gram.h deleted file mode 100644 index 806ca2434bf747bb6d8913031e2f7315e8e0f672..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl_gram.h +++ /dev/null @@ -1,101 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875c. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - KW_OVERWRITE = 258, - KW_STRUCT = 259, - KW_RAW = 260, - KW_CHAR = 261, - KW_UCHAR = 262, - KW_INT8 = 263, - KW_UINT8 = 264, - KW_INT16 = 265, - KW_UINT16 = 266, - KW_INT32 = 267, - KW_UINT32 = 268, - KW_INT64 = 269, - KW_UINT64 = 270, - KW_FLOAT = 271, - KW_DOUBLE = 272, - KW_STRING = 273, - INTEGER = 274, - ID = 275, - LITERAL_STRING = 276, - DOUBLE = 277, - VAR_CMD = 278 - }; -#endif -#define KW_OVERWRITE 258 -#define KW_STRUCT 259 -#define KW_RAW 260 -#define KW_CHAR 261 -#define KW_UCHAR 262 -#define KW_INT8 263 -#define KW_UINT8 264 -#define KW_INT16 265 -#define KW_UINT16 266 -#define KW_INT32 267 -#define KW_UINT32 268 -#define KW_INT64 269 -#define KW_UINT64 270 -#define KW_FLOAT 271 -#define KW_DOUBLE 272 -#define KW_STRING 273 -#define INTEGER 274 -#define ID 275 -#define LITERAL_STRING 276 -#define DOUBLE 277 -#define VAR_CMD 278 - - - - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 40 "idl.gram" -typedef union YYSTYPE { - meta_t *meta; - var_t *var; - group_t *grp; - cf_list_t *cf_list; - meta_list_t *meta_list; - var_list_t *var_list; - cf_t *cf; -} YYSTYPE; -/* Line 1275 of yacc.c. */ -#line 93 "idl_gram.h" -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - - - diff --git a/configure/compiler/src/idl_lex.c b/configure/compiler/src/idl_lex.c deleted file mode 100644 index 0274222a0d9120cbe5548523af177a4debded09a..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl_lex.c +++ /dev/null @@ -1,2251 +0,0 @@ -#line 2 "idl_lex.c" - -#line 4 "idl_lex.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yyg->yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yyg->yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE cfgidlrestart(yyin ,yyscanner ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via cfgidlrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] - -void cfgidlrestart (FILE *input_file ,yyscan_t yyscanner ); -void cfgidl_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE cfgidl_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void cfgidl_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void cfgidl_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void cfgidlpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void cfgidlpop_buffer_state (yyscan_t yyscanner ); - -static void cfgidlensure_buffer_stack (yyscan_t yyscanner ); -static void cfgidl_load_buffer_state (yyscan_t yyscanner ); -static void cfgidl_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); - -#define YY_FLUSH_BUFFER cfgidl_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) - -YY_BUFFER_STATE cfgidl_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE cfgidl_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE cfgidl_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *cfgidlalloc (yy_size_t ,yyscan_t yyscanner ); -void *cfgidlrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void cfgidlfree (void * ,yyscan_t yyscanner ); - -#define yy_new_buffer cfgidl_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - cfgidlensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - cfgidl_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - cfgidlensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - cfgidl_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define cfgidlwrap(n) 1 -#define YY_SKIP_YYWRAP - -typedef unsigned char YY_CHAR; - -typedef int yy_state_type; - -#define yytext_ptr yytext_r - -static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); -static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 25 -#define YY_END_OF_BUFFER 26 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[105] = - { 0, - 0, 0, 26, 24, 23, 23, 24, 1, 24, 24, - 24, 20, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 23, 0, 19, 0, 20, 21, 18, 0, 0, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 18, 21, 21, 22, 22, 22, 22, 22, 2, 22, - 22, 22, 3, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 13, 22, 22, 22, 22, - 22, 22, 22, 4, 22, 22, 22, 22, 14, 22, - 22, 22, 5, 22, 15, 16, 22, 22, 22, 22, - 7, 9, 11, 22, 22, 22, 22, 6, 22, 8, - - 10, 12, 17, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 5, 1, 1, 1, 1, 1, - 1, 1, 6, 1, 6, 7, 8, 9, 10, 11, - 12, 13, 9, 14, 9, 15, 9, 1, 1, 1, - 1, 1, 1, 1, 16, 16, 16, 16, 17, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 1, 1, 1, 1, 18, 1, 19, 20, 21, 22, - - 23, 24, 25, 26, 27, 16, 16, 28, 16, 29, - 30, 16, 16, 31, 32, 33, 34, 35, 36, 16, - 16, 16, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[37] = - { 0, - 1, 1, 2, 1, 1, 1, 3, 1, 4, 4, - 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5 - } ; - -static yyconst flex_int16_t yy_base[112] = - { 0, - 0, 0, 139, 140, 35, 37, 134, 140, 130, 0, - 128, 34, 0, 109, 104, 105, 103, 96, 111, 96, - 21, 41, 124, 140, 0, 0, 29, 0, 0, 0, - 0, 108, 92, 95, 91, 100, 86, 90, 94, 90, - 0, 30, 0, 87, 97, 97, 44, 84, 0, 28, - 95, 80, 0, 84, 78, 96, 98, 95, 89, 70, - 76, 83, 72, 51, 79, 0, 83, 82, 81, 65, - 66, 71, 62, 0, 80, 82, 79, 73, 0, 57, - 56, 55, 0, 60, 0, 0, 68, 67, 66, 50, - 0, 0, 0, 49, 48, 44, 31, 0, 37, 0, - - 0, 0, 0, 140, 66, 69, 46, 70, 75, 45, - 41 - } ; - -static yyconst flex_int16_t yy_def[112] = - { 0, - 104, 1, 104, 104, 104, 104, 105, 104, 106, 107, - 104, 106, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 104, 105, 104, 107, 12, 107, 109, 110, 111, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 109, 110, 111, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - - 108, 108, 108, 0, 104, 104, 104, 104, 104, 104, - 104 - } ; - -static yyconst flex_int16_t yy_nxt[177] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 12, - 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, - 14, 15, 13, 16, 13, 13, 17, 13, 13, 18, - 19, 20, 13, 21, 13, 13, 22, 22, 22, 22, - 29, 39, 22, 22, 43, 30, 30, 40, 42, 27, - 30, 30, 30, 56, 61, 57, 30, 58, 59, 103, - 75, 62, 76, 102, 77, 78, 23, 23, 23, 23, - 23, 26, 26, 31, 31, 41, 101, 41, 41, 41, - 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, - 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, - - 80, 79, 74, 73, 72, 71, 70, 69, 68, 67, - 66, 65, 64, 63, 60, 55, 54, 53, 52, 51, - 50, 49, 48, 47, 46, 45, 44, 24, 38, 37, - 36, 35, 34, 33, 32, 28, 25, 24, 104, 3, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104 - } ; - -static yyconst flex_int16_t yy_chk[177] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 5, 5, 6, 6, - 12, 21, 22, 22, 111, 27, 42, 21, 110, 107, - 12, 27, 42, 47, 50, 47, 12, 47, 47, 99, - 64, 50, 64, 97, 64, 64, 105, 105, 105, 105, - 105, 106, 106, 108, 108, 109, 96, 109, 109, 109, - 95, 94, 90, 89, 88, 87, 84, 82, 81, 80, - 78, 77, 76, 75, 73, 72, 71, 70, 69, 68, - - 67, 65, 63, 62, 61, 60, 59, 58, 57, 56, - 55, 54, 52, 51, 48, 46, 45, 44, 40, 39, - 38, 37, 36, 35, 34, 33, 32, 23, 20, 19, - 18, 17, 16, 15, 14, 11, 9, 7, 3, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104 - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -#line 1 "idl.lex" -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Mon Nov 17 12:06:46 CST 2008 - file name:idl.lex */ -#line 6 "idl.lex" -#include -#include -#include -#include "idl.h" -#include "idl_gram.h" - -#define MAX_TEMP_BUFFER 2048 - -#define YY_DECL int cfgidllex(YYSTYPE *yylval,yyscan_t yyscanner,meta_t *loc,idl_t *idl) - static void do_keyword(YYSTYPE *yylval,yyscan_t cfgidlscanner,meta_t *loc,idl_t *idl); - static int do_special_cmd(YYSTYPE *yylval,yyscan_t cfgidlscanner,meta_t *loc,idl_t *idl); - static void do_meta_data(YYSTYPE *yylval,yyscan_t cfgidlscanner,meta_t *loc,idl_t *idl); - static void do_comment(yyscan_t cfgidlscanner,meta_t *loc); - static void update(yyscan_t cfgidlscanner,meta_t *loc, idl_t *idl); -/* we don't need to handle file more than one */ -/* give out warnings */ -/* using 8 bit a character */ -/* we want idllex this class */ -/* output file is idl_lex.c */ -/* header file is idl_lex.h */ -/* the letter is so generous except - (),whitespace and ; */ -#line 533 "idl_lex.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - }; /* end struct yyguts_t */ - -static int yy_init_globals (yyscan_t yyscanner ); - -int cfgidllex_init (yyscan_t* scanner); - -int cfgidllex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int cfgidllex_destroy (yyscan_t yyscanner ); - -int cfgidlget_debug (yyscan_t yyscanner ); - -void cfgidlset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE cfgidlget_extra (yyscan_t yyscanner ); - -void cfgidlset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *cfgidlget_in (yyscan_t yyscanner ); - -void cfgidlset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *cfgidlget_out (yyscan_t yyscanner ); - -void cfgidlset_out (FILE * out_str ,yyscan_t yyscanner ); - -int cfgidlget_leng (yyscan_t yyscanner ); - -char *cfgidlget_text (yyscan_t yyscanner ); - -int cfgidlget_lineno (yyscan_t yyscanner ); - -void cfgidlset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int cfgidlwrap (yyscan_t yyscanner ); -#else -extern int cfgidlwrap (yyscan_t yyscanner ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (yyscan_t yyscanner ); -#else -static int input (yyscan_t yyscanner ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int cfgidllex (yyscan_t yyscanner); - -#define YY_DECL int cfgidllex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - -#line 42 "idl.lex" - - -#line 757 "idl_lex.c" - - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - cfgidlensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - cfgidl_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - cfgidl_load_buffer_state(yyscanner ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 105 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 140 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 44 "idl.lex" -{do_comment(yyscanner,loc);} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 45 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_RAW;} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 46 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_CHAR;} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 47 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_UCHAR;} - YY_BREAK -case 5: -YY_RULE_SETUP -#line 48 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_INT8;} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 49 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_UINT8;} - YY_BREAK -case 7: -YY_RULE_SETUP -#line 50 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_INT16;} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 51 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_UINT16;} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 52 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_INT32;} - YY_BREAK -case 10: -YY_RULE_SETUP -#line 53 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_UINT32;} - YY_BREAK -case 11: -YY_RULE_SETUP -#line 54 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_INT64;} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 55 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_UINT64;} - YY_BREAK -case 13: -YY_RULE_SETUP -#line 56 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_FLOAT;} - YY_BREAK -case 14: -YY_RULE_SETUP -#line 57 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_DOUBLE;} - YY_BREAK -case 15: -YY_RULE_SETUP -#line 58 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_STRING;} - YY_BREAK -case 16: -YY_RULE_SETUP -#line 59 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_STRUCT;} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 60 "idl.lex" -{do_keyword(yylval,yyscanner,loc,idl);return KW_OVERWRITE;} - YY_BREAK -case 18: -YY_RULE_SETUP -#line 62 "idl.lex" -{ - if (do_special_cmd(yylval,yyscanner,loc,idl) != 0) { - return VAR_CMD; - } -} - YY_BREAK -case 19: -/* rule 19 can match eol */ -YY_RULE_SETUP -#line 67 "idl.lex" -{do_meta_data(yylval,yyscanner,loc,idl);return LITERAL_STRING;} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 68 "idl.lex" -{do_meta_data(yylval,yyscanner,loc,idl);return INTEGER;} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 69 "idl.lex" -{do_meta_data(yylval,yyscanner,loc,idl);return DOUBLE;} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 70 "idl.lex" -{do_meta_data(yylval,yyscanner,loc,idl);return ID;} - YY_BREAK -case 23: -/* rule 23 can match eol */ -YY_RULE_SETUP -#line 71 "idl.lex" -{update(yyscanner,loc, idl);} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 72 "idl.lex" -{return yytext[0];} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 74 "idl.lex" -ECHO; - YY_BREAK -#line 971 "idl_lex.c" -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * cfgidllex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( cfgidlwrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of cfgidllex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - cfgidlrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - cfgidlrestart(yyin ,yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) cfgidlrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 105 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 105 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 104); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner) -{ - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_cp = yyg->yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yyg->yy_hold_char; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yyg->yy_n_chars + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - yyg->yytext_ptr = yy_bp; - yyg->yy_hold_char = *yy_cp; - yyg->yy_c_buf_p = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) -#else - static int input (yyscan_t yyscanner) -#endif - -{ - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - *yyg->yy_c_buf_p = yyg->yy_hold_char; - - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - cfgidlrestart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( cfgidlwrap(yyscanner ) ) - return EOF; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(yyscanner); -#else - return input(yyscanner); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * @param yyscanner The scanner object. - * @note This function does not reset the start condition to @c INITIAL . - */ - void cfgidlrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! YY_CURRENT_BUFFER ){ - cfgidlensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - cfgidl_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - cfgidl_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); - cfgidl_load_buffer_state(yyscanner ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * @param yyscanner The scanner object. - */ - void cfgidl_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* TODO. We should be able to replace this entire function body - * with - * cfgidlpop_buffer_state(); - * cfgidlpush_buffer_state(new_buffer); - */ - cfgidlensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - cfgidl_load_buffer_state(yyscanner ); - - /* We don't actually know whether we did this switch during - * EOF (cfgidlwrap()) processing, but the only time this flag - * is looked at is after cfgidlwrap() is called, so it's safe - * to go ahead and always set it. - */ - yyg->yy_did_buffer_switch_on_eof = 1; -} - -static void cfgidl_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * @param yyscanner The scanner object. - * @return the allocated buffer state. - */ - YY_BUFFER_STATE cfgidl_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) cfgidlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in cfgidl_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) cfgidlalloc(b->yy_buf_size + 2 ,yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in cfgidl_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - cfgidl_init_buffer(b,file ,yyscanner); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with cfgidl_create_buffer() - * @param yyscanner The scanner object. - */ - void cfgidl_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - cfgidlfree((void *) b->yy_ch_buf ,yyscanner ); - - cfgidlfree((void *) b ,yyscanner ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a cfgidlrestart() or at EOF. - */ - static void cfgidl_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) - -{ - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - cfgidl_flush_buffer(b ,yyscanner); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then cfgidl_init_buffer was _probably_ - * called from cfgidlrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * @param yyscanner The scanner object. - */ - void cfgidl_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - cfgidl_load_buffer_state(yyscanner ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * @param yyscanner The scanner object. - */ -void cfgidlpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - cfgidlensure_buffer_stack(yyscanner); - - /* This block is copied from cfgidl_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from cfgidl_switch_to_buffer. */ - cfgidl_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * @param yyscanner The scanner object. - */ -void cfgidlpop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - cfgidl_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - cfgidl_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void cfgidlensure_buffer_stack (yyscan_t yyscanner) -{ - int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - yyg->yy_buffer_stack = (struct yy_buffer_state**)cfgidlalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in cfgidlensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)cfgidlrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in cfgidlensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE cfgidl_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) cfgidlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in cfgidl_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - cfgidl_switch_to_buffer(b ,yyscanner ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to cfgidllex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * cfgidl_scan_bytes() instead. - */ -YY_BUFFER_STATE cfgidl_scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - - return cfgidl_scan_bytes(yystr,strlen(yystr) ,yyscanner); -} - -/** Setup the input buffer state to scan the given bytes. The next call to cfgidllex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE cfgidl_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) cfgidlalloc(n ,yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in cfgidl_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = cfgidl_scan_buffer(buf,n ,yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in cfgidl_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the user-defined data for this scanner. - * @param yyscanner The scanner object. - */ -YY_EXTRA_TYPE cfgidlget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; -} - -/** Get the current line number. - * @param yyscanner The scanner object. - */ -int cfgidlget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; -} - -/** Get the current column number. - * @param yyscanner The scanner object. - */ -int cfgidlget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; -} - -/** Get the input stream. - * @param yyscanner The scanner object. - */ -FILE *cfgidlget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; -} - -/** Get the output stream. - * @param yyscanner The scanner object. - */ -FILE *cfgidlget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; -} - -/** Get the length of the current token. - * @param yyscanner The scanner object. - */ -int cfgidlget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -} - -/** Get the current token. - * @param yyscanner The scanner object. - */ - -char *cfgidlget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; -} - -/** Set the user-defined data. This data is never touched by the scanner. - * @param user_defined The data to be associated with this scanner. - * @param yyscanner The scanner object. - */ -void cfgidlset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; -} - -/** Set the current line number. - * @param line_number - * @param yyscanner The scanner object. - */ -void cfgidlset_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "cfgidlset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; -} - -/** Set the current column. - * @param line_number - * @param yyscanner The scanner object. - */ -void cfgidlset_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "cfgidlset_column called with no buffer" , yyscanner); - - yycolumn = column_no; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * @param yyscanner The scanner object. - * @see cfgidl_switch_to_buffer - */ -void cfgidlset_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; -} - -void cfgidlset_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; -} - -int cfgidlget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; -} - -void cfgidlset_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; -} - -/* Accessor methods for yylval and yylloc */ - -/* User-visible API */ - -/* cfgidllex_init is special because it creates the scanner itself, so it is - * the ONLY reentrant function that doesn't take the scanner as the last argument. - * That's why we explicitly handle the declaration, instead of using our macros. - */ - -int cfgidllex_init(yyscan_t* ptr_yy_globals) - -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) cfgidlalloc ( sizeof( struct yyguts_t ), NULL ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - return yy_init_globals ( *ptr_yy_globals ); -} - -/* cfgidllex_init_extra has the same functionality as cfgidllex_init, but follows the - * convention of taking the scanner as the last argument. Note however, that - * this is a *pointer* to a scanner, as it will be allocated by this call (and - * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to cfgidlalloc in - * the yyextra field. - */ - -int cfgidllex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) - -{ - struct yyguts_t dummy_yyguts; - - cfgidlset_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) cfgidlalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - cfgidlset_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); -} - -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from cfgidllex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * cfgidllex_init() - */ - return 0; -} - -/* cfgidllex_destroy is for both reentrant and non-reentrant scanners. */ -int cfgidllex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - cfgidl_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - cfgidlpop_buffer_state(yyscanner); - } - - /* Destroy the stack itself. */ - cfgidlfree(yyg->yy_buffer_stack ,yyscanner); - yyg->yy_buffer_stack = NULL; - - /* Destroy the start condition stack. */ - cfgidlfree(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * cfgidllex() is called, initialization will occur. */ - yy_init_globals( yyscanner); - - /* Destroy the main struct (reentrant only). */ - cfgidlfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *cfgidlalloc (yy_size_t size , yyscan_t yyscanner) -{ - return (void *) malloc( size ); -} - -void *cfgidlrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void cfgidlfree (void * ptr , yyscan_t yyscanner) -{ - free( (char *) ptr ); /* see cfgidlrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 74 "idl.lex" - - -void do_keyword(YYSTYPE *yylval,yyscan_t scanner,meta_t *loc,idl_t *idl) -{ - char *text=cfgidlget_text(scanner); -#ifdef DEBUG - printf("call %s,%s\n",__func__,text); -#endif - meta_t *meta=alloc_meta(idl); - meta->file=loc->file; - meta->lineno=loc->lineno; - meta->data=text; - yylval->meta=meta; -} - -void do_meta_data(YYSTYPE *yylval,yyscan_t scanner,meta_t *loc,idl_t *idl) -{ - char *text=cfgidlget_text(scanner); - int leng=cfgidlget_leng(scanner); -#ifdef DEBUG - printf("call %s,%s\n",__func__,text); -#endif - meta_t *meta=alloc_meta(idl); - meta->file=loc->file; - meta->lineno=loc->lineno; - meta->data=cfgidlget_text(scanner); - yylval->meta=meta; - - int i; - for(i=0;ilineno++; - } - return ; -} - -int do_special_cmd(YYSTYPE *yylval,yyscan_t scanner,meta_t *loc,idl_t *idl) -{ - char *text = cfgidlget_text(scanner); - meta_t *meta=alloc_meta(idl); - meta->file=loc->file; - meta->lineno=loc->lineno; - meta->data=text; - yylval->meta=meta; - - loc->lineno++; - - int ret = idl->cmdreserve; - idl->cmdreserve = 0; - return ret; -} - - -static int cdirective(char *tmp,int *lineno,char **filename) -{ - int i,j; - if(tmp[0]!='#' || tmp[1]!=' ' || !isdigit(tmp[2]))return 0; - i=2; - while(isdigit(tmp[i]))i++; - tmp[i++]=0; - *lineno=atoi(tmp+2); - - j=i+1; - if(tmp[i]!='"')return 0; - i++; - while(tmp[i]!='"')i++; - tmp[i]=0; - *filename=tmp+j; - - return 1; -} - -void do_comment(yyscan_t scanner,meta_t *loc) -{ - char ch; - char tmp[MAX_TEMP_BUFFER]; - int i; - - i=0; - if(cfgidlget_text(scanner)[0]=='#'){ - tmp[0]='#'; - i=1; - } - while(1){ - ch=yyinput(scanner); - if(ch=='\n' || ch==EOF)break; - if(i < (int)sizeof(tmp) - 1) { - tmp[i++]=ch; - } - } - tmp[i]=0; - loc->lineno++; - - char *tmp_file; - int tmp_lineno; - if(cdirective(tmp,&tmp_lineno,&tmp_file)==1){ - loc->lineno=tmp_lineno; - loc->file=tmp_file; -#ifdef DEBUG - printf("new file:%s,lineno:%d\n", - loc->file.c_str(), - loc->lineno); -#endif - } - return ; -} - -void update(yyscan_t scanner,meta_t *loc, idl_t *idl) -{ - int i; - int leng=cfgidlget_leng(scanner); - char *text=cfgidlget_text(scanner); - int cnt = 0; - for(i=0;ilineno++; - //printf("update[%d]: %c\n", i, text[i]); - ++ cnt; - } - } - if (cnt > 0) { - idl->cmdreserve = 0; - } - return ; -} - diff --git a/configure/compiler/src/idl_lex.gcno b/configure/compiler/src/idl_lex.gcno deleted file mode 100644 index b0d54a8959d0b49d50b6599f294aee205889e23f..0000000000000000000000000000000000000000 Binary files a/configure/compiler/src/idl_lex.gcno and /dev/null differ diff --git a/configure/compiler/src/idl_lex.h b/configure/compiler/src/idl_lex.h deleted file mode 100644 index b3ee4a0754c6f58ba2ea1908d7c916d6fd2973a4..0000000000000000000000000000000000000000 --- a/configure/compiler/src/idl_lex.h +++ /dev/null @@ -1,335 +0,0 @@ -#ifndef cfgidlHEADER_H -#define cfgidlHEADER_H 1 -#define cfgidlIN_HEADER 1 - -#line 6 "idl_lex.h" - -#line 8 "idl_lex.h" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -void cfgidlrestart (FILE *input_file ,yyscan_t yyscanner ); -void cfgidl_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE cfgidl_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void cfgidl_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void cfgidl_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void cfgidlpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void cfgidlpop_buffer_state (yyscan_t yyscanner ); - -YY_BUFFER_STATE cfgidl_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE cfgidl_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE cfgidl_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *cfgidlalloc (yy_size_t ,yyscan_t yyscanner ); -void *cfgidlrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void cfgidlfree (void * ,yyscan_t yyscanner ); - -/* Begin user sect3 */ - -#define cfgidlwrap(n) 1 -#define YY_SKIP_YYWRAP - -#define yytext_ptr yytext_r - -#ifdef YY_HEADER_EXPORT_START_CONDITIONS -#define INITIAL 0 - -#endif - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -int cfgidllex_init (yyscan_t* scanner); - -int cfgidllex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int cfgidllex_destroy (yyscan_t yyscanner ); - -int cfgidlget_debug (yyscan_t yyscanner ); - -void cfgidlset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE cfgidlget_extra (yyscan_t yyscanner ); - -void cfgidlset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *cfgidlget_in (yyscan_t yyscanner ); - -void cfgidlset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *cfgidlget_out (yyscan_t yyscanner ); - -void cfgidlset_out (FILE * out_str ,yyscan_t yyscanner ); - -int cfgidlget_leng (yyscan_t yyscanner ); - -char *cfgidlget_text (yyscan_t yyscanner ); - -int cfgidlget_lineno (yyscan_t yyscanner ); - -void cfgidlset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int cfgidlwrap (yyscan_t yyscanner ); -#else -extern int cfgidlwrap (yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int cfgidllex (yyscan_t yyscanner); - -#define YY_DECL int cfgidllex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif - -#line 74 "idl.lex" - - -#line 334 "idl_lex.h" -#undef cfgidlIN_HEADER -#endif /* cfgidlHEADER_H */ diff --git a/configure/compiler/testcase/Makefile b/configure/compiler/testcase/Makefile deleted file mode 100644 index d5e15658517eb58f3075bff625a18f9dad37649e..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/Makefile +++ /dev/null @@ -1,188 +0,0 @@ -########################################################################### -# Automatically generated by comake (1.0.0) # -########################################################################### - -#################设计系统参数####################################### -WORKROOT ?= ../../../../ -IDLCC ?= $(WORKROOT)/public/idlcompiler/output/bin/mcy -CC ?= gcc -CXX ?= g++ -LEX ?= flex -YACC ?= yacc -CFLAGS ?= -pipe -fsigned-char -Wall -W -g -fPIC -CXXFLAGS ?= -pipe -fsigned-char -Wall -W -g -fPIC -LEXFLAGS ?= -YACCFLAGS ?= -LINKFLAGS ?= -rdynamic -LINK ?= g++ -AR ?= ar cqs -RANLIB ?= -COMAKE ?= comake - -###############baidu lib 的32位 64位支持################# -ifeq ($(MAC), 64) - lib2=lib2-64 - third=third-64 -else - lib2=lib2 - third=third -endif -ifeq ($(MAC),ARM32) - lib2=lib2-arm32 - third=third-arm32 -endif -########################################## - -# 编译参数 -DEP_INCPATH = -I$(WORKROOT)/$(lib2)/bsl//include/ -DEP_LDFLAGS = -L$(WORKROOT)/$(lib2)/bsl//lib/ -DEP_LDLIBS = -lbsl_archive -lbsl_exception -lbsl_pool -lbsl_utils -lbsl -lbsl_ResourcePool -lbsl_check_cast -lbsl_var -lbsl_var_implement -MAKDEP = Makefile.dep - - -#start target -first : all - -############# 默认推到公式 -.SUFFIXES: .c .cpp .cc .cxx .C .idl .des - -.cpp.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.cc.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.cxx.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.C.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.c.o: - $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) $(INCPATH) - -.idl.cpp: - $(IDLCC) --ns=$(*F) -o $* $< $(CPPFLAGS) $(INCPATH) - -############# -###cpp 支持 -%info : % - ccp $< -############# - - -#__$MAKEFILE_RULES$__ - - -###############编译目标 -all : target output -.PHONY : all clean main - -target : main - -test : - `for x in ;do ./$$x;done` - -comake : - -make clean - -comake - -#-include $(MAKDEP) - -#----------------build target : main-------------------- - -main : CC := gcc -main : CXX := g++ -main : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -main : CPPFLAGS := -main : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -main : INCPATH := -I. -I../output/include $(DEP_INCPATH) -main : LDLIBS := -lidlcompiler $(DEP_LDLIBS) -main : LDFLAGS := -L../output/lib $(DEP_LDFLAGS) -main : LINKFLAGS := -rdynamic - -main_SOURCES := $(wildcard comake_autogen.cpp main.cpp) -#main_HEADERS := $(wildcard *.h) -main_HEADERS := *.h -main_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -main_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(main_IDLSRC)) -main_IDLSRCH := $(patsubst %.idl,%.h, $(main_IDLSRC)) -main_CONFDES := $(wildcard __$CONFDES$_VALUE$__ main.des) -main_CONFRANGE := $(patsubst %.des,%.range, $(main_CONFDES)) -main_OBJS := $(main_IDLSRC:.idl=.o) -main_OBJS += $(main_SOURCES:.c=.o) -main_OBJS := $(main_OBJS:.cc=.o) -main_OBJS := $(main_OBJS:.cpp=.o) -main_OBJS := $(main_OBJS:.cxx=.o) -main_OBJS := $(main_OBJS:.C=.o) -main_OBJS := $(main_OBJS:.idl=.o) -main_OBJS := $(main_OBJS:.yacc=.o) -main_OBJS := $(main_OBJS:.lex=.o) -main : $(main_OBJS) - `for x in $(main_CONFDES);do cpp -C -o main.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp main.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define main_output - mkdir -p output - cp -rf main output - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define main_clean - -rm -rf $(main_OBJS) $(main_IDLSRCCPP) $(main_IDLSRCH) main.range conf/main.range - -rm -rf main - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define main_ccpc - ccp $(main_SOURCES) --formatter vim -endef - - -define main_cov - -endef - - - - -#---------------------end build target : main------------------ - -define _output - $(main_output) -endef - - -define _clean - $(main_clean) -endef - - -ccpc : - $(main_ccpc) - -cov : - cov01 -1 - make clean - make - cov01 -0 - - - -output : main - $(_output) - -$(MAKDEP) : comake_autogen.cpp main.cpp - -$(CC) -MG -MM $(CPPFLAGS) $(INCPATH) $(DEP_INCPATH) $^ > $@ - - -clean: - $(_clean) - rm -rf $(MAKDEP) - - diff --git a/configure/compiler/testcase/abnor_array b/configure/compiler/testcase/abnor_array deleted file mode 100755 index 8d34e06ada80783a52bf6a394f94b83774dc6921..0000000000000000000000000000000000000000 Binary files a/configure/compiler/testcase/abnor_array and /dev/null differ diff --git a/configure/compiler/testcase/abnor_array.cpp b/configure/compiler/testcase/abnor_array.cpp deleted file mode 100644 index d8ac4d74d6b60568cb47f996b68ce7b3da5ba744..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/abnor_array.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "abnor_array.h" - -static TestAbnorArray suite_TestAbnorArray; - -static CxxTest::List Tests_TestAbnorArray = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_TestAbnorArray( "abnor_array.h", 19, "TestAbnorArray", suite_TestAbnorArray, Tests_TestAbnorArray ); - -static class TestDescription_TestAbnorArray_test_abnor_array : public CxxTest::RealTestDescription { -public: - TestDescription_TestAbnorArray_test_abnor_array() : CxxTest::RealTestDescription( Tests_TestAbnorArray, suiteDescription_TestAbnorArray, 22, "test_abnor_array" ) {} - void runTest() { suite_TestAbnorArray.test_abnor_array(); } -} testDescription_TestAbnorArray_test_abnor_array; - -#include diff --git a/configure/compiler/testcase/abnor_group.cpp b/configure/compiler/testcase/abnor_group.cpp deleted file mode 100644 index 80bcabab94c937d127521462ad085693efba177a..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/abnor_group.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "abnor_group.h" - -static TestAbnorGroup suite_TestAbnorGroup; - -static CxxTest::List Tests_TestAbnorGroup = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_TestAbnorGroup( "abnor_group.h", 20, "TestAbnorGroup", suite_TestAbnorGroup, Tests_TestAbnorGroup ); - -static class TestDescription_TestAbnorGroup_test_abnor_group : public CxxTest::RealTestDescription { -public: - TestDescription_TestAbnorGroup_test_abnor_group() : CxxTest::RealTestDescription( Tests_TestAbnorGroup, suiteDescription_TestAbnorGroup, 23, "test_abnor_group" ) {} - void runTest() { suite_TestAbnorGroup.test_abnor_group(); } -} testDescription_TestAbnorGroup_test_abnor_group; - -#include diff --git a/configure/compiler/testcase/abnor_var.cpp b/configure/compiler/testcase/abnor_var.cpp deleted file mode 100644 index 1edb59fa602e3c9edad8dfa273cd00455be4de70..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/abnor_var.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "abnor_var.h" - -static TestAbnorVar suite_TestAbnorVar; - -static CxxTest::List Tests_TestAbnorVar = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_TestAbnorVar( "abnor_var.h", 20, "TestAbnorVar", suite_TestAbnorVar, Tests_TestAbnorVar ); - -static class TestDescription_TestAbnorVar_test_abnor_var : public CxxTest::RealTestDescription { -public: - TestDescription_TestAbnorVar_test_abnor_var() : CxxTest::RealTestDescription( Tests_TestAbnorVar, suiteDescription_TestAbnorVar, 23, "test_abnor_var" ) {} - void runTest() { suite_TestAbnorVar.test_abnor_var(); } -} testDescription_TestAbnorVar_test_abnor_var; - -#include diff --git a/configure/compiler/testcase/cmd.def b/configure/compiler/testcase/cmd.def deleted file mode 100644 index 65b59340b5c33e1a7efecc41e043050b4796a475..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/cmd.def +++ /dev/null @@ -1,7 +0,0 @@ -struct a //asdfasdfsadf -{ - int32_t ab = range(0);//adsf - int32_t c = a(); //adf - int32_t def; - //dasdf -}; diff --git a/configure/compiler/testcase/create_bak.sh b/configure/compiler/testcase/create_bak.sh deleted file mode 100755 index d9b3a9c391bc9e04c673f8809980797631e248a8..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/create_bak.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -if [ $# -eq 1 ] -then - i=$1 - bak=${i%%.def}.bak - ./main $i 1>$bak -else - for i in *.def - do - bak=${i%%.def}.bak - ./main $i 1>$bak - done -fi - diff --git a/configure/compiler/testcase/error.bak b/configure/compiler/testcase/error.bak deleted file mode 100644 index 208ef99727c829991e86fbc2f224b8a8567b777e..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/error.bak +++ /dev/null @@ -1,14 +0,0 @@ -idl groups: - group:a_t,overwrited from a_t -idl vars: - var:a,type:int32_t - func:array - arg:0 - var:b,type:int32_t - var:c,type:nonetype -idl error: - error.def:2:array size -10 is invalid - error.def:6:var 'b' already exists at error.def:5 - error.def:9:type 'nonetype' doesn't exist - error.def:15:groups 'a_t' already exists at error.def:12 - error.def:20:syntax error, unexpected ID, expecting INTEGER or LITERAL_STRING before char:'a' diff --git a/configure/compiler/testcase/error.def b/configure/compiler/testcase/error.def deleted file mode 100644 index 28fdf899483e88c7a9d4b62506783ec208c6a36b..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/error.def +++ /dev/null @@ -1,45 +0,0 @@ -#negative num for array -int32_t a[-10]; - -#duplicate var name -int32_t b; -double b; - -#no type -nonetype c; - -#duplicate struct name -struct a_t -{ -}; -struct a_t -{ -}; - -#duplicate cf -int32_t d=fn(a),fn(b); - -#duplicate struct field -struct b_t -{ - int32_t a; - int32_t a; -}; - -#duplicate struct field with non type -struct c_t -{ - nonetype a; -}; - -#overwrite -d_t overwrite nonestruct -{ -}; - -#overwrite non field -e_t overwrite a_t -{ - int32_t a; -}; - diff --git a/configure/compiler/testcase/gen b/configure/compiler/testcase/gen deleted file mode 100755 index ddcf5c714c2a17849708ac62db8b8a7f8dac88d5..0000000000000000000000000000000000000000 Binary files a/configure/compiler/testcase/gen and /dev/null differ diff --git a/configure/compiler/testcase/gen.c b/configure/compiler/testcase/gen.c deleted file mode 100644 index 7cbb2096e40513ebb20b0f68fc4502f43305319e..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/gen.c +++ /dev/null @@ -1,87 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: gen.c,v 1.1 2008/12/30 03:39:55 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file gen.cpp - * @author xiaowei(com@baidu.com) - * @date 2008/11/21 18:22:15 - * @version $Revision: 1.1 $ - * @brief - * - **/ - -#include -#include -#include - -int main() -{ - std::cout<<"#include "<"< -1e5 )"<>2)<<1+3<<2*(1<<2)" - }; - std::vector vec(vecs, vecs+sizeof(vecs)/sizeof(vecs[0])); - - std::vector type; - type.push_back("int"); - type.push_back("long"); - //type.push_back("char"); - type.push_back("unsigned int"); - type.push_back("unsigned long"); - type.push_back("long long"); - type.push_back("unsigned long long"); - - for (int tp=0; tp<(int)type.size(); ++tp) { - for (int i=0; i<(int)vec.size(); ++i) { - std::cout<<"\t"<<"void test" <<"_case"< -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "gen.h" - -static test_expr_suit suite_test_expr_suit; - -static CxxTest::List Tests_test_expr_suit = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_test_expr_suit( "gen.h", 5, "test_expr_suit", suite_test_expr_suit, Tests_test_expr_suit ); - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 8, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 13, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 18, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 23, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 28, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 33, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 38, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 43, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 48, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 53, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 58, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 63, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 68, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 73, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 78, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 83, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 88, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 93, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -static class TestDescription_test_expr_suit_test_case0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 98, "test_case0" ) {} - void runTest() { suite_test_expr_suit.test_case0(); } -} testDescription_test_expr_suit_test_case0; - -static class TestDescription_test_expr_suit_test_case1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 103, "test_case1" ) {} - void runTest() { suite_test_expr_suit.test_case1(); } -} testDescription_test_expr_suit_test_case1; - -static class TestDescription_test_expr_suit_test_case2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 108, "test_case2" ) {} - void runTest() { suite_test_expr_suit.test_case2(); } -} testDescription_test_expr_suit_test_case2; - -#include diff --git a/configure/compiler/testcase/group.cpp b/configure/compiler/testcase/group.cpp deleted file mode 100644 index 4a210899dbb46efb4bb9cee152354453d3cdc1f3..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/group.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "group.h" - -static TestGroup suite_TestGroup; - -static CxxTest::List Tests_TestGroup = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_TestGroup( "group.h", 20, "TestGroup", suite_TestGroup, Tests_TestGroup ); - -static class TestDescription_TestGroup_testgroup : public CxxTest::RealTestDescription { -public: - TestDescription_TestGroup_testgroup() : CxxTest::RealTestDescription( Tests_TestGroup, suiteDescription_TestGroup, 23, "testgroup" ) {} - void runTest() { suite_TestGroup.testgroup(); } -} testDescription_TestGroup_testgroup; - -#include diff --git a/configure/compiler/testcase/main.cpp b/configure/compiler/testcase/main.cpp deleted file mode 100755 index e9c61a58c1921388814065bc8d88b356505505b8..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- c++ -*- - copy[write] by dirlt(zhang_yan@baidu.com) - date time:Mon Nov 17 17:08:24 CST 2008 - file name:main.cpp */ - -#include -#include -#include "idl_conf_if.h" -using namespace confIDL; - -int main(int argc,char **argv) -{ - int i; - char *file; - idl_t *idl_data; - for(i=1;i -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include diff --git a/configure/compiler/testcase/syntax.bak b/configure/compiler/testcase/syntax.bak deleted file mode 100644 index 6573a66e564b09a99856a89ead5deb4c3e91b2c2..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/syntax.bak +++ /dev/null @@ -1,52 +0,0 @@ -idl groups: - group:a_t,overwrited from a_t - group:b_t,overwrited from b_t - var:a,type:int32_t - group:c_t,overwrited from b_t - var:a,type:double - func:fn - arg:1 -idl vars: - var:myraw,type:raw - var:a,type:char - var:b,type:uchar - var:c,type:int8_t - var:d,type:uint8_t - var:e,type:int16_t - var:f,type:uint16_t - var:g,type:int32_t - var:h,type:uint32_t - var:i,type:int64_t - var:j,type:uint64_t - var:k,type:int32_t - func:array - arg:0 - var:l,type:int32_t - func:array - arg:2 - var:o,type:int32_t - func:array - arg:50 - arg:50 - var:p,type:int32_t - func:array - arg:0 - arg:50 - var:r,type:int32_t - func:fn - var:s,type:int32_t - func:fn - arg:"a" - var:t,type:int32_t - func:fn - arg:"a" - func:fn1 - arg:"b" - var:u,type:int32_t - func:fn - arg:"a" - arg:"b" - var:w,type:string - func:default - arg:"hello,world" -idl error: diff --git a/configure/compiler/testcase/syntax.def b/configure/compiler/testcase/syntax.def deleted file mode 100644 index 55bdd8d3736c76128e2e6e769be333c6ef8f1170..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/syntax.def +++ /dev/null @@ -1,55 +0,0 @@ -///* variable type */ -raw myraw; -char a; -uchar b; - -int8_t c; -uint8_t d; - -int16_t e; -uint16_t f; - -int32_t g; -uint32_t h; - -int64_t i; -uint64_t j; - -///* variable array */ -int32_t k[]; -int32_t l[2]; - -///* multi array */ -int32_t o[50][50]; -int32_t p[][50]; - -///* constraint32_t function */ -int32_t r=fn(); -int32_t s=fn("a");//lala -//adsfsadf - -///* multi constraint32_t function */ -int32_t t=fn("a"),fn1("b"); -//adsf - -///* multi param */ -int32_t u=fn("a","b"); - -string w=default("hello,world"); - -///group -struct a_t -{ -}; -struct b_t -{ - int32_t a; -}; - -///group overwrite -c_t overwrite b_t -{ - double a=fn(1); #comment test here -}; - -#comment test here diff --git a/configure/compiler/testcase/test.sh b/configure/compiler/testcase/test.sh deleted file mode 100755 index 741f34560a97a9d0b3aadf2c73ce697b06284b5d..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/test.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -for i in *.def -do - bak=${i%%.def}.bak - ./main $i 1>$bak.2 - diff $bak $bak.2 1>/dev/null 2>/dev/null - if [ $? -ne 0 ] - then - echo "$i doesn't make the ccheck++ pass" - else - rm -rf $bak.2 - fi -done - diff --git a/configure/compiler/testcase/test_expr.cpp b/configure/compiler/testcase/test_expr.cpp deleted file mode 100644 index 8dd341268a0d66bab75f98fcc6544b4908b82a47..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/test_expr.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "test_expr.h" - -static test_normal suite_test_normal; - -static CxxTest::List Tests_test_normal = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_test_normal( "test_expr.h", 29, "test_normal", suite_test_normal, Tests_test_normal ); - -static class TestDescription_test_normal_test_test1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_normal_test_test1() : CxxTest::RealTestDescription( Tests_test_normal, suiteDescription_test_normal, 32, "test_test1" ) {} - void runTest() { suite_test_normal.test_test1(); } -} testDescription_test_normal_test_test1; - -static class TestDescription_test_normal_test_test2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_normal_test_test2() : CxxTest::RealTestDescription( Tests_test_normal, suiteDescription_test_normal, 45, "test_test2" ) {} - void runTest() { suite_test_normal.test_test2(); } -} testDescription_test_normal_test_test2; - -static class TestDescription_test_normal_test_test3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_normal_test_test3() : CxxTest::RealTestDescription( Tests_test_normal, suiteDescription_test_normal, 56, "test_test3" ) {} - void runTest() { suite_test_normal.test_test3(); } -} testDescription_test_normal_test_test3; - -static class TestDescription_test_normal_test_test4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_normal_test_test4() : CxxTest::RealTestDescription( Tests_test_normal, suiteDescription_test_normal, 67, "test_test4" ) {} - void runTest() { suite_test_normal.test_test4(); } -} testDescription_test_normal_test_test4; - -static class TestDescription_test_normal_test_fail : public CxxTest::RealTestDescription { -public: - TestDescription_test_normal_test_fail() : CxxTest::RealTestDescription( Tests_test_normal, suiteDescription_test_normal, 83, "test_fail" ) {} - void runTest() { suite_test_normal.test_fail(); } -} testDescription_test_normal_test_fail; - -static class TestDescription_test_normal_test_double2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_normal_test_double2() : CxxTest::RealTestDescription( Tests_test_normal, suiteDescription_test_normal, 95, "test_double2" ) {} - void runTest() { suite_test_normal.test_double2(); } -} testDescription_test_normal_test_double2; - -#include diff --git a/configure/compiler/testcase/test_expr.h b/configure/compiler/testcase/test_expr.h deleted file mode 100644 index 83d5b6c35bec848542efb9e66ce9fd2e3336486a..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/test_expr.h +++ /dev/null @@ -1,110 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_expr.h,v 1.1 2008/12/30 03:39:55 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file normal.h - * @author xiaowei(com@baidu.com) - * @date 2008/11/21 14:11:44 - * @version $Revision: 1.1 $ - * @brief - * - **/ - - -#ifndef __NORMAL_H_ -#define __NORMAL_H_ - -#include -#include "../src/expr.h" -#include - -#define DEQ(x, y) ( ((x)-(y)) < 1e5 || ((x)-(y)) > -1e5 ) - -class test_normal : public CxxTest::TestSuite -{ -public: - void test_test1() - { - int val = 0; - TSM_ASSERT("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT("", val == 1+1); - - TSM_ASSERT("", xarthop::calc(" 1+ 1 ", &val) == 0); - TSM_ASSERT("", val == 1+1); - - TSM_ASSERT("", xarthop::calc(" 1 + 3 - 2 ", &val) == 0); - TSM_ASSERT("", val == 1+3-2); - } - - void test_test2() - { - int val = 0; - TSM_ASSERT("", xarthop::calc("1+2/3-2*4", &val) == 0); - //std::cout<<"-------"<>3", &val) == 0); - //std::cout<<"---------------"<<(324/(1<<2)+234>>3)<<" = "<>3); - - TSM_ASSERT("", xarthop::calc("1<<2>>3<<4>>3<<3", &val) == 0); - //std::cout<<"-----------------"<<(1<<2>>4<<4>>3<<3)<<"------"<>4<<4>>3<<3); - - TSM_ASSERT("", xarthop::calc("1*23+3*(23+23/2)+1/325", &val) == 0); - TSM_ASSERT("", val == 1*23+3*(23+23/2)+1/325); - } - - - void test_fail() - { - double val = 0; - TSM_ASSERT("", xarthop::calc("324/(1<<2)+234>>3", &val) != 0); - TSM_ASSERT("", xarthop::calc("1<<2>>3<<4>>3<<3", &val) != 0); - TSM_ASSERT("", xarthop::calc("", &val) != 0); - TSM_ASSERT("", xarthop::calc("adsfsdf", &val) != 0); - TSM_ASSERT("", xarthop::calc("123124..123", &val) != 0); - TSM_ASSERT("", xarthop::calc("123a+234", &val) != 0); - TSM_ASSERT("", xarthop::calc("1231+(123)+2", &val) == 0); - } - - void test_double2() - { - double val = 0; - TSM_ASSERT("", xarthop::calc("32.23 / 1.23 + 28 * (23.2+32) + 3-2 /21", &val) == 0); - TSM_ASSERT("", DEQ(val, 32.23 / 1.23 + 28 * (23.2+32) + 3-2 /21)); - - TSM_ASSERT("", xarthop::calc("32.2/1.32+(23.1-23.4)*6+13.2", &val) == 0); - TSM_ASSERT("", DEQ(val, 32.2/1.32+(23.1-23.4)*6+13.2)); - } -}; - - - -#endif //__NORMAL_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */ diff --git a/configure/compiler/testcase/test_gen.cpp b/configure/compiler/testcase/test_gen.cpp deleted file mode 100644 index 5b7f64292d3191e134fde31b3f8b8f5995f30836..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/test_gen.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "test_gen.h" - -static test_expr_suit suite_test_expr_suit; - -static CxxTest::List Tests_test_expr_suit = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_test_expr_suit( "test_gen.h", 5, "test_expr_suit", suite_test_expr_suit, Tests_test_expr_suit ); - -static class TestDescription_test_expr_suit_test_case0_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 8, "test_case0_0" ) {} - void runTest() { suite_test_expr_suit.test_case0_0(); } -} testDescription_test_expr_suit_test_case0_0; - -static class TestDescription_test_expr_suit_test_case1_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 13, "test_case1_0" ) {} - void runTest() { suite_test_expr_suit.test_case1_0(); } -} testDescription_test_expr_suit_test_case1_0; - -static class TestDescription_test_expr_suit_test_case2_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 18, "test_case2_0" ) {} - void runTest() { suite_test_expr_suit.test_case2_0(); } -} testDescription_test_expr_suit_test_case2_0; - -static class TestDescription_test_expr_suit_test_case3_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case3_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 23, "test_case3_0" ) {} - void runTest() { suite_test_expr_suit.test_case3_0(); } -} testDescription_test_expr_suit_test_case3_0; - -static class TestDescription_test_expr_suit_test_case4_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case4_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 28, "test_case4_0" ) {} - void runTest() { suite_test_expr_suit.test_case4_0(); } -} testDescription_test_expr_suit_test_case4_0; - -static class TestDescription_test_expr_suit_test_case5_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case5_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 33, "test_case5_0" ) {} - void runTest() { suite_test_expr_suit.test_case5_0(); } -} testDescription_test_expr_suit_test_case5_0; - -static class TestDescription_test_expr_suit_test_case6_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case6_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 38, "test_case6_0" ) {} - void runTest() { suite_test_expr_suit.test_case6_0(); } -} testDescription_test_expr_suit_test_case6_0; - -static class TestDescription_test_expr_suit_test_case7_0 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case7_0() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 43, "test_case7_0" ) {} - void runTest() { suite_test_expr_suit.test_case7_0(); } -} testDescription_test_expr_suit_test_case7_0; - -static class TestDescription_test_expr_suit_test_case0_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 48, "test_case0_1" ) {} - void runTest() { suite_test_expr_suit.test_case0_1(); } -} testDescription_test_expr_suit_test_case0_1; - -static class TestDescription_test_expr_suit_test_case1_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 53, "test_case1_1" ) {} - void runTest() { suite_test_expr_suit.test_case1_1(); } -} testDescription_test_expr_suit_test_case1_1; - -static class TestDescription_test_expr_suit_test_case2_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 58, "test_case2_1" ) {} - void runTest() { suite_test_expr_suit.test_case2_1(); } -} testDescription_test_expr_suit_test_case2_1; - -static class TestDescription_test_expr_suit_test_case3_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case3_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 63, "test_case3_1" ) {} - void runTest() { suite_test_expr_suit.test_case3_1(); } -} testDescription_test_expr_suit_test_case3_1; - -static class TestDescription_test_expr_suit_test_case4_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case4_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 68, "test_case4_1" ) {} - void runTest() { suite_test_expr_suit.test_case4_1(); } -} testDescription_test_expr_suit_test_case4_1; - -static class TestDescription_test_expr_suit_test_case5_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case5_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 73, "test_case5_1" ) {} - void runTest() { suite_test_expr_suit.test_case5_1(); } -} testDescription_test_expr_suit_test_case5_1; - -static class TestDescription_test_expr_suit_test_case6_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case6_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 78, "test_case6_1" ) {} - void runTest() { suite_test_expr_suit.test_case6_1(); } -} testDescription_test_expr_suit_test_case6_1; - -static class TestDescription_test_expr_suit_test_case7_1 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case7_1() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 83, "test_case7_1" ) {} - void runTest() { suite_test_expr_suit.test_case7_1(); } -} testDescription_test_expr_suit_test_case7_1; - -static class TestDescription_test_expr_suit_test_case0_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 88, "test_case0_2" ) {} - void runTest() { suite_test_expr_suit.test_case0_2(); } -} testDescription_test_expr_suit_test_case0_2; - -static class TestDescription_test_expr_suit_test_case1_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 93, "test_case1_2" ) {} - void runTest() { suite_test_expr_suit.test_case1_2(); } -} testDescription_test_expr_suit_test_case1_2; - -static class TestDescription_test_expr_suit_test_case2_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 98, "test_case2_2" ) {} - void runTest() { suite_test_expr_suit.test_case2_2(); } -} testDescription_test_expr_suit_test_case2_2; - -static class TestDescription_test_expr_suit_test_case3_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case3_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 103, "test_case3_2" ) {} - void runTest() { suite_test_expr_suit.test_case3_2(); } -} testDescription_test_expr_suit_test_case3_2; - -static class TestDescription_test_expr_suit_test_case4_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case4_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 108, "test_case4_2" ) {} - void runTest() { suite_test_expr_suit.test_case4_2(); } -} testDescription_test_expr_suit_test_case4_2; - -static class TestDescription_test_expr_suit_test_case5_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case5_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 113, "test_case5_2" ) {} - void runTest() { suite_test_expr_suit.test_case5_2(); } -} testDescription_test_expr_suit_test_case5_2; - -static class TestDescription_test_expr_suit_test_case6_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case6_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 118, "test_case6_2" ) {} - void runTest() { suite_test_expr_suit.test_case6_2(); } -} testDescription_test_expr_suit_test_case6_2; - -static class TestDescription_test_expr_suit_test_case7_2 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case7_2() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 123, "test_case7_2" ) {} - void runTest() { suite_test_expr_suit.test_case7_2(); } -} testDescription_test_expr_suit_test_case7_2; - -static class TestDescription_test_expr_suit_test_case0_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 128, "test_case0_3" ) {} - void runTest() { suite_test_expr_suit.test_case0_3(); } -} testDescription_test_expr_suit_test_case0_3; - -static class TestDescription_test_expr_suit_test_case1_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 133, "test_case1_3" ) {} - void runTest() { suite_test_expr_suit.test_case1_3(); } -} testDescription_test_expr_suit_test_case1_3; - -static class TestDescription_test_expr_suit_test_case2_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 138, "test_case2_3" ) {} - void runTest() { suite_test_expr_suit.test_case2_3(); } -} testDescription_test_expr_suit_test_case2_3; - -static class TestDescription_test_expr_suit_test_case3_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case3_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 143, "test_case3_3" ) {} - void runTest() { suite_test_expr_suit.test_case3_3(); } -} testDescription_test_expr_suit_test_case3_3; - -static class TestDescription_test_expr_suit_test_case4_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case4_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 148, "test_case4_3" ) {} - void runTest() { suite_test_expr_suit.test_case4_3(); } -} testDescription_test_expr_suit_test_case4_3; - -static class TestDescription_test_expr_suit_test_case5_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case5_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 153, "test_case5_3" ) {} - void runTest() { suite_test_expr_suit.test_case5_3(); } -} testDescription_test_expr_suit_test_case5_3; - -static class TestDescription_test_expr_suit_test_case6_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case6_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 158, "test_case6_3" ) {} - void runTest() { suite_test_expr_suit.test_case6_3(); } -} testDescription_test_expr_suit_test_case6_3; - -static class TestDescription_test_expr_suit_test_case7_3 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case7_3() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 163, "test_case7_3" ) {} - void runTest() { suite_test_expr_suit.test_case7_3(); } -} testDescription_test_expr_suit_test_case7_3; - -static class TestDescription_test_expr_suit_test_case0_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 168, "test_case0_4" ) {} - void runTest() { suite_test_expr_suit.test_case0_4(); } -} testDescription_test_expr_suit_test_case0_4; - -static class TestDescription_test_expr_suit_test_case1_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 173, "test_case1_4" ) {} - void runTest() { suite_test_expr_suit.test_case1_4(); } -} testDescription_test_expr_suit_test_case1_4; - -static class TestDescription_test_expr_suit_test_case2_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 178, "test_case2_4" ) {} - void runTest() { suite_test_expr_suit.test_case2_4(); } -} testDescription_test_expr_suit_test_case2_4; - -static class TestDescription_test_expr_suit_test_case3_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case3_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 183, "test_case3_4" ) {} - void runTest() { suite_test_expr_suit.test_case3_4(); } -} testDescription_test_expr_suit_test_case3_4; - -static class TestDescription_test_expr_suit_test_case4_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case4_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 188, "test_case4_4" ) {} - void runTest() { suite_test_expr_suit.test_case4_4(); } -} testDescription_test_expr_suit_test_case4_4; - -static class TestDescription_test_expr_suit_test_case5_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case5_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 193, "test_case5_4" ) {} - void runTest() { suite_test_expr_suit.test_case5_4(); } -} testDescription_test_expr_suit_test_case5_4; - -static class TestDescription_test_expr_suit_test_case6_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case6_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 198, "test_case6_4" ) {} - void runTest() { suite_test_expr_suit.test_case6_4(); } -} testDescription_test_expr_suit_test_case6_4; - -static class TestDescription_test_expr_suit_test_case7_4 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case7_4() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 203, "test_case7_4" ) {} - void runTest() { suite_test_expr_suit.test_case7_4(); } -} testDescription_test_expr_suit_test_case7_4; - -static class TestDescription_test_expr_suit_test_case0_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case0_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 208, "test_case0_5" ) {} - void runTest() { suite_test_expr_suit.test_case0_5(); } -} testDescription_test_expr_suit_test_case0_5; - -static class TestDescription_test_expr_suit_test_case1_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case1_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 213, "test_case1_5" ) {} - void runTest() { suite_test_expr_suit.test_case1_5(); } -} testDescription_test_expr_suit_test_case1_5; - -static class TestDescription_test_expr_suit_test_case2_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case2_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 218, "test_case2_5" ) {} - void runTest() { suite_test_expr_suit.test_case2_5(); } -} testDescription_test_expr_suit_test_case2_5; - -static class TestDescription_test_expr_suit_test_case3_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case3_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 223, "test_case3_5" ) {} - void runTest() { suite_test_expr_suit.test_case3_5(); } -} testDescription_test_expr_suit_test_case3_5; - -static class TestDescription_test_expr_suit_test_case4_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case4_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 228, "test_case4_5" ) {} - void runTest() { suite_test_expr_suit.test_case4_5(); } -} testDescription_test_expr_suit_test_case4_5; - -static class TestDescription_test_expr_suit_test_case5_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case5_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 233, "test_case5_5" ) {} - void runTest() { suite_test_expr_suit.test_case5_5(); } -} testDescription_test_expr_suit_test_case5_5; - -static class TestDescription_test_expr_suit_test_case6_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case6_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 238, "test_case6_5" ) {} - void runTest() { suite_test_expr_suit.test_case6_5(); } -} testDescription_test_expr_suit_test_case6_5; - -static class TestDescription_test_expr_suit_test_case7_5 : public CxxTest::RealTestDescription { -public: - TestDescription_test_expr_suit_test_case7_5() : CxxTest::RealTestDescription( Tests_test_expr_suit, suiteDescription_test_expr_suit, 243, "test_case7_5" ) {} - void runTest() { suite_test_expr_suit.test_case7_5(); } -} testDescription_test_expr_suit_test_case7_5; - -#include diff --git a/configure/compiler/testcase/test_gen.h b/configure/compiler/testcase/test_gen.h deleted file mode 100644 index f6c2db91793a1c65ba965e7379d9b2d2e588d917..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/test_gen.h +++ /dev/null @@ -1,248 +0,0 @@ -#include -#include "../src/expr.h" -#include -#define DEQ(x, y) ( ((x)-(y)) < 1e5 || ((x)-(y)) > -1e5 ) -class test_expr_suit : public CxxTest::TestSuite -{ -public: - void test_case0_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT ("", val == (int)(1+1)); - } - void test_case1_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("123124+32", &val) == 0); - TSM_ASSERT ("", val == (int)(123124+32)); - } - void test_case2_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("1*234/32+23*(1+23)", &val) == 0); - TSM_ASSERT ("", val == (int)(1*234/32+23*(1+23))); - } - void test_case3_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("1+2/3-2*4", &val) == 0); - TSM_ASSERT ("", val == (int)(1+2/3-2*4)); - } - void test_case4_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("1+3234234/2348*34+2", &val) == 0); - TSM_ASSERT ("", val == (int)(1+3234234/2348*34+2)); - } - void test_case5_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23", &val) == 0); - TSM_ASSERT ("", val == (int)(23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23)); - } - void test_case6_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("23.2/234.2+234.2", &val) == 0); - TSM_ASSERT ("", val == (int)(23.2/234.2+234.2)); - } - void test_case7_0() { - int val = 0; - TSM_ASSERT ("", xarthop::calc("1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2)", &val) == 0); - TSM_ASSERT ("", val == (int)(1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2))); - } - void test_case0_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT ("", val == (long)(1+1)); - } - void test_case1_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("123124+32", &val) == 0); - TSM_ASSERT ("", val == (long)(123124+32)); - } - void test_case2_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("1*234/32+23*(1+23)", &val) == 0); - TSM_ASSERT ("", val == (long)(1*234/32+23*(1+23))); - } - void test_case3_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("1+2/3-2*4", &val) == 0); - TSM_ASSERT ("", val == (long)(1+2/3-2*4)); - } - void test_case4_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("1+3234234/2348*34+2", &val) == 0); - TSM_ASSERT ("", val == (long)(1+3234234/2348*34+2)); - } - void test_case5_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23", &val) == 0); - TSM_ASSERT ("", val == (long)(23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23)); - } - void test_case6_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("23.2/234.2+234.2", &val) == 0); - TSM_ASSERT ("", val == (long)(23.2/234.2+234.2)); - } - void test_case7_1() { - long val = 0; - TSM_ASSERT ("", xarthop::calc("1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2)", &val) == 0); - TSM_ASSERT ("", val == (long)(1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2))); - } - void test_case0_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(1+1)); - } - void test_case1_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("123124+32", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(123124+32)); - } - void test_case2_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("1*234/32+23*(1+23)", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(1*234/32+23*(1+23))); - } - void test_case3_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("1+2/3-2*4", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(1+2/3-2*4)); - } - void test_case4_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("1+3234234/2348*34+2", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(1+3234234/2348*34+2)); - } - void test_case5_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23)); - } - void test_case6_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("23.2/234.2+234.2", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(23.2/234.2+234.2)); - } - void test_case7_2() { - unsigned int val = 0; - TSM_ASSERT ("", xarthop::calc("1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2)", &val) == 0); - TSM_ASSERT ("", val == (unsigned int)(1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2))); - } - void test_case0_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(1+1)); - } - void test_case1_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("123124+32", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(123124+32)); - } - void test_case2_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("1*234/32+23*(1+23)", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(1*234/32+23*(1+23))); - } - void test_case3_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("1+2/3-2*4", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(1+2/3-2*4)); - } - void test_case4_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("1+3234234/2348*34+2", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(1+3234234/2348*34+2)); - } - void test_case5_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23)); - } - void test_case6_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("23.2/234.2+234.2", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(23.2/234.2+234.2)); - } - void test_case7_3() { - unsigned long val = 0; - TSM_ASSERT ("", xarthop::calc("1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2)", &val) == 0); - TSM_ASSERT ("", val == (unsigned long)(1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2))); - } - void test_case0_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT ("", val == (long long)(1+1)); - } - void test_case1_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("123124+32", &val) == 0); - TSM_ASSERT ("", val == (long long)(123124+32)); - } - void test_case2_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("1*234/32+23*(1+23)", &val) == 0); - TSM_ASSERT ("", val == (long long)(1*234/32+23*(1+23))); - } - void test_case3_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+2/3-2*4", &val) == 0); - TSM_ASSERT ("", val == (long long)(1+2/3-2*4)); - } - void test_case4_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+3234234/2348*34+2", &val) == 0); - TSM_ASSERT ("", val == (long long)(1+3234234/2348*34+2)); - } - void test_case5_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23", &val) == 0); - TSM_ASSERT ("", val == (long long)(23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23)); - } - void test_case6_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("23.2/234.2+234.2", &val) == 0); - TSM_ASSERT ("", val == (long long)(23.2/234.2+234.2)); - } - void test_case7_4() { - long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2)", &val) == 0); - TSM_ASSERT ("", val == (long long)(1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2))); - } - void test_case0_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+1", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(1+1)); - } - void test_case1_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("123124+32", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(123124+32)); - } - void test_case2_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("1*234/32+23*(1+23)", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(1*234/32+23*(1+23))); - } - void test_case3_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+2/3-2*4", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(1+2/3-2*4)); - } - void test_case4_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+3234234/2348*34+2", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(1+3234234/2348*34+2)); - } - void test_case5_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(23/(234/23+3242*(3423+2)/234+1)*23+2342+23*32/23)); - } - void test_case6_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("23.2/234.2+234.2", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(23.2/234.2+234.2)); - } - void test_case7_5() { - unsigned long long val = 0; - TSM_ASSERT ("", xarthop::calc("1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2)", &val) == 0); - TSM_ASSERT ("", val == (unsigned long long)(1+23*(1+32/2-23)+232-111<<2+32+(1>>23)<<1+3<<2*(1<<2))); - } -}; diff --git a/configure/compiler/testcase/testcase.deps b/configure/compiler/testcase/testcase.deps deleted file mode 100644 index 9455a814a6ad20b86688fa987e0498be44abd87d..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/testcase.deps +++ /dev/null @@ -1,2 +0,0 @@ -lib2/bsl bsl_1-0-2-5_PD_BL -lib2-64/bsl bsl_1-0-2-5_PD_BL \ No newline at end of file diff --git a/configure/compiler/testcase/testcase.prj b/configure/compiler/testcase/testcase.prj deleted file mode 100644 index b31faa80ad5843b48af6ff3b39f50612121667fa..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/testcase.prj +++ /dev/null @@ -1,18 +0,0 @@ -########################################################################### -# Automatically generated by comake (1.0.0) 2009-03-05 13:56:58 # -########################################################################### -WORKROOT = ../../../../ -INCPATH = . ../output/include -LDFLAGS = ../output/lib -LDLIBS = -lidlcompiler -CONFIG = lib2/bsl -SOURCES += - - -target(main) -{ -SOURCES += \ - main.cpp -} - - diff --git a/configure/compiler/testcase/var.cpp b/configure/compiler/testcase/var.cpp deleted file mode 100644 index 1dfa422dbfedca7a4632c5c2f552d86bb0aeb1a1..0000000000000000000000000000000000000000 --- a/configure/compiler/testcase/var.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* Generated file, do not edit */ - -#ifndef CXXTEST_RUNNING -#define CXXTEST_RUNNING -#endif - -#define _CXXTEST_HAVE_STD -#define _CXXTEST_HAVE_EH -#include -#include -#include -#include -#include - -int main() { - return CxxTest::ErrorPrinter().run(); -} -#include "var.h" - -static TestVar suite_TestVar; - -static CxxTest::List Tests_TestVar = { 0, 0 }; -CxxTest::StaticSuiteDescription suiteDescription_TestVar( "var.h", 20, "TestVar", suite_TestVar, Tests_TestVar ); - -static class TestDescription_TestVar_testvar : public CxxTest::RealTestDescription { -public: - TestDescription_TestVar_testvar() : CxxTest::RealTestDescription( Tests_TestVar, suiteDescription_TestVar, 23, "testvar" ) {} - void runTest() { suite_TestVar.testvar(); } -} testDescription_TestVar_testvar; - -#include diff --git a/configure/configure.prj b/configure/configure.prj deleted file mode 100644 index 598c3c9e9e8f0288ed7aa5a64b05f9b1592fa545..0000000000000000000000000000000000000000 --- a/configure/configure.prj +++ /dev/null @@ -1,43 +0,0 @@ -########################################################################### -# Automatically generated by comake (1.0.0) 2009-03-09 16:54:08 # -########################################################################### -WORKROOT = ../../ -INCPATH = . compiler/src -CONFIG = public/spreg lib2/bsl lib2/ullib -CONFIG += MAKDEP -CC=g++ -SOURCES += \ - FileReloader.cpp\ - ConfigReloader.cpp\ - CmdOption.cpp\ - ConfigError.cpp\ - ConfigGroup.cpp\ - ConfigUnit.cpp\ - Configure.cpp\ - constraint/Constraint.cpp\ - constraint/ConstraintFunction.cpp\ - constraint/cc_default.cpp\ - reader/RawData.cpp\ - reader/Reader.cpp\ - utils/init.cpp\ - utils/trans.cpp\ - cfgext.cpp\ - cfgflag.cpp\ - compiler/src/idl.c\ - compiler/src/idl_lex.c\ - compiler/src/idl_gram.c\ - -target(config) -{ -TEMPLATE = lib -CXXFLAGS += -Woverloaded-virtual -all(output) { -SHELL=mkdir -p output output/lib output/include output/include/utils output/include/constraint -SHELL+=cp -rf *.h output/include/ -SHELL+=cp -rf utils/*.h output/include/utils/ -SHELL+=cp -rf constraint/*.h output/include/constraint/ -SHELL+=cp -rf compiler/src/idl_conf_if.h output/include/ -SHELL+=cp libconfig.a output/lib -} -} - diff --git a/configure/constraint/Constraint.cpp b/configure/constraint/Constraint.cpp deleted file mode 100644 index 70c9803e910360092b0e43312b6efa16c20632cf..0000000000000000000000000000000000000000 --- a/configure/constraint/Constraint.cpp +++ /dev/null @@ -1,374 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: Constraint.cpp,v 1.14 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file Constraint.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/28 21:17:07 - * @version $Revision: 1.14 $ - * @brief - * - **/ -#include -#include "Constraint.h" -#include "ConstraintFunction.h" -#include "utils/cc_utils.h" -#include "idl_conf_if.h" - -#define ARRAY_FUNC "array" -#define CONSTRAINT_FUNC "constraint" -namespace comcfg{ - static const str_t baseType[] = { - CC_CHAR, - CC_UCHAR, - CC_INT16, - CC_UINT16, - CC_INT32, - CC_UINT32, - CC_INT64, - CC_UINT64, - CC_FLOAT, - CC_DOUBLE, - CC_STRING - }; - static std::set baseSet(baseType, baseType + (sizeof(baseType)/sizeof(baseType[0]))); - - //also used by other *.cpp - //like : cfgext.cpp - bool isBaseType(const str_t & s){ - return baseSet.find(s) != baseSet.end(); - } - - //约束函数需要有序执行,这个是比较函数 - class CF_cmp_t{ - public: - int operator()(const confIDL::cons_func_t * a, const confIDL::cons_func_t * b)const{ - return ConstraintLibrary :: getLevel_static(a->func.data) < - ConstraintLibrary :: getLevel_static(b->func.data); - } - }; - - str_t showIDLMsg(const confIDL::meta_t& meta){ - str_t s; - s.appendf("[File:%s Line:%d]=[%s]", meta.file.c_str(), meta.lineno, meta.data.c_str()); - return s; - } - - int Constraint :: printError(){ - if(idl == NULL){ - return -1; - } - LOG(WARNING) << " =========== We have error in Constraint file, see below ============"; - confIDL:: err_list_t :: iterator itr; - for(itr = idl->err_list.begin(); itr != idl->err_list.end(); ++itr){ - LOG(WARNING) << "Constraint Error : " << showIDLMsg((*itr)).c_str(); - } - return 0; - } - - int Constraint :: run(confIDL::idl_t * __idl, Configure * __conf){ - idl = __idl; - conf = __conf; - - if(idl == NULL || conf == NULL){ - return -1; - } - if(idl->retval != 0){ - printError(); - return -1; - } - - confIDL:: var_list_t :: iterator itr; - //=== init === - //排序,保证约束函数有序执行 - for(itr = idl->rc_var_list.begin(); itr != idl->rc_var_list.end(); ++itr){ - (*itr)->cf_list.sort(CF_cmp_t()); - } - - //check all variables - int result = 0; - for(itr = idl->var_list.begin(); itr != idl->var_list.end(); ++itr){ - try{ - if( runVar(*itr, conf) != 0 ){ - throw ConfigException(); - } - } - catch(...){ - result = -1; - } - } - return result; - } - - int Constraint :: runVar(confIDL::var_t* var, ConfigGroup * father, ConfigUnit * self){ - int ret = 0; - - //constraint()约束,重新约束 - confIDL :: cf_map_t :: iterator cfitr = var->cf_map.find(str_t(CONSTRAINT_FUNC)); - if(cfitr != var->cf_map.end() && cfitr->second->arg_vec.size() > 0 ){ - LOG(INFO) << "Re-constraint " << showIDLMsg(var->name).c_str() << " to " << cfitr->second->arg_vec[0]->data.c_str(); - var->type.data = cfitr->second->arg_vec[0]->data; - } - confIDL:: cf_list_t :: const_iterator itr = var->cf_list.begin(); - str_t plog; - for(itr = var->cf_list.begin(); itr != var->cf_list.end(); ++itr){ - plog.append((*itr)->func.data).append("();"); - } - LOG(INFO) << "Config : var[" << showIDLMsg(var->name).c_str() << "], func[" << plog.c_str() << "]"; - for(itr=var->cf_list.begin(); itr != var->cf_list.end(); ++itr){ - if( (*itr)->func.data == str_t(ARRAY_FUNC)){ - try{ - LOG(INFO) << "Pre-process array constraint : " << showIDLMsg(var->name).c_str(); - ret = ConstraintLibrary :: getInstance() -> check(*(*itr), *var, father, self); - }catch(ConfigException){ - //... - LOG(WARNING) << "Pre-process Array error..."; - return -1; - } - if(ret){ - return ret; - } - break; - } - } -#if 1 - const ConfigUnit & myref = (self == NULL) ? (*father)[var->name.data] : *self; - //array - if(myref.selfType() == CONFIG_ARRAY_TYPE){ - const ConfigUnit & arr = myref; - LOG(INFO) << "Constraint : check array elements[" << arr.size() << "]"; - confIDL::var_t xvar = *var; - if(xvar.cf_map.find(str_t(ARRAY_FUNC)) == xvar.cf_map.end()){ - LOG(WARNING) << "Constraint : " << arr[0].info().c_str() << " should not be array! " << showIDLMsg(xvar.name).c_str(); - return -1; - } - xvar.cf_map.erase(str_t(ARRAY_FUNC)); - //xvar.cf_list.erase(xvar.cf_list.begin());//第一个一定是array - for(confIDL::cf_list_t::iterator arritr = xvar.cf_list.begin(); arritr != xvar.cf_list.end(); ++arritr){ - if((*arritr)->func.data == str_t(ARRAY_FUNC)){ - xvar.cf_list.erase(arritr); - break; - } - } - for(int i = 0; i < (int)arr.size(); ++i){ - ConfigUnit * unit = const_cast(&arr[i]); - try{ - if( runVar(&xvar, NULL, unit) != 0 ){ - ret = -1; - } - }catch(...){ - LOG(WARNING) << "Constaint : invalid value " << unit->info().c_str() << " : " << showIDLMsg(xvar.name).c_str(); - ret = -1; - } - } - } -#endif - else { - if( isBaseType(var->type.data) ){ - ret = runKey(var, father, self); - } - else{ - ret = runGroup(var, father, self); - } - } - return ret; - } - - int Constraint :: runGroup(confIDL::var_t* var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "Constaint : working as group : " << showIDLMsg(var->name).c_str() << " [type:" << var->type.data.c_str() << "]"; -#if 0 - if(father != NULL){ - printf("----father----\n"); - father->print(); - } - if(self != NULL){ - printf("----self----\n"); - self->print(); - } -#endif - confIDL:: group_map_t :: iterator mpitr = idl->group_map.find(var->type.data); - int ret = 0; - if( mpitr == idl->group_map.end() ){ // No such type - LOG(WARNING) << "Constraint : error constraint type : " << showIDLMsg(var->type).c_str(); - throw ConfigException(); - } - else{ - //group - ConfigUnit * gunit; - if(father == NULL){ // is an element of array - LOG(INFO) << var->name.data.c_str() << " is one of group array"; - gunit = self; - } - else{ - gunit = const_cast (&((*father)[var->name.data])); - } - - if(gunit == NULL || gunit->selfType() == CONFIG_ERROR_TYPE){ - LOG(INFO) << "No such section in config : " << showIDLMsg(var->name).c_str() << ". try to create."; - gunit = new ConfigGroup(var->name.data.c_str(), father); - father->push(var->name.data, gunit); - } - if(gunit->selfType() != CONFIG_GROUP_TYPE){ - LOG(WARNING) << var->name.data.c_str() << " should be a Group type."; - return -1; - } - confIDL:: var_list_t :: iterator gitr; - for(gitr = mpitr->second->var_list.begin(); gitr != mpitr->second->var_list.end(); ++gitr){ - try{//run constraints for every fields of the group - if( runVar(*gitr, (ConfigGroup *)gunit, NULL) != 0){ - throw ConfigException(); - } - } - catch(...){ - ret = -1; - } - } - } - return ret; - } - - int Constraint :: runKey(confIDL::var_t* var, ConfigGroup * father, ConfigUnit * self){ - //run一开始有对约束函数排序,然后逐一执行 - LOG(INFO) << "Constaint : working as simple type : " << showIDLMsg(var->name).c_str(); -#if 0 - if(father != NULL){ - printf("----father----\n"); - father->print(); - } - if(self != NULL){ - printf("----self----\n"); - self->print(); - } -#endif - int ret = 0; - confIDL:: cf_list_t :: const_iterator itr; - for(itr = var->cf_list.begin(); itr != var->cf_list.end(); ++itr){ - if(var->cf_map.find((*itr)->func.data) == var->cf_map.end()){ - continue; - } - try{ - LOG(INFO) << "Constaint : " << (*itr)->func.data.c_str(); - ret = ConstraintLibrary :: getInstance() -> check(*(*itr), *var, father, self); - if(ret){ - return ret; - } - - ConfigUnit & gunit = const_cast((self == NULL) ? (*father)[var->name.data] : *self); - if(gunit.selfType() == CONFIG_UNIT_TYPE){ - gunit.setConstrainted(true); - } - }catch(ConfigException){ - const ConfigUnit *unit = self; - if(unit == NULL){ - unit = &(*father)[var->name.data]; - } - LOG(WARNING) << "Constaint : invalid value " << unit->info().c_str() << " : " << showIDLMsg(var->name).c_str(); - ret = -1; - } - catch(...){ - LOG(WARNING) << "Constaint : Unknown exception"; - ret = -1; - } - - } - if(ret){ - return ret; - } - const ConfigUnit *unit = self; - if(unit == NULL){ - unit = &(*father)[var->name.data]; - } - ret = runType(var->type.data, *unit); - if(ret){ - LOG(WARNING) << "Constaint : Value is not a valid [" << var->type.data.c_str() << "]type " << unit->info().c_str() << " : " << showIDLMsg(var->name).c_str(); - } - return ret; - } - - - int Constraint :: runType(const str_t& type, const ConfigUnit & unit){ - try{ - if(strcmp(type.c_str(), CC_CHAR) == 0){ - unit.to_char(); - return 0; - } - - if(strcmp(type.c_str(), CC_UCHAR) == 0){ - unit.to_uchar(); - return 0; - } - - if(strcmp(type.c_str(), CC_INT16) == 0){ - unit.to_int16(); - return 0; - } - - if(strcmp(type.c_str(), CC_UINT16) == 0){ - unit.to_uint16(); - return 0; - } - - if(strcmp(type.c_str(), CC_INT32) == 0){ - unit.to_int32(); - return 0; - } - - if(strcmp(type.c_str(), CC_UINT32) == 0){ - unit.to_uint32(); - return 0; - } - - if(strcmp(type.c_str(), CC_INT64) == 0){ - unit.to_int64(); - return 0; - } - - if(strcmp(type.c_str(), CC_UINT64) == 0){ - unit.to_uint64(); - return 0; - } - - if(strcmp(type.c_str(), CC_FLOAT) == 0){ - unit.to_float(); - return 0; - } - - if(strcmp(type.c_str(), CC_DOUBLE) == 0){ - unit.to_double(); - return 0; - } - - if(strcmp(type.c_str(), CC_STRING) == 0){ - unit.to_bsl_string(); - return 0; - } - } - catch(...){ - return -1; - } - return -1; - } -} - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/constraint/Constraint.h b/configure/constraint/Constraint.h deleted file mode 100644 index 596e4442a8375daaba9e522cbf204768c240f0a1..0000000000000000000000000000000000000000 --- a/configure/constraint/Constraint.h +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: Constraint.h,v 1.7 2009/02/27 10:14:00 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file Constraint.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/28 20:35:35 - * @version $Revision: 1.7 $ - * @brief - * - **/ - - -#ifndef __CONSTRAINT_H_ -#define __CONSTRAINT_H_ - -#include "Configure.h" -#include "ConstraintFunction.h" - -namespace comcfg{ - class Constraint{ - public: - /** - * @brief 检查约束信息 - * - * @param [in] __idl : confIDL::idl_t* 约束信息 - * @param [in/out] __conf : Configure* 配置信息 - * @return int - * @retval - * @see - * @author yingxiang - * @date 2008/12/29 01:40:40 - **/ - int run(confIDL::idl_t * __idl, Configure * __conf); - protected: - int printError(); - int runGroup(confIDL::var_t* var, ConfigGroup * father, ConfigUnit * self = NULL); - int runKey(confIDL::var_t* var, ConfigGroup * father, ConfigUnit * self = NULL); - int runVar(confIDL::var_t* var, ConfigGroup * father, ConfigUnit * self = NULL); - int runType(const str_t& type, const ConfigUnit & unit); - Configure * conf; - confIDL::idl_t * idl; - }; -} - - - - - - - - - - - - - - - - -#endif //__CONSTRAINT_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/constraint/ConstraintFunction.cpp b/configure/constraint/ConstraintFunction.cpp deleted file mode 100644 index c512ae9a900cc3518409c2168506c1f0b88a3215..0000000000000000000000000000000000000000 --- a/configure/constraint/ConstraintFunction.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConstraintFunction.cpp,v 1.7 2010/01/08 03:24:38 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConstraintFunction.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/28 23:17:51 - * @version $Revision: 1.7 $ - * @brief - * - **/ - -#include "ConstraintFunction.h" -#include "cc_default.h" - -static const int hashmap_bitems = 256; - -namespace comcfg{ - class ConsUnitControl { - private: - static int _needfree; - public: - ConsUnitControl() { - ConfigUnit :: get_err_unit(); - } - ~ConsUnitControl() { - if (_needfree) { - _needfree =0; - ConstraintLibrary* cu = ConstraintLibrary :: getInstance(); - delete cu; - } - } - }; - int ConsUnitControl::_needfree = 1; - - static ConsUnitControl cons_unit_control; - - - - ConstraintLibrary * ConstraintLibrary :: lib = NULL; - - //=======ConstraintFunction Methods - int ConstraintFunction :: check(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup*, ConfigUnit*){ - LOG(WARNING) << "Unknown function : calling virtual method"; - return 0; - }; - - void ConstraintFunction :: setLevel(int lv){ - _level = lv; - } - int ConstraintFunction :: getLevel(){ - return _level; - } - - //=======ConstraintLibrary Methods - ConstraintLibrary :: ConstraintLibrary(){ - cfMap.create(hashmap_bitems); - registConstraint(str_t("comment"), CFdefault :: cons_do_nothing, CF_VALUE); - registConstraint(str_t("array"), CFdefault :: cons_array, CF_STRUCT); - registConstraint(str_t("default"), CFdefault :: cons_default, CF_KEY); - registConstraint(str_t("ip"), CFdefault :: cons_ip, CF_VALUE); - registConstraint(str_t("length"), CFdefault :: cons_length, CF_VALUE); - registConstraint(str_t("regexp"), CFdefault :: cons_regexp, CF_VALUE); - registConstraint(str_t("enum"), CFdefault :: cons_enum, CF_VALUE); - registConstraint(str_t("range"), CFdefault :: cons_range, CF_VALUE); - }; - ConstraintLibrary :: ~ConstraintLibrary(){ - CFMAP_T::iterator itr; - for(itr = cfMap.begin(); itr != cfMap.end(); ++itr) { - if (NULL != itr->second) { - delete itr->second; - } - } - cfMap.destroy(); - } - ConstraintLibrary* ConstraintLibrary :: getInstance(){ - if(lib == NULL){ - lib = new ConstraintLibrary(); - } - return lib; - } - void ConstraintLibrary :: destroyInstance(){ - if(lib != NULL){ - delete lib; - lib = NULL; - } - } - int ConstraintLibrary :: getLevel(const str_t& function){ - CFMAP_T::_Pair * ptr = cfMap.find(function); - if(NULL != ptr && NULL != ptr->second){ - return ptr->second->getLevel(); - } - return CF_DEFAULT; - } - int ConstraintLibrary :: getLevel_static(const str_t& function){ - return getInstance() -> getLevel(function); - } - int ConstraintLibrary :: check(const confIDL::cons_func_t& func, - const confIDL::var_t& param, ConfigGroup* father, ConfigUnit * self){ - CFMAP_T::_Pair * ptr = cfMap.find(func.func.data); - if(NULL != ptr && NULL != ptr->second){ - return ptr->second->check(func, param, father, self); - } - LOG(WARNING) << "Unknown function : [File:" << func.func.file.c_str() << ", Line:" << func.func.lineno << "]=[" << func.func.data.c_str() << "]"; - return -1; - } - - int ConstraintLibrary :: checkGlobalConstraint(ConfigUnit *conf) - { - GCFLIST_T :: iterator itr = _gcfList.begin(); - for(; itr != _gcfList.end(); ++itr){ - if(itr->type() == typeid(GlobalConsFun)){ - GlobalConsFun *gcf = gcf_any_cast >(&*itr); - LOG(INFO) << "Now checking with global constraint function: " << gcf->_name.c_str() << "()"; - if(0 != gcf->_gcf(gcf->_arg, conf)){ - return -1; - } - } - else if(itr->type() == typeid(GlobalConsFun)){ - GlobalConsFun *gcf = gcf_any_cast >(&*itr); - LOG(INFO) << "Now checking with global constraint function: " << gcf->_name.c_str() << "()"; - if(0 != gcf->_gcf(gcf->_arg, conf)){ - return -1; - } - } - else if(itr->type() == typeid(GlobalConsFun)){ - GlobalConsFun *gcf = gcf_any_cast >(&*itr); - LOG(INFO) << "Now checking with global constraint function: " << gcf->_name.c_str() << "()"; - if(0 != gcf->_gcf(gcf->_arg, conf)){ - return -1; - } - } - else if(itr->type() == typeid(GlobalConsFun)){ - GlobalConsFun *gcf = gcf_any_cast >(&*itr); - LOG(INFO) << "Now checking with global constraint function: " << gcf->_name.c_str() << "()"; - if(0 != gcf->_gcf(gcf->_arg, conf)){ - return -1; - } - } - else{ - LOG(WARNING) << "An unrecognizable global constraint function is set."; - return -1; - } - } - return 0; - } - - int ConstraintLibrary :: registConstraint(const str_t& fname, ConstraintFunction* cons, bool overwrite) - { - CFMAP_T::_Pair * ptr = cfMap.find(fname); - if(false == overwrite && NULL != ptr){ - return -1; - } - if(NULL != ptr && NULL != ptr->second) { - delete ptr->second; - } - cfMap.set(fname,cons,1); - return 0; - } - - int ConstraintLibrary :: registConstraint(const str_t& fname, CF_T cf, int cfLevel, bool overwrite){ - WrapFunction * wf = new WrapFunction(); - wf->setCF(cf); - wf->setLevel(cfLevel); - return registConstraint(fname, wf, overwrite); - } - -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/constraint/ConstraintFunction.h b/configure/constraint/ConstraintFunction.h deleted file mode 100644 index 17067f254a204e98a4099f86bbe7d83166390741..0000000000000000000000000000000000000000 --- a/configure/constraint/ConstraintFunction.h +++ /dev/null @@ -1,253 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: ConstraintFunction.h,v 1.9 2010/01/08 03:24:38 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file ConstraintFunction.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/10 18:15:58 - * @version $Revision: 1.9 $ - * @brief - * - **/ - - -#ifndef __CONSTRAINTFUNCTION_H_ -#define __CONSTRAINTFUNCTION_H_ - -#include -#include -#include -#include "Configure.h" -#include "ConfigGroup.h" -#include "ConfigUnit.h" -#include "GlobalConsFun.h" - -namespace confIDL{ - struct cons_func_t; - struct var_t; - struct idl_t; -} - -namespace comcfg{ - //typedef std::string str_t; - typedef std::list param_list_t; - - //Constraint function pointer - typedef int (* CF_T)(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit*); - - enum CFLevel{ - CF_STRUCT = 0, //最高级别的约束,必须最早执行,如array,约束某个字段的类型 - CF_KEY, //字段约束,如default,约束某个字段的基本情况 - CF_TYPE, //类型约束,int16, int32, int64...,也是一种值的约束(CF_VALUE) - CF_VALUE, //普通级别的约束,如ip(), length()等,约束某个字段值的内容 - CF_DEFAULT, - }; - - class ConstraintFunction{ - int _level; - public: - virtual int check(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup*, ConfigUnit*); - void setLevel(int lv); - int getLevel(); - virtual ~ConstraintFunction() {} - }; - typedef bsl::hashmap CFMAP_T; - - //Constraint Library is Singleton - class ConstraintLibrary{ - ConstraintLibrary(); - ~ConstraintLibrary(); - - static ConstraintLibrary * lib; - public: - /** - * @brief 获取Library的实例 - * @note 该实例在用户程序的整个生命周期都存在 - * 【用户不用关心本接口】 - * @return ConstraintLibrary* - * @retval - * @see - * @author yingxiang - * @date 2008/12/28 23:26:14 - **/ - static ConstraintLibrary* getInstance(); - /** - * @brief 删除Library的实例,回收内存 - * @note 在不再需要该实例,或者需要重新生成实例时,先删除原有实例 - * @return - * @retval - * @see - * @author linjieqiong - * @date 2013/01/22 16:26:14 - **/ - static void destroyInstance(); - /** - * @brief 获取某个函数的级别,对不存在的函数返回default - * 【用户不用关心本接口】 - * - * @param [in] function : const str_t& - * @return int - * @retval - * @see - * @author yingxiang - * @date 2008/12/28 23:26:28 - **/ - int getLevel(const str_t& function); - static int getLevel_static(const str_t& function); - /** - * @brief 根据函数检查一个内容 - * 内容以父节点的形式传入(因为被检查的字段不一定存在,如default就是在父节点下新建子结点) - * 【用户不用关心本接口】 - * - * @param [in] function : const str_t& 约束函数名 - * @param [in] : const confIDL::var_t& 约束信息 - * @param [in] : ConfigGroup * 传入的父节点 - * @return int - * @retval - * @see - * @author yingxiang - * @date 2008/12/28 23:26:42 - **/ - int check(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup*, ConfigUnit*); - - /** - * @brief 使用用户注册的全局约束函数检查所有key-value配置项, - * 默认将该key-value标记为被约束的,即如果进行了全局约束检查,则所有项都是被约束的 - * 用户不用关心本接口 - * - * @param [in] conf : ConfigUnit * 读入配置文件后建立的configure结构的根 - * @return int : 0, 所有key-value均满足约束,其他,不满足约束或其他错误发生 - * @retval - * @see - * @author linjieqiong - * @date 2013/01/15 23:29:50 - **/ - int checkGlobalConstraint(ConfigUnit *conf); - - /** - * @brief 注册一个约束函数 【用于用户的扩展】 - * - * @param [in] fname : const str_t& 约束函数的名字 - * @param [in] cons : const ConstraintFunction& 约束函数实体,相当于仿函数 - * 【注意】请new出来再传进去,然后ConstraintLibrary会delete之 - * @param [in] overwrite : bool 是否覆盖同名的函数 - * @return int - * @retval - * @see - * @author yingxiang - * @date 2008/12/28 23:29:50 - **/ - int registConstraint(const str_t& fname, ConstraintFunction* cons, bool overwrite = false); - - int registConstraint(const str_t& fname, CF_T cf, bool overwrite = false){ - return registConstraint(fname, cf, CF_VALUE, overwrite); - } - - /** - * @brief 注册一个全局约束函数 【用于用户的扩展】 - * - * @param [in] fname : const str_t& 约束函数的名字 - * @param [in] gcf_t : int (*gcf_t)(const std::vector &, ConfigUnit *) 约束函数的函数指针 - * @param [in] arg_vec : const std::vector & 约束函数的参数 - * @return int - * @retval - * @see - * @author linjieqiong - * @date 2013/01/15 10:00:00 - **/ - template - int registGlobalConstraint(const str_t& fname, - int (*gcf_t)(const std::vector &, ConfigUnit *), - const std::vector &arg_vec) - { - GlobalConsFun gFun(fname, gcf_t, arg_vec); - return registGlobalConstraint(gFun); - } - - /** - * @brief 注册一个全局约束函数 【用于用户的扩展】 - * 带可变参数的函数的调用一定要慎重,尽量确保传入参数类型正确 - * - * @param [in] fname : const str_t& 约束函数的名字 - * @param [in] gcf_t : int (*gcf_t)(const std::vector &, ConfigUnit *) 约束函数的函数指针 - * @param [in] argnum : size_t 约束函数的参数个数 - * @param [in] ... : 可变参数,表示每一个约束参数 - * @return int - * @retval - * @see - * @author linjieqiong - * @date 2013/01/15 10:00:00 - **/ - template - int registGlobalConstraint(const str_t& fname, - int (*gcf_t)(const std::vector &, ConfigUnit *), - size_t argnum, ...) - { - std::vector arg_vec; - va_list argp; - va_start(argp, argnum); - while(argnum > 0) - { - T arg = va_arg(argp, T); - arg_vec.push_back(arg); - -- argnum; - } - va_end(argp); - - return registGlobalConstraint(fname, gcf_t, arg_vec); - } - - - /** - * @brief 注册一个全局约束函数 【用于用户的扩展】 - * - * @param [in] GlobalConsFun: 该全局约束函数的描述信息 - * @return int - * @retval - * @see - * @author linjieqiong - * @date 2013/01/15 10:00:00 - **/ - template - int registGlobalConstraint(const GlobalConsFun& gFun) - { - _gcfList.push_back(gFun); - return 0; - } - - private: - friend class Constraint; - friend class ConsUnitControl; - int registConstraint(const str_t& fname, CF_T cf, int cfLevel, bool overwrite = false); - protected: - GCFLIST_T _gcfList; - CFMAP_T cfMap; - class WrapFunction : public ConstraintFunction{ - public: - virtual int check(const confIDL::cons_func_t& cons, - const confIDL::var_t& param, ConfigGroup* father, ConfigUnit* self){ - return _cf(cons, param, father, self); - } - void setCF(CF_T cf){ - _cf = cf; - } - WrapFunction(){} - virtual ~WrapFunction() {} - protected: - CF_T _cf; - }; - }; -} - - - - -#endif //__CONSTRAINTFUNCTION_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/constraint/GlobalConsFun.h b/configure/constraint/GlobalConsFun.h deleted file mode 100644 index 3f4d46a2d40344f4f978b107cb905390df69a649..0000000000000000000000000000000000000000 --- a/configure/constraint/GlobalConsFun.h +++ /dev/null @@ -1,104 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2013 Baidu.com, Inc. All Rights Reserved - * $Id: GlobalConsFun.h,v 1.6 2013/01/16 11:14:52 linjieqiong Exp $ - * - **************************************************************************/ - - - -/** - * @file GlobalConsFun.h - * @author linjieqiong(sat@baidu.com) - * @date 2013/01/16 01:04:16 - * @version $Revision: 1.6 $ - * @brief global constraint function framework - * - **/ - - -#ifndef __GLOBALCONSFUN_H_ -#define __GLOBALCONSFUN_H_ - -#include -#include -#include - -namespace comcfg{ - //脙猫脢枚脪禄赂枚脠芦戮脰脭录脢酶潞炉脢媒碌脛陆谩鹿鹿脤氓拢卢掳眉脌篓拢潞潞炉脢媒脙没拢卢碌脴脰路潞脥虏脦脢媒脕脨卤铆 - //陆谩鹿鹿脤氓脢脟脛拢掳氓拢卢脢碌脌媒禄炉潞贸脢么脫脷虏禄脥卢卤盲脕驴脌脿脨脥 - template - struct GlobalConsFun{ - typedef int (* GCF_T)(const std::vector &arg_vec, ConfigUnit *); - GlobalConsFun() : _gcf(NULL){} - GlobalConsFun(const str_t & name, const GCF_T & gcf) - : _name(name), _gcf(gcf){} - GlobalConsFun(const str_t & name, const GCF_T & gcf, const std::vector & arg) - : _name(name), _gcf(gcf), _arg(arg){} - - str_t _name; - GCF_T _gcf; - std::vector _arg; - }; - - //陆芦脡脧脙忙虏禄脥卢脌脿脨脥碌脛陆谩鹿鹿脤氓掳眉脳掳鲁脡any露脭脧贸拢卢脪脭卤茫脫脷麓忙路脜脭脷list陆谩鹿鹿脰脨拢卢脢碌脧脰路陆路篓虏脦脮脮boost::any - class gcf_any{ - public: - class gcf_placeholder; - template - gcf_any(const ValueType &value) - : content(new gcf_holder(value)){} - gcf_any(const gcf_any & other) - : content(other.content ? other.content->clone() : 0){} - ~gcf_any() - { - delete content; - } - const std::type_info & type()const - { - return content ? content->type() : typeid(void); - } - - class gcf_placeholder - { - public: - virtual ~gcf_placeholder(){} - virtual const std::type_info &type()const = 0; - virtual gcf_placeholder * clone()const = 0; - }; - - template - class gcf_holder : public gcf_placeholder - { - public: - gcf_holder(const ValueType &value) : held(value){} - virtual const std::type_info &type()const - { - return typeid(ValueType); - } - virtual gcf_placeholder * clone()const - { - return new gcf_holder(held); - } - - ValueType held; - }; - - private: - template - friend ValueType * gcf_any_cast(gcf_any *); - - gcf_placeholder *content; - }; - - template - ValueType * gcf_any_cast(gcf_any * operand) - { - return operand && operand->type() == typeid(ValueType) - ? &static_cast *>(operand->content)->held : 0; - } - - typedef std::list GCFLIST_T; -} - -#endif diff --git a/configure/constraint/cc_default.cpp b/configure/constraint/cc_default.cpp deleted file mode 100644 index f73a3c994c19675fed38aa0b46bca40ac6d2946c..0000000000000000000000000000000000000000 --- a/configure/constraint/cc_default.cpp +++ /dev/null @@ -1,443 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_default.cpp,v 1.13 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file cc_default.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 01:43:14 - * @version $Revision: 1.13 $ - * @brief - * - **/ - -#include "cc_default.h" -#include "utils/cc_utils.h" -#include "Configure.h" -#include "ConfigUnit.h" -#include "ConfigGroup.h" -#include "ConfigArray.h" -#include "spreg.h" -namespace comcfg{ - - extern str_t showIDLMsg(const confIDL::meta_t& meta); - - int CFdefault :: cons_do_nothing(const confIDL::cons_func_t& /*func*/, const confIDL::var_t & /*var*/, ConfigGroup * /*father*/, ConfigUnit * /*self*/){ - return 0; - } - int CFdefault :: cons_array(const confIDL::cons_func_t& func, const confIDL::var_t & var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "In constraint function array(), var is " << showIDLMsg(var.name).c_str(); - if(func.arg_list.size() > 1){ - LOG(WARNING) << "Constraint : Too many args for array(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - const ConfigUnit * unit = self; - if(unit == NULL){ - unit = & (*father)[var.name.data]; - } - if(unit->selfType() == CONFIG_ERROR_TYPE){ - if(father == NULL){ - LOG(WARNING) << "Constraint : Unknown error in array(). " << showIDLMsg(var.name).c_str(); - return -1; - } - father->push(var.name.data, new ConfigArray(var.name.data.c_str(), father)); - LOG(INFO) << "Constraint : create array, in " << showIDLMsg(var.name).c_str(); - } - else if(unit->selfType() != CONFIG_ARRAY_TYPE){ - LOG(WARNING) << "Constraint : variable exists but is not array. " << showIDLMsg(var.name).c_str(); - return -1; - } - else{ - if(func.arg_list.size() == 0){ - return 0; - } - unsigned long long asize; - if(Trans::str2uint64(func.arg_vec[0]->data, &asize) != 0 ){ - LOG(WARNING) << "Constraint : array size is invalid. Ignored! " << showIDLMsg(var.name).c_str(); - return -1; - } - else{ - if(asize == 0){ - return 0; - } - if(asize < unit->size()){ - LOG(WARNING) << "Constraint : array has too many elements! " << showIDLMsg(var.name).c_str() << " [MaxSize=" << asize << "][We have " << unit->size() << " elements]"; - return -1; - } - } - } - return 0; - } - - int CFdefault :: cons_default(const confIDL::cons_func_t& func, const confIDL::var_t & var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "In constraint function default(), var is " << showIDLMsg(var.name).c_str(); - if(func.arg_list.size() != 1){ - LOG(WARNING) << "Constraint : wrong args for default(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - const ConfigUnit * unit = self; - if(unit == NULL){ - unit = & (*father)[var.name.data]; - } - if(unit->selfType() == CONFIG_ERROR_TYPE){ - if(father == NULL){ - LOG(WARNING) << "Constraint : Unknown error in default(). " << showIDLMsg(var.name).c_str(); - return -1; - } - father->push(var.name.data, new ConfigUnit(var.name.data.c_str(), func.arg_vec[0]->data, NULL, father)); - LOG(INFO) << "Constraint : create default key, use " << showIDLMsg(var.name).c_str(); - return 0; - } - return 0; - } - - int CFdefault :: cons_length(const confIDL::cons_func_t& func, const confIDL::var_t & var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "In constraint function length(), var is " << showIDLMsg(var.name).c_str(); - if(func.arg_list.size() != 1){ - LOG(WARNING) << "Constraint : wrong args for length(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - unsigned long long asize; - if(Trans::str2uint64(func.arg_vec[0]->data, &asize) != 0 ){ - LOG(WARNING) << "Constraint : wrong args for length(). " << showIDLMsg(var.name).c_str(); - return -1; - } - const ConfigUnit * unit = self; - if(unit == NULL){ - unit = & (*father)[var.name.data]; - } - if(unit->selfType() == CONFIG_UNIT_TYPE){ - str_t ref = unit->to_bsl_string(); - if( ref.size() > asize){ - LOG(WARNING) << "Constraint : length() : value is too long. " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - return -1; - } - } - return 0; - } - - int CFdefault :: cons_enum(const confIDL::cons_func_t& func, const confIDL::var_t & var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "In constraint function enum(), var is " << showIDLMsg(var.name).c_str(); - const ConfigUnit * unit = self; - if(unit == NULL){ - unit = & (*father)[var.name.data]; - } - if(unit->selfType() == CONFIG_UNIT_TYPE){ - str_t str = unit->to_bsl_string(); - str_t buf; - for( int i = 0; i < (int)func.arg_vec.size(); ++i){ - //printf("ENUM: %s\n", func.arg_vec[i]->data.c_str()); - if( Trans::str2str(func.arg_vec[i]->data, &buf) != 0 ){ - buf = func.arg_vec[i]->data; - } - if(str == buf){ - return 0; - } - } - } - LOG(WARNING) << "Constraint : key not in enum. " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - return -1; - } - - int CFdefault :: cons_regexp(const confIDL::cons_func_t& func, const confIDL::var_t & var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "In constraint function regexp(), var is " << showIDLMsg(var.name).c_str(); - if(func.arg_list.size() != 1){ - LOG(WARNING) << "Constraint : wrong args for regexp(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - char const * err; - str_t reg; - spreg_t *re; - int ret = Trans::str2str(func.arg_vec[0]->data, ®); - re = spreg_init(reg.c_str(), &err); - if(ret != 0 || err != NULL){ - LOG(WARNING) << "Constraint : wrong args for regexp(). " << showIDLMsg(var.name).c_str(); - return -1; // init failed, do not need to destroy spreg_t - } - - const ConfigUnit * unit = self; - if(unit == NULL){ - unit = & (*father)[var.name.data]; - } - if(unit->selfType() == CONFIG_UNIT_TYPE){ - str_t str = unit->to_bsl_string(); - if( spreg_match(re, str.c_str(), str.size()) > 0){ - ret = 0; - goto end; - } - else{ - LOG(WARNING) << "Constraint : key not match regexp(). " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - ret = -1; - goto end; - } - } - ret = 0; -end: - spreg_destroy(re); - return ret; - } - - int CFdefault :: cons_range(const confIDL::cons_func_t& func, const confIDL::var_t & var, ConfigGroup * father, ConfigUnit * self){ - LOG(INFO) << "In constraint function range(), var is " << showIDLMsg(var.name).c_str() << ", type=" << var.type.data.c_str(); - if(func.arg_list.size() != 2){ - LOG(WARNING) << "Constraint : wrong args for range(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - const ConfigUnit * unit = self; - if(unit == NULL){ - unit = & (*father)[var.name.data]; - } - if(unit->selfType() == CONFIG_UNIT_TYPE){ - if(var.type.data == CC_FLOAT || var.type.data == CC_DOUBLE){ - double val = unit->to_double(); - double buf1, buf2; - if( Trans::str2double(func.arg_vec[0]->data, &buf1) || - Trans::str2double(func.arg_vec[1]->data, &buf2)){ - LOG(WARNING) << "Constraint : wrong args in range(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - if(val < buf1 || val > buf2){ - LOG(WARNING) << "Constraint : Key not in range(), in " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - return -1; - } - } - else if(var.type.data == CC_UINT64){ - unsigned long long val = unit->to_uint64(); - unsigned long long buf1, buf2; - if( Trans::str2uint64(func.arg_vec[0]->data, &buf1) || - Trans::str2uint64(func.arg_vec[1]->data, &buf2)){ - LOG(WARNING) << "Constraint : wrong args in range(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - if(val < buf1 || val > buf2){ - LOG(WARNING) << "Constraint : Key not in range(), in " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - return -1; - } - } - else if(var.type.data == CC_STRING){ - LOG(WARNING) << "Constraint : wrong usage of range(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - else{// use int64 is enough - long long val = unit->to_int64(); - long long buf1, buf2; - if( Trans::str2int64(func.arg_vec[0]->data, &buf1) || - Trans::str2int64(func.arg_vec[1]->data, &buf2)){ - LOG(WARNING) << "Constraint : wrong args in range(), in " << showIDLMsg(var.name).c_str(); - return -1; - } - if(val < buf1 || val > buf2){ - LOG(WARNING) << "Constraint : Key not in range(), in " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - return -1; - } - } - } - return 0; - } - - - - //ip : ***.***.***.*** - //status: 0 1 2 3 4 5 6 7 - static bool check_ip(const str_t& str, int pos, int status, int val){ - if(status > 7){ - return false; - } - if(pos == (int)str.size()){ - return status == 7; - } - if(str[pos] == '.'){ - if(status % 2 == 0){ - LOG(WARNING) << "Unexpected '.' in ip [" << str.c_str() << "]"; - return false; - } - return check_ip(str, pos+1, status+1, 0); - } - else if (isdigit(str[pos])){ - if(status % 2 == 0){ - return check_ip(str, pos+1, status+1, str[pos] - '0'); - } - else{ - val = val * 10 + str[pos] - '0'; - if(val > 255) { - LOG(WARNING) << "Unexpected digits in ip [" << str.c_str() << "]"; - return false; - } - return check_ip(str, pos+1, status, val); - } - } - else{ - LOG(WARNING) << "Unexpected char '" <selfType() == CONFIG_UNIT_TYPE){ - str_t str = unit->to_bsl_string(); - if(check_ip(str, 0, 0, 0)){ - return 0; - } - LOG(WARNING) << "Constraint : Key is not ip(), in " << unit->info().c_str() << " : " << showIDLMsg(var.name).c_str(); - return -1; - } - return 0; - } - - int CFdefault :: gcons_regexp(const std::vector &arg_vec, ConfigUnit *conf) - { - int cb_check_regexp(ConfigUnit *, void *); - if(arg_vec.size() != 1){ - LOG(WARNING) << - "Constraint: wrong arg number " << arg_vec.size() << " for global constraint gcons_regexp(), 1 arg is required."; - return -1; - } - str_t reg = arg_vec[0]; - char const *err; - spreg_t *re = spreg_init(reg.c_str(), &err); - if(err != NULL){ - LOG(WARNING) << "Constraint: wrong args for gcons_regexp(): " << reg.c_str(); - return -1; - } - int ret = conf->traverse_unit(cb_check_regexp, &re); - spreg_destroy(re); - return ret; - } - - int CFdefault :: gcons_ip(const std::vector &arg_vec, ConfigUnit *conf) - { - int cb_check_ip(ConfigUnit *, void *); - if(arg_vec.size() != 0){ - LOG(WARNING) << - "Constraint: wrong arg number " << arg_vec.size() << " for global constraint gcons_ip(), no arg is required."; - return -1; - } - return conf->traverse_unit(cb_check_ip, NULL); - } - - int CFdefault :: gcons_length(const std::vector &arg_vec, ConfigUnit *conf) - { - std::vector long_vec(arg_vec.begin(), arg_vec.end()); - return gcons_length(long_vec, conf); - } - - int CFdefault :: gcons_length(const std::vector &arg_vec, ConfigUnit *conf) - { - int cb_check_length(ConfigUnit *, void *); - if(arg_vec.size() != 1){ - LOG(WARNING) << - "Constraint: wrong arg number " << arg_vec.size() << " for global constraint gcons_length(), 1 arg is required."; - return -1; - } - long long len_limit = arg_vec[0]; - return conf->traverse_unit(cb_check_length, &len_limit); - } - - int cb_check_regexp(ConfigUnit *unit, void *reg) - { - unit->setConstrainted(true); - if(unit->selfType() != CONFIG_UNIT_TYPE){ - return 0; - } - str_t str = unit->to_bsl_string(); - if(spreg_match(*(spreg_t **)reg, str.c_str(), str.size()) > 0){ - return 0; - } - int errcode = 0; - LOG(WARNING) << - "Constraint: gcons_regexp() [key : value]:[" << unit->get_key_name().c_str() << " : " << unit->to_cstr(&errcode, "ERROR") << "]: value does not match regexp."; - return -1; - } - - int cb_check_ip(ConfigUnit *unit, void *) - { - unit->setConstrainted(true); - if(unit->selfType() != CONFIG_UNIT_TYPE){ - return 0; - } - str_t str = unit->to_bsl_string(); - if(check_ip(str, 0, 0, 0)){ - return 0; - } - int errcode = 0; - LOG(WARNING) << - "Constraint: gcons_ip() [key : value]:[" << unit->get_key_name().c_str() << " : " << unit->to_cstr(&errcode, "ERROR") << "]: value is not an IP string."; - return -1; - } - - int cb_check_default(ConfigUnit *unit, void *def_value) - { - unit->setConstrainted(true); - if(unit->selfType() != CONFIG_UNIT_TYPE || !unit->to_bsl_string().empty()){ - return 0; - } - if(unit->set_value(*(str_t *)def_value) != 0){ - int errcode = 0; - LOG(WARNING) << - "Constraint: gcons_default() [key : value]:[" << unit->get_key_name().c_str() << " : " << unit->to_cstr(&errcode, "ERROR") << "]: value is illegal."; - return -1; - } - return 0; - } - - int cb_check_length(ConfigUnit *unit, void *limit) - { - unit->setConstrainted(true); - if(unit->selfType() == CONFIG_UNIT_TYPE - && (long long)(unit->to_bsl_string().size()) > *(long long*)(limit)){ - int errcode = 0; - LOG(WARNING) << - "Constraint: gcons_length() [key : value]:[" << unit->get_key_name().c_str() << " : " << unit->to_cstr(&errcode, "ERROR") << "]: value length exceeds limit."; - return -1; - } - return 0; - } - - int cb_check_enum(ConfigUnit *unit, void *enum_vec) - { - unit->setConstrainted(true); - if(unit->selfType() != CONFIG_UNIT_TYPE){ - return 0; - } - std::vector &vec = *(std::vector *)enum_vec; - for(size_t i=0; ito_bsl_string() == vec[i]){ - return 0; - } - } - int errcode = 0; - LOG(WARNING) << - "Constraint: gcons_enum() [key : value]:[" << unit->get_key_name().c_str() << " : " <to_cstr(&errcode, "ERROR") << "]: value not in enum."; - return -1; - } -} - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/constraint/cc_default.h b/configure/constraint/cc_default.h deleted file mode 100644 index 033c21d89aa6de23350c3d33c3faac0ff103a429..0000000000000000000000000000000000000000 --- a/configure/constraint/cc_default.h +++ /dev/null @@ -1,163 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_default.h,v 1.6 2009/03/23 03:14:52 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file cc_default.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 01:04:16 - * @version $Revision: 1.6 $ - * @brief - * - **/ - - -#ifndef __CC_DEFAULT_H_ -#define __CC_DEFAULT_H_ - -#include "Constraint.h" -#include "../compiler/src/idl_conf_if.h" -#include "ConstraintFunction.h" - -namespace comcfg{ - class CFdefault{ - public: - static int cons_array(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_default(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_length(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_enum(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_regexp(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_range(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_ip(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - static int cons_do_nothing(const confIDL::cons_func_t&, const confIDL::var_t &, ConfigGroup *, ConfigUnit *); - - static int gcons_regexp(const std::vector &arg_vec, ConfigUnit *conf); - static int gcons_ip(const std::vector &arg_vec, ConfigUnit *conf); - static int gcons_length(const std::vector &arg_vec, ConfigUnit *conf); - static int gcons_length(const std::vector &arg_vec, ConfigUnit *conf); - - template - static int gcons_default(const std::vector &arg_vec, ConfigUnit *conf) - { - int cb_check_default(ConfigUnit *, void *); - if(arg_vec.size() != 1){ - LOG(WARNING) << "Constraint: wrong arg number " << arg_vec.size() << " for global constraint gcons_default(), 1 arg is required."; - return -1; - } - str_t def_value; - if(typeid(T) == typeid(int)){ - def_value.setf("%d", *reinterpret_cast(&arg_vec[0])); - } - else if(typeid(T) == typeid(str_t)){ - def_value = *reinterpret_cast(&arg_vec[0]); - } - else if(typeid(T) == typeid(long long)){ - def_value.setf("%lld", *reinterpret_cast(&arg_vec[0])); - } - else if(typeid(T) == typeid(double)){ - def_value.setf("%lf", *reinterpret_cast(&arg_vec[0])); - } - return conf->traverse_unit(cb_check_default, &def_value); - } - - template - static int gcons_enum(const std::vector &arg_vec, ConfigUnit *conf) - { - int cb_check_enum(ConfigUnit *, void *); - std::vector enum_vec; - str_t enum_str; - if(typeid(T) == typeid(int)){ - for(size_t i=0; i(&arg_vec[i])); - enum_vec.push_back(enum_str); - } - } - else if(typeid(T) == typeid(str_t)){ - for(size_t i=0; i(&arg_vec[i])); - } - } - else if(typeid(T) == typeid(long long)){ - for(size_t i=0; i(&arg_vec[i])); - enum_vec.push_back(enum_str); - } - } - else if(typeid(T) == typeid(double)){ - for(size_t i=0; i(&arg_vec[i])); - enum_vec.push_back(enum_str); - } - } - if(arg_vec.size() == 0){ - LOG(WARNING) << "Constraint: wrong arg number 0 for global constraint gcons_enum(), at least 1 arg is required."; - return -1; - } - return conf->traverse_unit(cb_check_enum, &enum_vec); - } - - template - static int gcons_range(const std::vector &arg_vec, ConfigUnit *conf) - { - if(typeid(T) == typeid(str_t)){ - LOG(WARNING) << "Constraint: gcons_range() does not support str_t type constraint"; - return -1; - } - if(arg_vec.size() != 2){ - LOG(WARNING) << "Constraint: wrong arg number " << arg_vec.size() << " for global constraint gcons_range(), 2 args are required."; - return -1; - } - void *arg = &const_cast &>(arg_vec); - return conf->traverse_unit(cb_check_range, arg); - } - - template - static int cb_check_range(ConfigUnit *unit, void *range_vec) - { - unit->setConstrainted(true); - if(unit->selfType() != CONFIG_UNIT_TYPE){ - return 0; - } - std::vector &rvec = *static_cast *>(range_vec); - if(typeid(T) != typeid(double)){ - long long val = unit->to_int64(); - if(val >= rvec[0] && val <= rvec[1]){ - return 0; - } - } - else{ - double val = unit->to_double(); - if(val >= rvec[0] && val <= rvec[1]){ - return 0; - } - } - int errcode = 0; - LOG(WARNING) << "Constraint: gcons_range() [key : value]:[" << unit->get_key_name().c_str() << " : " << unit->to_cstr(&errcode, "ERROR") << "]: value not in range."; - return -1; - } - }; -} - - - - - - - - - - - - - - - - -#endif //__CC_DEFAULT_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/reader/RawData.cpp b/configure/reader/RawData.cpp deleted file mode 100644 index cf0458963034bfa35d48a2608ae08dec1ab2c265..0000000000000000000000000000000000000000 --- a/configure/reader/RawData.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: RawData.cpp,v 1.11 2010/01/08 03:24:38 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file RawData.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 20:49:06 - * @version $Revision: 1.11 $ - * @brief - * - **/ - -#include "RawData.h" -#include - -namespace comcfg{ - size_t RawData :: lineNum(){ - return _lnum; - } - - size_t RawData :: size(){ - return _fsize; - } - - const char * RawData :: getLine(int idx){ - if(idx < 0 || (size_t)idx >= lineNum()){ - return NULL; - } - return (const char *)(_file + _line[idx]); - } - - RawData :: RawData(){ - _file = NULL; - _file_original = NULL; - _lnum = 0; - _fsize = 0; - _bufsize = 0; - } - RawData :: ~RawData(){ - if(_file){ - free(_file); - } - if(_file_original){ - free(_file_original); - } - } - - int RawData :: load(const char * filename){ - LOG(INFO) << "Config : RawData read file [" << filename << "]"; - struct stat st; - if( stat(filename, &st) != 0 ){ - LOG(WARNING) << "I can't stat [" << filename << "]"; - return -1; - } - - int fd = open(filename, O_RDONLY); - if(-1 == fd){ - LOG(WARNING) << "I can't open [" << filename << "]"; - return -1; - } - if(_file){ - free(_file); - _file = NULL; - } - _fsize = (size_t)st.st_size; - _bufsize = ((_fsize >> 12) + 1) << 12;//以4K为单位上取整 - - _file = (char *)malloc(_bufsize); - if(NULL == _file){ - LOG(WARNING) << "malloc failed."; - close(fd); - return -1; - } - - if( read(fd, _file, _fsize) != (ssize_t)_fsize ){ - LOG(WARNING) << "Read file " << filename << " error..."; - free(_file); - _file = NULL; - close(fd); - return -1; - } - - close(fd); - return rebuild(); -#if 0 - _line.clear(); - - try{ - _file = (char *)malloc(_bufsize); - if(NULL == _file){ - ul_writelog(Log::warning(), "malloc failed...I can't load [%s]", filename); - throw ConfigException("Malloc failed"); - } - size_t cur_pos = 0; - - while(fgets(_file + cur_pos, _bufsize - cur_pos, fd) != NULL){ - _line.push_back(cur_pos); - cur_pos += strlen(_file + cur_pos); - if(cur_pos <= 0 || _file[cur_pos - 1] != '\n'){ - ul_writelog(Log::warning(), "Unrecognized end of line. file:[%s] line:[%d]", - filename, (int)_line.size()); - } - _file[cur_pos - 1] = '\0'; - } - _lnum = _line.size(); - _line.push_back(cur_pos); - _line.push_back(cur_pos);//保护 - if(cur_pos != size()){ - ul_writelog(Log::warning(), "[%s] file size = %llu bytes, But I only read = %llu bytes", - filename, (unsigned long long)size(), (unsigned long long)cur_pos); - } - - }catch(...){ - if(_file){ - free(_file); - _file = NULL; - } - _line.clear(); - _fsize = _bufsize = 0; - _lnum = 0; - return -1; - } - return 0; -#endif - } - - char * RawData :: getRebuildBuffer(size_t __size){ - if(_file){ - free(_file); - _file = NULL; - } - _line.clear(); - _lnum = 0; - _fsize = __size; - _bufsize = ((_fsize >> 12) + 1) << 12;//以4K为单位上取整 - _file = (char *)malloc(_bufsize); - return _file; - } - - int RawData :: rebuild(){ - if(_fsize == 0){ - LOG(WARNING) << "The rebuild buffer is empty."; - return -1; - } - if(_file_original != NULL){ - free(_file_original); - _file_original = NULL; - } - _file_original = (char *)malloc(_bufsize); - if(_file_original != NULL){ - memcpy(_file_original, _file, _bufsize); - } - else{ - LOG(INFO) << "Failed to create a copy of file."; - //so I can't dump it. But it's OK to go on. - } - _line.clear(); - _line.push_back(0); - for(size_t i = 0; i < _fsize; ++i){ - if(_file[i] == '\n' || _file[i] == '\r' || _file[i] == '\0'){ - _file[i] = '\0'; - _line.push_back(i+1); - } - } - _file[_fsize] = '\0'; - _lnum = _line.size(); - _line.push_back(_fsize);//多余的一行的位置,便于计算最后一行的长度 - return 0; - } - - char * RawData :: dump(size_t * __size){ - *__size = _fsize; - return _file_original; - } - -} - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/reader/RawData.h b/configure/reader/RawData.h deleted file mode 100644 index 24a8d9922c2e31bb4ecb448fd4bd44eb7c97b8b6..0000000000000000000000000000000000000000 --- a/configure/reader/RawData.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: RawData.h,v 1.4 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file RawData.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/18 22:52:32 - * @version $Revision: 1.4 $ - * @brief - * - **/ - - -#ifndef __RAWDATA_H_ -#define __RAWDATA_H_ - -#include -#include -#include -#include -#include "utils/cc_exception.h" -#include "butil/logging.h" - -namespace comcfg{ - class RawData{ - public: - - int load(const char * filename); - char * getRebuildBuffer(size_t size); - int rebuild(); - char * dump(size_t *); - size_t lineNum(); - size_t size(); - const char * getLine(int idx); - RawData(); - ~RawData(); - protected: - std::vector _line; - size_t _lnum; - char * _file; - char * _file_original; - size_t _fsize; - size_t _bufsize; - }; -} - - - - - - - - - - - - - - - - -#endif //__RAWDATA_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/reader/Reader.cpp b/configure/reader/Reader.cpp deleted file mode 100644 index 972949128b8af5b3e104d339d6a8c18ebf812377..0000000000000000000000000000000000000000 --- a/configure/reader/Reader.cpp +++ /dev/null @@ -1,258 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: Reader.cpp,v 1.8 2009/03/23 03:14:52 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file reader/Reader.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 18:49:01 - * @version $Revision: 1.8 $ - * @brief - * - **/ - -#include -#include "utils/cc_utils.h" -#include "reader/Reader.h" - -namespace comcfg{ - Reader :: Reader(){ - _isRebuild = false; - } - - str_t get_middle(const str_t& str){ - int i, j; - if(str.size() == 0){ - return str; - } - for(i = 0; i < (int)str.size(); ++i){ - if(! isspace(str[i])){ - break; - } - } - for(j = (int)str.size() - 1; j >= 0; --j){ - if(! isspace(str[j])){ - break; - } - } - return str.substr(i, j+1-i); - } - - int Reader::read(const char * file, Configure * cfg){ - if( _fd.load(file) != 0 ){ - return -1; - } - _cur_file = file; - return build(cfg); - } - int Reader :: build(Configure *cfg){ - int ret = 0; - for(size_t i = 0; i < _fd.lineNum(); ++i){ - _cur_line = i+1; - cfg->setFileLine(_cur_line); - size_t length; - if(i != _fd.lineNum() - 1){ - length = (size_t)_fd.getLine(i+1) - (size_t)_fd.getLine(i); - } - else{ - length = (size_t)_fd.size() - (size_t)_fd.getLine(i); - } - if(push(cfg, _fd.getLine(i), length) != 0){ - LOG(WARNING) << "Error [File:" << _cur_file.c_str() << ", Line:" << i + 1 << "] " << _fd.getLine(i); - ret = -1; - } - } - _cur_line = -1; - return ret; - } - - int Reader::push(Configure * cfg, const char * buf, size_t length){ - const char *p = buf; - while(*p != 0 && isspace(*p)){ - ++p; - } - try{ - if(*p == '#' || *p == 0){ //is comment or blank line - return 0; - } - else if (*p == '['){ //must be section - str_t str; - if( sectionParser(p, length, &str) != 0 ){ - return -1; - } - LOG(INFO) << "Configure Reader: Change section to : [" << str.c_str() << "]"; - cfg->changeSection(str); - } - else{ // is config key-value pair - pair_t pair; - if( keyParser(p, length, &pair) != 0 ){ - return -1; - } - if(strcmp(pair.key.c_str(), CONFIG_INCLUDE) == 0){ - //$include : filename - //Sub Configure file - LOG(INFO) << "Configure Reader: read $include : " << pair.value.c_str(); - if(_isRebuild){ - LOG(INFO) << "Configure : I am rebuilding, $include is ignored."; - }else{ - str_t realfile; - Trans::str2str(pair.value, &realfile); - cfg->pushSubReader(realfile.c_str()); - } - } - else{ - LOG(INFO) << "Configure Reader: read key[" << pair.key.c_str() << "] value[" << pair.value.c_str() <<"]"; - cfg->pushPair(pair.key, pair.value); - } - } - } - catch(ConfigException){ - return -1; - } - catch(...){ - LOG(WARNING) << "Configure Reader: Unknown exception."; - return -1; - } - return 0; - } - - int Reader::sectionParser(const char * buf, size_t /*length*/, str_t * str){ - const char *p = buf; - const char *end = buf; - while(*end != 0 && *end != ']'){ - ++end; - } - if(0 == *end || p+1 >= end){ - return -1; - } - if(getWord(p+1, end, str) != 0){ - return -1; - } - ++end; - //检查末尾没有多余字符 - while(*end){ - if(*end == '#'){ - return 0; - } - if(! isspace(*end)){ - return -1; - } - ++end; - } - return 0; - } - - - int Reader::keyParser(const char * buf, size_t /*length*/, pair_t * pair){ - const char *p = buf; - while(*p != 0 && *p != ':'){ - ++p; - } - if(0 == *p || p == buf){ //到达末尾或在开头 - return -1; - } - if( getWord(buf, p, &(pair->key)) != 0 ){ - return -1; - } - - pair->value = p+1; - //ul_writelog(Log::debug(), "Configure Reader : key=[%s] whole value=[%s]", pair->key.c_str(), pair->value.c_str()); - pair->value = get_middle(pair->value); - //value : 引号转义? - return 0; - } - - - int Reader::getWord(const char * from, const char * to, str_t * str){ - //左闭右开区间[from, to) - int status = 0; //空格0->字符串1->空格2 - const char *f1 = from; - const char *f2 = to; - for(const char *i = from; i < to; ++i){ - if(isspace(*i)){ - if(status == 1){ - f2 = i; - status = 2; - } - } - else{ - if(status == 0){ - status = 1; - f1 = i; - } - else if(status == 2){ - return -1; - } - } - } - if(f1 >= f2){ - return -1; - } - //如果先clear str,再str->append(f1, f2-f1)的话: - //这里是有风险的,如果传入的是 getWord(str.begin(), str.end(), &str) 会挂 - //但是bsl::string不支持assign接口,只能先clear再append - //如果创建一个新对象,再copy回来,成本又太高,bsl::string不是copy-on-write - //还是copy一次吧: - str_t tmp; - tmp.append(f1, f2-f1); - *str = tmp; - return 0; - } - - void Reader::getCommentUpwards(str_t &comment, int line){ - const char * conf_line = _fd.getLine(line); - while(isCommentLine(conf_line)){ - str_t comment_line = conf_line; - comment_line.append("\n"); - comment_line.append(comment); - comment = comment_line; - --line; - conf_line = _fd.getLine(line); - } - } - - int Reader::isCommentLine(const char *line){ - if(line == NULL){ - return 0; - } - while(*line != 0 && isspace(*line)){ - ++ line; - } - if(*line == '#' || *line == 0){ - return 1; - } - return 0; - } - - char * Reader :: getRebuildBuffer(size_t size){ - return _fd.getRebuildBuffer(size); - } - int Reader :: rebuild(Configure * cfg){ - _isRebuild = true; - if( _fd.rebuild() != 0 ){ - return -1; - } - _cur_file = "./"REBUILD_CONF; - return build(cfg); - } - char * Reader :: dump(size_t * size){ - return _fd.dump(size); - } -} - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/reader/Reader.h b/configure/reader/Reader.h deleted file mode 100644 index dbf5772f6a5d542d356ec4b55c954f1914772b6b..0000000000000000000000000000000000000000 --- a/configure/reader/Reader.h +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: Reader.h,v 1.5 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file Reader.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 16:09:58 - * @version $Revision: 1.5 $ - * @brief - * - **/ - - -#ifndef __READER_H_ -#define __READER_H_ - -#include "RawData.h" -#include "Configure.h" -#include - -namespace comcfg{ -#define REBUILD_CONF "REBUILD_CONF" - class Reader{ - RawData _fd; - public: - int read(const char * file, Configure * cfg); - char * getRebuildBuffer(size_t size); - int rebuild(Configure * cfg); - char * dump(size_t *); - Reader(); - private: - int build(Configure * cfg); - int push(Configure * cfg, const char * buf, size_t length); - struct pair_t{ - str_t key; - str_t value; - }; - int sectionParser(const char * buf, size_t length, str_t * str); - int keyParser(const char * buf, size_t length, pair_t * pair); - int getWord(const char * from, const char * to, str_t * str); - void getCommentUpwards(str_t &comment, int line); - int isCommentLine(const char *);//comment line or blank line - friend class ConfigUnit; - friend class Configure; - friend class ConfigGroup; - friend int cb_dumpConf(ConfigUnit *, void *); - str_t _cur_file; - int _cur_line; - bool _isRebuild; - }; -} - - - - - - - - - - - - - - - - -#endif //__READER_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/run.sh b/configure/run.sh deleted file mode 100644 index d5508e00c25aa92b24b87eea394447bff590e651..0000000000000000000000000000000000000000 --- a/configure/run.sh +++ /dev/null @@ -1,2 +0,0 @@ -for i in FileReloader.cpp ConfigReloader.cpp CmdOption.cpp ConfigError.cpp ConfigGroup.cpp ConfigUnit.cpp Configure.cpp constraint/Constraint.cpp constraint/ConstraintFunction.cpp constraint/cc_default.cpp reader/RawData.cpp reader/Reader.cpp utils/init.cpp utils/trans.cpp cfgext.cpp cfgflag.cpp compiler/src/idl.c compiler/src/idl_lex.c compiler/src/idl_gram.c ; do echo -e "\${CMAKE_CURRENT_LIST_DIR}/$i"; done - diff --git a/configure/test/Makefile b/configure/test/Makefile deleted file mode 100644 index 02bd5b2ac8ba02af995804332f09f8d7a328c8a9..0000000000000000000000000000000000000000 --- a/configure/test/Makefile +++ /dev/null @@ -1,2054 +0,0 @@ -########################################################################### -# Automatically generated by comake (1.0.0) # -########################################################################### - -#################设计系统参数####################################### -WORKROOT ?= ../../../ -IDLCC := $(WORKROOT)/public/idlcompiler/output/bin/mcy -RPCCC := $(WORKROOT)/public/ubrpc/output/bin/ubrpcgen -CC := gcc -CXX := g++ -LEX := flex -YACC := yacc -CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -LEXFLAGS := -YACCFLAGS := -IDLFLAGS := -LINKFLAGS := -rdynamic -LINK := g++ -AR := ar cqs -RANLIB := -COMAKE := comake - -###############baidu lib 的32位 64位支持################# -HARDWARE_PLATFORM := $(shell uname -m) -ifeq ($(HARDWARE_PLATFORM),x86_64) - lib2=lib2-64 - third=third-64 -else - lib2=lib2 - third=third -endif -ifeq ($(MAC),ARM32) - lib2=lib2-arm32 - third=third-arm32 -endif - -########################################## - -# 编译参数 -DEP_INCPATH = -I$(WORKROOT)/public/spreg/output//include/ -I$(WORKROOT)/$(lib2)/ullib//include/ -I$(WORKROOT)/$(third)/pcre//include/ -I$(WORKROOT)/$(lib2)/bsl//include/ -I../output//include/ -DEP_LDFLAGS = -L../output//lib/ -L$(WORKROOT)/$(lib2)/bsl//lib/ -L$(WORKROOT)/$(third)/pcre//lib/ -L$(WORKROOT)/$(lib2)/ullib//lib/ -L$(WORKROOT)/public/spreg/output//lib/ -DEP_LDLIBS = -lconfig -lspreg -lpcre -lpcrecpp -lpcreposix -lbsl -lullib -INCPATH = -I. -I.. -MAKDEP = Makefile.dep - - -#start target -first : all - -############# 默认推到公式 -.SUFFIXES: .c .cpp .cc .cxx .C .idl .des -.PRECIOUS: %.cpp - -.cpp.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.cc.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.cxx.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.C.o: - $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) $(INCPATH) - -.c.o: - $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) $(INCPATH) - -.idl.cpp: - $(IDLCC) --ns=$(*F) -o $* $< $(CPPFLAGS) $(INCPATH) $(IDLFLAGS) - -############# -###cpp 支持 -%info : % - ccp $< -############# - - -#__$MAKEFILE_RULES$__ - - - -###############编译目标 -all : target output -.PHONY : all clean test output comake src conf - -target : test_get_default test_1010new test_ivar test_auto test_cfg test_conf test_demo test_err test_get_value test_option test_rawdata test_reader test_rebuild test_str test_t1 test_trans_float test_trans_str2str test_xiaowei test_cfg2 test_cfg3 test_zr test_to_default test_checkone test_reloader test_sigreload test_filereload test_setvalue -#target : rpcidl test_get_default test_1010new test_ivar test_auto test_cfg test_conf test_demo test_err test_get_value test_option test_rawdata test_reader test_rebuild test_str test_t1 test_trans_float test_trans_str2str test_xiaowei test_cfg2 test_cfg3 test_zr test_to_default test_checkone test_reloader test_sigreload test_filereload test_setvalue -#target : -#__$target_CMDLINE$__ - -rpcidl : - -clean_rpcidl : - - -test : - - -comake : - -make clean - -comake - -#-include $(MAKDEP) - - -#----------------build target : test_get_default-------------------- - -test_get_default : CC := gcc -test_get_default : CXX := g++ -test_get_default : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_get_default : CPPFLAGS := -test_get_default : IDLFLAGS := -test_get_default : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_get_default : INCPATH := -I. -I.. $(DEP_INCPATH) -test_get_default : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_get_default : LDFLAGS := $(DEP_LDFLAGS) -test_get_default : LINKFLAGS := -rdynamic - -test_get_default_SOURCES := $(wildcard comake_autogen.cpp test_get_default.cpp) -#test_get_default_HEADERS := $(wildcard *.h) -test_get_default_HEADERS := *.h -test_get_default_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_get_default_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_get_default_IDLSRC)) -test_get_default_IDLSRCH := $(patsubst %.idl,%.h, $(test_get_default_IDLSRC)) -test_get_default_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_get_default.des) -test_get_default_CONFRANGE := $(patsubst %.des,%.range, $(test_get_default_CONFDES)) -test_get_default_OBJS := $(test_get_default_IDLSRC:.idl=.o) -test_get_default_OBJS += $(test_get_default_SOURCES:.c=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.cc=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.cpp=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.cxx=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.C=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.idl=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.yacc=.o) -test_get_default_OBJS := $(test_get_default_OBJS:.lex=.o) -test_get_default : $(test_get_default_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_get_default_CONFDES);do cpp -C -o test_get_default.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_get_default.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_get_default_output - mkdir -p output - mkdir -p output/bin - cp -rf test_get_default output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_get_default_clean - -rm -rf $(test_get_default_OBJS) $(test_get_default_IDLSRCCPP) $(test_get_default_IDLSRCH) test_get_default.range conf/test_get_default.range - -rm -rf test_get_default - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_get_default_ccpc - ccp $(test_get_default_SOURCES) --formatter vim -endef - - -define test_get_default_cov - -endef - - - - -#---------------------end build target : test_get_default------------------ - -#----------------build target : test_1010new-------------------- - -test_1010new : CC := gcc -test_1010new : CXX := g++ -test_1010new : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_1010new : CPPFLAGS := -test_1010new : IDLFLAGS := -test_1010new : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_1010new : INCPATH := -I. -I.. $(DEP_INCPATH) -test_1010new : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_1010new : LDFLAGS := $(DEP_LDFLAGS) -test_1010new : LINKFLAGS := -rdynamic - -test_1010new_SOURCES := $(wildcard comake_autogen.cpp test_1010new.cpp) -#test_1010new_HEADERS := $(wildcard *.h) -test_1010new_HEADERS := *.h -test_1010new_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_1010new_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_1010new_IDLSRC)) -test_1010new_IDLSRCH := $(patsubst %.idl,%.h, $(test_1010new_IDLSRC)) -test_1010new_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_1010new.des) -test_1010new_CONFRANGE := $(patsubst %.des,%.range, $(test_1010new_CONFDES)) -test_1010new_OBJS := $(test_1010new_IDLSRC:.idl=.o) -test_1010new_OBJS += $(test_1010new_SOURCES:.c=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.cc=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.cpp=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.cxx=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.C=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.idl=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.yacc=.o) -test_1010new_OBJS := $(test_1010new_OBJS:.lex=.o) -test_1010new : $(test_1010new_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_1010new_CONFDES);do cpp -C -o test_1010new.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_1010new.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_1010new_output - mkdir -p output - mkdir -p output/bin - cp -rf test_1010new output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_1010new_clean - -rm -rf $(test_1010new_OBJS) $(test_1010new_IDLSRCCPP) $(test_1010new_IDLSRCH) test_1010new.range conf/test_1010new.range - -rm -rf test_1010new - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_1010new_ccpc - ccp $(test_1010new_SOURCES) --formatter vim -endef - - -define test_1010new_cov - -endef - - - - -#---------------------end build target : test_1010new------------------ - -#----------------build target : test_ivar-------------------- - -test_ivar : CC := gcc -test_ivar : CXX := g++ -test_ivar : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_ivar : CPPFLAGS := -test_ivar : IDLFLAGS := -test_ivar : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_ivar : INCPATH := -I. -I.. $(DEP_INCPATH) -test_ivar : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_ivar : LDFLAGS := $(DEP_LDFLAGS) -test_ivar : LINKFLAGS := -rdynamic - -test_ivar_SOURCES := $(wildcard comake_autogen.cpp test_ivar.cpp) -#test_ivar_HEADERS := $(wildcard *.h) -test_ivar_HEADERS := *.h -test_ivar_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_ivar_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_ivar_IDLSRC)) -test_ivar_IDLSRCH := $(patsubst %.idl,%.h, $(test_ivar_IDLSRC)) -test_ivar_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_ivar.des) -test_ivar_CONFRANGE := $(patsubst %.des,%.range, $(test_ivar_CONFDES)) -test_ivar_OBJS := $(test_ivar_IDLSRC:.idl=.o) -test_ivar_OBJS += $(test_ivar_SOURCES:.c=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.cc=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.cpp=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.cxx=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.C=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.idl=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.yacc=.o) -test_ivar_OBJS := $(test_ivar_OBJS:.lex=.o) -test_ivar : $(test_ivar_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_ivar_CONFDES);do cpp -C -o test_ivar.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_ivar.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_ivar_output - mkdir -p output - mkdir -p output/bin - cp -rf test_ivar output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_ivar_clean - -rm -rf $(test_ivar_OBJS) $(test_ivar_IDLSRCCPP) $(test_ivar_IDLSRCH) test_ivar.range conf/test_ivar.range - -rm -rf test_ivar - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_ivar_ccpc - ccp $(test_ivar_SOURCES) --formatter vim -endef - - -define test_ivar_cov - -endef - - - - -#---------------------end build target : test_ivar------------------ - -#----------------build target : test_auto-------------------- - -test_auto : CC := gcc -test_auto : CXX := g++ -test_auto : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_auto : CPPFLAGS := -test_auto : IDLFLAGS := -test_auto : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_auto : INCPATH := -I. -I.. $(DEP_INCPATH) -test_auto : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_auto : LDFLAGS := $(DEP_LDFLAGS) -test_auto : LINKFLAGS := -rdynamic - -test_auto_SOURCES := $(wildcard comake_autogen.cpp test_auto.cpp) -#test_auto_HEADERS := $(wildcard *.h) -test_auto_HEADERS := *.h -test_auto_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_auto_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_auto_IDLSRC)) -test_auto_IDLSRCH := $(patsubst %.idl,%.h, $(test_auto_IDLSRC)) -test_auto_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_auto.des) -test_auto_CONFRANGE := $(patsubst %.des,%.range, $(test_auto_CONFDES)) -test_auto_OBJS := $(test_auto_IDLSRC:.idl=.o) -test_auto_OBJS += $(test_auto_SOURCES:.c=.o) -test_auto_OBJS := $(test_auto_OBJS:.cc=.o) -test_auto_OBJS := $(test_auto_OBJS:.cpp=.o) -test_auto_OBJS := $(test_auto_OBJS:.cxx=.o) -test_auto_OBJS := $(test_auto_OBJS:.C=.o) -test_auto_OBJS := $(test_auto_OBJS:.idl=.o) -test_auto_OBJS := $(test_auto_OBJS:.yacc=.o) -test_auto_OBJS := $(test_auto_OBJS:.lex=.o) -test_auto : $(test_auto_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_auto_CONFDES);do cpp -C -o test_auto.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_auto.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_auto_output - mkdir -p output - mkdir -p output/bin - cp -rf test_auto output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_auto_clean - -rm -rf $(test_auto_OBJS) $(test_auto_IDLSRCCPP) $(test_auto_IDLSRCH) test_auto.range conf/test_auto.range - -rm -rf test_auto - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_auto_ccpc - ccp $(test_auto_SOURCES) --formatter vim -endef - - -define test_auto_cov - -endef - - - - -#---------------------end build target : test_auto------------------ - -#----------------build target : test_cfg-------------------- - -test_cfg : CC := gcc -test_cfg : CXX := g++ -test_cfg : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_cfg : CPPFLAGS := -test_cfg : IDLFLAGS := -test_cfg : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_cfg : INCPATH := -I. -I.. $(DEP_INCPATH) -test_cfg : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_cfg : LDFLAGS := $(DEP_LDFLAGS) -test_cfg : LINKFLAGS := -rdynamic - -test_cfg_SOURCES := $(wildcard comake_autogen.cpp test_cfg.cpp) -#test_cfg_HEADERS := $(wildcard *.h) -test_cfg_HEADERS := *.h -test_cfg_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_cfg_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_cfg_IDLSRC)) -test_cfg_IDLSRCH := $(patsubst %.idl,%.h, $(test_cfg_IDLSRC)) -test_cfg_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_cfg.des) -test_cfg_CONFRANGE := $(patsubst %.des,%.range, $(test_cfg_CONFDES)) -test_cfg_OBJS := $(test_cfg_IDLSRC:.idl=.o) -test_cfg_OBJS += $(test_cfg_SOURCES:.c=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.cc=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.cpp=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.cxx=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.C=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.idl=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.yacc=.o) -test_cfg_OBJS := $(test_cfg_OBJS:.lex=.o) -test_cfg : $(test_cfg_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_cfg_CONFDES);do cpp -C -o test_cfg.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_cfg.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_cfg_output - mkdir -p output - mkdir -p output/bin - cp -rf test_cfg output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_cfg_clean - -rm -rf $(test_cfg_OBJS) $(test_cfg_IDLSRCCPP) $(test_cfg_IDLSRCH) test_cfg.range conf/test_cfg.range - -rm -rf test_cfg - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_cfg_ccpc - ccp $(test_cfg_SOURCES) --formatter vim -endef - - -define test_cfg_cov - -endef - - - - -#---------------------end build target : test_cfg------------------ - -#----------------build target : test_conf-------------------- - -test_conf : CC := gcc -test_conf : CXX := g++ -test_conf : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_conf : CPPFLAGS := -test_conf : IDLFLAGS := -test_conf : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_conf : INCPATH := -I. -I.. $(DEP_INCPATH) -test_conf : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_conf : LDFLAGS := $(DEP_LDFLAGS) -test_conf : LINKFLAGS := -rdynamic - -test_conf_SOURCES := $(wildcard comake_autogen.cpp test_conf.cpp) -#test_conf_HEADERS := $(wildcard *.h) -test_conf_HEADERS := *.h -test_conf_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_conf_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_conf_IDLSRC)) -test_conf_IDLSRCH := $(patsubst %.idl,%.h, $(test_conf_IDLSRC)) -test_conf_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_conf.des) -test_conf_CONFRANGE := $(patsubst %.des,%.range, $(test_conf_CONFDES)) -test_conf_OBJS := $(test_conf_IDLSRC:.idl=.o) -test_conf_OBJS += $(test_conf_SOURCES:.c=.o) -test_conf_OBJS := $(test_conf_OBJS:.cc=.o) -test_conf_OBJS := $(test_conf_OBJS:.cpp=.o) -test_conf_OBJS := $(test_conf_OBJS:.cxx=.o) -test_conf_OBJS := $(test_conf_OBJS:.C=.o) -test_conf_OBJS := $(test_conf_OBJS:.idl=.o) -test_conf_OBJS := $(test_conf_OBJS:.yacc=.o) -test_conf_OBJS := $(test_conf_OBJS:.lex=.o) -test_conf : $(test_conf_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_conf_CONFDES);do cpp -C -o test_conf.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_conf.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_conf_output - mkdir -p output - mkdir -p output/bin - cp -rf test_conf output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_conf_clean - -rm -rf $(test_conf_OBJS) $(test_conf_IDLSRCCPP) $(test_conf_IDLSRCH) test_conf.range conf/test_conf.range - -rm -rf test_conf - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_conf_ccpc - ccp $(test_conf_SOURCES) --formatter vim -endef - - -define test_conf_cov - -endef - - - - -#---------------------end build target : test_conf------------------ - -#----------------build target : test_demo-------------------- - -test_demo : CC := gcc -test_demo : CXX := g++ -test_demo : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_demo : CPPFLAGS := -test_demo : IDLFLAGS := -test_demo : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_demo : INCPATH := -I. -I.. $(DEP_INCPATH) -test_demo : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_demo : LDFLAGS := $(DEP_LDFLAGS) -test_demo : LINKFLAGS := -rdynamic - -test_demo_SOURCES := $(wildcard comake_autogen.cpp test_demo.cpp) -#test_demo_HEADERS := $(wildcard *.h) -test_demo_HEADERS := *.h -test_demo_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_demo_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_demo_IDLSRC)) -test_demo_IDLSRCH := $(patsubst %.idl,%.h, $(test_demo_IDLSRC)) -test_demo_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_demo.des) -test_demo_CONFRANGE := $(patsubst %.des,%.range, $(test_demo_CONFDES)) -test_demo_OBJS := $(test_demo_IDLSRC:.idl=.o) -test_demo_OBJS += $(test_demo_SOURCES:.c=.o) -test_demo_OBJS := $(test_demo_OBJS:.cc=.o) -test_demo_OBJS := $(test_demo_OBJS:.cpp=.o) -test_demo_OBJS := $(test_demo_OBJS:.cxx=.o) -test_demo_OBJS := $(test_demo_OBJS:.C=.o) -test_demo_OBJS := $(test_demo_OBJS:.idl=.o) -test_demo_OBJS := $(test_demo_OBJS:.yacc=.o) -test_demo_OBJS := $(test_demo_OBJS:.lex=.o) -test_demo : $(test_demo_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_demo_CONFDES);do cpp -C -o test_demo.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_demo.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_demo_output - mkdir -p output - mkdir -p output/bin - cp -rf test_demo output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_demo_clean - -rm -rf $(test_demo_OBJS) $(test_demo_IDLSRCCPP) $(test_demo_IDLSRCH) test_demo.range conf/test_demo.range - -rm -rf test_demo - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_demo_ccpc - ccp $(test_demo_SOURCES) --formatter vim -endef - - -define test_demo_cov - -endef - - - - -#---------------------end build target : test_demo------------------ - -#----------------build target : test_err-------------------- - -test_err : CC := gcc -test_err : CXX := g++ -test_err : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_err : CPPFLAGS := -test_err : IDLFLAGS := -test_err : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_err : INCPATH := -I. -I.. $(DEP_INCPATH) -test_err : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_err : LDFLAGS := $(DEP_LDFLAGS) -test_err : LINKFLAGS := -rdynamic - -test_err_SOURCES := $(wildcard comake_autogen.cpp test_err.cpp) -#test_err_HEADERS := $(wildcard *.h) -test_err_HEADERS := *.h -test_err_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_err_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_err_IDLSRC)) -test_err_IDLSRCH := $(patsubst %.idl,%.h, $(test_err_IDLSRC)) -test_err_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_err.des) -test_err_CONFRANGE := $(patsubst %.des,%.range, $(test_err_CONFDES)) -test_err_OBJS := $(test_err_IDLSRC:.idl=.o) -test_err_OBJS += $(test_err_SOURCES:.c=.o) -test_err_OBJS := $(test_err_OBJS:.cc=.o) -test_err_OBJS := $(test_err_OBJS:.cpp=.o) -test_err_OBJS := $(test_err_OBJS:.cxx=.o) -test_err_OBJS := $(test_err_OBJS:.C=.o) -test_err_OBJS := $(test_err_OBJS:.idl=.o) -test_err_OBJS := $(test_err_OBJS:.yacc=.o) -test_err_OBJS := $(test_err_OBJS:.lex=.o) -test_err : $(test_err_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_err_CONFDES);do cpp -C -o test_err.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_err.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_err_output - mkdir -p output - mkdir -p output/bin - cp -rf test_err output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_err_clean - -rm -rf $(test_err_OBJS) $(test_err_IDLSRCCPP) $(test_err_IDLSRCH) test_err.range conf/test_err.range - -rm -rf test_err - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_err_ccpc - ccp $(test_err_SOURCES) --formatter vim -endef - - -define test_err_cov - -endef - - - - -#---------------------end build target : test_err------------------ - -#----------------build target : test_get_value-------------------- - -test_get_value : CC := gcc -test_get_value : CXX := g++ -test_get_value : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_get_value : CPPFLAGS := -test_get_value : IDLFLAGS := -test_get_value : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_get_value : INCPATH := -I. -I.. $(DEP_INCPATH) -test_get_value : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_get_value : LDFLAGS := $(DEP_LDFLAGS) -test_get_value : LINKFLAGS := -rdynamic - -test_get_value_SOURCES := $(wildcard comake_autogen.cpp test_get_value.cpp) -#test_get_value_HEADERS := $(wildcard *.h) -test_get_value_HEADERS := *.h -test_get_value_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_get_value_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_get_value_IDLSRC)) -test_get_value_IDLSRCH := $(patsubst %.idl,%.h, $(test_get_value_IDLSRC)) -test_get_value_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_get_value.des) -test_get_value_CONFRANGE := $(patsubst %.des,%.range, $(test_get_value_CONFDES)) -test_get_value_OBJS := $(test_get_value_IDLSRC:.idl=.o) -test_get_value_OBJS += $(test_get_value_SOURCES:.c=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.cc=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.cpp=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.cxx=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.C=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.idl=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.yacc=.o) -test_get_value_OBJS := $(test_get_value_OBJS:.lex=.o) -test_get_value : $(test_get_value_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_get_value_CONFDES);do cpp -C -o test_get_value.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_get_value.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_get_value_output - mkdir -p output - mkdir -p output/bin - cp -rf test_get_value output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_get_value_clean - -rm -rf $(test_get_value_OBJS) $(test_get_value_IDLSRCCPP) $(test_get_value_IDLSRCH) test_get_value.range conf/test_get_value.range - -rm -rf test_get_value - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_get_value_ccpc - ccp $(test_get_value_SOURCES) --formatter vim -endef - - -define test_get_value_cov - -endef - - - - -#---------------------end build target : test_get_value------------------ - -#----------------build target : test_option-------------------- - -test_option : CC := gcc -test_option : CXX := g++ -test_option : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_option : CPPFLAGS := -test_option : IDLFLAGS := -test_option : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_option : INCPATH := -I. -I.. $(DEP_INCPATH) -test_option : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_option : LDFLAGS := $(DEP_LDFLAGS) -test_option : LINKFLAGS := -rdynamic - -test_option_SOURCES := $(wildcard comake_autogen.cpp test_option.cpp) -#test_option_HEADERS := $(wildcard *.h) -test_option_HEADERS := *.h -test_option_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_option_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_option_IDLSRC)) -test_option_IDLSRCH := $(patsubst %.idl,%.h, $(test_option_IDLSRC)) -test_option_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_option.des) -test_option_CONFRANGE := $(patsubst %.des,%.range, $(test_option_CONFDES)) -test_option_OBJS := $(test_option_IDLSRC:.idl=.o) -test_option_OBJS += $(test_option_SOURCES:.c=.o) -test_option_OBJS := $(test_option_OBJS:.cc=.o) -test_option_OBJS := $(test_option_OBJS:.cpp=.o) -test_option_OBJS := $(test_option_OBJS:.cxx=.o) -test_option_OBJS := $(test_option_OBJS:.C=.o) -test_option_OBJS := $(test_option_OBJS:.idl=.o) -test_option_OBJS := $(test_option_OBJS:.yacc=.o) -test_option_OBJS := $(test_option_OBJS:.lex=.o) -test_option : $(test_option_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_option_CONFDES);do cpp -C -o test_option.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_option.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_option_output - mkdir -p output - mkdir -p output/bin - cp -rf test_option output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_option_clean - -rm -rf $(test_option_OBJS) $(test_option_IDLSRCCPP) $(test_option_IDLSRCH) test_option.range conf/test_option.range - -rm -rf test_option - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_option_ccpc - ccp $(test_option_SOURCES) --formatter vim -endef - - -define test_option_cov - -endef - - - - -#---------------------end build target : test_option------------------ - -#----------------build target : test_rawdata-------------------- - -test_rawdata : CC := gcc -test_rawdata : CXX := g++ -test_rawdata : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_rawdata : CPPFLAGS := -test_rawdata : IDLFLAGS := -test_rawdata : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_rawdata : INCPATH := -I. -I.. $(DEP_INCPATH) -test_rawdata : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_rawdata : LDFLAGS := $(DEP_LDFLAGS) -test_rawdata : LINKFLAGS := -rdynamic - -test_rawdata_SOURCES := $(wildcard comake_autogen.cpp test_rawdata.cpp) -#test_rawdata_HEADERS := $(wildcard *.h) -test_rawdata_HEADERS := *.h -test_rawdata_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_rawdata_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_rawdata_IDLSRC)) -test_rawdata_IDLSRCH := $(patsubst %.idl,%.h, $(test_rawdata_IDLSRC)) -test_rawdata_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_rawdata.des) -test_rawdata_CONFRANGE := $(patsubst %.des,%.range, $(test_rawdata_CONFDES)) -test_rawdata_OBJS := $(test_rawdata_IDLSRC:.idl=.o) -test_rawdata_OBJS += $(test_rawdata_SOURCES:.c=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.cc=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.cpp=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.cxx=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.C=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.idl=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.yacc=.o) -test_rawdata_OBJS := $(test_rawdata_OBJS:.lex=.o) -test_rawdata : $(test_rawdata_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_rawdata_CONFDES);do cpp -C -o test_rawdata.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_rawdata.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_rawdata_output - mkdir -p output - mkdir -p output/bin - cp -rf test_rawdata output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_rawdata_clean - -rm -rf $(test_rawdata_OBJS) $(test_rawdata_IDLSRCCPP) $(test_rawdata_IDLSRCH) test_rawdata.range conf/test_rawdata.range - -rm -rf test_rawdata - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_rawdata_ccpc - ccp $(test_rawdata_SOURCES) --formatter vim -endef - - -define test_rawdata_cov - -endef - - - - -#---------------------end build target : test_rawdata------------------ - -#----------------build target : test_reader-------------------- - -test_reader : CC := gcc -test_reader : CXX := g++ -test_reader : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_reader : CPPFLAGS := -test_reader : IDLFLAGS := -test_reader : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_reader : INCPATH := -I. -I.. $(DEP_INCPATH) -test_reader : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_reader : LDFLAGS := $(DEP_LDFLAGS) -test_reader : LINKFLAGS := -rdynamic - -test_reader_SOURCES := $(wildcard comake_autogen.cpp test_reader.cpp) -#test_reader_HEADERS := $(wildcard *.h) -test_reader_HEADERS := *.h -test_reader_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_reader_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_reader_IDLSRC)) -test_reader_IDLSRCH := $(patsubst %.idl,%.h, $(test_reader_IDLSRC)) -test_reader_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_reader.des) -test_reader_CONFRANGE := $(patsubst %.des,%.range, $(test_reader_CONFDES)) -test_reader_OBJS := $(test_reader_IDLSRC:.idl=.o) -test_reader_OBJS += $(test_reader_SOURCES:.c=.o) -test_reader_OBJS := $(test_reader_OBJS:.cc=.o) -test_reader_OBJS := $(test_reader_OBJS:.cpp=.o) -test_reader_OBJS := $(test_reader_OBJS:.cxx=.o) -test_reader_OBJS := $(test_reader_OBJS:.C=.o) -test_reader_OBJS := $(test_reader_OBJS:.idl=.o) -test_reader_OBJS := $(test_reader_OBJS:.yacc=.o) -test_reader_OBJS := $(test_reader_OBJS:.lex=.o) -test_reader : $(test_reader_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_reader_CONFDES);do cpp -C -o test_reader.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_reader.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_reader_output - mkdir -p output - mkdir -p output/bin - cp -rf test_reader output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_reader_clean - -rm -rf $(test_reader_OBJS) $(test_reader_IDLSRCCPP) $(test_reader_IDLSRCH) test_reader.range conf/test_reader.range - -rm -rf test_reader - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_reader_ccpc - ccp $(test_reader_SOURCES) --formatter vim -endef - - -define test_reader_cov - -endef - - - - -#---------------------end build target : test_reader------------------ - -#----------------build target : test_rebuild-------------------- - -test_rebuild : CC := gcc -test_rebuild : CXX := g++ -test_rebuild : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_rebuild : CPPFLAGS := -test_rebuild : IDLFLAGS := -test_rebuild : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_rebuild : INCPATH := -I. -I.. $(DEP_INCPATH) -test_rebuild : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_rebuild : LDFLAGS := $(DEP_LDFLAGS) -test_rebuild : LINKFLAGS := -rdynamic - -test_rebuild_SOURCES := $(wildcard comake_autogen.cpp test_rebuild.cpp) -#test_rebuild_HEADERS := $(wildcard *.h) -test_rebuild_HEADERS := *.h -test_rebuild_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_rebuild_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_rebuild_IDLSRC)) -test_rebuild_IDLSRCH := $(patsubst %.idl,%.h, $(test_rebuild_IDLSRC)) -test_rebuild_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_rebuild.des) -test_rebuild_CONFRANGE := $(patsubst %.des,%.range, $(test_rebuild_CONFDES)) -test_rebuild_OBJS := $(test_rebuild_IDLSRC:.idl=.o) -test_rebuild_OBJS += $(test_rebuild_SOURCES:.c=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.cc=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.cpp=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.cxx=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.C=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.idl=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.yacc=.o) -test_rebuild_OBJS := $(test_rebuild_OBJS:.lex=.o) -test_rebuild : $(test_rebuild_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_rebuild_CONFDES);do cpp -C -o test_rebuild.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_rebuild.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_rebuild_output - mkdir -p output - mkdir -p output/bin - cp -rf test_rebuild output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_rebuild_clean - -rm -rf $(test_rebuild_OBJS) $(test_rebuild_IDLSRCCPP) $(test_rebuild_IDLSRCH) test_rebuild.range conf/test_rebuild.range - -rm -rf test_rebuild - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_rebuild_ccpc - ccp $(test_rebuild_SOURCES) --formatter vim -endef - - -define test_rebuild_cov - -endef - - - - -#---------------------end build target : test_rebuild------------------ - -#----------------build target : test_str-------------------- - -test_str : CC := gcc -test_str : CXX := g++ -test_str : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_str : CPPFLAGS := -test_str : IDLFLAGS := -test_str : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_str : INCPATH := -I. -I.. $(DEP_INCPATH) -test_str : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_str : LDFLAGS := $(DEP_LDFLAGS) -test_str : LINKFLAGS := -rdynamic - -test_str_SOURCES := $(wildcard comake_autogen.cpp test_str.cpp) -#test_str_HEADERS := $(wildcard *.h) -test_str_HEADERS := *.h -test_str_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_str_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_str_IDLSRC)) -test_str_IDLSRCH := $(patsubst %.idl,%.h, $(test_str_IDLSRC)) -test_str_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_str.des) -test_str_CONFRANGE := $(patsubst %.des,%.range, $(test_str_CONFDES)) -test_str_OBJS := $(test_str_IDLSRC:.idl=.o) -test_str_OBJS += $(test_str_SOURCES:.c=.o) -test_str_OBJS := $(test_str_OBJS:.cc=.o) -test_str_OBJS := $(test_str_OBJS:.cpp=.o) -test_str_OBJS := $(test_str_OBJS:.cxx=.o) -test_str_OBJS := $(test_str_OBJS:.C=.o) -test_str_OBJS := $(test_str_OBJS:.idl=.o) -test_str_OBJS := $(test_str_OBJS:.yacc=.o) -test_str_OBJS := $(test_str_OBJS:.lex=.o) -test_str : $(test_str_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_str_CONFDES);do cpp -C -o test_str.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_str.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_str_output - mkdir -p output - mkdir -p output/bin - cp -rf test_str output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_str_clean - -rm -rf $(test_str_OBJS) $(test_str_IDLSRCCPP) $(test_str_IDLSRCH) test_str.range conf/test_str.range - -rm -rf test_str - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_str_ccpc - ccp $(test_str_SOURCES) --formatter vim -endef - - -define test_str_cov - -endef - - - - -#---------------------end build target : test_str------------------ - -#----------------build target : test_t1-------------------- - -test_t1 : CC := gcc -test_t1 : CXX := g++ -test_t1 : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_t1 : CPPFLAGS := -test_t1 : IDLFLAGS := -test_t1 : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_t1 : INCPATH := -I. -I.. $(DEP_INCPATH) -test_t1 : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_t1 : LDFLAGS := $(DEP_LDFLAGS) -test_t1 : LINKFLAGS := -rdynamic - -test_t1_SOURCES := $(wildcard comake_autogen.cpp test_t1.cpp) -#test_t1_HEADERS := $(wildcard *.h) -test_t1_HEADERS := *.h -test_t1_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_t1_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_t1_IDLSRC)) -test_t1_IDLSRCH := $(patsubst %.idl,%.h, $(test_t1_IDLSRC)) -test_t1_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_t1.des) -test_t1_CONFRANGE := $(patsubst %.des,%.range, $(test_t1_CONFDES)) -test_t1_OBJS := $(test_t1_IDLSRC:.idl=.o) -test_t1_OBJS += $(test_t1_SOURCES:.c=.o) -test_t1_OBJS := $(test_t1_OBJS:.cc=.o) -test_t1_OBJS := $(test_t1_OBJS:.cpp=.o) -test_t1_OBJS := $(test_t1_OBJS:.cxx=.o) -test_t1_OBJS := $(test_t1_OBJS:.C=.o) -test_t1_OBJS := $(test_t1_OBJS:.idl=.o) -test_t1_OBJS := $(test_t1_OBJS:.yacc=.o) -test_t1_OBJS := $(test_t1_OBJS:.lex=.o) -test_t1 : $(test_t1_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_t1_CONFDES);do cpp -C -o test_t1.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_t1.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_t1_output - mkdir -p output - mkdir -p output/bin - cp -rf test_t1 output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_t1_clean - -rm -rf $(test_t1_OBJS) $(test_t1_IDLSRCCPP) $(test_t1_IDLSRCH) test_t1.range conf/test_t1.range - -rm -rf test_t1 - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_t1_ccpc - ccp $(test_t1_SOURCES) --formatter vim -endef - - -define test_t1_cov - -endef - - - - -#---------------------end build target : test_t1------------------ - -#----------------build target : test_trans_float-------------------- - -test_trans_float : CC := gcc -test_trans_float : CXX := g++ -test_trans_float : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_trans_float : CPPFLAGS := -test_trans_float : IDLFLAGS := -test_trans_float : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_trans_float : INCPATH := -I. -I.. $(DEP_INCPATH) -test_trans_float : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_trans_float : LDFLAGS := $(DEP_LDFLAGS) -test_trans_float : LINKFLAGS := -rdynamic - -test_trans_float_SOURCES := $(wildcard comake_autogen.cpp test_trans_float.cpp) -#test_trans_float_HEADERS := $(wildcard *.h) -test_trans_float_HEADERS := *.h -test_trans_float_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_trans_float_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_trans_float_IDLSRC)) -test_trans_float_IDLSRCH := $(patsubst %.idl,%.h, $(test_trans_float_IDLSRC)) -test_trans_float_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_trans_float.des) -test_trans_float_CONFRANGE := $(patsubst %.des,%.range, $(test_trans_float_CONFDES)) -test_trans_float_OBJS := $(test_trans_float_IDLSRC:.idl=.o) -test_trans_float_OBJS += $(test_trans_float_SOURCES:.c=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.cc=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.cpp=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.cxx=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.C=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.idl=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.yacc=.o) -test_trans_float_OBJS := $(test_trans_float_OBJS:.lex=.o) -test_trans_float : $(test_trans_float_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_trans_float_CONFDES);do cpp -C -o test_trans_float.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_trans_float.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_trans_float_output - mkdir -p output - mkdir -p output/bin - cp -rf test_trans_float output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_trans_float_clean - -rm -rf $(test_trans_float_OBJS) $(test_trans_float_IDLSRCCPP) $(test_trans_float_IDLSRCH) test_trans_float.range conf/test_trans_float.range - -rm -rf test_trans_float - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_trans_float_ccpc - ccp $(test_trans_float_SOURCES) --formatter vim -endef - - -define test_trans_float_cov - -endef - - - - -#---------------------end build target : test_trans_float------------------ - -#----------------build target : test_trans_str2str-------------------- - -test_trans_str2str : CC := gcc -test_trans_str2str : CXX := g++ -test_trans_str2str : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_trans_str2str : CPPFLAGS := -test_trans_str2str : IDLFLAGS := -test_trans_str2str : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_trans_str2str : INCPATH := -I. -I.. $(DEP_INCPATH) -test_trans_str2str : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_trans_str2str : LDFLAGS := $(DEP_LDFLAGS) -test_trans_str2str : LINKFLAGS := -rdynamic - -test_trans_str2str_SOURCES := $(wildcard comake_autogen.cpp test_trans_str2str.cpp) -#test_trans_str2str_HEADERS := $(wildcard *.h) -test_trans_str2str_HEADERS := *.h -test_trans_str2str_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_trans_str2str_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_trans_str2str_IDLSRC)) -test_trans_str2str_IDLSRCH := $(patsubst %.idl,%.h, $(test_trans_str2str_IDLSRC)) -test_trans_str2str_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_trans_str2str.des) -test_trans_str2str_CONFRANGE := $(patsubst %.des,%.range, $(test_trans_str2str_CONFDES)) -test_trans_str2str_OBJS := $(test_trans_str2str_IDLSRC:.idl=.o) -test_trans_str2str_OBJS += $(test_trans_str2str_SOURCES:.c=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.cc=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.cpp=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.cxx=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.C=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.idl=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.yacc=.o) -test_trans_str2str_OBJS := $(test_trans_str2str_OBJS:.lex=.o) -test_trans_str2str : $(test_trans_str2str_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_trans_str2str_CONFDES);do cpp -C -o test_trans_str2str.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_trans_str2str.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_trans_str2str_output - mkdir -p output - mkdir -p output/bin - cp -rf test_trans_str2str output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_trans_str2str_clean - -rm -rf $(test_trans_str2str_OBJS) $(test_trans_str2str_IDLSRCCPP) $(test_trans_str2str_IDLSRCH) test_trans_str2str.range conf/test_trans_str2str.range - -rm -rf test_trans_str2str - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_trans_str2str_ccpc - ccp $(test_trans_str2str_SOURCES) --formatter vim -endef - - -define test_trans_str2str_cov - -endef - - - - -#---------------------end build target : test_trans_str2str------------------ - -#----------------build target : test_xiaowei-------------------- - -test_xiaowei : CC := gcc -test_xiaowei : CXX := g++ -test_xiaowei : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_xiaowei : CPPFLAGS := -test_xiaowei : IDLFLAGS := -test_xiaowei : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_xiaowei : INCPATH := -I. -I.. $(DEP_INCPATH) -test_xiaowei : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_xiaowei : LDFLAGS := $(DEP_LDFLAGS) -test_xiaowei : LINKFLAGS := -rdynamic - -test_xiaowei_SOURCES := $(wildcard comake_autogen.cpp test_xiaowei.cpp) -#test_xiaowei_HEADERS := $(wildcard *.h) -test_xiaowei_HEADERS := *.h -test_xiaowei_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_xiaowei_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_xiaowei_IDLSRC)) -test_xiaowei_IDLSRCH := $(patsubst %.idl,%.h, $(test_xiaowei_IDLSRC)) -test_xiaowei_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_xiaowei.des) -test_xiaowei_CONFRANGE := $(patsubst %.des,%.range, $(test_xiaowei_CONFDES)) -test_xiaowei_OBJS := $(test_xiaowei_IDLSRC:.idl=.o) -test_xiaowei_OBJS += $(test_xiaowei_SOURCES:.c=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.cc=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.cpp=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.cxx=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.C=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.idl=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.yacc=.o) -test_xiaowei_OBJS := $(test_xiaowei_OBJS:.lex=.o) -test_xiaowei : $(test_xiaowei_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_xiaowei_CONFDES);do cpp -C -o test_xiaowei.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_xiaowei.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_xiaowei_output - mkdir -p output - mkdir -p output/bin - cp -rf test_xiaowei output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_xiaowei_clean - -rm -rf $(test_xiaowei_OBJS) $(test_xiaowei_IDLSRCCPP) $(test_xiaowei_IDLSRCH) test_xiaowei.range conf/test_xiaowei.range - -rm -rf test_xiaowei - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_xiaowei_ccpc - ccp $(test_xiaowei_SOURCES) --formatter vim -endef - - -define test_xiaowei_cov - -endef - - - - -#---------------------end build target : test_xiaowei------------------ - -#----------------build target : test_cfg2-------------------- - -test_cfg2 : CC := gcc -test_cfg2 : CXX := g++ -test_cfg2 : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_cfg2 : CPPFLAGS := -test_cfg2 : IDLFLAGS := -test_cfg2 : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_cfg2 : INCPATH := -I. -I.. $(DEP_INCPATH) -test_cfg2 : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_cfg2 : LDFLAGS := $(DEP_LDFLAGS) -test_cfg2 : LINKFLAGS := -rdynamic - -test_cfg2_SOURCES := $(wildcard comake_autogen.cpp test_cfg2.cpp) -#test_cfg2_HEADERS := $(wildcard *.h) -test_cfg2_HEADERS := *.h -test_cfg2_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_cfg2_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_cfg2_IDLSRC)) -test_cfg2_IDLSRCH := $(patsubst %.idl,%.h, $(test_cfg2_IDLSRC)) -test_cfg2_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_cfg2.des) -test_cfg2_CONFRANGE := $(patsubst %.des,%.range, $(test_cfg2_CONFDES)) -test_cfg2_OBJS := $(test_cfg2_IDLSRC:.idl=.o) -test_cfg2_OBJS += $(test_cfg2_SOURCES:.c=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.cc=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.cpp=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.cxx=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.C=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.idl=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.yacc=.o) -test_cfg2_OBJS := $(test_cfg2_OBJS:.lex=.o) -test_cfg2 : $(test_cfg2_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_cfg2_CONFDES);do cpp -C -o test_cfg2.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_cfg2.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_cfg2_output - mkdir -p output - mkdir -p output/bin - cp -rf test_cfg2 output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_cfg2_clean - -rm -rf $(test_cfg2_OBJS) $(test_cfg2_IDLSRCCPP) $(test_cfg2_IDLSRCH) test_cfg2.range conf/test_cfg2.range - -rm -rf test_cfg2 - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_cfg2_ccpc - ccp $(test_cfg2_SOURCES) --formatter vim -endef - - -define test_cfg2_cov - -endef - - - - -#---------------------end build target : test_cfg2------------------ - -#----------------build target : test_cfg3-------------------- - -test_cfg3 : CC := gcc -test_cfg3 : CXX := g++ -test_cfg3 : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_cfg3 : CPPFLAGS := -test_cfg3 : IDLFLAGS := -test_cfg3 : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_cfg3 : INCPATH := -I. -I.. $(DEP_INCPATH) -test_cfg3 : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_cfg3 : LDFLAGS := $(DEP_LDFLAGS) -test_cfg3 : LINKFLAGS := -rdynamic - -test_cfg3_SOURCES := $(wildcard comake_autogen.cpp test_cfg3.cpp) -#test_cfg3_HEADERS := $(wildcard *.h) -test_cfg3_HEADERS := *.h -test_cfg3_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_cfg3_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_cfg3_IDLSRC)) -test_cfg3_IDLSRCH := $(patsubst %.idl,%.h, $(test_cfg3_IDLSRC)) -test_cfg3_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_cfg3.des) -test_cfg3_CONFRANGE := $(patsubst %.des,%.range, $(test_cfg3_CONFDES)) -test_cfg3_OBJS := $(test_cfg3_IDLSRC:.idl=.o) -test_cfg3_OBJS += $(test_cfg3_SOURCES:.c=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.cc=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.cpp=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.cxx=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.C=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.idl=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.yacc=.o) -test_cfg3_OBJS := $(test_cfg3_OBJS:.lex=.o) -test_cfg3 : $(test_cfg3_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_cfg3_CONFDES);do cpp -C -o test_cfg3.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_cfg3.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_cfg3_output - mkdir -p output - mkdir -p output/bin - cp -rf test_cfg3 output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_cfg3_clean - -rm -rf $(test_cfg3_OBJS) $(test_cfg3_IDLSRCCPP) $(test_cfg3_IDLSRCH) test_cfg3.range conf/test_cfg3.range - -rm -rf test_cfg3 - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_cfg3_ccpc - ccp $(test_cfg3_SOURCES) --formatter vim -endef - - -define test_cfg3_cov - -endef - - - - -#---------------------end build target : test_cfg3------------------ - -#----------------build target : test_zr-------------------- - -test_zr : CC := gcc -test_zr : CXX := g++ -test_zr : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_zr : CPPFLAGS := -test_zr : IDLFLAGS := -test_zr : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_zr : INCPATH := -I. -I.. $(DEP_INCPATH) -test_zr : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_zr : LDFLAGS := $(DEP_LDFLAGS) -test_zr : LINKFLAGS := -rdynamic - -test_zr_SOURCES := $(wildcard comake_autogen.cpp test_zr.cpp) -#test_zr_HEADERS := $(wildcard *.h) -test_zr_HEADERS := *.h -test_zr_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_zr_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_zr_IDLSRC)) -test_zr_IDLSRCH := $(patsubst %.idl,%.h, $(test_zr_IDLSRC)) -test_zr_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_zr.des) -test_zr_CONFRANGE := $(patsubst %.des,%.range, $(test_zr_CONFDES)) -test_zr_OBJS := $(test_zr_IDLSRC:.idl=.o) -test_zr_OBJS += $(test_zr_SOURCES:.c=.o) -test_zr_OBJS := $(test_zr_OBJS:.cc=.o) -test_zr_OBJS := $(test_zr_OBJS:.cpp=.o) -test_zr_OBJS := $(test_zr_OBJS:.cxx=.o) -test_zr_OBJS := $(test_zr_OBJS:.C=.o) -test_zr_OBJS := $(test_zr_OBJS:.idl=.o) -test_zr_OBJS := $(test_zr_OBJS:.yacc=.o) -test_zr_OBJS := $(test_zr_OBJS:.lex=.o) -test_zr : $(test_zr_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_zr_CONFDES);do cpp -C -o test_zr.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_zr.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_zr_output - mkdir -p output - mkdir -p output/bin - cp -rf test_zr output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_zr_clean - -rm -rf $(test_zr_OBJS) $(test_zr_IDLSRCCPP) $(test_zr_IDLSRCH) test_zr.range conf/test_zr.range - -rm -rf test_zr - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_zr_ccpc - ccp $(test_zr_SOURCES) --formatter vim -endef - - -define test_zr_cov - -endef - - - - -#---------------------end build target : test_zr------------------ - -#----------------build target : test_to_default-------------------- - -test_to_default : CC := gcc -test_to_default : CXX := g++ -test_to_default : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_to_default : CPPFLAGS := -test_to_default : IDLFLAGS := -test_to_default : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_to_default : INCPATH := -I. -I.. $(DEP_INCPATH) -test_to_default : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_to_default : LDFLAGS := $(DEP_LDFLAGS) -test_to_default : LINKFLAGS := -rdynamic - -test_to_default_SOURCES := $(wildcard comake_autogen.cpp test_to_default.cpp) -#test_to_default_HEADERS := $(wildcard *.h) -test_to_default_HEADERS := *.h -test_to_default_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_to_default_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_to_default_IDLSRC)) -test_to_default_IDLSRCH := $(patsubst %.idl,%.h, $(test_to_default_IDLSRC)) -test_to_default_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_to_default.des) -test_to_default_CONFRANGE := $(patsubst %.des,%.range, $(test_to_default_CONFDES)) -test_to_default_OBJS := $(test_to_default_IDLSRC:.idl=.o) -test_to_default_OBJS += $(test_to_default_SOURCES:.c=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.cc=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.cpp=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.cxx=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.C=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.idl=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.yacc=.o) -test_to_default_OBJS := $(test_to_default_OBJS:.lex=.o) -test_to_default : $(test_to_default_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_to_default_CONFDES);do cpp -C -o test_to_default.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_to_default.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_to_default_output - mkdir -p output - mkdir -p output/bin - cp -rf test_to_default output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_to_default_clean - -rm -rf $(test_to_default_OBJS) $(test_to_default_IDLSRCCPP) $(test_to_default_IDLSRCH) test_to_default.range conf/test_to_default.range - -rm -rf test_to_default - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_to_default_ccpc - ccp $(test_to_default_SOURCES) --formatter vim -endef - - -define test_to_default_cov - -endef - - - - -#---------------------end build target : test_to_default------------------ - -#----------------build target : test_checkone-------------------- - -test_checkone : CC := gcc -test_checkone : CXX := g++ -test_checkone : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_checkone : CPPFLAGS := -test_checkone : IDLFLAGS := -test_checkone : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_checkone : INCPATH := -I. -I.. $(DEP_INCPATH) -test_checkone : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_checkone : LDFLAGS := $(DEP_LDFLAGS) -test_checkone : LINKFLAGS := -rdynamic - -test_checkone_SOURCES := $(wildcard comake_autogen.cpp test_checkone.cpp) -#test_checkone_HEADERS := $(wildcard *.h) -test_checkone_HEADERS := *.h -test_checkone_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_checkone_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_checkone_IDLSRC)) -test_checkone_IDLSRCH := $(patsubst %.idl,%.h, $(test_checkone_IDLSRC)) -test_checkone_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_checkone.des) -test_checkone_CONFRANGE := $(patsubst %.des,%.range, $(test_checkone_CONFDES)) -test_checkone_OBJS := $(test_checkone_IDLSRC:.idl=.o) -test_checkone_OBJS += $(test_checkone_SOURCES:.c=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.cc=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.cpp=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.cxx=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.C=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.idl=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.yacc=.o) -test_checkone_OBJS := $(test_checkone_OBJS:.lex=.o) -test_checkone : $(test_checkone_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_checkone_CONFDES);do cpp -C -o test_checkone.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_checkone.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_checkone_output - mkdir -p output - mkdir -p output/bin - cp -rf test_checkone output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_checkone_clean - -rm -rf $(test_checkone_OBJS) $(test_checkone_IDLSRCCPP) $(test_checkone_IDLSRCH) test_checkone.range conf/test_checkone.range - -rm -rf test_checkone - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_checkone_ccpc - ccp $(test_checkone_SOURCES) --formatter vim -endef - - -define test_checkone_cov - -endef - - - - -#---------------------end build target : test_checkone------------------ - -#----------------build target : test_reloader-------------------- - -test_reloader : CC := gcc -test_reloader : CXX := g++ -test_reloader : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_reloader : CPPFLAGS := -test_reloader : IDLFLAGS := -test_reloader : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_reloader : INCPATH := -I. -I.. $(DEP_INCPATH) -test_reloader : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_reloader : LDFLAGS := $(DEP_LDFLAGS) -test_reloader : LINKFLAGS := -rdynamic - -test_reloader_SOURCES := $(wildcard comake_autogen.cpp test_reloader.cpp) -#test_reloader_HEADERS := $(wildcard *.h) -test_reloader_HEADERS := *.h -test_reloader_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_reloader_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_reloader_IDLSRC)) -test_reloader_IDLSRCH := $(patsubst %.idl,%.h, $(test_reloader_IDLSRC)) -test_reloader_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_reloader.des) -test_reloader_CONFRANGE := $(patsubst %.des,%.range, $(test_reloader_CONFDES)) -test_reloader_OBJS := $(test_reloader_IDLSRC:.idl=.o) -test_reloader_OBJS += $(test_reloader_SOURCES:.c=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.cc=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.cpp=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.cxx=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.C=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.idl=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.yacc=.o) -test_reloader_OBJS := $(test_reloader_OBJS:.lex=.o) -test_reloader : $(test_reloader_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_reloader_CONFDES);do cpp -C -o test_reloader.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_reloader.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_reloader_output - mkdir -p output - mkdir -p output/bin - cp -rf test_reloader output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_reloader_clean - -rm -rf $(test_reloader_OBJS) $(test_reloader_IDLSRCCPP) $(test_reloader_IDLSRCH) test_reloader.range conf/test_reloader.range - -rm -rf test_reloader - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_reloader_ccpc - ccp $(test_reloader_SOURCES) --formatter vim -endef - - -define test_reloader_cov - -endef - - - - -#---------------------end build target : test_reloader------------------ - -#----------------build target : test_sigreload-------------------- - -test_sigreload : CC := gcc -test_sigreload : CXX := g++ -test_sigreload : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_sigreload : CPPFLAGS := -test_sigreload : IDLFLAGS := -test_sigreload : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_sigreload : INCPATH := -I. -I.. $(DEP_INCPATH) -test_sigreload : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_sigreload : LDFLAGS := $(DEP_LDFLAGS) -test_sigreload : LINKFLAGS := -rdynamic - -test_sigreload_SOURCES := $(wildcard comake_autogen.cpp test_sigreload.cpp) -#test_sigreload_HEADERS := $(wildcard *.h) -test_sigreload_HEADERS := *.h -test_sigreload_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_sigreload_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_sigreload_IDLSRC)) -test_sigreload_IDLSRCH := $(patsubst %.idl,%.h, $(test_sigreload_IDLSRC)) -test_sigreload_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_sigreload.des) -test_sigreload_CONFRANGE := $(patsubst %.des,%.range, $(test_sigreload_CONFDES)) -test_sigreload_OBJS := $(test_sigreload_IDLSRC:.idl=.o) -test_sigreload_OBJS += $(test_sigreload_SOURCES:.c=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.cc=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.cpp=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.cxx=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.C=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.idl=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.yacc=.o) -test_sigreload_OBJS := $(test_sigreload_OBJS:.lex=.o) -test_sigreload : $(test_sigreload_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_sigreload_CONFDES);do cpp -C -o test_sigreload.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_sigreload.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_sigreload_output - mkdir -p output - mkdir -p output/bin - cp -rf test_sigreload output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_sigreload_clean - -rm -rf $(test_sigreload_OBJS) $(test_sigreload_IDLSRCCPP) $(test_sigreload_IDLSRCH) test_sigreload.range conf/test_sigreload.range - -rm -rf test_sigreload - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_sigreload_ccpc - ccp $(test_sigreload_SOURCES) --formatter vim -endef - - -define test_sigreload_cov - -endef - - - - -#---------------------end build target : test_sigreload------------------ - -#----------------build target : test_filereload-------------------- - -test_filereload : CC := gcc -test_filereload : CXX := g++ -test_filereload : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_filereload : CPPFLAGS := -test_filereload : IDLFLAGS := -test_filereload : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_filereload : INCPATH := -I. -I.. $(DEP_INCPATH) -test_filereload : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_filereload : LDFLAGS := $(DEP_LDFLAGS) -test_filereload : LINKFLAGS := -rdynamic - -test_filereload_SOURCES := $(wildcard comake_autogen.cpp test_filereload.cpp) -#test_filereload_HEADERS := $(wildcard *.h) -test_filereload_HEADERS := *.h -test_filereload_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_filereload_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_filereload_IDLSRC)) -test_filereload_IDLSRCH := $(patsubst %.idl,%.h, $(test_filereload_IDLSRC)) -test_filereload_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_filereload.des) -test_filereload_CONFRANGE := $(patsubst %.des,%.range, $(test_filereload_CONFDES)) -test_filereload_OBJS := $(test_filereload_IDLSRC:.idl=.o) -test_filereload_OBJS += $(test_filereload_SOURCES:.c=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.cc=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.cpp=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.cxx=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.C=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.idl=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.yacc=.o) -test_filereload_OBJS := $(test_filereload_OBJS:.lex=.o) -test_filereload : $(test_filereload_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_filereload_CONFDES);do cpp -C -o test_filereload.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_filereload.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_filereload_output - mkdir -p output - mkdir -p output/bin - cp -rf test_filereload output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_filereload_clean - -rm -rf $(test_filereload_OBJS) $(test_filereload_IDLSRCCPP) $(test_filereload_IDLSRCH) test_filereload.range conf/test_filereload.range - -rm -rf test_filereload - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_filereload_ccpc - ccp $(test_filereload_SOURCES) --formatter vim -endef - - -define test_filereload_cov - -endef - - - - -#---------------------end build target : test_filereload------------------ - -#----------------build target : test_setvalue-------------------- - -test_setvalue : CC := gcc -test_setvalue : CXX := g++ -test_setvalue : CXXFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_setvalue : CPPFLAGS := -test_setvalue : IDLFLAGS := -test_setvalue : CFLAGS := -pipe -fsigned-char -Wall -W -g -fPIC -test_setvalue : INCPATH := -I. -I.. $(DEP_INCPATH) -test_setvalue : LDLIBS := -lcrypto -lm -lpthread $(DEP_LDLIBS) -test_setvalue : LDFLAGS := $(DEP_LDFLAGS) -test_setvalue : LINKFLAGS := -rdynamic - -test_setvalue_SOURCES := $(wildcard comake_autogen.cpp test_setvalue.cpp) -#test_setvalue_HEADERS := $(wildcard *.h) -test_setvalue_HEADERS := *.h -test_setvalue_IDLSRC := $(wildcard __$IDLSRC_VALUE$__) -test_setvalue_IDLSRCCPP := $(patsubst %.idl,%.cpp, $(test_setvalue_IDLSRC)) -test_setvalue_IDLSRCH := $(patsubst %.idl,%.h, $(test_setvalue_IDLSRC)) -test_setvalue_CONFDES := $(wildcard __$CONFDES$_VALUE$__ test_setvalue.des) -test_setvalue_CONFRANGE := $(patsubst %.des,%.range, $(test_setvalue_CONFDES)) -test_setvalue_OBJS := $(test_setvalue_IDLSRC:.idl=.o) -test_setvalue_OBJS += $(test_setvalue_SOURCES:.c=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.cc=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.cpp=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.cxx=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.C=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.idl=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.yacc=.o) -test_setvalue_OBJS := $(test_setvalue_OBJS:.lex=.o) -test_setvalue : $(test_setvalue_OBJS) - @echo "force_clean" - $(foreach n, $(wildcard ), $(if ifeq($(suffix $(n)), .c), $(CC) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); , $(CXX) -c -o $(basename $(n)).o $(n) $(CXXFLAGS) $(CPPFLAGS) $(INCPATH); )) - @`for x in $(test_setvalue_CONFDES);do cpp -C -o test_setvalue.range $$x $(CPPFLAGS) $(INCPATH);mkdir -p conf;cp test_setvalue.range conf/; done` - $(LINK) $^ -o $@ -Xlinker "-(" $(LDFLAGS) $(LDLIBS) $(LINKFLAGS) -Xlinker "-)" - - -define test_setvalue_output - mkdir -p output - mkdir -p output/bin - cp -rf test_setvalue output/bin - `if [ -e "conf" ];then cp -rf conf output/ ;fi` - -endef - - -define test_setvalue_clean - -rm -rf $(test_setvalue_OBJS) $(test_setvalue_IDLSRCCPP) $(test_setvalue_IDLSRCH) test_setvalue.range conf/test_setvalue.range - -rm -rf test_setvalue - -rm -rf output - -rm -rf ccp_output.error ccp_output_scm.xml ccp_output.xml ccp_output.pclint ccp_output.txt -endef - - -define test_setvalue_ccpc - ccp $(test_setvalue_SOURCES) --formatter vim -endef - - -define test_setvalue_cov - -endef - - - - -#---------------------end build target : test_setvalue------------------ - -define _output - $(test_get_default_output) - $(test_1010new_output) - $(test_ivar_output) - $(test_auto_output) - $(test_cfg_output) - $(test_conf_output) - $(test_demo_output) - $(test_err_output) - $(test_get_value_output) - $(test_option_output) - $(test_rawdata_output) - $(test_reader_output) - $(test_rebuild_output) - $(test_str_output) - $(test_t1_output) - $(test_trans_float_output) - $(test_trans_str2str_output) - $(test_xiaowei_output) - $(test_cfg2_output) - $(test_cfg3_output) - $(test_zr_output) - $(test_to_default_output) - $(test_checkone_output) - $(test_reloader_output) - $(test_sigreload_output) - $(test_filereload_output) - $(test_setvalue_output) -endef - - -define _clean - $(test_get_default_clean) - $(test_1010new_clean) - $(test_ivar_clean) - $(test_auto_clean) - $(test_cfg_clean) - $(test_conf_clean) - $(test_demo_clean) - $(test_err_clean) - $(test_get_value_clean) - $(test_option_clean) - $(test_rawdata_clean) - $(test_reader_clean) - $(test_rebuild_clean) - $(test_str_clean) - $(test_t1_clean) - $(test_trans_float_clean) - $(test_trans_str2str_clean) - $(test_xiaowei_clean) - $(test_cfg2_clean) - $(test_cfg3_clean) - $(test_zr_clean) - $(test_to_default_clean) - $(test_checkone_clean) - $(test_reloader_clean) - $(test_sigreload_clean) - $(test_filereload_clean) - $(test_setvalue_clean) -endef - - -ccpc : - $(test_get_default_ccpc) - $(test_1010new_ccpc) - $(test_ivar_ccpc) - $(test_auto_ccpc) - $(test_cfg_ccpc) - $(test_conf_ccpc) - $(test_demo_ccpc) - $(test_err_ccpc) - $(test_get_value_ccpc) - $(test_option_ccpc) - $(test_rawdata_ccpc) - $(test_reader_ccpc) - $(test_rebuild_ccpc) - $(test_str_ccpc) - $(test_t1_ccpc) - $(test_trans_float_ccpc) - $(test_trans_str2str_ccpc) - $(test_xiaowei_ccpc) - $(test_cfg2_ccpc) - $(test_cfg3_ccpc) - $(test_zr_ccpc) - $(test_to_default_ccpc) - $(test_checkone_ccpc) - $(test_reloader_ccpc) - $(test_sigreload_ccpc) - $(test_filereload_ccpc) - $(test_setvalue_ccpc) - -cov : - cov01 -1 - make clean - make - cov01 -0 - - - -output : test_get_default test_1010new test_ivar test_auto test_cfg test_conf test_demo test_err test_get_value test_option test_rawdata test_reader test_rebuild test_str test_t1 test_trans_float test_trans_str2str test_xiaowei test_cfg2 test_cfg3 test_zr test_to_default test_checkone test_reloader test_sigreload test_filereload test_setvalue - $(_output) - rm -rf $(MAKDEP) - -$(MAKDEP) : $(wildcard comake_autogen.cpp test_get_default.cpp test_1010new.cpp test_ivar.cpp test_auto.cpp test_cfg.cpp test_conf.cpp test_demo.cpp test_err.cpp test_get_value.cpp test_option.cpp test_rawdata.cpp test_reader.cpp test_rebuild.cpp test_str.cpp test_t1.cpp test_trans_float.cpp test_trans_str2str.cpp test_xiaowei.cpp test_cfg2.cpp test_cfg3.cpp test_zr.cpp test_to_default.cpp test_checkone.cpp test_reloader.cpp test_sigreload.cpp test_filereload.cpp test_setvalue.cpp) - -$(CC) -MG -MM $(CPPFLAGS) $(INCPATH) $(DEP_INCPATH) $^ > $@ - -clean: - $(_clean) - rm -rf $(MAKDEP) - - diff --git a/configure/test/checkone.conf b/configure/test/checkone.conf deleted file mode 100644 index 54e79ac81fbe6d0dece29630e35ca08e7901f0df..0000000000000000000000000000000000000000 --- a/configure/test/checkone.conf +++ /dev/null @@ -1,4 +0,0 @@ -#配置文件 -[server] -port : 9900 -ip : 127.0.0.1 diff --git a/configure/test/checkone.range b/configure/test/checkone.range deleted file mode 100644 index 5954b8aadb2a7ce87188afe5e7ec57f83cd1d885..0000000000000000000000000000000000000000 --- a/configure/test/checkone.range +++ /dev/null @@ -1,7 +0,0 @@ -//约束文件:server.range -struct server_t{ - int32_t port = range(1024, 65535); - string ip = ip(); -}; -//然后我们就可以使用这种类型了 -server_t server; diff --git a/configure/test/clt.des b/configure/test/clt.des deleted file mode 100644 index 550106f237f0aa38666a8bfaed651990c3df36d1..0000000000000000000000000000000000000000 --- a/configure/test/clt.des +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef CLT_DES -#define CLT_DES - -struct ubclt //设置ub客户端 -{ - string name = default("default"); //请求服务器文件名 - string ip[]; //服务器ip数组 @ip 127.0.0.1 - int32_t port = default(5000); //请求服务器数组 - int32_t read_timeout = default(500); - int32_t write_timeout = default(500); - int32_t connect_timeout = default(200); -}; - -#endif diff --git a/configure/test/comlog.range b/configure/test/comlog.range deleted file mode 100644 index 00e771b7550cfcf9215ae2338c5d45f2e6915ffe..0000000000000000000000000000000000000000 --- a/configure/test/comlog.range +++ /dev/null @@ -1,49 +0,0 @@ -struct appender_t{ - string type; - string path; - string file; - string auth = default(""); - string reserved1 = default(""); - string reserved2 = default(""); - string reserved3 = default(""); - string reserved4 = default(""); - - string split_type = default("TRUNCT");//切割方式 - uint32_t log_size = default(2048);//回滚日志的大小 - int32_t open = range(0,1), default(1);//是否启用 - int32_t compress = range(0,1), default(0);//是否压缩 - uint32_t cuttime = default(60);//切割周期 - - uint32_t syslevel = range(0,31), default(16);//支持的系统日志级别 - string selflevel = default("");//支持的自定义日志级别 - string layout = default("");//打印出来的日志的格式 - string layout_ndc = default("");//打印的Key:value对的格式 -}; - - -struct comlog_t{ - string procname = default("NoModuleName");//进程名 - int32_t level = default(16);//日志级别的总控开关 - appender_t device[];//设备数组 - string selfdefine = default("");//自定义级别 -}; - -comlog_t comlog; -int32_t tt = default(16); - -struct A{ - int32_t a; -}; - -struct B{ - uint32_t b; -}; - -struct C{ - A a; - B b; - int32_t tt; - A a2; -}; - -C c; diff --git a/configure/test/gentest.sh b/configure/test/gentest.sh deleted file mode 100644 index e53edd0ceda1f7aea9b8299e82cb4d28e1958744..0000000000000000000000000000000000000000 --- a/configure/test/gentest.sh +++ /dev/null @@ -1,30 +0,0 @@ -S=(char uchar int16 uint16 int32 uint32 int64 uint64 float double std_string) -for ((i=0;i<${#S[*]};i++)) ; do - echo ""; - echo '//========= Test '${S[$i]}'=============' - echo "try{" - echo ${S[$i]} a$i = $1.to_${S[$i]}"();" ; - echo 'std::cerr<<"to '${S[$i]}' successful, value = "< ./test_conf.log -diff ./test_conf.res ./test_conf.log >> res - - -echo ====RUN ./test_demo==== -./test_demo > ./test_demo.log -diff ./test_demo.res ./test_demo.log >> res - - -echo ====RUN ./test_err==== -./test_err > ./test_err.log -diff ./test_err.res ./test_err.log >> res - - -echo ====RUN ./test_get_value==== -./test_get_value > ./test_get_value.log -diff ./test_get_value.res ./test_get_value.log >> res - - -echo ====RUN ./test_option==== -./test_option > ./test_option.log -diff ./test_option.res ./test_option.log >> res - - -echo ====RUN ./test_rawdata==== -./test_rawdata > ./test_rawdata.log -diff ./test_rawdata.res ./test_rawdata.log >> res - - -echo ====RUN ./test_reader==== -./test_reader > ./test_reader.log -diff ./test_reader.res ./test_reader.log >> res - - -echo ====RUN ./test_rebuild==== -./test_rebuild > ./test_rebuild.log -diff ./test_rebuild.res ./test_rebuild.log >> res - - -echo ====RUN ./test_str==== -./test_str > ./test_str.log -diff ./test_str.res ./test_str.log >> res - - -echo ====RUN ./test_t1==== -./test_t1 > ./test_t1.log -diff ./test_t1.res ./test_t1.log >> res - - -echo ====RUN ./test_trans_float==== -./test_trans_float > ./test_trans_float.log -diff ./test_trans_float.res ./test_trans_float.log >> res - - -echo ====RUN ./test_trans_str2str==== -./test_trans_str2str > ./test_trans_str2str.log -diff ./test_trans_str2str.res ./test_trans_str2str.log >> res - - -echo ====RUN ./test_xiaowei==== -./test_xiaowei > ./test_xiaowei.log -diff ./test_xiaowei.res ./test_xiaowei.log >> res - -echo ======= Done! ============== -echo -echo | awk '{print "\033[1;32mIf *.log is diff to *.res, the diff is written to \033[31mres\033[m"}' -echo diff --git a/configure/test/str.conf b/configure/test/str.conf deleted file mode 100644 index 9ffcf4ebcdd4b0a346b63c4dd342b14294861f4b..0000000000000000000000000000000000000000 --- a/configure/test/str.conf +++ /dev/null @@ -1,2 +0,0 @@ -str1 : "xyz\x41\x42\x43" -str2 : x234567890y234567890 diff --git a/configure/test/str2str b/configure/test/str2str deleted file mode 100644 index cb4dbcf40054b20219d77d451405587c00057d41..0000000000000000000000000000000000000000 --- a/configure/test/str2str +++ /dev/null @@ -1,6 +0,0 @@ -"test" -"Haha"ddd -"\tThis is \"Hawk\".\n"sadf -askdfj;aj jaskdfj;askf -"\x41---" -"\101---" diff --git a/configure/test/svr.des b/configure/test/svr.des deleted file mode 100644 index 0838e031c9f80686bb38c05bc9d6b5cd34c4bc9a..0000000000000000000000000000000000000000 --- a/configure/test/svr.des +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SVR_DES -#define SVR_DES -struct ubsvr -{ - string name = default("name"); - int32_t thread_num = default(30); - int32_t port = default(50000); - int32_t read_bufsize = default(1024000); - int32_t write_bufsize = default(1024000); - int32_t read_timeout = default(500); - int32_t write_timeout = default(500); - int32_t connect_timeout = default(200); - int32_t queue_size = default(100); - int32_t socket_size = default(512); -}; - - -#endif diff --git a/configure/test/t1.conf b/configure/test/t1.conf deleted file mode 100644 index 657703b5c2b3e4b9d93f01a507a5197de21a803f..0000000000000000000000000000000000000000 --- a/configure/test/t1.conf +++ /dev/null @@ -1,26 +0,0 @@ -[@com] -age : 22 -name : xiaowei -[.sub] -haha : xiaowei -[@com] -age : 212 -name : yingxiang -[.sub] -haha : yingxiang -[@com] -age : 30 -name : wangjiping -[.sun] -haha : wjp -[GLOBAL] -Putian : 100 -name : com -@num : 1 -@num : 11 -@num : -2 -@ip : 123.-1.2.6 -@ip : 1.1.1.1 -@reg : AdalDlP -@reg : "S2sadf\t\x41" -@reg : asdlLLLkdkksdf diff --git a/configure/test/t1.cons b/configure/test/t1.cons deleted file mode 100644 index e55f6b3479d9594d8a9002a4e69aa1a5e2e419f8..0000000000000000000000000000000000000000 --- a/configure/test/t1.cons +++ /dev/null @@ -1,12 +0,0 @@ -struct Person{ - int32_t age = range(0, 200); - string name = length(32); -}; - -Person com[4]; -string name; -int32_t Putian = range(-4, 18); -int32_t num[3] = range(0,10); -string ip[1] = ip(); - -string reg[4] = regexp("[A-Za-z]*"), length(10); diff --git a/configure/test/test.conf b/configure/test/test.conf deleted file mode 100644 index 218f17b960f6f2835b6a59c04f9896985e460d46..0000000000000000000000000000000000000000 --- a/configure/test/test.conf +++ /dev/null @@ -1,8 +0,0 @@ -module : Config Demo -[@server] -ip : 127.0.0.1 -port : 9900 -$include : inc.conf -[@server] -ip : 192.168.1.2 -port : 9901 diff --git a/configure/test/test.deps b/configure/test/test.deps deleted file mode 100644 index 0f3b7ae569bdb245a93ad053cad89add159ad3ae..0000000000000000000000000000000000000000 --- a/configure/test/test.deps +++ /dev/null @@ -1,8 +0,0 @@ -+ public/configure configure_1-0-0-5_PD_BL -+ public/spreg spreg_1-0-1-1_PD_BL -+ third-64/pcre pcre_7-7-0-0_PD_BL -+ lib2-64/bsl bsl_1-0-2-4_PD_BL -+ third/pcre pcre_7-7-0-0_PD_BL -+ lib2/ullib ullib_3-1-24-0_PD_BL -+ lib2-64/ullib ullib_3-1-24-0_PD_BL -+ lib2/bsl bsl_1-0-2-4_PD_BL \ No newline at end of file diff --git a/configure/test/test.prj b/configure/test/test.prj deleted file mode 100644 index ad89183f1319210e255e4b57d174afd2d1a4dce0..0000000000000000000000000000000000000000 --- a/configure/test/test.prj +++ /dev/null @@ -1,97 +0,0 @@ -########################################################################### -# Automatically generated by comake (1.0.0) 2009-03-09 16:24:43 # -########################################################################### -WORKROOT = ../../../ -INCPATH = . .. -CONFIG = public/configure -SOURCES += - - -target(test_get_default){ -SOURCES+=test_get_default.cpp -} -target(test_1010new){ -SOURCES+=test_1010new.cpp -} -target(test_ivar){ -SOURCES+=test_ivar.cpp -} -target(test_auto){ -SOURCES+=test_auto.cpp -} -target(test_cfg){ -SOURCES+=test_cfg.cpp -} -target(test_conf){ -SOURCES+=test_conf.cpp -} -target(test_demo){ -SOURCES+=test_demo.cpp -} -target(test_err){ -SOURCES+=test_err.cpp -} -target(test_get_value){ -SOURCES+=test_get_value.cpp -} -target(test_option){ -SOURCES+=test_option.cpp -} -target(test_rawdata){ -SOURCES+=test_rawdata.cpp -} -target(test_reader){ -SOURCES+=test_reader.cpp -} -target(test_rebuild){ -SOURCES+=test_rebuild.cpp -} -target(test_str){ -SOURCES+=test_str.cpp -} -target(test_t1){ -SOURCES+=test_t1.cpp -} -target(test_trans_float){ -SOURCES+=test_trans_float.cpp -} -target(test_trans_str2str){ -SOURCES+=test_trans_str2str.cpp -} -target(test_xiaowei){ -SOURCES+=test_xiaowei.cpp -} -target(test_cfg2){ -SOURCES+=test_cfg2.cpp -} -target(test_cfg3){ -SOURCES+=test_cfg3.cpp -} -target(test_zr){ -SOURCES+=test_zr.cpp -} -target(test_to_default){ -SOURCES+=test_to_default.cpp -} -target(test_checkone){ -SOURCES+=test_checkone.cpp -} -target(test_reloader){ -SOURCES+=test_reloader.cpp -} -target(test_sigreload){ -SOURCES+=test_sigreload.cpp -} - -target(test_filereload){ -SOURCES+=test_filereload.cpp -} - - - -target(test_Configure) { - SOURCES += test_Configure.cpp - CXXFLAGS += -Woverloaded-virtual - TEMPLATE += app -} - diff --git a/configure/test/test_1010new.cpp b/configure/test/test_1010new.cpp deleted file mode 100644 index 9872899711c24abf8a8036fbf951a396d10a04b3..0000000000000000000000000000000000000000 --- a/configure/test/test_1010new.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_1010new.cpp,v 1.2 2009/03/23 03:14:53 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_1010new.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/03/12 00:54:03 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include "Configure.h" - -#define ASSERT(x) do{\ - if(!(x))printf("Assert failed %s:%d\n", __FILE__, __LINE__);\ - else printf("Assertion Successful. %s:%d\n", __FILE__, __LINE__);\ -}while(0) - - -int main(){ - comcfg::Configure conf; - int ret = conf.load(".", "t1.conf", "t1.cons"); - ASSERT(ret == comcfg::CONSTRAINT_ERROR); - system("touch t1.conf -d '19870121 12:35'"); - //system : date '+%s' -d'19870121 12:35' - //--> 538202100 - time_t t = conf.lastConfigModify(); - ASSERT(t == time_t(538202100) ); - return 0; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_array_constraint/COMAKE b/configure/test/test_array_constraint/COMAKE deleted file mode 100644 index 44a02c8c8d1eaf716bd88c842b42ffc6121d6887..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/COMAKE +++ /dev/null @@ -1,60 +0,0 @@ -#edit-mode: -*- python -*- -#coding:gbk - -#工作路径. -WORKROOT('../../../../') - -#使用硬链接copy. -CopyUsingHardLink(True) - -#支持32位/64位平台编译 -#ENABLE_MULTI_LIBS(True) - -#C预处理器参数. -CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\\"1.9.8.7\\\"') -#为32位目标编译指定额外的预处理参数 -#CPPFLAGS_32('-D_XOPEN_SOURE=500') - -#C编译参数. -CFLAGS('-g -pipe -W -Wall -fPIC') - -#C++编译参数. -CXXFLAGS('-g -pipe -W -Wall -fPIC') - -#IDL编译参数 -IDLFLAGS('--compack') - -#UBRPC编译参数 -UBRPCFLAGS('--compack') - -#头文件路径. -INCPATHS('. ../../ ./include ./output ./output/include') - -#使用库 -LIBS('../../libconfig.a') - -#链接参数. -LDFLAGS('-lpthread -lcrypto -lrt') - -#依赖模块 -CONFIGS('lib2-64/ullib@base') -CONFIGS('lib2-64/bsl@base') -CONFIGS('public/spreg@base') -CONFIGS('com/btest/gtest@base') - -#为32位/64位指定不同的依赖路径. -#CONFIGS_32('lib2/ullib') -#CONFIGS_64('lib2-64/ullib') - -user_sources='' -user_headers='' - -#可执行文件 -Application('test_arr',Sources('test_arr.cpp')) -#静态库 -#StaticLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#共享库 -#SharedLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#子目录 -#Directory('demo') - diff --git a/configure/test/test_array_constraint/Makefile b/configure/test/test_array_constraint/Makefile deleted file mode 100644 index a7163ab9e8fe2bcea3cfa8f0e0df1550b3af8a0c..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/Makefile +++ /dev/null @@ -1,137 +0,0 @@ -#COMAKE2 edit-mode: -*- Makefile -*- -####################64Bit Mode#################### -ifeq ($(shell uname -m),x86_64) -CC=gcc -CXX=g++ -CXXFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CPPFLAGS=-D_GNU_SOURCE \ - -D__STDC_LIMIT_MACROS \ - -DVERSION=\"1.9.8.7\" -INCPATH=-I. \ - -I../../ \ - -I./include \ - -I./output \ - -I./output/include -DEP_INCPATH=-I../../../../com/btest/gtest \ - -I../../../../com/btest/gtest/include \ - -I../../../../com/btest/gtest/output \ - -I../../../../com/btest/gtest/output/include \ - -I../../../../lib2-64/bsl \ - -I../../../../lib2-64/bsl/include \ - -I../../../../lib2-64/bsl/output \ - -I../../../../lib2-64/bsl/output/include \ - -I../../../../lib2-64/ullib \ - -I../../../../lib2-64/ullib/include \ - -I../../../../lib2-64/ullib/output \ - -I../../../../lib2-64/ullib/output/include \ - -I../../../../public/spreg \ - -I../../../../public/spreg/include \ - -I../../../../public/spreg/output \ - -I../../../../public/spreg/output/include \ - -I../../../../quality/autotest/reportlib/cpp \ - -I../../../../quality/autotest/reportlib/cpp/include \ - -I../../../../quality/autotest/reportlib/cpp/output \ - -I../../../../quality/autotest/reportlib/cpp/output/include \ - -I../../../../third-64/pcre \ - -I../../../../third-64/pcre/include \ - -I../../../../third-64/pcre/output \ - -I../../../../third-64/pcre/output/include - -#============ CCP vars ============ -CCHECK=@ccheck.py -CCHECK_FLAGS= -PCLINT=@pclint -PCLINT_FLAGS= -CCP=@ccp.py -CCP_FLAGS= - - -#COMAKE UUID -COMAKE_MD5=96636deacbb58c864ba532f366b07a55 COMAKE - - -.PHONY:all -all:comake2_makefile_check test_arr - @echo "[COMAKE:BUILD][Target:'all']" - @echo "make all done" - -.PHONY:comake2_makefile_check -comake2_makefile_check: - @echo "[COMAKE:BUILD][Target:'comake2_makefile_check']" - #in case of error, update 'Makefile' by 'comake2' - @echo "$(COMAKE_MD5)">comake2.md5 - @md5sum -c --status comake2.md5 - @rm -f comake2.md5 - -.PHONY:ccpclean -ccpclean: - @echo "[COMAKE:BUILD][Target:'ccpclean']" - @echo "make ccpclean done" - -.PHONY:clean -clean:ccpclean - @echo "[COMAKE:BUILD][Target:'clean']" - rm -rf test_arr - rm -rf ./output/bin/test_arr - rm -rf test_arr_test_arr.o - -.PHONY:dist -dist: - @echo "[COMAKE:BUILD][Target:'dist']" - tar czvf output.tar.gz output - @echo "make dist done" - -.PHONY:distclean -distclean:clean - @echo "[COMAKE:BUILD][Target:'distclean']" - rm -f output.tar.gz - @echo "make distclean done" - -.PHONY:love -love: - @echo "[COMAKE:BUILD][Target:'love']" - @echo "make love done" - -test_arr:test_arr_test_arr.o \ - ../../libconfig.a - @echo "[COMAKE:BUILD][Target:'test_arr']" - $(CXX) test_arr_test_arr.o -Xlinker "-(" ../../libconfig.a ../../../../com/btest/gtest/output/lib/libgtest.a \ - ../../../../com/btest/gtest/output/lib/libgtest_main.a \ - ../../../../lib2-64/bsl/lib/libbsl.a \ - ../../../../lib2-64/bsl/lib/libbsl_ResourcePool.a \ - ../../../../lib2-64/bsl/lib/libbsl_archive.a \ - ../../../../lib2-64/bsl/lib/libbsl_buffer.a \ - ../../../../lib2-64/bsl/lib/libbsl_check_cast.a \ - ../../../../lib2-64/bsl/lib/libbsl_exception.a \ - ../../../../lib2-64/bsl/lib/libbsl_pool.a \ - ../../../../lib2-64/bsl/lib/libbsl_utils.a \ - ../../../../lib2-64/bsl/lib/libbsl_var.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_implement.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_utils.a \ - ../../../../lib2-64/ullib/lib/libullib.a \ - ../../../../public/spreg/libspreg.a \ - ../../../../quality/autotest/reportlib/cpp/libautotest.a \ - ../../../../third-64/pcre/lib/libpcre.a \ - ../../../../third-64/pcre/lib/libpcrecpp.a \ - ../../../../third-64/pcre/lib/libpcreposix.a -lpthread \ - -lcrypto \ - -lrt -Xlinker "-)" -o test_arr - mkdir -p ./output/bin - cp -f --link test_arr ./output/bin - -test_arr_test_arr.o:test_arr.cpp - @echo "[COMAKE:BUILD][Target:'test_arr_test_arr.o']" - $(CXX) -c $(INCPATH) $(DEP_INCPATH) $(CPPFLAGS) $(CXXFLAGS) -o test_arr_test_arr.o test_arr.cpp - -endif #ifeq ($(shell uname -m),x86_64) - - diff --git a/configure/test/test_array_constraint/conf/sample.conf b/configure/test/test_array_constraint/conf/sample.conf deleted file mode 100644 index 11f0f458fe0e63f6410216917e72fad66652c798..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/conf/sample.conf +++ /dev/null @@ -1,14 +0,0 @@ -[@sample_level] -@plan_id : 0 -default_name : default - -[@sample_level] -@plan_id : 12305 -@plan_id : 12306 -default_name : default -[.@sample] -name : cf -ratio : 50 -[.@sample] -name : content -ratio : 40 diff --git a/configure/test/test_array_constraint/conf/sample.conf.range b/configure/test/test_array_constraint/conf/sample.conf.range deleted file mode 100644 index e91d94a2d23bfb2e3786810823479151beee78f6..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/conf/sample.conf.range +++ /dev/null @@ -1,16 +0,0 @@ -struct sample_t -{ - string name = default("default"); - string info = default(""); - int32_t ratio = default(50); -}; - -struct sample_level_t -{ - int32_t plan_id[]; - string default_name = default("default"); - string default_info = default(""); - sample_t sample[]; -}; - -sample_level_t sample_level[]; diff --git a/configure/test/test_array_constraint/conf/sample2.conf b/configure/test/test_array_constraint/conf/sample2.conf deleted file mode 100644 index 0f9cc13f37c75d69fcb5919a46ddbfafea5df2f3..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/conf/sample2.conf +++ /dev/null @@ -1,2 +0,0 @@ -[@sample_level] -default_name : default diff --git a/configure/test/test_array_constraint/conf/sample2.conf.range b/configure/test/test_array_constraint/conf/sample2.conf.range deleted file mode 100644 index aca57c487bc6e6cbae1ef5bb452ead590ac2785c..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/conf/sample2.conf.range +++ /dev/null @@ -1,14 +0,0 @@ -struct sample_t -{ - string name = default("default"); - string info = default(""); - int32_t ratio = default(50); -}; - -struct sample_level_t -{ - string default_name = default("default"); - sample_t sample[]; -}; - -sample_level_t sample_level[]; diff --git a/configure/test/test_array_constraint/test_arr.cpp b/configure/test/test_array_constraint/test_arr.cpp deleted file mode 100644 index 2d3eed72669c63f65f7a88b464644710d68c86b0..0000000000000000000000000000000000000000 --- a/configure/test/test_array_constraint/test_arr.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include -#include "plugin/plgcomlog.h" - -int main(int argc, char **argv) -{ - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -/** - * @brief check if the lib reports the vector overflow situation -**/ -class test_arr_suite : public ::testing::Test{ - protected: - test_arr_suite(){}; - virtual ~test_arr_suite(){}; - virtual void SetUp() { - //Called befor every TEST_F(test_arr_suite, *) - }; - virtual void TearDown() { - //Called after every TEST_F(test_arr_suite, *) - }; -}; - -/** - * @brief check if the defaultly created array can pass the constraint check - * @begin_version - **/ -TEST_F(test_arr_suite, case_constraint1) -{ - //TODO - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - int ret = conf.load("conf/", "sample.conf", "sample.conf.range"); - ASSERT_EQ(0, ret); - - EXPECT_EQ(conf["sample_level"][0]["sample"].selfType(), comcfg::CONFIG_ARRAY_TYPE); - EXPECT_EQ(conf["sample_level"][0]["sample"].size(), 0); -} - -/** - * @brief check if the defaultly created array can pass the constraint check - * @begin_version - **/ -TEST_F(test_arr_suite, case_constraint2) -{ - //TODO - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - int ret = conf.load("conf/", "sample2.conf", "sample2.conf.range"); - ASSERT_EQ(0, ret); - - EXPECT_EQ(conf["sample_level"][0]["sample"].selfType(), comcfg::CONFIG_ARRAY_TYPE); - EXPECT_EQ(conf["sample_level"][0]["sample"].size(), 0); -} diff --git a/configure/test/test_auto.cpp b/configure/test/test_auto.cpp deleted file mode 100644 index e2c08c0f087814ef615ee4ccb3b4bde4b1df3fc8..0000000000000000000000000000000000000000 --- a/configure/test/test_auto.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_auto.cpp,v 1.2 2009/03/23 03:14:53 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_auto.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/03/11 17:06:15 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include "cfgext.h" -#include "Configure.h" -int main(int argc, char ** argv){ - if(argc == 1){ - printf("Usage : %s constraint_file\n\n", argv[0]); - return 0; - } - try{ - //comcfg::Log::openLowLevel(); - bsl::string str = comcfg::autoConfigGen(argv[1]); - printf("%s", str.c_str()); -#if 1 - comcfg::Configure conf; - char * s = conf.getRebuildBuffer(str.size()); - strcpy(s, str.c_str()); - int ret = conf.rebuild(); - printf("================= rebuild ret = %d ===================\n", ret); - conf.print(); -#endif - }catch(comcfg::ConfigException e){ - fprintf(stderr, "Catch : %s\n", e.what()); - }catch(...){ - fprintf(stderr, "Catch : Unknown\n"); - } - - return 0; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_cfg.cpp b/configure/test/test_cfg.cpp deleted file mode 100644 index 3d91419f3289edac0d4df91aab089a97b35be7cc..0000000000000000000000000000000000000000 --- a/configure/test/test_cfg.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_cfg.cpp,v 1.2 2009/03/23 03:14:53 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_cfg.cpp - * @author xiaowei(com@baidu.com) - * @date 2009/03/09 15:53:27 - * @version $Revision: 1.2 $ - * @brief - * - **/ -#include -int main(int argc, char **argv) -{ - comcfg::Flag flag; - flag.init(argc, argv); - flag.loadconfig(); - return 0; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_cfg.des b/configure/test/test_cfg.des deleted file mode 100644 index 5f0da09af977a93189f94ef97289ad97d2f8be3c..0000000000000000000000000000000000000000 --- a/configure/test/test_cfg.des +++ /dev/null @@ -1,17 +0,0 @@ -#include "log.des" -#include "clt.des" -#include "svr.des" - -struct my_t -{ - comlog log; - ubclt clt; - ubsvr svr; -}; - -comlog log; -ubclt clt[]; -ubsvr svr[]; - -my_t my; -string b;//ab diff --git a/configure/test/test_cfg2.cpp b/configure/test/test_cfg2.cpp deleted file mode 100644 index 1f6b65f8981f3692722ca8022ffcbdd9ec5287c6..0000000000000000000000000000000000000000 --- a/configure/test/test_cfg2.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_cfg2.cpp,v 1.2 2009/03/23 03:14:53 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_cfg2.cpp - * @author xiaowei(com@baidu.com) - * @date 2009/03/09 16:07:57 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include -int main(int argc, char **argv) -{ - comcfg::Flag flag; - flag.init(argc, argv); - flag.set_confpath(".", "t1.conf", "t1.cons"); - flag.loadconfig(); - return 0; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_cfg3.cpp b/configure/test/test_cfg3.cpp deleted file mode 100644 index e77ad17e8d01cd640f5972b030c9720a7d3cc86a..0000000000000000000000000000000000000000 --- a/configure/test/test_cfg3.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_cfg3.cpp,v 1.2 2009/03/23 03:14:53 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_cfg3.cpp - * @author xiaowei(com@baidu.com) - * @date 2009/03/09 16:10:23 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include - -void version() -{ - printf("faint-------------\n"); -} - -int main(int argc, char **argv) -{ - comcfg::Flag flag; - flag.set_version(version); - flag.set_help(version); - flag.init(argc, argv); - flag.loadconfig(); - return 0; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_checkConstraint/COMAKE b/configure/test/test_checkConstraint/COMAKE deleted file mode 100644 index 14e9b58ffd2f19c673277c3a8403375734efc61d..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/COMAKE +++ /dev/null @@ -1,60 +0,0 @@ -#edit-mode: -*- python -*- -#coding:gbk - -#工作路径. -WORKROOT('../../../../') - -#使用硬链接copy. -CopyUsingHardLink(True) - -#支持32位/64位平台编译 -#ENABLE_MULTI_LIBS(True) - -#C预处理器参数. -CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\\"1.9.8.7\\\"') -#为32位目标编译指定额外的预处理参数 -#CPPFLAGS_32('-D_XOPEN_SOURE=500') - -#C编译参数. -CFLAGS('-g -pipe -W -Wall -fPIC') - -#C++编译参数. -CXXFLAGS('-g -pipe -W -Wall -fPIC') - -#IDL编译参数 -IDLFLAGS('--compack') - -#UBRPC编译参数 -UBRPCFLAGS('--compack') - -#头文件路径. -INCPATHS('. ../../ ./include ./output ./output/include') - -#使用库 -LIBS('../../libconfig.a') - -#链接参数. -LDFLAGS('-lpthread -lcrypto -lrt') - -#依赖模块 -CONFIGS('lib2-64/ullib') -CONFIGS('lib2-64/bsl') -CONFIGS('public/spreg') -CONFIGS('com/btest/gtest') - -#为32位/64位指定不同的依赖路径. -#CONFIGS_32('lib2/ullib') -#CONFIGS_64('lib2-64/ullib') - -user_sources='' -user_headers='' - -#可执行文件 -Application('test_constraint',Sources('test_constraint.cpp')) -#静态库 -#StaticLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#共享库 -#SharedLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#子目录 -#Directory('demo') - diff --git a/configure/test/test_checkConstraint/Makefile b/configure/test/test_checkConstraint/Makefile deleted file mode 100644 index ee2168946d0352cb0d761dbe6514da5bd1d1cc9f..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/Makefile +++ /dev/null @@ -1,137 +0,0 @@ -#COMAKE2 edit-mode: -*- Makefile -*- -####################64Bit Mode#################### -ifeq ($(shell uname -m),x86_64) -CC=gcc -CXX=g++ -CXXFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CPPFLAGS=-D_GNU_SOURCE \ - -D__STDC_LIMIT_MACROS \ - -DVERSION=\"1.9.8.7\" -INCPATH=-I. \ - -I../../ \ - -I./include \ - -I./output \ - -I./output/include -DEP_INCPATH=-I../../../../com/btest/gtest \ - -I../../../../com/btest/gtest/include \ - -I../../../../com/btest/gtest/output \ - -I../../../../com/btest/gtest/output/include \ - -I../../../../lib2-64/bsl \ - -I../../../../lib2-64/bsl/include \ - -I../../../../lib2-64/bsl/output \ - -I../../../../lib2-64/bsl/output/include \ - -I../../../../lib2-64/ullib \ - -I../../../../lib2-64/ullib/include \ - -I../../../../lib2-64/ullib/output \ - -I../../../../lib2-64/ullib/output/include \ - -I../../../../public/spreg \ - -I../../../../public/spreg/include \ - -I../../../../public/spreg/output \ - -I../../../../public/spreg/output/include \ - -I../../../../quality/autotest/reportlib/cpp \ - -I../../../../quality/autotest/reportlib/cpp/include \ - -I../../../../quality/autotest/reportlib/cpp/output \ - -I../../../../quality/autotest/reportlib/cpp/output/include \ - -I../../../../third-64/pcre \ - -I../../../../third-64/pcre/include \ - -I../../../../third-64/pcre/output \ - -I../../../../third-64/pcre/output/include - -#============ CCP vars ============ -CCHECK=@ccheck.py -CCHECK_FLAGS= -PCLINT=@pclint -PCLINT_FLAGS= -CCP=@ccp.py -CCP_FLAGS= - - -#COMAKE UUID -COMAKE_MD5=1b60095c966a1f959e8affcbcd52b483 COMAKE - - -.PHONY:all -all:comake2_makefile_check test_constraint - @echo "[COMAKE:BUILD][Target:'all']" - @echo "make all done" - -.PHONY:comake2_makefile_check -comake2_makefile_check: - @echo "[COMAKE:BUILD][Target:'comake2_makefile_check']" - #in case of error, update 'Makefile' by 'comake2' - @echo "$(COMAKE_MD5)">comake2.md5 - @md5sum -c --status comake2.md5 - @rm -f comake2.md5 - -.PHONY:ccpclean -ccpclean: - @echo "[COMAKE:BUILD][Target:'ccpclean']" - @echo "make ccpclean done" - -.PHONY:clean -clean:ccpclean - @echo "[COMAKE:BUILD][Target:'clean']" - rm -rf test_constraint - rm -rf ./output/bin/test_constraint - rm -rf test_constraint_test_constraint.o - -.PHONY:dist -dist: - @echo "[COMAKE:BUILD][Target:'dist']" - tar czvf output.tar.gz output - @echo "make dist done" - -.PHONY:distclean -distclean:clean - @echo "[COMAKE:BUILD][Target:'distclean']" - rm -f output.tar.gz - @echo "make distclean done" - -.PHONY:love -love: - @echo "[COMAKE:BUILD][Target:'love']" - @echo "make love done" - -test_constraint:test_constraint_test_constraint.o \ - ../../libconfig.a - @echo "[COMAKE:BUILD][Target:'test_constraint']" - $(CXX) test_constraint_test_constraint.o -Xlinker "-(" ../../libconfig.a ../../../../com/btest/gtest/output/lib/libgtest.a \ - ../../../../com/btest/gtest/output/lib/libgtest_main.a \ - ../../../../lib2-64/bsl/lib/libbsl.a \ - ../../../../lib2-64/bsl/lib/libbsl_ResourcePool.a \ - ../../../../lib2-64/bsl/lib/libbsl_archive.a \ - ../../../../lib2-64/bsl/lib/libbsl_buffer.a \ - ../../../../lib2-64/bsl/lib/libbsl_check_cast.a \ - ../../../../lib2-64/bsl/lib/libbsl_exception.a \ - ../../../../lib2-64/bsl/lib/libbsl_pool.a \ - ../../../../lib2-64/bsl/lib/libbsl_utils.a \ - ../../../../lib2-64/bsl/lib/libbsl_var.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_implement.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_utils.a \ - ../../../../lib2-64/ullib/lib/libullib.a \ - ../../../../public/spreg/libspreg.a \ - ../../../../quality/autotest/reportlib/cpp/libautotest.a \ - ../../../../third-64/pcre/lib/libpcre.a \ - ../../../../third-64/pcre/lib/libpcrecpp.a \ - ../../../../third-64/pcre/lib/libpcreposix.a -lpthread \ - -lcrypto \ - -lrt -Xlinker "-)" -o test_constraint - mkdir -p ./output/bin - cp -f --link test_constraint ./output/bin - -test_constraint_test_constraint.o:test_constraint.cpp - @echo "[COMAKE:BUILD][Target:'test_constraint_test_constraint.o']" - $(CXX) -c $(INCPATH) $(DEP_INCPATH) $(CPPFLAGS) $(CXXFLAGS) -o test_constraint_test_constraint.o test_constraint.cpp - -endif #ifeq ($(shell uname -m),x86_64) - - diff --git a/configure/test/test_checkConstraint/conf/bad_cons.range b/configure/test/test_checkConstraint/conf/bad_cons.range deleted file mode 100644 index eaea34904a470897bf6bbcb71cfb5fe7d52e2bea..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/conf/bad_cons.range +++ /dev/null @@ -1,8 +0,0 @@ -struct server_t{ - string ip = ip(), length(20); - uint16_t port = range(1, 1023); -}; - -server_t server; -string position = length(100); - diff --git a/configure/test/test_checkConstraint/conf/cons.range b/configure/test/test_checkConstraint/conf/cons.range deleted file mode 100644 index f9a3873ab7fca7159508bff94e8a6bf920099d6c..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/conf/cons.range +++ /dev/null @@ -1,16 +0,0 @@ -struct server_t{ - string ip = ip(), length(20); - uint16_t port = range(1, 1023); - string host = length(100); -}; - -server_t server; -string position = length(100); -uint32_t height[10] = range(0,10); - -struct company_t{ - string name = length(100); - server_t svr[]; -}; - -company_t company; diff --git a/configure/test/test_checkConstraint/conf/ill_cons.conf b/configure/test/test_checkConstraint/conf/ill_cons.conf deleted file mode 100644 index 29f14aeeec8d68c6480974c9ead3352f5558fc7d..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/conf/ill_cons.conf +++ /dev/null @@ -1,26 +0,0 @@ -[server] -ip : 1.2.3.4 -port : 123 -host : baidu -[GLOBAL] -position : beijing -[server2] -[.host1] -[..position2] -ip : 2.3.4.5 -[GLOBAL] -@height : 1 -@height : 2 -@height : 3 - -[company] -[.@svr] -ip : 4.3.2.1 -port : 321 -host : beijing -[.@svr] -ip : 5.5.5.5 -port : 111 -host : shenzhen -[company] -name : baidu.com diff --git a/configure/test/test_checkConstraint/conf/reg_cons.conf b/configure/test/test_checkConstraint/conf/reg_cons.conf deleted file mode 100644 index 60c13514e7169d3f32f84c5ddcd8a9a3d3c94fbd..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/conf/reg_cons.conf +++ /dev/null @@ -1,16 +0,0 @@ -[server] -ip : 1.2.3.4 -port : 123 -host : baidu -[GLOBAL] -position : beijing -@height : 5 -@height : 6 - -[company] -[.@svr] -ip : 4.3.2.1 -port : 321 -host : baidu -[company] -name : baidu.com diff --git a/configure/test/test_checkConstraint/test_constraint.cpp b/configure/test/test_checkConstraint/test_constraint.cpp deleted file mode 100644 index ddf921489f2bc4c8bf1d983f625c04204851b6e7..0000000000000000000000000000000000000000 --- a/configure/test/test_checkConstraint/test_constraint.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include -#include -#include - - -int main(int argc, char **argv) -{ - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -/** - * @brief -**/ -class test_load_ex2_suite : public ::testing::Test{ - protected: - test_load_ex2_suite(){}; - virtual ~test_load_ex2_suite(){}; - virtual void SetUp() { - //Called befor every TEST_F(test_load_ex_suite, *) - }; - virtual void TearDown() { - //Called after every TEST_F(test_load_ex_suite, *) - }; -}; - - -/** - * @brief check null param - * @begin_version - **/ -TEST_F(test_load_ex2_suite, case_nullParam) -{ - //TODO - comcfg::Configure conf[3]; - int ret = conf[0].load_ex2("conf/", "ill_cons.conf", NULL); - ASSERT_EQ(0, ret); - ret = conf[1].load_ex2("conf/", "ill_cons.conf", ""); - ASSERT_EQ(0, ret); - ret = conf[2].load_ex2("conf/", "ill_cons.conf"); - ASSERT_EQ(0, ret); -} - -/** - * @brief check regular range file - * @begin_version - **/ -TEST_F(test_load_ex2_suite, case_reg_conf) -{ - //TODO - comcfg::Configure conf; - int ret = conf.load_ex2("conf/", "reg_cons.conf", "cons.range"); - ASSERT_EQ(0, ret); -} - -/** - * @brief check illegal range file - * @begin_version - **/ -TEST_F(test_load_ex2_suite, case_ill_conf) -{ - //TODO - comcfg::Configure conf; - int ret = conf.load_ex2("conf/", "ill_cons.conf", "cons.range"); - ASSERT_NE(0, ret); -} - -/** - * @brief check load()+checkConstraint() - * @begin_version - **/ -TEST_F(test_load_ex2_suite, case_load_check_conf) -{ - //TODO - comcfg::Configure conf; - int ret = conf.load("conf/", "ill_cons.conf", "cons.range"); - ASSERT_EQ(0, ret); - ret = conf.checkConstraint(); - ASSERT_NE(0, ret); -} - -/** - * @brief check load_ex()+checkConstraint() - * @begin_version - **/ -TEST_F(test_load_ex2_suite, case_load_ex_check_conf) -{ - //TODO - comcfg::Configure conf; - int ret = conf.load_ex("conf/", "ill_cons.conf", "cons.range"); - ASSERT_EQ(0, ret); - ret = conf.checkConstraint(); - ASSERT_NE(0, ret); -} - -/** - * @brief check reentrant check_once() - * @begin_version - **/ -TEST_F(test_load_ex2_suite, case_reentrant_check_once) -{ - //TODO - comcfg::Configure conf; - int ret = conf.load("conf/", "reg_cons.conf"); - ASSERT_EQ(0, ret); - for(int i=1; i<5; i++){ - ret = conf.check_once("conf/cons.range"); - ASSERT_EQ(0, ret); - ret = conf.checkConstraint(); - ASSERT_EQ(0, ret); - - ret = conf.check_once("conf/bad_cons.range"); - ASSERT_EQ(0, ret); - ret = conf.checkConstraint(); - ASSERT_NE(0, ret); - } -} - diff --git a/configure/test/test_checkone.cpp b/configure/test/test_checkone.cpp deleted file mode 100644 index a3a23642731d7db37dc7e82891cd9de3f6019c3c..0000000000000000000000000000000000000000 --- a/configure/test/test_checkone.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * - **************************************************************************/ - - - -/** - * @file test_checkone.cpp - * @author zhang_rui(com@baidu.com) - * @date 2009-12-15 - * @brief - * - **/ - -#include "Configure.h" - -int main(int argc, char* argv[]){ - if (argc < 3) { - printf("usage : %s conf range\n",argv[0]); - return -1; - } - comcfg::Configure conf; - conf.load("./", argv[1]); - int chk = conf.check_once(argv[2]); - printf("checkone:%d\n", chk); - - return 0; -} - diff --git a/configure/test/test_conf.cpp b/configure/test/test_conf.cpp deleted file mode 100644 index ca84d7feab990e71464c99e109800c3189728b57..0000000000000000000000000000000000000000 --- a/configure/test/test_conf.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_conf.cpp,v 1.5 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_conf.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 18:47:10 - * @version $Revision: 1.5 $ - * @brief - * - **/ - -#include "Configure.h" -#include "stdio.h" -#include - -int main(){ - comcfg::Configure conf; - //comcfg::Log::openLowLevel(); - conf.load("./", "new.conf"); - comcfg::str_t str; - if(conf["COMLOG"]["FILE"]["TYPE"].get_bsl_string(&str) == 0){ - printf("read = [%s]\n", str.c_str()); - }else{ - printf("No such key\n"); - } - if(conf["COMLOG"]["FILEx"]["TYPE"][2].get_bsl_string(&str) == 0){ - printf("read = [%s]\n", str.c_str()); - }else{ - printf("No such key\n"); - } - try{ - conf["COMLOG"]["FILEx"]["TYPE"][2].to_bsl_string(); - } - catch(bsl::Exception e){ - printf("%s\n", e.what()); - } - int err; - int tmp = conf["COMLOG"]["FILE"]["SIZE"].to_int32(&err); - printf("read = [%d]\n", tmp); - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_conf.res b/configure/test/test_conf.res deleted file mode 100644 index 7ef8534d8449445ab433b0bbff440665fde2636c..0000000000000000000000000000000000000000 --- a/configure/test/test_conf.res +++ /dev/null @@ -1,4 +0,0 @@ -read = [FILE] -No such key -ConfigException.NoSuchKey -read = [0] diff --git a/configure/test/test_demo.cpp b/configure/test/test_demo.cpp deleted file mode 100644 index 10d62987be4eed1ff2a0a4c8cf9d3333cef0da06..0000000000000000000000000000000000000000 --- a/configure/test/test_demo.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_demo.cpp,v 1.5 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_demo.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/01/06 16:50:46 - * @version $Revision: 1.5 $ - * @brief - * - **/ - -#include "Configure.h" -#include - -int main(){ - //comcfg :: Log :: openLowLevel(); - comcfg :: Configure conf; - int ret = conf.load("", "test.conf"); - if(ret != 0){ - return 0; - } - - try{ - std::cout<< "Module Name : " << conf["module"].to_bsl_string() << std::endl; - size_t num = conf["server"].size(); - std::cout<< "We have " << num << " servers." << std::endl; - for(size_t i = 0; i < num; ++i){ - printf("Server[%d] is : ip = %s, port = %d\n", - (int)i, - conf["server"][i]["ip"].to_cstr(), - conf["server"][i]["port"].to_int32() ); - } - } - catch(comcfg :: ConfigException e){ - std::cerr << "Something error "<< e.what() << std::endl; - } - catch(...){ - std::cerr << "What's wrong?" << std::endl; - } - size_t sz; - printf("\n-------dump-------\n%s\n--------print---------\n", conf.dump(&sz)); - conf.print(); - comcfg::Configure nxt; - char * b = nxt.getRebuildBuffer(sz); - memcpy(b, conf.dump(NULL), sz); - nxt.rebuild(); - printf("----nxt.print----\n"); - nxt.print(); - return 0; -} - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_demo.res b/configure/test/test_demo.res deleted file mode 100644 index 6e65719efaac0977b23aaab24e8073bdf08f8c61..0000000000000000000000000000000000000000 --- a/configure/test/test_demo.res +++ /dev/null @@ -1,47 +0,0 @@ -Module Name : Config Demo -We have 2 servers. -Server[0] is : ip = 127.0.0.1, port = 9900 -Server[1] is : ip = 192.168.1.2, port = 9901 - --------dump------- -module : Config Demo -[@server] -ip : 127.0.0.1 -port : 9900 -$include : inc.conf -[@server] -ip : 192.168.1.2 -port : 9901 - -[GLOBAL] -#this is inc -name : inc -age : 12 -$include : "Hello" - ---------print--------- -Section-------[GLOBAL] - =[module], _value=[Config Demo] - =[name], _value=[inc] - =[age], _value=[12] - Array--------[server] : { - Section-------[GLOBAL.@server] - =[ip], _value=[127.0.0.1] - =[port], _value=[9900] - Section-------[GLOBAL.@server] - =[ip], _value=[192.168.1.2] - =[port], _value=[9901] - } -----nxt.print---- -Section-------[GLOBAL] - =[module], _value=[Config Demo] - =[name], _value=[inc] - =[age], _value=[12] - Array--------[server] : { - Section-------[GLOBAL.@server] - =[ip], _value=[127.0.0.1] - =[port], _value=[9900] - Section-------[GLOBAL.@server] - =[ip], _value=[192.168.1.2] - =[port], _value=[9901] - } diff --git a/configure/test/test_dump_ex/COMAKE b/configure/test/test_dump_ex/COMAKE deleted file mode 100644 index d35161e25950d95c9f7685699bbdf647f72b4d2c..0000000000000000000000000000000000000000 --- a/configure/test/test_dump_ex/COMAKE +++ /dev/null @@ -1,60 +0,0 @@ -#edit-mode: -*- python -*- -#coding:gbk - -#工作路径. -WORKROOT('../../../../') - -#使用硬链接copy. -CopyUsingHardLink(True) - -#支持32位/64位平台编译 -#ENABLE_MULTI_LIBS(True) - -#C预处理器参数. -CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\\"1.9.8.7\\\"') -#为32位目标编译指定额外的预处理参数 -#CPPFLAGS_32('-D_XOPEN_SOURE=500') - -#C编译参数. -CFLAGS('-g -pipe -W -Wall -fPIC') - -#C++编译参数. -CXXFLAGS('-g -pipe -W -Wall -fPIC') - -#IDL编译参数 -IDLFLAGS('--compack') - -#UBRPC编译参数 -UBRPCFLAGS('--compack') - -#头文件路径. -INCPATHS('. ../../ ./include ./output ./output/include') - -#使用库 -LIBS('../../libconfig.a') - -#链接参数. -LDFLAGS('-lpthread -lcrypto -lrt') - -#依赖模块 -CONFIGS('lib2-64/ullib') -CONFIGS('lib2-64/bsl') -CONFIGS('public/spreg') -CONFIGS('com/btest/gtest') - -#为32位/64位指定不同的依赖路径. -#CONFIGS_32('lib2/ullib') -#CONFIGS_64('lib2-64/ullib') - -user_sources='' -user_headers='' - -#可执行文件 -Application('dumpex', Sources('test_unit_dumpex.cpp')) -#静态库 -#StaticLibrary('test_other',Sources(user_sources),HeaderFiles(user_headers)) -#共享库 -#SharedLibrary('test_other',Sources(user_sources),HeaderFiles(user_headers)) -#子目录 -#Directory('demo') - diff --git a/configure/test/test_dump_ex/Makefile b/configure/test/test_dump_ex/Makefile deleted file mode 100644 index a01761efb4bd707e3f27b78ec0dfae462c0756c7..0000000000000000000000000000000000000000 --- a/configure/test/test_dump_ex/Makefile +++ /dev/null @@ -1,137 +0,0 @@ -#COMAKE2 edit-mode: -*- Makefile -*- -####################64Bit Mode#################### -ifeq ($(shell uname -m),x86_64) -CC=gcc -CXX=g++ -CXXFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CPPFLAGS=-D_GNU_SOURCE \ - -D__STDC_LIMIT_MACROS \ - -DVERSION=\"1.9.8.7\" -INCPATH=-I. \ - -I../../ \ - -I./include \ - -I./output \ - -I./output/include -DEP_INCPATH=-I../../../../com/btest/gtest \ - -I../../../../com/btest/gtest/include \ - -I../../../../com/btest/gtest/output \ - -I../../../../com/btest/gtest/output/include \ - -I../../../../lib2-64/bsl \ - -I../../../../lib2-64/bsl/include \ - -I../../../../lib2-64/bsl/output \ - -I../../../../lib2-64/bsl/output/include \ - -I../../../../lib2-64/ullib \ - -I../../../../lib2-64/ullib/include \ - -I../../../../lib2-64/ullib/output \ - -I../../../../lib2-64/ullib/output/include \ - -I../../../../public/spreg \ - -I../../../../public/spreg/include \ - -I../../../../public/spreg/output \ - -I../../../../public/spreg/output/include \ - -I../../../../quality/autotest/reportlib/cpp \ - -I../../../../quality/autotest/reportlib/cpp/include \ - -I../../../../quality/autotest/reportlib/cpp/output \ - -I../../../../quality/autotest/reportlib/cpp/output/include \ - -I../../../../third-64/pcre \ - -I../../../../third-64/pcre/include \ - -I../../../../third-64/pcre/output \ - -I../../../../third-64/pcre/output/include - -#============ CCP vars ============ -CCHECK=@ccheck.py -CCHECK_FLAGS= -PCLINT=@pclint -PCLINT_FLAGS= -CCP=@ccp.py -CCP_FLAGS= - - -#COMAKE UUID -COMAKE_MD5=afda5b77791616ecf9f0922265568a51 COMAKE - - -.PHONY:all -all:comake2_makefile_check dumpex - @echo "[COMAKE:BUILD][Target:'all']" - @echo "make all done" - -.PHONY:comake2_makefile_check -comake2_makefile_check: - @echo "[COMAKE:BUILD][Target:'comake2_makefile_check']" - #in case of error, update 'Makefile' by 'comake2' - @echo "$(COMAKE_MD5)">comake2.md5 - @md5sum -c --status comake2.md5 - @rm -f comake2.md5 - -.PHONY:ccpclean -ccpclean: - @echo "[COMAKE:BUILD][Target:'ccpclean']" - @echo "make ccpclean done" - -.PHONY:clean -clean:ccpclean - @echo "[COMAKE:BUILD][Target:'clean']" - rm -rf dumpex - rm -rf ./output/bin/dumpex - rm -rf dumpex_test_unit_dumpex.o - -.PHONY:dist -dist: - @echo "[COMAKE:BUILD][Target:'dist']" - tar czvf output.tar.gz output - @echo "make dist done" - -.PHONY:distclean -distclean:clean - @echo "[COMAKE:BUILD][Target:'distclean']" - rm -f output.tar.gz - @echo "make distclean done" - -.PHONY:love -love: - @echo "[COMAKE:BUILD][Target:'love']" - @echo "make love done" - -dumpex:dumpex_test_unit_dumpex.o \ - ../../libconfig.a - @echo "[COMAKE:BUILD][Target:'dumpex']" - $(CXX) dumpex_test_unit_dumpex.o -Xlinker "-(" ../../libconfig.a ../../../../com/btest/gtest/output/lib/libgtest.a \ - ../../../../com/btest/gtest/output/lib/libgtest_main.a \ - ../../../../lib2-64/bsl/lib/libbsl.a \ - ../../../../lib2-64/bsl/lib/libbsl_ResourcePool.a \ - ../../../../lib2-64/bsl/lib/libbsl_archive.a \ - ../../../../lib2-64/bsl/lib/libbsl_buffer.a \ - ../../../../lib2-64/bsl/lib/libbsl_check_cast.a \ - ../../../../lib2-64/bsl/lib/libbsl_exception.a \ - ../../../../lib2-64/bsl/lib/libbsl_pool.a \ - ../../../../lib2-64/bsl/lib/libbsl_utils.a \ - ../../../../lib2-64/bsl/lib/libbsl_var.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_implement.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_utils.a \ - ../../../../lib2-64/ullib/lib/libullib.a \ - ../../../../public/spreg/libspreg.a \ - ../../../../quality/autotest/reportlib/cpp/libautotest.a \ - ../../../../third-64/pcre/lib/libpcre.a \ - ../../../../third-64/pcre/lib/libpcrecpp.a \ - ../../../../third-64/pcre/lib/libpcreposix.a -lpthread \ - -lcrypto \ - -lrt -Xlinker "-)" -o dumpex - mkdir -p ./output/bin - cp -f --link dumpex ./output/bin - -dumpex_test_unit_dumpex.o:test_unit_dumpex.cpp - @echo "[COMAKE:BUILD][Target:'dumpex_test_unit_dumpex.o']" - $(CXX) -c $(INCPATH) $(DEP_INCPATH) $(CPPFLAGS) $(CXXFLAGS) -o dumpex_test_unit_dumpex.o test_unit_dumpex.cpp - -endif #ifeq ($(shell uname -m),x86_64) - - diff --git a/configure/test/test_dump_ex/conf/array.conf b/configure/test/test_dump_ex/conf/array.conf deleted file mode 100644 index 72cfb05a61493818e5f7d627b03f094959d5cf7b..0000000000000000000000000000000000000000 --- a/configure/test/test_dump_ex/conf/array.conf +++ /dev/null @@ -1,5 +0,0 @@ -[@building] -@floor : 1 -@floor : 2 -@floor : 3 - diff --git a/configure/test/test_dump_ex/conf/sample.conf b/configure/test/test_dump_ex/conf/sample.conf deleted file mode 100644 index bca215192acc16016aab974c2ac774679684801f..0000000000000000000000000000000000000000 --- a/configure/test/test_dump_ex/conf/sample.conf +++ /dev/null @@ -1,35 +0,0 @@ -#this comment will not be dumped -#neither does this one -#me neither, LOL -$include : sub_conf.conf -[company] -name : baidu -addr : beijing -type : Internet -[.staff] -count : 20000 -[..@employee] -#you see, -#Joan is a girl, which means that -#you will never know -#if she is cheating to you -name : Joan -gender : female -age : 20 -#GLOBAL: this comment won't be dumped -#neither does this -[GLOBAL] -copyright : baidu.Inc -date : 2013/04/28 -[company.staff.@employee] -name : Jay -gender : male -age : 24 -[building] -#this is the reception floor -@floor : 1 -#this is the worker floor -@floor : 2 -#this is the administrator floor -@floor : 3 -#END: this comment won't be dumped diff --git a/configure/test/test_dump_ex/conf/sub_conf.conf b/configure/test/test_dump_ex/conf/sub_conf.conf deleted file mode 100644 index 8c685390c315f879080cee2319adeca3550f4bb7..0000000000000000000000000000000000000000 --- a/configure/test/test_dump_ex/conf/sub_conf.conf +++ /dev/null @@ -1,2 +0,0 @@ -@greeting : hi, i am from baidu -@greeting : hi, i am now working overtime, TT diff --git a/configure/test/test_dump_ex/test_unit_dumpex.cpp b/configure/test/test_dump_ex/test_unit_dumpex.cpp deleted file mode 100644 index 5639fb2293c3ec6ae16f3ff5f4d7203118f5a958..0000000000000000000000000000000000000000 --- a/configure/test/test_dump_ex/test_unit_dumpex.cpp +++ /dev/null @@ -1,242 +0,0 @@ - -#include -#include -#include "spreg.h" - -int main(int argc, char **argv) -{ - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -/** - * @brief -**/ -class test_dump_ex_suite : public ::testing::Test{ - protected: - test_dump_ex_suite(){}; - virtual ~test_dump_ex_suite(){}; - virtual void SetUp() { - //Called befor every TEST_F(test_dump_ex_suite, *) - }; - virtual void TearDown() { - //Called after every TEST_F(test_dump_ex_suite, *) - }; -}; - -/** - * @brief - * @begin_version -**/ -TEST_F(test_dump_ex_suite, case_ivalid_param1) -{ - //TODO - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - int ret = conf.load("conf", "sample.conf"); - ASSERT_EQ(ret, 0); - - char buf[1024]; - - ret = conf.dump_ex(NULL, 1024, 1); - EXPECT_NE(ret, 0); - - ret = conf.dump_ex(buf, 0, 1); - EXPECT_NE(ret, 0); - - ret = conf.dump_ex(buf, 1024, -1); - EXPECT_NE(ret, 0); - - ret = conf.dump_ex(buf, 1024, 3); - EXPECT_NE(ret, 0); - - ret = conf.dump_ex(buf, 100, 0); - EXPECT_NE(ret, 0); -} - -/** - * @brief - * @begin_version -**/ -TEST_F(test_dump_ex_suite, case_Comment) -{ - //TODO - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - int ret = conf.load("conf", "sample.conf"); - ASSERT_EQ(ret, 0); - - char buf[10240]; - - ret = conf.dump_ex(buf, 10240, 0); - EXPECT_GT(ret, 0); - - char * comment_pos = strstr(buf,"#you see, \n#Joan is a girl, which"); - ASSERT_NE((long)comment_pos, 0); - - comment_pos = strstr(buf, "#this is the reception floor"); - ASSERT_NE((long)comment_pos, 0); - - comment_pos = strstr(buf, "#GLOBAL: this comment won't be dumped"); - ASSERT_EQ((long)comment_pos, 0); - - comment_pos = strstr(buf, "#END: this comment won't be dumped"); - ASSERT_EQ((long)comment_pos, 0); -} - -/** - * @brief - * @begin_version -**/ -TEST_F(test_dump_ex_suite, case_NoComment) -{ - //TODO - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - int ret = conf.load("conf", "sample.conf"); - ASSERT_EQ(ret, 0); - - char buf[10240]; - - ret = conf.dump_ex(buf, 10240, 1); - EXPECT_GT(ret, 0); - - char * comment_pos = strchr(buf, '#'); - ASSERT_EQ((long)comment_pos, 0); -} - -/** - * @brief - * @begin_version -**/ -TEST_F(test_dump_ex_suite, case_Position) -{ - //TODO - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - int ret = conf.load("conf", "sample.conf"); - ASSERT_EQ(ret, 0); - - char buf[10240]; - - ret = conf.dump_ex(buf, 10240, 2); - EXPECT_GT(ret, 0); - - //std::cout< - -int main(){ - comcfg :: Configure conf; - conf.load(".", "str.conf"); - int err; - conf["xxx"].to_int32(&err); - std::cout< -#include -#include "stdio.h" -#include - -using namespace comcfg; - -static int g_run = 0; - -static void * change_threadfun(void *param) -{ - FileReloader * prd = (FileReloader *)param; - while (g_run) { - printf("g_run:%d, monitor: %d\n",g_run, prd->monitor()); - sleep(10); - } - return NULL; -} - -int file_change(const char * filename, void * ) { - printf("file[%s]: changed\n", filename); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int main(){ - FileReloader rd; - rd.add_file_monitor("./reload.conf", file_change, NULL); - int add = rd.add_file_monitor("./reload.conf", file_change, NULL); - printf("add:%d\n", add); - rd.add_file_monitor("./reload.range", file_change, NULL); - g_run = 1; - pthread_t tid; - pthread_create(&tid, NULL, change_threadfun, &rd); - pthread_join(tid, NULL); - return 0; -} - - diff --git a/configure/test/test_get_default.cpp b/configure/test/test_get_default.cpp deleted file mode 100644 index d09e1da1cf7bada0841a458acbad201f1b464b30..0000000000000000000000000000000000000000 --- a/configure/test/test_get_default.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_get_default.cpp,v 1.3 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file test_get_default.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/03/12 01:30:32 - * @version $Revision: 1.3 $ - * @brief - * - **/ - -#include "Configure.h" - - -#define ASSERT(x) do{\ - if(!(x))printf("Assert failed %s:%d\n", __FILE__, __LINE__);\ - else printf("Assertion Successful. %s:%d\n", __FILE__, __LINE__);\ -}while(0) - -int main(){ - using namespace comcfg; - system("touch Nothing.conf"); - system("echo A : B > Nothing.conf"); - comcfg::Configure conf; - int ret = conf.load(".", "Nothing.conf"); - ASSERT(ret == 0); - - char v0; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_char(&v0, '0') ); - ASSERT( v0 == '0' ); - unsigned char v1; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_uchar(&v1, '1') ); - ASSERT( v1 == '1' ); - int16_t v2; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_int16(&v2, 2) ); - ASSERT( v2 == 2 ); - u_int16_t v3; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_uint16(&v3, 3) ); - ASSERT( v3 == 3 ); - int v4; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_int32(&v4, 4) ); - ASSERT( v4 == 4 ); - u_int32_t v5; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_uint32(&v5, 5) ); - ASSERT( v5 == 5 ); - long long v6; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_int64(&v6, 6) ); - ASSERT( v6 == 6 ); - unsigned long long v7; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_uint64(&v7, 7) ); - ASSERT( v7 == 7 ); - float v8; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_float(&v8, 8) ); - ASSERT( v8 == 8 ); - double v9; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_double(&v9, 9) ); - ASSERT( v9 == 9 ); - bsl_string v10; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_bsl_string(&v10, "10") ); - ASSERT( v10 == str_t("10") ); - str_t v11; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_raw_string(&v11, "11") ); - ASSERT( v11 == str_t("11") ); - char s[12]; - ASSERT( comcfg::NOSUCHKEY == conf["xxx"].get_cstr(s,12, "12") ); - ASSERT(strcmp(s, "12") == 0); - - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_get_value.cpp b/configure/test/test_get_value.cpp deleted file mode 100644 index ecd061286b0e26f2815caa8360e6883a9efe4d0c..0000000000000000000000000000000000000000 --- a/configure/test/test_get_value.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_get_value.cpp,v 1.5 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file test_get_value.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 16:45:20 - * @version $Revision: 1.5 $ - * @brief - * - **/ - -#include "ConfigUnit.h" -#include "Configure.h" -#include "utils/cc_struct.h" -#include -#include "ul_log.h" - -using namespace comcfg; - -void runtest(const comcfg::ConfigUnit &); - -int main(){ - ul_logstat_t ulg; - ulg.events = 2; - ul_openlog("./log", "test_get_value", &ulg, 2048); - comcfg::Configure conf; - conf.load(".", "test_value.conf", NULL); - printf( "\n\nRead test_int : "); - runtest(conf["test_int"]); - printf( "\n\nRead test_float : "); - runtest(conf["test_float"]); - printf( "\n\nRead test_str : "); - runtest(conf["test_str"]); - printf( "\n\nRead test_err : "); - runtest(conf["test_err"]); - return 0; -} - -void runtest(const comcfg::ConfigUnit & conf){ - - //========= Test char============= - try{ - char a0 = conf.to_char(); - std::cout<<"to char successful, value = "<comake2.md5 - @md5sum -c --status comake2.md5 - @rm -f comake2.md5 - -.PHONY:ccpclean -ccpclean: - @echo "[COMAKE:BUILD][Target:'ccpclean']" - @echo "make ccpclean done" - -.PHONY:clean -clean:ccpclean - @echo "[COMAKE:BUILD][Target:'clean']" - rm -rf test_globalConstraint - rm -rf ./output/bin/test_globalConstraint - rm -rf test_globalConstraint_test_globalConstraint.o - -.PHONY:dist -dist: - @echo "[COMAKE:BUILD][Target:'dist']" - tar czvf output.tar.gz output - @echo "make dist done" - -.PHONY:distclean -distclean:clean - @echo "[COMAKE:BUILD][Target:'distclean']" - rm -f output.tar.gz - @echo "make distclean done" - -.PHONY:love -love: - @echo "[COMAKE:BUILD][Target:'love']" - @echo "make love done" - -test_globalConstraint:test_globalConstraint_test_globalConstraint.o \ - ../../libconfig.a - @echo "[COMAKE:BUILD][Target:'test_globalConstraint']" - $(CXX) test_globalConstraint_test_globalConstraint.o -Xlinker "-(" ../../libconfig.a ../../../../com/btest/gtest/output/lib/libgtest.a \ - ../../../../com/btest/gtest/output/lib/libgtest_main.a \ - ../../../../lib2-64/bsl/lib/libbsl.a \ - ../../../../lib2-64/bsl/lib/libbsl_ResourcePool.a \ - ../../../../lib2-64/bsl/lib/libbsl_archive.a \ - ../../../../lib2-64/bsl/lib/libbsl_buffer.a \ - ../../../../lib2-64/bsl/lib/libbsl_check_cast.a \ - ../../../../lib2-64/bsl/lib/libbsl_exception.a \ - ../../../../lib2-64/bsl/lib/libbsl_pool.a \ - ../../../../lib2-64/bsl/lib/libbsl_utils.a \ - ../../../../lib2-64/bsl/lib/libbsl_var.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_implement.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_utils.a \ - ../../../../lib2-64/ullib/lib/libullib.a \ - ../../../../public/spreg/libspreg.a \ - ../../../../quality/autotest/reportlib/cpp/libautotest.a \ - ../../../../third-64/pcre/lib/libpcre.a \ - ../../../../third-64/pcre/lib/libpcrecpp.a \ - ../../../../third-64/pcre/lib/libpcreposix.a -lpthread \ - -lcrypto \ - -lrt -Xlinker "-)" -o test_globalConstraint - mkdir -p ./output/bin - cp -f --link test_globalConstraint ./output/bin - -test_globalConstraint_test_globalConstraint.o:test_globalConstraint.cpp - @echo "[COMAKE:BUILD][Target:'test_globalConstraint_test_globalConstraint.o']" - $(CXX) -c $(INCPATH) $(DEP_INCPATH) $(CPPFLAGS) $(CXXFLAGS) -o test_globalConstraint_test_globalConstraint.o test_globalConstraint.cpp - -endif #ifeq ($(shell uname -m),x86_64) - - diff --git a/configure/test/test_globalConstraint/conf/default.conf b/configure/test/test_globalConstraint/conf/default.conf deleted file mode 100644 index ce519c74e0c8b89a0e9a053a4a578328118d3ccc..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/default.conf +++ /dev/null @@ -1,4 +0,0 @@ -[groupxxx] -def_value : -[groupyyy] -not_def_value : 4331 diff --git a/configure/test/test_globalConstraint/conf/enum.conf b/configure/test/test_globalConstraint/conf/enum.conf deleted file mode 100644 index b075cee89fe2897997c73d34aa16a55af6f5e8eb..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/enum.conf +++ /dev/null @@ -1,5 +0,0 @@ -[groupxxx] -enum1 : 100 -enum2 : 10 -enum3 : 10 -enum4 : 1 diff --git a/configure/test/test_globalConstraint/conf/getKey.conf b/configure/test/test_globalConstraint/conf/getKey.conf deleted file mode 100644 index 1f32cf23de0cf44f4c7c96357a0537704ee21a36..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/getKey.conf +++ /dev/null @@ -1,19 +0,0 @@ -[server] -ip : 1.2.3.4 -port : 123 -host : baidu -[GLOBAL] -position : beijing -@height : 5 -@height : 6 - -[company] -[.@svr] -ip : 4.3.2.1 -port : 321 -host : baidu -[company] -name : baidu.com -[GLOBAL] -g_n1 : value1 -g_n2 : value2 diff --git a/configure/test/test_globalConstraint/conf/getKey.range b/configure/test/test_globalConstraint/conf/getKey.range deleted file mode 100644 index f9a3873ab7fca7159508bff94e8a6bf920099d6c..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/getKey.range +++ /dev/null @@ -1,16 +0,0 @@ -struct server_t{ - string ip = ip(), length(20); - uint16_t port = range(1, 1023); - string host = length(100); -}; - -server_t server; -string position = length(100); -uint32_t height[10] = range(0,10); - -struct company_t{ - string name = length(100); - server_t svr[]; -}; - -company_t company; diff --git a/configure/test/test_globalConstraint/conf/ip.conf b/configure/test/test_globalConstraint/conf/ip.conf deleted file mode 100644 index 498314aac2bf09cc8e9ae2f1208df3cc208e6365..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/ip.conf +++ /dev/null @@ -1,2 +0,0 @@ -[groupxxx] -addr : 1.2.3.4 diff --git a/configure/test/test_globalConstraint/conf/length.conf b/configure/test/test_globalConstraint/conf/length.conf deleted file mode 100644 index c16c791121bf0ea1141abe6dc0be81dc12ee2baf..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/length.conf +++ /dev/null @@ -1,2 +0,0 @@ -[groupxxx] -str : 1234567890 diff --git a/configure/test/test_globalConstraint/conf/range.conf b/configure/test/test_globalConstraint/conf/range.conf deleted file mode 100644 index e2820bdfada02c9f43d7d7b2ba1848fe6269f957..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/range.conf +++ /dev/null @@ -1,4 +0,0 @@ -[groupxxx] -range1 : 1 -range2 : 1000 -range3 : 250 diff --git a/configure/test/test_globalConstraint/conf/regexp.conf b/configure/test/test_globalConstraint/conf/regexp.conf deleted file mode 100644 index 0d8f97f1acf7a6048692e86fcf0ea1345b25afc7..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/conf/regexp.conf +++ /dev/null @@ -1,4 +0,0 @@ -#regular expression: (\d)+ match -#regular expression: .{1.5} not match -[groupxxx] -regtext : 1234567890 diff --git a/configure/test/test_globalConstraint/test_globalConstraint.cpp b/configure/test/test_globalConstraint/test_globalConstraint.cpp deleted file mode 100644 index 87e176d851021a5d1e18ba560bd0670dde6d4218..0000000000000000000000000000000000000000 --- a/configure/test/test_globalConstraint/test_globalConstraint.cpp +++ /dev/null @@ -1,526 +0,0 @@ -#include -#include -#include -//#include "compiler/src/idl_conf_if.h" -#include "constraint/cc_default.h" -#include "constraint/ConstraintFunction.h" - -int main(int argc, char **argv) -{ - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -/** - * @brief -**/ -class test_globalConstraint_suite : public ::testing::Test{ - protected: - test_globalConstraint_suite(){}; - virtual ~test_globalConstraint_suite(){}; - virtual void SetUp() { - //Called befor every TEST_F(test_globalConstaint_suite, *) - }; - virtual void TearDown() { - //Called after every TEST_F(test_globalConstraint_suite, *) - }; -}; - - -/** - * @brief check printKeyConstraint - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_printKeyConstraint) -{ - //TODO - comcfg::Configure conf; - int ret = conf.load("conf/", "getKey.conf"); - ASSERT_EQ(0, ret); - //range file not specified - ret = conf.printKeyConstraint("company.svr.ip"); - ASSERT_NE(0, ret); - //wrongly formatted key_path - ret = conf.printKeyConstraint(".svr.ip", "conf/getKey.range"); - ASSERT_NE(0, ret); - //group not found - ret = conf.printKeyConstraint("company.notfound.ip", "conf/getKey.range"); - ASSERT_NE(0, ret); - //right long key - ret = conf.printKeyConstraint("company.svr.ip", "conf/getKey.range"); - ASSERT_EQ(0, ret); - //right short key - ret = conf.printKeyConstraint("position"); - ASSERT_EQ(0, ret); - //key not found - ret = conf.printKeyConstraint("not_found_key"); - ASSERT_NE(0, ret); -} - -/** - * @brief test global constraint function regexp - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_regexp_wrong_arg_num) -{ - comcfg::GlobalConsFun gFun("regexp_wrong_arg_num", comcfg::CFdefault::gcons_regexp); - gFun._arg.push_back("(\\d)+"); - gFun._arg.push_back(".{1,64}"); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "regexp.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function regexp - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_regexp_match) -{ - comcfg::GlobalConsFun gFun("regexp_match", comcfg::CFdefault::gcons_regexp); - gFun._arg.push_back("(\\d)+"); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "regexp.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function regexp - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_regexp_not_match) -{ - comcfg::GlobalConsFun gFun("regexp_not_match", comcfg::CFdefault::gcons_regexp); - gFun._arg.push_back(".{1,5}"); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "regexp.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function ip - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_ip_match) -{ - comcfg::GlobalConsFun gFun("ip_match", comcfg::CFdefault::gcons_ip); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "ip.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function ip - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_ip_not_match) -{ - comcfg::GlobalConsFun gFun("ip_not_match", comcfg::CFdefault::gcons_ip); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "regexp.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function length - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_length_int) -{ - typedef int ARG_TYPE; - ARG_TYPE DEF_VALUE = 100; - comcfg::GlobalConsFun gFun("length_int", comcfg::CFdefault::gcons_length); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "length.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function length - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_length_longlong) -{ - typedef long long ARG_TYPE; - ARG_TYPE DEF_VALUE = 5; - comcfg::GlobalConsFun gFun("length_longlong", comcfg::CFdefault::gcons_length); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "length.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function default - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_default_int) -{ - typedef int ARG_TYPE; - const ARG_TYPE DEF_VALUE = 100; - comcfg::GlobalConsFun gFun("default_int", comcfg::CFdefault::gcons_default); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "default.conf"); - ASSERT_EQ(0, ret); - - int errcode = 0; - int value = conf["def_value"].to_int32(&errcode); - if(errcode == 0){ - ASSERT_EQ(DEF_VALUE, value); - } - errcode = 0; - value = conf["not_def_value"].to_int32(&errcode); - if(errcode == 0){ - ASSERT_NE(DEF_VALUE, value); - } - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function default - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_default_longlong) -{ - typedef long long ARG_TYPE; - const ARG_TYPE DEF_VALUE = 100; - comcfg::GlobalConsFun gFun("default_longlong", comcfg::CFdefault::gcons_default); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "default.conf"); - ASSERT_EQ(0, ret); - - int errcode = 0; - ARG_TYPE value = conf["def_value"].to_int64(&errcode); - if(errcode == 0){ - ASSERT_EQ(DEF_VALUE, value); - } - errcode = 0; - value = conf["not_def_value"].to_int64(&errcode); - if(errcode == 0){ - ASSERT_NE(DEF_VALUE, value); - } - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function default - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_default_double) -{ - typedef double ARG_TYPE; - const ARG_TYPE DEF_VALUE = 100; - comcfg::GlobalConsFun gFun("default_double", comcfg::CFdefault::gcons_default); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "default.conf"); - ASSERT_EQ(0, ret); - - int errcode = 0; - ARG_TYPE value = conf["def_value"].to_double(&errcode); - if(errcode == 0){ - ASSERT_DOUBLE_EQ(DEF_VALUE, value); - } - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function default - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_default_string) -{ - typedef bsl::string ARG_TYPE; - const ARG_TYPE DEF_VALUE = "hello, default string"; - comcfg::GlobalConsFun gFun("default_string", comcfg::CFdefault::gcons_default); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "default.conf"); - ASSERT_EQ(0, ret); - - int errcode = 0; - ARG_TYPE value = conf["def_value"].to_bsl_string(&errcode); - if(errcode == 0){ - ASSERT_STREQ(DEF_VALUE.c_str(), value.c_str()); - } - errcode = 0; - value = conf["not_def_value"].to_bsl_string(&errcode); - if(errcode == 0){ - ASSERT_STRNE(DEF_VALUE.c_str(), value.c_str()); - } - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function default - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_default_wrong_type) -{ - typedef long ARG_TYPE; - ARG_TYPE DEF_VALUE = 100; - comcfg::GlobalConsFun gFun("default_long", comcfg::CFdefault::gcons_default); - gFun._arg.push_back(DEF_VALUE); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "default.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function enum - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_enum_int) -{ - typedef int ARG_TYPE; - comcfg::GlobalConsFun gFun("enum_int", comcfg::CFdefault::gcons_enum); - gFun._arg.push_back(1); - gFun._arg.push_back(10); - gFun._arg.push_back(100); - gFun._arg.push_back(1000); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "enum.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function enum - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_enum_longlong) -{ - typedef long long ARG_TYPE; - comcfg::GlobalConsFun gFun("enum_longlong", comcfg::CFdefault::gcons_enum); - gFun._arg.push_back(1); - gFun._arg.push_back(100); - gFun._arg.push_back(1000); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "enum.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function enum - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_enum_string) -{ - typedef bsl::string ARG_TYPE; - comcfg::GlobalConsFun gFun("enum_string", comcfg::CFdefault::gcons_enum); - gFun._arg.push_back("1"); - gFun._arg.push_back("10"); - gFun._arg.push_back("100"); - gFun._arg.push_back("1000"); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "enum.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function enum - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_enum_double) -{ - typedef double ARG_TYPE; - comcfg::GlobalConsFun gFun("enum_double", comcfg::CFdefault::gcons_enum); - gFun._arg.push_back(1); - gFun._arg.push_back(10); - gFun._arg.push_back(1000); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "enum.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function enum - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_enum_wrong_type) -{ - typedef char ARG_TYPE; - comcfg::GlobalConsFun gFun("enum_char", comcfg::CFdefault::gcons_enum); - gFun._arg.push_back('1'); - gFun._arg.push_back('2'); - gFun._arg.push_back('3'); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "enum.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function range - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_range_int) -{ - typedef int ARG_TYPE; - comcfg::GlobalConsFun gFun("range_int", comcfg::CFdefault::gcons_range); - gFun._arg.push_back(1); - gFun._arg.push_back(1000); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "range.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function range - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_range_longlong) -{ - typedef long long ARG_TYPE; - comcfg::GlobalConsFun gFun("range_longlong", comcfg::CFdefault::gcons_range); - gFun._arg.push_back(1); - gFun._arg.push_back(500); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "range.conf"); - ASSERT_NE(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test global constraint function range - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_range_double) -{ - typedef double ARG_TYPE; - comcfg::GlobalConsFun gFun("range_double", comcfg::CFdefault::gcons_range); - gFun._arg.push_back(1); - gFun._arg.push_back(1000); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint(gFun); - - comcfg::Configure conf; - int ret = conf.load("conf/", "range.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test variable parameters - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_variable_parameters_int) -{ - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint("range_int_vp",comcfg::CFdefault::gcons_range, 2, 1, 1000); - - comcfg::Configure conf; - int ret = conf.load("conf/", "range.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test variable parameters - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_variable_parameters_double) -{ - //comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint("range_double_vp",comcfg::CFdefault::gcons_range, 2, 1, 1000); - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint("range_double_vp",comcfg::CFdefault::gcons_range, 2, 1.0, 1000.0); - - comcfg::Configure conf; - int ret = conf.load("conf/", "range.conf"); - //ASSERT_NE(0, ret); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); -} - -/** - * @brief test variable parameters - * @note the program will crash if the variable parameters are not of POD type. This must be paid great attention. - * @begin_version - **/ -TEST_F(test_globalConstraint_suite, case_variable_parameters_string) -{ - /* - comcfg::ConstraintLibrary::getInstance()->registGlobalConstraint("enum_string_vp",comcfg::CFdefault::gcons_enum, 4, "1", "10", "100", "1000"); - - comcfg::Configure conf; - int ret = conf.load("conf/", "enum.conf"); - ASSERT_EQ(0, ret); - - comcfg::ConstraintLibrary::destroyInstance(); - */ -} - - - - diff --git a/configure/test/test_group/COMAKE b/configure/test/test_group/COMAKE deleted file mode 100644 index 06cf831c539ebb05ad102487482b5a47e63574cf..0000000000000000000000000000000000000000 --- a/configure/test/test_group/COMAKE +++ /dev/null @@ -1,60 +0,0 @@ -#edit-mode: -*- python -*- -#coding:gbk - -#工作路径. -WORKROOT('../../../../') - -#使用硬链接copy. -CopyUsingHardLink(True) - -#支持32位/64位平台编译 -#ENABLE_MULTI_LIBS(True) - -#C预处理器参数. -CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\\"1.9.8.7\\\"') -#为32位目标编译指定额外的预处理参数 -#CPPFLAGS_32('-D_XOPEN_SOURE=500') - -#C编译参数. -CFLAGS('-g -pipe -W -Wall -fPIC') - -#C++编译参数. -CXXFLAGS('-g -pipe -W -Wall -fPIC') - -#IDL编译参数 -IDLFLAGS('--compack') - -#UBRPC编译参数 -UBRPCFLAGS('--compack') - -#头文件路径. -INCPATHS('. ../../ ./include ./output ./output/include') - -#使用库 -LIBS('../../libconfig.a') - -#链接参数. -LDFLAGS('-lpthread -lcrypto -lrt') - -#依赖模块 -CONFIGS('lib2-64/ullib') -CONFIGS('lib2-64/bsl') -CONFIGS('public/spreg') -CONFIGS('com/btest/gtest') - -#为32位/64位指定不同的依赖路径. -#CONFIGS_32('lib2/ullib') -#CONFIGS_64('lib2-64/ullib') - -user_sources='' -user_headers='' - -#可执行文件 -Application('test_Configure',Sources('test_Configure.cpp')) -#静态库 -#StaticLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#共享库 -#SharedLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#子目录 -#Directory('demo') - diff --git a/configure/test/test_group/Makefile b/configure/test/test_group/Makefile deleted file mode 100644 index f8fd87434e7fe11586ceaadbf57f93d7386691f9..0000000000000000000000000000000000000000 --- a/configure/test/test_group/Makefile +++ /dev/null @@ -1,137 +0,0 @@ -#COMAKE2 edit-mode: -*- Makefile -*- -####################64Bit Mode#################### -ifeq ($(shell uname -m),x86_64) -CC=gcc -CXX=g++ -CXXFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CPPFLAGS=-D_GNU_SOURCE \ - -D__STDC_LIMIT_MACROS \ - -DVERSION=\"1.9.8.7\" -INCPATH=-I. \ - -I../../ \ - -I./include \ - -I./output \ - -I./output/include -DEP_INCPATH=-I../../../../com/btest/gtest \ - -I../../../../com/btest/gtest/include \ - -I../../../../com/btest/gtest/output \ - -I../../../../com/btest/gtest/output/include \ - -I../../../../lib2-64/bsl \ - -I../../../../lib2-64/bsl/include \ - -I../../../../lib2-64/bsl/output \ - -I../../../../lib2-64/bsl/output/include \ - -I../../../../lib2-64/ullib \ - -I../../../../lib2-64/ullib/include \ - -I../../../../lib2-64/ullib/output \ - -I../../../../lib2-64/ullib/output/include \ - -I../../../../public/spreg \ - -I../../../../public/spreg/include \ - -I../../../../public/spreg/output \ - -I../../../../public/spreg/output/include \ - -I../../../../quality/autotest/reportlib/cpp \ - -I../../../../quality/autotest/reportlib/cpp/include \ - -I../../../../quality/autotest/reportlib/cpp/output \ - -I../../../../quality/autotest/reportlib/cpp/output/include \ - -I../../../../third-64/pcre \ - -I../../../../third-64/pcre/include \ - -I../../../../third-64/pcre/output \ - -I../../../../third-64/pcre/output/include - -#============ CCP vars ============ -CCHECK=@ccheck.py -CCHECK_FLAGS= -PCLINT=@pclint -PCLINT_FLAGS= -CCP=@ccp.py -CCP_FLAGS= - - -#COMAKE UUID -COMAKE_MD5=efc277696b93624647d9d0370f10bdd4 COMAKE - - -.PHONY:all -all:comake2_makefile_check test_Configure - @echo "[COMAKE:BUILD][Target:'all']" - @echo "make all done" - -.PHONY:comake2_makefile_check -comake2_makefile_check: - @echo "[COMAKE:BUILD][Target:'comake2_makefile_check']" - #in case of error, update 'Makefile' by 'comake2' - @echo "$(COMAKE_MD5)">comake2.md5 - @md5sum -c --status comake2.md5 - @rm -f comake2.md5 - -.PHONY:ccpclean -ccpclean: - @echo "[COMAKE:BUILD][Target:'ccpclean']" - @echo "make ccpclean done" - -.PHONY:clean -clean:ccpclean - @echo "[COMAKE:BUILD][Target:'clean']" - rm -rf test_Configure - rm -rf ./output/bin/test_Configure - rm -rf test_Configure_test_Configure.o - -.PHONY:dist -dist: - @echo "[COMAKE:BUILD][Target:'dist']" - tar czvf output.tar.gz output - @echo "make dist done" - -.PHONY:distclean -distclean:clean - @echo "[COMAKE:BUILD][Target:'distclean']" - rm -f output.tar.gz - @echo "make distclean done" - -.PHONY:love -love: - @echo "[COMAKE:BUILD][Target:'love']" - @echo "make love done" - -test_Configure:test_Configure_test_Configure.o \ - ../../libconfig.a - @echo "[COMAKE:BUILD][Target:'test_Configure']" - $(CXX) test_Configure_test_Configure.o -Xlinker "-(" ../../libconfig.a ../../../../com/btest/gtest/output/lib/libgtest.a \ - ../../../../com/btest/gtest/output/lib/libgtest_main.a \ - ../../../../lib2-64/bsl/lib/libbsl.a \ - ../../../../lib2-64/bsl/lib/libbsl_ResourcePool.a \ - ../../../../lib2-64/bsl/lib/libbsl_archive.a \ - ../../../../lib2-64/bsl/lib/libbsl_buffer.a \ - ../../../../lib2-64/bsl/lib/libbsl_check_cast.a \ - ../../../../lib2-64/bsl/lib/libbsl_exception.a \ - ../../../../lib2-64/bsl/lib/libbsl_pool.a \ - ../../../../lib2-64/bsl/lib/libbsl_utils.a \ - ../../../../lib2-64/bsl/lib/libbsl_var.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_implement.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_utils.a \ - ../../../../lib2-64/ullib/lib/libullib.a \ - ../../../../public/spreg/libspreg.a \ - ../../../../quality/autotest/reportlib/cpp/libautotest.a \ - ../../../../third-64/pcre/lib/libpcre.a \ - ../../../../third-64/pcre/lib/libpcrecpp.a \ - ../../../../third-64/pcre/lib/libpcreposix.a -lpthread \ - -lcrypto \ - -lrt -Xlinker "-)" -o test_Configure - mkdir -p ./output/bin - cp -f --link test_Configure ./output/bin - -test_Configure_test_Configure.o:test_Configure.cpp - @echo "[COMAKE:BUILD][Target:'test_Configure_test_Configure.o']" - $(CXX) -c $(INCPATH) $(DEP_INCPATH) $(CPPFLAGS) $(CXXFLAGS) -o test_Configure_test_Configure.o test_Configure.cpp - -endif #ifeq ($(shell uname -m),x86_64) - - diff --git a/configure/test/test_group/conf/bigconf.conf b/configure/test/test_group/conf/bigconf.conf deleted file mode 100644 index 20078318435f8a5a32aff5ddbb942090ca299327..0000000000000000000000000000000000000000 --- a/configure/test/test_group/conf/bigconf.conf +++ /dev/null @@ -1,100000 +0,0 @@ -[group_1] -[group_2] -[group_3] -[group_4] -[group_5] -[group_6] -[group_7] -[group_8] -[group_9] -[group_10] -[group_11] -[group_12] -[group_13] -[group_14] -[group_15] -[group_16] -[group_17] -[group_18] -[group_19] -[group_20] -[group_21] -[group_22] -[group_23] -[group_24] -[group_25] -[group_26] -[group_27] -[group_28] -[group_29] -[group_30] -[group_31] -[group_32] -[group_33] -[group_34] -[group_35] -[group_36] -[group_37] -[group_38] -[group_39] -[group_40] -[group_41] -[group_42] -[group_43] -[group_44] -[group_45] -[group_46] -[group_47] -[group_48] -[group_49] -[group_50] -[group_51] -[group_52] -[group_53] -[group_54] -[group_55] -[group_56] -[group_57] -[group_58] -[group_59] -[group_60] -[group_61] -[group_62] -[group_63] -[group_64] -[group_65] -[group_66] -[group_67] -[group_68] -[group_69] -[group_70] -[group_71] -[group_72] -[group_73] -[group_74] -[group_75] -[group_76] -[group_77] -[group_78] -[group_79] -[group_80] -[group_81] -[group_82] -[group_83] -[group_84] -[group_85] -[group_86] -[group_87] -[group_88] -[group_89] -[group_90] -[group_91] -[group_92] -[group_93] -[group_94] -[group_95] -[group_96] -[group_97] -[group_98] -[group_99] -[group_100] -[group_101] -[group_102] -[group_103] -[group_104] -[group_105] -[group_106] -[group_107] -[group_108] -[group_109] -[group_110] -[group_111] -[group_112] -[group_113] -[group_114] -[group_115] -[group_116] -[group_117] -[group_118] -[group_119] -[group_120] -[group_121] -[group_122] -[group_123] -[group_124] -[group_125] -[group_126] -[group_127] -[group_128] -[group_129] -[group_130] -[group_131] -[group_132] -[group_133] -[group_134] -[group_135] -[group_136] -[group_137] -[group_138] -[group_139] -[group_140] -[group_141] -[group_142] -[group_143] -[group_144] -[group_145] -[group_146] -[group_147] -[group_148] -[group_149] -[group_150] -[group_151] -[group_152] -[group_153] -[group_154] -[group_155] -[group_156] -[group_157] -[group_158] -[group_159] -[group_160] -[group_161] -[group_162] -[group_163] -[group_164] -[group_165] -[group_166] -[group_167] -[group_168] -[group_169] -[group_170] -[group_171] -[group_172] -[group_173] -[group_174] -[group_175] -[group_176] -[group_177] -[group_178] -[group_179] -[group_180] -[group_181] -[group_182] -[group_183] -[group_184] -[group_185] -[group_186] -[group_187] -[group_188] -[group_189] -[group_190] -[group_191] -[group_192] -[group_193] -[group_194] -[group_195] -[group_196] -[group_197] -[group_198] -[group_199] -[group_200] -[group_201] -[group_202] -[group_203] -[group_204] -[group_205] -[group_206] -[group_207] -[group_208] -[group_209] -[group_210] -[group_211] -[group_212] -[group_213] -[group_214] -[group_215] -[group_216] -[group_217] -[group_218] -[group_219] -[group_220] -[group_221] -[group_222] -[group_223] -[group_224] -[group_225] -[group_226] -[group_227] -[group_228] -[group_229] -[group_230] -[group_231] -[group_232] -[group_233] -[group_234] -[group_235] -[group_236] -[group_237] -[group_238] -[group_239] -[group_240] -[group_241] -[group_242] -[group_243] -[group_244] -[group_245] -[group_246] -[group_247] -[group_248] -[group_249] -[group_250] -[group_251] -[group_252] -[group_253] -[group_254] -[group_255] -[group_256] -[group_257] -[group_258] -[group_259] -[group_260] -[group_261] -[group_262] -[group_263] -[group_264] -[group_265] -[group_266] -[group_267] -[group_268] -[group_269] -[group_270] -[group_271] -[group_272] -[group_273] -[group_274] -[group_275] -[group_276] -[group_277] -[group_278] -[group_279] -[group_280] -[group_281] -[group_282] -[group_283] -[group_284] -[group_285] -[group_286] -[group_287] -[group_288] -[group_289] -[group_290] -[group_291] -[group_292] -[group_293] -[group_294] -[group_295] -[group_296] -[group_297] -[group_298] -[group_299] -[group_300] -[group_301] -[group_302] -[group_303] -[group_304] -[group_305] -[group_306] -[group_307] -[group_308] -[group_309] -[group_310] -[group_311] -[group_312] -[group_313] -[group_314] -[group_315] -[group_316] -[group_317] -[group_318] -[group_319] -[group_320] -[group_321] -[group_322] -[group_323] -[group_324] -[group_325] -[group_326] -[group_327] -[group_328] -[group_329] -[group_330] -[group_331] -[group_332] -[group_333] -[group_334] -[group_335] -[group_336] -[group_337] -[group_338] -[group_339] -[group_340] -[group_341] -[group_342] -[group_343] -[group_344] -[group_345] -[group_346] -[group_347] -[group_348] -[group_349] -[group_350] -[group_351] -[group_352] -[group_353] -[group_354] -[group_355] -[group_356] -[group_357] -[group_358] -[group_359] -[group_360] -[group_361] -[group_362] -[group_363] -[group_364] -[group_365] -[group_366] -[group_367] -[group_368] -[group_369] -[group_370] -[group_371] -[group_372] -[group_373] -[group_374] -[group_375] -[group_376] -[group_377] -[group_378] -[group_379] -[group_380] -[group_381] -[group_382] -[group_383] -[group_384] -[group_385] -[group_386] -[group_387] -[group_388] -[group_389] -[group_390] -[group_391] -[group_392] -[group_393] -[group_394] -[group_395] -[group_396] -[group_397] -[group_398] -[group_399] -[group_400] -[group_401] -[group_402] -[group_403] -[group_404] -[group_405] -[group_406] -[group_407] -[group_408] -[group_409] -[group_410] -[group_411] -[group_412] -[group_413] -[group_414] -[group_415] -[group_416] -[group_417] -[group_418] -[group_419] -[group_420] -[group_421] -[group_422] -[group_423] -[group_424] -[group_425] -[group_426] -[group_427] -[group_428] -[group_429] -[group_430] -[group_431] -[group_432] -[group_433] -[group_434] -[group_435] -[group_436] -[group_437] -[group_438] -[group_439] -[group_440] -[group_441] -[group_442] -[group_443] -[group_444] -[group_445] -[group_446] -[group_447] -[group_448] -[group_449] -[group_450] -[group_451] -[group_452] -[group_453] -[group_454] -[group_455] -[group_456] -[group_457] -[group_458] -[group_459] -[group_460] -[group_461] -[group_462] -[group_463] -[group_464] -[group_465] -[group_466] -[group_467] -[group_468] -[group_469] -[group_470] -[group_471] -[group_472] -[group_473] -[group_474] -[group_475] -[group_476] -[group_477] -[group_478] -[group_479] -[group_480] -[group_481] -[group_482] -[group_483] -[group_484] -[group_485] -[group_486] -[group_487] -[group_488] -[group_489] -[group_490] -[group_491] -[group_492] -[group_493] -[group_494] -[group_495] -[group_496] -[group_497] -[group_498] -[group_499] -[group_500] -[group_501] -[group_502] -[group_503] -[group_504] -[group_505] -[group_506] -[group_507] -[group_508] -[group_509] -[group_510] -[group_511] -[group_512] -[group_513] -[group_514] -[group_515] -[group_516] -[group_517] -[group_518] -[group_519] -[group_520] -[group_521] -[group_522] -[group_523] -[group_524] -[group_525] -[group_526] -[group_527] -[group_528] -[group_529] -[group_530] -[group_531] -[group_532] -[group_533] -[group_534] -[group_535] -[group_536] -[group_537] -[group_538] -[group_539] -[group_540] -[group_541] -[group_542] -[group_543] -[group_544] -[group_545] -[group_546] -[group_547] -[group_548] -[group_549] -[group_550] -[group_551] -[group_552] -[group_553] -[group_554] -[group_555] -[group_556] -[group_557] -[group_558] -[group_559] -[group_560] -[group_561] -[group_562] -[group_563] -[group_564] -[group_565] -[group_566] -[group_567] -[group_568] -[group_569] -[group_570] -[group_571] -[group_572] -[group_573] -[group_574] -[group_575] -[group_576] -[group_577] -[group_578] -[group_579] -[group_580] -[group_581] -[group_582] -[group_583] -[group_584] -[group_585] -[group_586] -[group_587] -[group_588] -[group_589] -[group_590] -[group_591] -[group_592] -[group_593] -[group_594] -[group_595] -[group_596] -[group_597] -[group_598] -[group_599] -[group_600] -[group_601] -[group_602] -[group_603] -[group_604] -[group_605] -[group_606] -[group_607] -[group_608] -[group_609] -[group_610] -[group_611] -[group_612] -[group_613] -[group_614] -[group_615] -[group_616] -[group_617] -[group_618] -[group_619] -[group_620] -[group_621] -[group_622] -[group_623] -[group_624] -[group_625] -[group_626] -[group_627] -[group_628] -[group_629] -[group_630] -[group_631] -[group_632] -[group_633] -[group_634] -[group_635] -[group_636] -[group_637] -[group_638] -[group_639] -[group_640] -[group_641] -[group_642] -[group_643] -[group_644] -[group_645] -[group_646] -[group_647] -[group_648] -[group_649] -[group_650] -[group_651] -[group_652] -[group_653] -[group_654] -[group_655] -[group_656] -[group_657] -[group_658] -[group_659] -[group_660] -[group_661] -[group_662] -[group_663] -[group_664] -[group_665] -[group_666] -[group_667] -[group_668] -[group_669] -[group_670] -[group_671] -[group_672] -[group_673] -[group_674] -[group_675] -[group_676] -[group_677] -[group_678] -[group_679] -[group_680] -[group_681] -[group_682] -[group_683] -[group_684] -[group_685] -[group_686] -[group_687] -[group_688] -[group_689] -[group_690] -[group_691] -[group_692] -[group_693] -[group_694] -[group_695] -[group_696] -[group_697] -[group_698] -[group_699] -[group_700] -[group_701] -[group_702] -[group_703] -[group_704] -[group_705] -[group_706] -[group_707] -[group_708] -[group_709] -[group_710] -[group_711] -[group_712] -[group_713] -[group_714] -[group_715] -[group_716] -[group_717] -[group_718] -[group_719] -[group_720] -[group_721] -[group_722] -[group_723] -[group_724] -[group_725] -[group_726] -[group_727] -[group_728] -[group_729] -[group_730] -[group_731] -[group_732] -[group_733] -[group_734] -[group_735] -[group_736] -[group_737] -[group_738] -[group_739] -[group_740] -[group_741] -[group_742] -[group_743] -[group_744] -[group_745] -[group_746] -[group_747] -[group_748] -[group_749] -[group_750] -[group_751] -[group_752] -[group_753] -[group_754] -[group_755] -[group_756] -[group_757] -[group_758] -[group_759] -[group_760] -[group_761] -[group_762] -[group_763] -[group_764] -[group_765] -[group_766] -[group_767] -[group_768] -[group_769] -[group_770] -[group_771] -[group_772] -[group_773] -[group_774] -[group_775] -[group_776] -[group_777] -[group_778] -[group_779] -[group_780] -[group_781] -[group_782] -[group_783] -[group_784] -[group_785] -[group_786] -[group_787] -[group_788] -[group_789] -[group_790] -[group_791] -[group_792] -[group_793] -[group_794] -[group_795] -[group_796] -[group_797] -[group_798] -[group_799] -[group_800] -[group_801] -[group_802] -[group_803] -[group_804] -[group_805] -[group_806] -[group_807] -[group_808] -[group_809] -[group_810] -[group_811] -[group_812] -[group_813] -[group_814] -[group_815] -[group_816] -[group_817] -[group_818] -[group_819] -[group_820] -[group_821] -[group_822] -[group_823] -[group_824] -[group_825] -[group_826] -[group_827] -[group_828] -[group_829] -[group_830] -[group_831] -[group_832] -[group_833] -[group_834] -[group_835] -[group_836] -[group_837] -[group_838] -[group_839] -[group_840] -[group_841] -[group_842] -[group_843] -[group_844] -[group_845] -[group_846] -[group_847] -[group_848] -[group_849] -[group_850] -[group_851] -[group_852] -[group_853] -[group_854] -[group_855] -[group_856] -[group_857] -[group_858] -[group_859] -[group_860] -[group_861] -[group_862] -[group_863] -[group_864] -[group_865] -[group_866] -[group_867] -[group_868] -[group_869] -[group_870] -[group_871] -[group_872] -[group_873] -[group_874] -[group_875] -[group_876] -[group_877] -[group_878] -[group_879] -[group_880] -[group_881] -[group_882] -[group_883] -[group_884] -[group_885] -[group_886] -[group_887] -[group_888] -[group_889] -[group_890] -[group_891] -[group_892] -[group_893] -[group_894] -[group_895] -[group_896] -[group_897] -[group_898] -[group_899] -[group_900] -[group_901] -[group_902] -[group_903] -[group_904] -[group_905] -[group_906] -[group_907] -[group_908] -[group_909] -[group_910] -[group_911] -[group_912] -[group_913] -[group_914] -[group_915] -[group_916] -[group_917] -[group_918] -[group_919] -[group_920] -[group_921] -[group_922] -[group_923] -[group_924] -[group_925] -[group_926] -[group_927] -[group_928] -[group_929] -[group_930] -[group_931] -[group_932] -[group_933] -[group_934] -[group_935] -[group_936] -[group_937] -[group_938] -[group_939] -[group_940] -[group_941] -[group_942] -[group_943] -[group_944] -[group_945] -[group_946] -[group_947] -[group_948] -[group_949] -[group_950] -[group_951] -[group_952] -[group_953] -[group_954] -[group_955] -[group_956] -[group_957] -[group_958] -[group_959] -[group_960] -[group_961] -[group_962] -[group_963] -[group_964] -[group_965] -[group_966] -[group_967] -[group_968] -[group_969] -[group_970] -[group_971] -[group_972] -[group_973] -[group_974] -[group_975] -[group_976] -[group_977] -[group_978] -[group_979] -[group_980] -[group_981] -[group_982] -[group_983] -[group_984] -[group_985] -[group_986] -[group_987] -[group_988] -[group_989] -[group_990] -[group_991] -[group_992] -[group_993] -[group_994] -[group_995] -[group_996] -[group_997] -[group_998] -[group_999] -[group_1000] -[group_1001] -[group_1002] -[group_1003] -[group_1004] -[group_1005] -[group_1006] -[group_1007] -[group_1008] -[group_1009] -[group_1010] -[group_1011] -[group_1012] -[group_1013] -[group_1014] -[group_1015] -[group_1016] -[group_1017] -[group_1018] -[group_1019] -[group_1020] -[group_1021] -[group_1022] -[group_1023] -[group_1024] -[group_1025] -[group_1026] -[group_1027] -[group_1028] -[group_1029] -[group_1030] -[group_1031] -[group_1032] -[group_1033] -[group_1034] -[group_1035] -[group_1036] -[group_1037] -[group_1038] -[group_1039] -[group_1040] -[group_1041] -[group_1042] -[group_1043] -[group_1044] -[group_1045] -[group_1046] -[group_1047] -[group_1048] -[group_1049] -[group_1050] -[group_1051] -[group_1052] -[group_1053] -[group_1054] -[group_1055] -[group_1056] -[group_1057] -[group_1058] -[group_1059] -[group_1060] -[group_1061] -[group_1062] -[group_1063] -[group_1064] -[group_1065] -[group_1066] -[group_1067] -[group_1068] -[group_1069] -[group_1070] -[group_1071] -[group_1072] -[group_1073] -[group_1074] -[group_1075] -[group_1076] -[group_1077] -[group_1078] -[group_1079] -[group_1080] -[group_1081] -[group_1082] -[group_1083] -[group_1084] -[group_1085] -[group_1086] -[group_1087] -[group_1088] -[group_1089] -[group_1090] -[group_1091] -[group_1092] -[group_1093] -[group_1094] -[group_1095] -[group_1096] -[group_1097] -[group_1098] -[group_1099] -[group_1100] -[group_1101] -[group_1102] -[group_1103] -[group_1104] -[group_1105] -[group_1106] -[group_1107] -[group_1108] -[group_1109] -[group_1110] -[group_1111] -[group_1112] -[group_1113] -[group_1114] -[group_1115] -[group_1116] -[group_1117] -[group_1118] -[group_1119] -[group_1120] -[group_1121] -[group_1122] -[group_1123] -[group_1124] -[group_1125] -[group_1126] -[group_1127] -[group_1128] -[group_1129] -[group_1130] -[group_1131] -[group_1132] -[group_1133] -[group_1134] -[group_1135] -[group_1136] -[group_1137] -[group_1138] -[group_1139] -[group_1140] -[group_1141] -[group_1142] -[group_1143] -[group_1144] -[group_1145] -[group_1146] -[group_1147] -[group_1148] -[group_1149] -[group_1150] -[group_1151] -[group_1152] -[group_1153] -[group_1154] -[group_1155] -[group_1156] -[group_1157] -[group_1158] -[group_1159] -[group_1160] -[group_1161] -[group_1162] -[group_1163] -[group_1164] -[group_1165] -[group_1166] -[group_1167] -[group_1168] -[group_1169] -[group_1170] -[group_1171] -[group_1172] -[group_1173] -[group_1174] -[group_1175] -[group_1176] -[group_1177] -[group_1178] -[group_1179] -[group_1180] -[group_1181] -[group_1182] -[group_1183] -[group_1184] -[group_1185] -[group_1186] -[group_1187] -[group_1188] -[group_1189] -[group_1190] -[group_1191] -[group_1192] -[group_1193] -[group_1194] -[group_1195] -[group_1196] -[group_1197] -[group_1198] -[group_1199] -[group_1200] -[group_1201] -[group_1202] -[group_1203] -[group_1204] -[group_1205] -[group_1206] -[group_1207] -[group_1208] -[group_1209] -[group_1210] -[group_1211] -[group_1212] -[group_1213] -[group_1214] -[group_1215] -[group_1216] -[group_1217] -[group_1218] -[group_1219] -[group_1220] -[group_1221] -[group_1222] -[group_1223] -[group_1224] -[group_1225] -[group_1226] -[group_1227] -[group_1228] -[group_1229] -[group_1230] -[group_1231] -[group_1232] -[group_1233] -[group_1234] -[group_1235] -[group_1236] -[group_1237] -[group_1238] -[group_1239] -[group_1240] -[group_1241] -[group_1242] -[group_1243] -[group_1244] -[group_1245] -[group_1246] -[group_1247] -[group_1248] -[group_1249] -[group_1250] -[group_1251] -[group_1252] -[group_1253] -[group_1254] -[group_1255] -[group_1256] -[group_1257] -[group_1258] -[group_1259] -[group_1260] -[group_1261] -[group_1262] -[group_1263] -[group_1264] -[group_1265] -[group_1266] -[group_1267] -[group_1268] -[group_1269] -[group_1270] -[group_1271] -[group_1272] -[group_1273] -[group_1274] -[group_1275] -[group_1276] -[group_1277] -[group_1278] -[group_1279] -[group_1280] -[group_1281] -[group_1282] -[group_1283] -[group_1284] -[group_1285] -[group_1286] -[group_1287] -[group_1288] -[group_1289] -[group_1290] -[group_1291] -[group_1292] -[group_1293] -[group_1294] -[group_1295] -[group_1296] -[group_1297] -[group_1298] -[group_1299] -[group_1300] -[group_1301] -[group_1302] -[group_1303] -[group_1304] -[group_1305] -[group_1306] -[group_1307] -[group_1308] -[group_1309] -[group_1310] -[group_1311] -[group_1312] -[group_1313] -[group_1314] -[group_1315] -[group_1316] -[group_1317] -[group_1318] -[group_1319] -[group_1320] -[group_1321] -[group_1322] -[group_1323] -[group_1324] -[group_1325] -[group_1326] -[group_1327] -[group_1328] -[group_1329] -[group_1330] -[group_1331] -[group_1332] -[group_1333] -[group_1334] -[group_1335] -[group_1336] -[group_1337] -[group_1338] -[group_1339] -[group_1340] -[group_1341] -[group_1342] -[group_1343] -[group_1344] -[group_1345] -[group_1346] -[group_1347] -[group_1348] -[group_1349] -[group_1350] -[group_1351] -[group_1352] -[group_1353] -[group_1354] -[group_1355] -[group_1356] -[group_1357] -[group_1358] -[group_1359] -[group_1360] -[group_1361] -[group_1362] -[group_1363] -[group_1364] -[group_1365] -[group_1366] -[group_1367] -[group_1368] -[group_1369] -[group_1370] -[group_1371] -[group_1372] -[group_1373] -[group_1374] -[group_1375] -[group_1376] -[group_1377] -[group_1378] -[group_1379] -[group_1380] -[group_1381] -[group_1382] -[group_1383] -[group_1384] -[group_1385] -[group_1386] -[group_1387] -[group_1388] -[group_1389] -[group_1390] -[group_1391] -[group_1392] -[group_1393] -[group_1394] -[group_1395] -[group_1396] -[group_1397] -[group_1398] -[group_1399] -[group_1400] -[group_1401] -[group_1402] -[group_1403] -[group_1404] -[group_1405] -[group_1406] -[group_1407] -[group_1408] -[group_1409] -[group_1410] -[group_1411] -[group_1412] -[group_1413] -[group_1414] -[group_1415] -[group_1416] -[group_1417] -[group_1418] -[group_1419] -[group_1420] -[group_1421] -[group_1422] -[group_1423] -[group_1424] -[group_1425] -[group_1426] -[group_1427] -[group_1428] -[group_1429] -[group_1430] -[group_1431] -[group_1432] -[group_1433] -[group_1434] -[group_1435] -[group_1436] -[group_1437] -[group_1438] -[group_1439] -[group_1440] -[group_1441] -[group_1442] -[group_1443] -[group_1444] -[group_1445] -[group_1446] -[group_1447] -[group_1448] -[group_1449] -[group_1450] -[group_1451] -[group_1452] -[group_1453] -[group_1454] -[group_1455] -[group_1456] -[group_1457] -[group_1458] -[group_1459] -[group_1460] -[group_1461] -[group_1462] -[group_1463] -[group_1464] -[group_1465] -[group_1466] -[group_1467] -[group_1468] -[group_1469] -[group_1470] -[group_1471] -[group_1472] -[group_1473] -[group_1474] -[group_1475] -[group_1476] -[group_1477] -[group_1478] -[group_1479] -[group_1480] -[group_1481] -[group_1482] -[group_1483] -[group_1484] -[group_1485] -[group_1486] -[group_1487] -[group_1488] -[group_1489] -[group_1490] -[group_1491] -[group_1492] -[group_1493] -[group_1494] -[group_1495] -[group_1496] -[group_1497] -[group_1498] -[group_1499] -[group_1500] -[group_1501] -[group_1502] -[group_1503] -[group_1504] -[group_1505] -[group_1506] -[group_1507] -[group_1508] -[group_1509] -[group_1510] -[group_1511] -[group_1512] -[group_1513] -[group_1514] -[group_1515] -[group_1516] -[group_1517] -[group_1518] -[group_1519] -[group_1520] -[group_1521] -[group_1522] -[group_1523] -[group_1524] -[group_1525] -[group_1526] -[group_1527] -[group_1528] -[group_1529] -[group_1530] -[group_1531] -[group_1532] -[group_1533] -[group_1534] -[group_1535] -[group_1536] -[group_1537] -[group_1538] -[group_1539] -[group_1540] -[group_1541] -[group_1542] -[group_1543] -[group_1544] -[group_1545] -[group_1546] -[group_1547] -[group_1548] -[group_1549] -[group_1550] -[group_1551] -[group_1552] -[group_1553] -[group_1554] -[group_1555] -[group_1556] -[group_1557] -[group_1558] -[group_1559] -[group_1560] -[group_1561] -[group_1562] -[group_1563] -[group_1564] -[group_1565] -[group_1566] -[group_1567] -[group_1568] -[group_1569] -[group_1570] -[group_1571] -[group_1572] -[group_1573] -[group_1574] -[group_1575] -[group_1576] -[group_1577] -[group_1578] -[group_1579] -[group_1580] -[group_1581] -[group_1582] -[group_1583] -[group_1584] -[group_1585] -[group_1586] -[group_1587] -[group_1588] -[group_1589] -[group_1590] -[group_1591] -[group_1592] -[group_1593] -[group_1594] -[group_1595] -[group_1596] -[group_1597] -[group_1598] -[group_1599] -[group_1600] -[group_1601] -[group_1602] -[group_1603] -[group_1604] -[group_1605] -[group_1606] -[group_1607] -[group_1608] -[group_1609] -[group_1610] -[group_1611] -[group_1612] -[group_1613] -[group_1614] -[group_1615] -[group_1616] -[group_1617] -[group_1618] -[group_1619] -[group_1620] -[group_1621] -[group_1622] -[group_1623] -[group_1624] -[group_1625] -[group_1626] -[group_1627] -[group_1628] -[group_1629] -[group_1630] -[group_1631] -[group_1632] -[group_1633] -[group_1634] -[group_1635] -[group_1636] -[group_1637] -[group_1638] -[group_1639] -[group_1640] -[group_1641] -[group_1642] -[group_1643] -[group_1644] -[group_1645] -[group_1646] -[group_1647] -[group_1648] -[group_1649] -[group_1650] -[group_1651] -[group_1652] -[group_1653] -[group_1654] -[group_1655] -[group_1656] -[group_1657] -[group_1658] -[group_1659] -[group_1660] -[group_1661] -[group_1662] -[group_1663] -[group_1664] -[group_1665] -[group_1666] -[group_1667] -[group_1668] -[group_1669] -[group_1670] -[group_1671] -[group_1672] -[group_1673] -[group_1674] -[group_1675] -[group_1676] -[group_1677] -[group_1678] -[group_1679] -[group_1680] -[group_1681] -[group_1682] -[group_1683] -[group_1684] -[group_1685] -[group_1686] -[group_1687] -[group_1688] -[group_1689] -[group_1690] -[group_1691] -[group_1692] -[group_1693] -[group_1694] -[group_1695] -[group_1696] -[group_1697] -[group_1698] -[group_1699] -[group_1700] -[group_1701] -[group_1702] -[group_1703] -[group_1704] -[group_1705] -[group_1706] -[group_1707] -[group_1708] -[group_1709] -[group_1710] -[group_1711] -[group_1712] -[group_1713] -[group_1714] -[group_1715] -[group_1716] -[group_1717] -[group_1718] -[group_1719] -[group_1720] -[group_1721] -[group_1722] -[group_1723] -[group_1724] -[group_1725] -[group_1726] -[group_1727] -[group_1728] -[group_1729] -[group_1730] -[group_1731] -[group_1732] -[group_1733] -[group_1734] -[group_1735] -[group_1736] -[group_1737] -[group_1738] -[group_1739] -[group_1740] -[group_1741] -[group_1742] -[group_1743] -[group_1744] -[group_1745] -[group_1746] -[group_1747] -[group_1748] -[group_1749] -[group_1750] -[group_1751] -[group_1752] -[group_1753] -[group_1754] -[group_1755] -[group_1756] -[group_1757] -[group_1758] -[group_1759] -[group_1760] -[group_1761] -[group_1762] -[group_1763] -[group_1764] -[group_1765] -[group_1766] -[group_1767] -[group_1768] -[group_1769] -[group_1770] -[group_1771] -[group_1772] -[group_1773] -[group_1774] -[group_1775] -[group_1776] -[group_1777] -[group_1778] -[group_1779] -[group_1780] -[group_1781] -[group_1782] -[group_1783] -[group_1784] -[group_1785] -[group_1786] -[group_1787] -[group_1788] -[group_1789] -[group_1790] -[group_1791] -[group_1792] -[group_1793] -[group_1794] -[group_1795] -[group_1796] -[group_1797] -[group_1798] -[group_1799] -[group_1800] -[group_1801] -[group_1802] -[group_1803] -[group_1804] -[group_1805] -[group_1806] -[group_1807] -[group_1808] -[group_1809] -[group_1810] -[group_1811] -[group_1812] -[group_1813] -[group_1814] -[group_1815] -[group_1816] -[group_1817] -[group_1818] -[group_1819] -[group_1820] -[group_1821] -[group_1822] -[group_1823] -[group_1824] -[group_1825] -[group_1826] -[group_1827] -[group_1828] -[group_1829] -[group_1830] -[group_1831] -[group_1832] -[group_1833] -[group_1834] -[group_1835] -[group_1836] -[group_1837] -[group_1838] -[group_1839] -[group_1840] -[group_1841] -[group_1842] -[group_1843] -[group_1844] -[group_1845] -[group_1846] -[group_1847] -[group_1848] -[group_1849] -[group_1850] -[group_1851] -[group_1852] -[group_1853] -[group_1854] -[group_1855] -[group_1856] -[group_1857] -[group_1858] -[group_1859] -[group_1860] -[group_1861] -[group_1862] -[group_1863] -[group_1864] -[group_1865] -[group_1866] -[group_1867] -[group_1868] -[group_1869] -[group_1870] -[group_1871] -[group_1872] -[group_1873] -[group_1874] -[group_1875] -[group_1876] -[group_1877] -[group_1878] -[group_1879] -[group_1880] -[group_1881] -[group_1882] -[group_1883] -[group_1884] -[group_1885] -[group_1886] -[group_1887] -[group_1888] -[group_1889] -[group_1890] -[group_1891] -[group_1892] -[group_1893] -[group_1894] -[group_1895] -[group_1896] -[group_1897] -[group_1898] -[group_1899] -[group_1900] -[group_1901] -[group_1902] -[group_1903] -[group_1904] -[group_1905] -[group_1906] -[group_1907] -[group_1908] -[group_1909] -[group_1910] -[group_1911] -[group_1912] -[group_1913] -[group_1914] -[group_1915] -[group_1916] -[group_1917] -[group_1918] -[group_1919] -[group_1920] -[group_1921] -[group_1922] -[group_1923] -[group_1924] -[group_1925] -[group_1926] -[group_1927] -[group_1928] -[group_1929] -[group_1930] -[group_1931] -[group_1932] -[group_1933] -[group_1934] -[group_1935] -[group_1936] -[group_1937] -[group_1938] -[group_1939] -[group_1940] -[group_1941] -[group_1942] -[group_1943] -[group_1944] -[group_1945] -[group_1946] -[group_1947] -[group_1948] -[group_1949] -[group_1950] -[group_1951] -[group_1952] -[group_1953] -[group_1954] -[group_1955] -[group_1956] -[group_1957] -[group_1958] -[group_1959] -[group_1960] -[group_1961] -[group_1962] -[group_1963] -[group_1964] -[group_1965] -[group_1966] -[group_1967] -[group_1968] -[group_1969] -[group_1970] -[group_1971] -[group_1972] -[group_1973] -[group_1974] -[group_1975] -[group_1976] -[group_1977] -[group_1978] -[group_1979] -[group_1980] -[group_1981] -[group_1982] -[group_1983] -[group_1984] -[group_1985] -[group_1986] -[group_1987] -[group_1988] -[group_1989] -[group_1990] -[group_1991] -[group_1992] -[group_1993] -[group_1994] -[group_1995] -[group_1996] -[group_1997] -[group_1998] -[group_1999] -[group_2000] -[group_2001] -[group_2002] -[group_2003] -[group_2004] -[group_2005] -[group_2006] -[group_2007] -[group_2008] -[group_2009] -[group_2010] -[group_2011] -[group_2012] -[group_2013] -[group_2014] -[group_2015] -[group_2016] -[group_2017] -[group_2018] -[group_2019] -[group_2020] -[group_2021] -[group_2022] -[group_2023] -[group_2024] -[group_2025] -[group_2026] -[group_2027] -[group_2028] -[group_2029] -[group_2030] -[group_2031] -[group_2032] -[group_2033] -[group_2034] -[group_2035] -[group_2036] -[group_2037] -[group_2038] -[group_2039] -[group_2040] -[group_2041] -[group_2042] -[group_2043] -[group_2044] -[group_2045] -[group_2046] -[group_2047] -[group_2048] -[group_2049] -[group_2050] -[group_2051] -[group_2052] -[group_2053] -[group_2054] -[group_2055] -[group_2056] -[group_2057] -[group_2058] -[group_2059] -[group_2060] -[group_2061] -[group_2062] -[group_2063] -[group_2064] -[group_2065] -[group_2066] -[group_2067] -[group_2068] -[group_2069] -[group_2070] -[group_2071] -[group_2072] -[group_2073] -[group_2074] -[group_2075] -[group_2076] -[group_2077] -[group_2078] -[group_2079] -[group_2080] -[group_2081] -[group_2082] -[group_2083] -[group_2084] -[group_2085] -[group_2086] -[group_2087] -[group_2088] -[group_2089] -[group_2090] -[group_2091] -[group_2092] -[group_2093] -[group_2094] -[group_2095] -[group_2096] -[group_2097] -[group_2098] -[group_2099] -[group_2100] -[group_2101] -[group_2102] -[group_2103] -[group_2104] -[group_2105] -[group_2106] -[group_2107] -[group_2108] -[group_2109] -[group_2110] -[group_2111] -[group_2112] -[group_2113] -[group_2114] -[group_2115] -[group_2116] -[group_2117] -[group_2118] -[group_2119] -[group_2120] -[group_2121] -[group_2122] -[group_2123] -[group_2124] -[group_2125] -[group_2126] -[group_2127] -[group_2128] -[group_2129] -[group_2130] -[group_2131] -[group_2132] -[group_2133] -[group_2134] -[group_2135] -[group_2136] -[group_2137] -[group_2138] -[group_2139] -[group_2140] -[group_2141] -[group_2142] -[group_2143] -[group_2144] -[group_2145] -[group_2146] -[group_2147] -[group_2148] -[group_2149] -[group_2150] -[group_2151] -[group_2152] -[group_2153] -[group_2154] -[group_2155] -[group_2156] -[group_2157] -[group_2158] -[group_2159] -[group_2160] -[group_2161] -[group_2162] -[group_2163] -[group_2164] -[group_2165] -[group_2166] -[group_2167] -[group_2168] -[group_2169] -[group_2170] -[group_2171] -[group_2172] -[group_2173] -[group_2174] -[group_2175] -[group_2176] -[group_2177] -[group_2178] -[group_2179] -[group_2180] -[group_2181] -[group_2182] -[group_2183] -[group_2184] -[group_2185] -[group_2186] -[group_2187] -[group_2188] -[group_2189] -[group_2190] -[group_2191] -[group_2192] -[group_2193] -[group_2194] -[group_2195] -[group_2196] -[group_2197] -[group_2198] -[group_2199] -[group_2200] -[group_2201] -[group_2202] -[group_2203] -[group_2204] -[group_2205] -[group_2206] -[group_2207] -[group_2208] -[group_2209] -[group_2210] -[group_2211] -[group_2212] -[group_2213] -[group_2214] -[group_2215] -[group_2216] -[group_2217] -[group_2218] -[group_2219] -[group_2220] -[group_2221] -[group_2222] -[group_2223] -[group_2224] -[group_2225] -[group_2226] -[group_2227] -[group_2228] -[group_2229] -[group_2230] -[group_2231] -[group_2232] -[group_2233] -[group_2234] -[group_2235] -[group_2236] -[group_2237] -[group_2238] -[group_2239] -[group_2240] -[group_2241] -[group_2242] -[group_2243] -[group_2244] -[group_2245] -[group_2246] -[group_2247] -[group_2248] -[group_2249] -[group_2250] -[group_2251] -[group_2252] -[group_2253] -[group_2254] -[group_2255] -[group_2256] -[group_2257] -[group_2258] -[group_2259] -[group_2260] -[group_2261] -[group_2262] -[group_2263] -[group_2264] -[group_2265] -[group_2266] -[group_2267] -[group_2268] -[group_2269] -[group_2270] -[group_2271] -[group_2272] -[group_2273] -[group_2274] -[group_2275] -[group_2276] -[group_2277] -[group_2278] -[group_2279] -[group_2280] -[group_2281] -[group_2282] -[group_2283] -[group_2284] -[group_2285] -[group_2286] -[group_2287] -[group_2288] -[group_2289] -[group_2290] -[group_2291] -[group_2292] -[group_2293] -[group_2294] -[group_2295] -[group_2296] -[group_2297] -[group_2298] -[group_2299] -[group_2300] -[group_2301] -[group_2302] -[group_2303] -[group_2304] -[group_2305] -[group_2306] -[group_2307] -[group_2308] -[group_2309] -[group_2310] -[group_2311] -[group_2312] -[group_2313] -[group_2314] -[group_2315] -[group_2316] -[group_2317] -[group_2318] -[group_2319] -[group_2320] -[group_2321] -[group_2322] -[group_2323] -[group_2324] -[group_2325] -[group_2326] -[group_2327] -[group_2328] -[group_2329] -[group_2330] -[group_2331] -[group_2332] -[group_2333] -[group_2334] -[group_2335] -[group_2336] -[group_2337] -[group_2338] -[group_2339] -[group_2340] -[group_2341] -[group_2342] -[group_2343] -[group_2344] -[group_2345] -[group_2346] -[group_2347] -[group_2348] -[group_2349] -[group_2350] -[group_2351] -[group_2352] -[group_2353] -[group_2354] -[group_2355] -[group_2356] -[group_2357] -[group_2358] -[group_2359] -[group_2360] -[group_2361] -[group_2362] -[group_2363] -[group_2364] -[group_2365] -[group_2366] -[group_2367] -[group_2368] -[group_2369] -[group_2370] -[group_2371] -[group_2372] -[group_2373] -[group_2374] -[group_2375] -[group_2376] -[group_2377] -[group_2378] -[group_2379] -[group_2380] -[group_2381] -[group_2382] -[group_2383] -[group_2384] -[group_2385] -[group_2386] -[group_2387] -[group_2388] -[group_2389] -[group_2390] -[group_2391] -[group_2392] -[group_2393] -[group_2394] -[group_2395] -[group_2396] -[group_2397] -[group_2398] -[group_2399] -[group_2400] -[group_2401] -[group_2402] -[group_2403] -[group_2404] -[group_2405] -[group_2406] -[group_2407] -[group_2408] -[group_2409] -[group_2410] -[group_2411] -[group_2412] -[group_2413] -[group_2414] -[group_2415] -[group_2416] -[group_2417] -[group_2418] -[group_2419] -[group_2420] -[group_2421] -[group_2422] -[group_2423] -[group_2424] -[group_2425] -[group_2426] -[group_2427] -[group_2428] -[group_2429] -[group_2430] -[group_2431] -[group_2432] -[group_2433] -[group_2434] -[group_2435] -[group_2436] -[group_2437] -[group_2438] -[group_2439] -[group_2440] -[group_2441] -[group_2442] -[group_2443] -[group_2444] -[group_2445] -[group_2446] -[group_2447] -[group_2448] -[group_2449] -[group_2450] -[group_2451] -[group_2452] -[group_2453] -[group_2454] -[group_2455] -[group_2456] -[group_2457] -[group_2458] -[group_2459] -[group_2460] -[group_2461] -[group_2462] -[group_2463] -[group_2464] -[group_2465] -[group_2466] -[group_2467] -[group_2468] -[group_2469] -[group_2470] -[group_2471] -[group_2472] -[group_2473] -[group_2474] -[group_2475] -[group_2476] -[group_2477] -[group_2478] -[group_2479] -[group_2480] -[group_2481] -[group_2482] -[group_2483] -[group_2484] -[group_2485] -[group_2486] -[group_2487] -[group_2488] -[group_2489] -[group_2490] -[group_2491] -[group_2492] -[group_2493] -[group_2494] -[group_2495] -[group_2496] -[group_2497] -[group_2498] -[group_2499] -[group_2500] -[group_2501] -[group_2502] -[group_2503] -[group_2504] -[group_2505] -[group_2506] -[group_2507] -[group_2508] -[group_2509] -[group_2510] -[group_2511] -[group_2512] -[group_2513] -[group_2514] -[group_2515] -[group_2516] -[group_2517] -[group_2518] -[group_2519] -[group_2520] -[group_2521] -[group_2522] -[group_2523] -[group_2524] -[group_2525] -[group_2526] -[group_2527] -[group_2528] -[group_2529] -[group_2530] -[group_2531] -[group_2532] -[group_2533] -[group_2534] -[group_2535] -[group_2536] -[group_2537] -[group_2538] -[group_2539] -[group_2540] -[group_2541] -[group_2542] -[group_2543] -[group_2544] -[group_2545] -[group_2546] -[group_2547] -[group_2548] -[group_2549] -[group_2550] -[group_2551] -[group_2552] -[group_2553] -[group_2554] -[group_2555] -[group_2556] -[group_2557] -[group_2558] -[group_2559] -[group_2560] -[group_2561] -[group_2562] -[group_2563] -[group_2564] -[group_2565] -[group_2566] -[group_2567] -[group_2568] -[group_2569] -[group_2570] -[group_2571] -[group_2572] -[group_2573] -[group_2574] -[group_2575] -[group_2576] -[group_2577] -[group_2578] -[group_2579] -[group_2580] -[group_2581] -[group_2582] -[group_2583] -[group_2584] -[group_2585] -[group_2586] -[group_2587] -[group_2588] -[group_2589] -[group_2590] -[group_2591] -[group_2592] -[group_2593] -[group_2594] -[group_2595] -[group_2596] -[group_2597] -[group_2598] -[group_2599] -[group_2600] -[group_2601] -[group_2602] -[group_2603] -[group_2604] -[group_2605] -[group_2606] -[group_2607] -[group_2608] -[group_2609] -[group_2610] -[group_2611] -[group_2612] -[group_2613] -[group_2614] -[group_2615] -[group_2616] -[group_2617] -[group_2618] -[group_2619] -[group_2620] -[group_2621] -[group_2622] -[group_2623] -[group_2624] -[group_2625] -[group_2626] -[group_2627] -[group_2628] -[group_2629] -[group_2630] -[group_2631] -[group_2632] -[group_2633] -[group_2634] -[group_2635] -[group_2636] -[group_2637] -[group_2638] -[group_2639] -[group_2640] -[group_2641] -[group_2642] -[group_2643] -[group_2644] -[group_2645] -[group_2646] -[group_2647] -[group_2648] -[group_2649] -[group_2650] -[group_2651] -[group_2652] -[group_2653] -[group_2654] -[group_2655] -[group_2656] -[group_2657] -[group_2658] -[group_2659] -[group_2660] -[group_2661] -[group_2662] -[group_2663] -[group_2664] -[group_2665] -[group_2666] -[group_2667] -[group_2668] -[group_2669] -[group_2670] -[group_2671] -[group_2672] -[group_2673] -[group_2674] -[group_2675] -[group_2676] -[group_2677] -[group_2678] -[group_2679] -[group_2680] -[group_2681] -[group_2682] -[group_2683] -[group_2684] -[group_2685] -[group_2686] -[group_2687] -[group_2688] -[group_2689] -[group_2690] -[group_2691] -[group_2692] -[group_2693] -[group_2694] -[group_2695] -[group_2696] -[group_2697] -[group_2698] -[group_2699] -[group_2700] -[group_2701] -[group_2702] -[group_2703] -[group_2704] -[group_2705] -[group_2706] -[group_2707] -[group_2708] -[group_2709] -[group_2710] -[group_2711] -[group_2712] -[group_2713] -[group_2714] -[group_2715] -[group_2716] -[group_2717] -[group_2718] -[group_2719] -[group_2720] -[group_2721] -[group_2722] -[group_2723] -[group_2724] -[group_2725] -[group_2726] -[group_2727] -[group_2728] -[group_2729] -[group_2730] -[group_2731] -[group_2732] -[group_2733] -[group_2734] -[group_2735] -[group_2736] -[group_2737] -[group_2738] -[group_2739] -[group_2740] -[group_2741] -[group_2742] -[group_2743] -[group_2744] -[group_2745] -[group_2746] -[group_2747] -[group_2748] -[group_2749] -[group_2750] -[group_2751] -[group_2752] -[group_2753] -[group_2754] -[group_2755] -[group_2756] -[group_2757] -[group_2758] -[group_2759] -[group_2760] -[group_2761] -[group_2762] -[group_2763] -[group_2764] -[group_2765] -[group_2766] -[group_2767] -[group_2768] -[group_2769] -[group_2770] -[group_2771] -[group_2772] -[group_2773] -[group_2774] -[group_2775] -[group_2776] -[group_2777] -[group_2778] -[group_2779] -[group_2780] -[group_2781] -[group_2782] -[group_2783] -[group_2784] -[group_2785] -[group_2786] -[group_2787] -[group_2788] -[group_2789] -[group_2790] -[group_2791] -[group_2792] -[group_2793] -[group_2794] -[group_2795] -[group_2796] -[group_2797] -[group_2798] -[group_2799] -[group_2800] -[group_2801] -[group_2802] -[group_2803] -[group_2804] -[group_2805] -[group_2806] -[group_2807] -[group_2808] -[group_2809] -[group_2810] -[group_2811] -[group_2812] -[group_2813] -[group_2814] -[group_2815] -[group_2816] -[group_2817] -[group_2818] -[group_2819] -[group_2820] -[group_2821] -[group_2822] -[group_2823] -[group_2824] -[group_2825] -[group_2826] -[group_2827] -[group_2828] -[group_2829] -[group_2830] -[group_2831] -[group_2832] -[group_2833] -[group_2834] -[group_2835] -[group_2836] -[group_2837] -[group_2838] -[group_2839] -[group_2840] -[group_2841] -[group_2842] -[group_2843] -[group_2844] -[group_2845] -[group_2846] -[group_2847] -[group_2848] -[group_2849] -[group_2850] -[group_2851] -[group_2852] -[group_2853] -[group_2854] -[group_2855] -[group_2856] -[group_2857] -[group_2858] -[group_2859] -[group_2860] -[group_2861] -[group_2862] -[group_2863] -[group_2864] -[group_2865] -[group_2866] -[group_2867] -[group_2868] -[group_2869] -[group_2870] -[group_2871] -[group_2872] -[group_2873] -[group_2874] -[group_2875] -[group_2876] -[group_2877] -[group_2878] -[group_2879] -[group_2880] -[group_2881] -[group_2882] -[group_2883] -[group_2884] -[group_2885] -[group_2886] -[group_2887] -[group_2888] -[group_2889] -[group_2890] -[group_2891] -[group_2892] -[group_2893] -[group_2894] -[group_2895] -[group_2896] -[group_2897] -[group_2898] -[group_2899] -[group_2900] -[group_2901] -[group_2902] -[group_2903] -[group_2904] -[group_2905] -[group_2906] -[group_2907] -[group_2908] -[group_2909] -[group_2910] -[group_2911] -[group_2912] -[group_2913] -[group_2914] -[group_2915] -[group_2916] -[group_2917] -[group_2918] -[group_2919] -[group_2920] -[group_2921] -[group_2922] -[group_2923] -[group_2924] -[group_2925] -[group_2926] -[group_2927] -[group_2928] -[group_2929] -[group_2930] -[group_2931] -[group_2932] -[group_2933] -[group_2934] -[group_2935] -[group_2936] -[group_2937] -[group_2938] -[group_2939] -[group_2940] -[group_2941] -[group_2942] -[group_2943] -[group_2944] -[group_2945] -[group_2946] -[group_2947] -[group_2948] -[group_2949] -[group_2950] -[group_2951] -[group_2952] -[group_2953] -[group_2954] -[group_2955] -[group_2956] -[group_2957] -[group_2958] -[group_2959] -[group_2960] -[group_2961] -[group_2962] -[group_2963] -[group_2964] -[group_2965] -[group_2966] -[group_2967] -[group_2968] -[group_2969] -[group_2970] -[group_2971] -[group_2972] -[group_2973] -[group_2974] -[group_2975] -[group_2976] -[group_2977] -[group_2978] -[group_2979] -[group_2980] -[group_2981] -[group_2982] -[group_2983] -[group_2984] -[group_2985] -[group_2986] -[group_2987] -[group_2988] -[group_2989] -[group_2990] -[group_2991] -[group_2992] -[group_2993] -[group_2994] -[group_2995] -[group_2996] -[group_2997] -[group_2998] -[group_2999] -[group_3000] -[group_3001] -[group_3002] -[group_3003] -[group_3004] -[group_3005] -[group_3006] -[group_3007] -[group_3008] -[group_3009] -[group_3010] -[group_3011] -[group_3012] -[group_3013] -[group_3014] -[group_3015] -[group_3016] -[group_3017] -[group_3018] -[group_3019] -[group_3020] -[group_3021] -[group_3022] -[group_3023] -[group_3024] -[group_3025] -[group_3026] -[group_3027] -[group_3028] -[group_3029] -[group_3030] -[group_3031] -[group_3032] -[group_3033] -[group_3034] -[group_3035] -[group_3036] -[group_3037] -[group_3038] -[group_3039] -[group_3040] -[group_3041] -[group_3042] -[group_3043] -[group_3044] -[group_3045] -[group_3046] -[group_3047] -[group_3048] -[group_3049] -[group_3050] -[group_3051] -[group_3052] -[group_3053] -[group_3054] -[group_3055] -[group_3056] -[group_3057] -[group_3058] -[group_3059] -[group_3060] -[group_3061] -[group_3062] -[group_3063] -[group_3064] -[group_3065] -[group_3066] -[group_3067] -[group_3068] -[group_3069] -[group_3070] -[group_3071] -[group_3072] -[group_3073] -[group_3074] -[group_3075] -[group_3076] -[group_3077] -[group_3078] -[group_3079] -[group_3080] -[group_3081] -[group_3082] -[group_3083] -[group_3084] -[group_3085] -[group_3086] -[group_3087] -[group_3088] -[group_3089] -[group_3090] -[group_3091] -[group_3092] -[group_3093] -[group_3094] -[group_3095] -[group_3096] -[group_3097] -[group_3098] -[group_3099] -[group_3100] -[group_3101] -[group_3102] -[group_3103] -[group_3104] -[group_3105] -[group_3106] -[group_3107] -[group_3108] -[group_3109] -[group_3110] -[group_3111] -[group_3112] -[group_3113] -[group_3114] -[group_3115] -[group_3116] -[group_3117] -[group_3118] -[group_3119] -[group_3120] -[group_3121] -[group_3122] -[group_3123] -[group_3124] -[group_3125] -[group_3126] -[group_3127] -[group_3128] -[group_3129] -[group_3130] -[group_3131] -[group_3132] -[group_3133] -[group_3134] -[group_3135] -[group_3136] -[group_3137] -[group_3138] -[group_3139] -[group_3140] -[group_3141] -[group_3142] -[group_3143] -[group_3144] -[group_3145] -[group_3146] -[group_3147] -[group_3148] -[group_3149] -[group_3150] -[group_3151] -[group_3152] -[group_3153] -[group_3154] -[group_3155] -[group_3156] -[group_3157] -[group_3158] -[group_3159] -[group_3160] -[group_3161] -[group_3162] -[group_3163] -[group_3164] -[group_3165] -[group_3166] -[group_3167] -[group_3168] -[group_3169] -[group_3170] -[group_3171] -[group_3172] -[group_3173] -[group_3174] -[group_3175] -[group_3176] -[group_3177] -[group_3178] -[group_3179] -[group_3180] -[group_3181] -[group_3182] -[group_3183] -[group_3184] -[group_3185] -[group_3186] -[group_3187] -[group_3188] -[group_3189] -[group_3190] -[group_3191] -[group_3192] -[group_3193] -[group_3194] -[group_3195] -[group_3196] -[group_3197] -[group_3198] -[group_3199] -[group_3200] -[group_3201] -[group_3202] -[group_3203] -[group_3204] -[group_3205] -[group_3206] -[group_3207] -[group_3208] -[group_3209] -[group_3210] -[group_3211] -[group_3212] -[group_3213] -[group_3214] -[group_3215] -[group_3216] -[group_3217] -[group_3218] -[group_3219] -[group_3220] -[group_3221] -[group_3222] -[group_3223] -[group_3224] -[group_3225] -[group_3226] -[group_3227] -[group_3228] -[group_3229] -[group_3230] -[group_3231] -[group_3232] -[group_3233] -[group_3234] -[group_3235] -[group_3236] -[group_3237] -[group_3238] -[group_3239] -[group_3240] -[group_3241] -[group_3242] -[group_3243] -[group_3244] -[group_3245] -[group_3246] -[group_3247] -[group_3248] -[group_3249] -[group_3250] -[group_3251] -[group_3252] -[group_3253] -[group_3254] -[group_3255] -[group_3256] -[group_3257] -[group_3258] -[group_3259] -[group_3260] -[group_3261] -[group_3262] -[group_3263] -[group_3264] -[group_3265] -[group_3266] -[group_3267] -[group_3268] -[group_3269] -[group_3270] -[group_3271] -[group_3272] -[group_3273] -[group_3274] -[group_3275] -[group_3276] -[group_3277] -[group_3278] -[group_3279] -[group_3280] -[group_3281] -[group_3282] -[group_3283] -[group_3284] -[group_3285] -[group_3286] -[group_3287] -[group_3288] -[group_3289] -[group_3290] -[group_3291] -[group_3292] -[group_3293] -[group_3294] -[group_3295] -[group_3296] -[group_3297] -[group_3298] -[group_3299] -[group_3300] -[group_3301] -[group_3302] -[group_3303] -[group_3304] -[group_3305] -[group_3306] -[group_3307] -[group_3308] -[group_3309] -[group_3310] -[group_3311] -[group_3312] -[group_3313] -[group_3314] -[group_3315] -[group_3316] -[group_3317] -[group_3318] -[group_3319] -[group_3320] -[group_3321] -[group_3322] -[group_3323] -[group_3324] -[group_3325] -[group_3326] -[group_3327] -[group_3328] -[group_3329] -[group_3330] -[group_3331] -[group_3332] -[group_3333] -[group_3334] -[group_3335] -[group_3336] -[group_3337] -[group_3338] -[group_3339] -[group_3340] -[group_3341] -[group_3342] -[group_3343] -[group_3344] -[group_3345] -[group_3346] -[group_3347] -[group_3348] -[group_3349] -[group_3350] -[group_3351] -[group_3352] -[group_3353] -[group_3354] -[group_3355] -[group_3356] -[group_3357] -[group_3358] -[group_3359] -[group_3360] -[group_3361] -[group_3362] -[group_3363] -[group_3364] -[group_3365] -[group_3366] -[group_3367] -[group_3368] -[group_3369] -[group_3370] -[group_3371] -[group_3372] -[group_3373] -[group_3374] -[group_3375] -[group_3376] -[group_3377] -[group_3378] -[group_3379] -[group_3380] -[group_3381] -[group_3382] -[group_3383] -[group_3384] -[group_3385] -[group_3386] -[group_3387] -[group_3388] -[group_3389] -[group_3390] -[group_3391] -[group_3392] -[group_3393] -[group_3394] -[group_3395] -[group_3396] -[group_3397] -[group_3398] -[group_3399] -[group_3400] -[group_3401] -[group_3402] -[group_3403] -[group_3404] -[group_3405] -[group_3406] -[group_3407] -[group_3408] -[group_3409] -[group_3410] -[group_3411] -[group_3412] -[group_3413] -[group_3414] -[group_3415] -[group_3416] -[group_3417] -[group_3418] -[group_3419] -[group_3420] -[group_3421] -[group_3422] -[group_3423] -[group_3424] -[group_3425] -[group_3426] -[group_3427] -[group_3428] -[group_3429] -[group_3430] -[group_3431] -[group_3432] -[group_3433] -[group_3434] -[group_3435] -[group_3436] -[group_3437] -[group_3438] -[group_3439] -[group_3440] -[group_3441] -[group_3442] -[group_3443] -[group_3444] -[group_3445] -[group_3446] -[group_3447] -[group_3448] -[group_3449] -[group_3450] -[group_3451] -[group_3452] -[group_3453] -[group_3454] -[group_3455] -[group_3456] -[group_3457] -[group_3458] -[group_3459] -[group_3460] -[group_3461] -[group_3462] -[group_3463] -[group_3464] -[group_3465] -[group_3466] -[group_3467] -[group_3468] -[group_3469] -[group_3470] -[group_3471] -[group_3472] -[group_3473] -[group_3474] -[group_3475] -[group_3476] -[group_3477] -[group_3478] -[group_3479] -[group_3480] -[group_3481] -[group_3482] -[group_3483] -[group_3484] -[group_3485] -[group_3486] -[group_3487] -[group_3488] -[group_3489] -[group_3490] -[group_3491] -[group_3492] -[group_3493] -[group_3494] -[group_3495] -[group_3496] -[group_3497] -[group_3498] -[group_3499] -[group_3500] -[group_3501] -[group_3502] -[group_3503] -[group_3504] -[group_3505] -[group_3506] -[group_3507] -[group_3508] -[group_3509] -[group_3510] -[group_3511] -[group_3512] -[group_3513] -[group_3514] -[group_3515] -[group_3516] -[group_3517] -[group_3518] -[group_3519] -[group_3520] -[group_3521] -[group_3522] -[group_3523] -[group_3524] -[group_3525] -[group_3526] -[group_3527] -[group_3528] -[group_3529] -[group_3530] -[group_3531] -[group_3532] -[group_3533] -[group_3534] -[group_3535] -[group_3536] -[group_3537] -[group_3538] -[group_3539] -[group_3540] -[group_3541] -[group_3542] -[group_3543] -[group_3544] -[group_3545] -[group_3546] -[group_3547] -[group_3548] -[group_3549] -[group_3550] -[group_3551] -[group_3552] -[group_3553] -[group_3554] -[group_3555] -[group_3556] -[group_3557] -[group_3558] -[group_3559] -[group_3560] -[group_3561] -[group_3562] -[group_3563] -[group_3564] -[group_3565] -[group_3566] -[group_3567] -[group_3568] -[group_3569] -[group_3570] -[group_3571] -[group_3572] -[group_3573] -[group_3574] -[group_3575] -[group_3576] -[group_3577] -[group_3578] -[group_3579] -[group_3580] -[group_3581] -[group_3582] -[group_3583] -[group_3584] -[group_3585] -[group_3586] -[group_3587] -[group_3588] -[group_3589] -[group_3590] -[group_3591] -[group_3592] -[group_3593] -[group_3594] -[group_3595] -[group_3596] -[group_3597] -[group_3598] -[group_3599] -[group_3600] -[group_3601] -[group_3602] -[group_3603] -[group_3604] -[group_3605] -[group_3606] -[group_3607] -[group_3608] -[group_3609] -[group_3610] -[group_3611] -[group_3612] -[group_3613] -[group_3614] -[group_3615] -[group_3616] -[group_3617] -[group_3618] -[group_3619] -[group_3620] -[group_3621] -[group_3622] -[group_3623] -[group_3624] -[group_3625] -[group_3626] -[group_3627] -[group_3628] -[group_3629] -[group_3630] -[group_3631] -[group_3632] -[group_3633] -[group_3634] -[group_3635] -[group_3636] -[group_3637] -[group_3638] -[group_3639] -[group_3640] -[group_3641] -[group_3642] -[group_3643] -[group_3644] -[group_3645] -[group_3646] -[group_3647] -[group_3648] -[group_3649] -[group_3650] -[group_3651] -[group_3652] -[group_3653] -[group_3654] -[group_3655] -[group_3656] -[group_3657] -[group_3658] -[group_3659] -[group_3660] -[group_3661] -[group_3662] -[group_3663] -[group_3664] -[group_3665] -[group_3666] -[group_3667] -[group_3668] -[group_3669] -[group_3670] -[group_3671] -[group_3672] -[group_3673] -[group_3674] -[group_3675] -[group_3676] -[group_3677] -[group_3678] -[group_3679] -[group_3680] -[group_3681] -[group_3682] -[group_3683] -[group_3684] -[group_3685] -[group_3686] -[group_3687] -[group_3688] -[group_3689] -[group_3690] -[group_3691] -[group_3692] -[group_3693] -[group_3694] -[group_3695] -[group_3696] -[group_3697] -[group_3698] -[group_3699] -[group_3700] -[group_3701] -[group_3702] -[group_3703] -[group_3704] -[group_3705] -[group_3706] -[group_3707] -[group_3708] -[group_3709] -[group_3710] -[group_3711] -[group_3712] -[group_3713] -[group_3714] -[group_3715] -[group_3716] -[group_3717] -[group_3718] -[group_3719] -[group_3720] -[group_3721] -[group_3722] -[group_3723] -[group_3724] -[group_3725] -[group_3726] -[group_3727] -[group_3728] -[group_3729] -[group_3730] -[group_3731] -[group_3732] -[group_3733] -[group_3734] -[group_3735] -[group_3736] -[group_3737] -[group_3738] -[group_3739] -[group_3740] -[group_3741] -[group_3742] -[group_3743] -[group_3744] -[group_3745] -[group_3746] -[group_3747] -[group_3748] -[group_3749] -[group_3750] -[group_3751] -[group_3752] -[group_3753] -[group_3754] -[group_3755] -[group_3756] -[group_3757] -[group_3758] -[group_3759] -[group_3760] -[group_3761] -[group_3762] -[group_3763] -[group_3764] -[group_3765] -[group_3766] -[group_3767] -[group_3768] -[group_3769] -[group_3770] -[group_3771] -[group_3772] -[group_3773] -[group_3774] -[group_3775] -[group_3776] -[group_3777] -[group_3778] -[group_3779] -[group_3780] -[group_3781] -[group_3782] -[group_3783] -[group_3784] -[group_3785] -[group_3786] -[group_3787] -[group_3788] -[group_3789] -[group_3790] -[group_3791] -[group_3792] -[group_3793] -[group_3794] -[group_3795] -[group_3796] -[group_3797] -[group_3798] -[group_3799] -[group_3800] -[group_3801] -[group_3802] -[group_3803] -[group_3804] -[group_3805] -[group_3806] -[group_3807] -[group_3808] -[group_3809] -[group_3810] -[group_3811] -[group_3812] -[group_3813] -[group_3814] -[group_3815] -[group_3816] -[group_3817] -[group_3818] -[group_3819] -[group_3820] -[group_3821] -[group_3822] -[group_3823] -[group_3824] -[group_3825] -[group_3826] -[group_3827] -[group_3828] -[group_3829] -[group_3830] -[group_3831] -[group_3832] -[group_3833] -[group_3834] -[group_3835] -[group_3836] -[group_3837] -[group_3838] -[group_3839] -[group_3840] -[group_3841] -[group_3842] -[group_3843] -[group_3844] -[group_3845] -[group_3846] -[group_3847] -[group_3848] -[group_3849] -[group_3850] -[group_3851] -[group_3852] -[group_3853] -[group_3854] -[group_3855] -[group_3856] -[group_3857] -[group_3858] -[group_3859] -[group_3860] -[group_3861] -[group_3862] -[group_3863] -[group_3864] -[group_3865] -[group_3866] -[group_3867] -[group_3868] -[group_3869] -[group_3870] -[group_3871] -[group_3872] -[group_3873] -[group_3874] -[group_3875] -[group_3876] -[group_3877] -[group_3878] -[group_3879] -[group_3880] -[group_3881] -[group_3882] -[group_3883] -[group_3884] -[group_3885] -[group_3886] -[group_3887] -[group_3888] -[group_3889] -[group_3890] -[group_3891] -[group_3892] -[group_3893] -[group_3894] -[group_3895] -[group_3896] -[group_3897] -[group_3898] -[group_3899] -[group_3900] -[group_3901] -[group_3902] -[group_3903] -[group_3904] -[group_3905] -[group_3906] -[group_3907] -[group_3908] -[group_3909] -[group_3910] -[group_3911] -[group_3912] -[group_3913] -[group_3914] -[group_3915] -[group_3916] -[group_3917] -[group_3918] -[group_3919] -[group_3920] -[group_3921] -[group_3922] -[group_3923] -[group_3924] -[group_3925] -[group_3926] -[group_3927] -[group_3928] -[group_3929] -[group_3930] -[group_3931] -[group_3932] -[group_3933] -[group_3934] -[group_3935] -[group_3936] -[group_3937] -[group_3938] -[group_3939] -[group_3940] -[group_3941] -[group_3942] -[group_3943] -[group_3944] -[group_3945] -[group_3946] -[group_3947] -[group_3948] -[group_3949] -[group_3950] -[group_3951] -[group_3952] -[group_3953] -[group_3954] -[group_3955] -[group_3956] -[group_3957] -[group_3958] -[group_3959] -[group_3960] -[group_3961] -[group_3962] -[group_3963] -[group_3964] -[group_3965] -[group_3966] -[group_3967] -[group_3968] -[group_3969] -[group_3970] -[group_3971] -[group_3972] -[group_3973] -[group_3974] -[group_3975] -[group_3976] -[group_3977] -[group_3978] -[group_3979] -[group_3980] -[group_3981] -[group_3982] -[group_3983] -[group_3984] -[group_3985] -[group_3986] -[group_3987] -[group_3988] -[group_3989] -[group_3990] -[group_3991] -[group_3992] -[group_3993] -[group_3994] -[group_3995] -[group_3996] -[group_3997] -[group_3998] -[group_3999] -[group_4000] -[group_4001] -[group_4002] -[group_4003] -[group_4004] -[group_4005] -[group_4006] -[group_4007] -[group_4008] -[group_4009] -[group_4010] -[group_4011] -[group_4012] -[group_4013] -[group_4014] -[group_4015] -[group_4016] -[group_4017] -[group_4018] -[group_4019] -[group_4020] -[group_4021] -[group_4022] -[group_4023] -[group_4024] -[group_4025] -[group_4026] -[group_4027] -[group_4028] -[group_4029] -[group_4030] -[group_4031] -[group_4032] -[group_4033] -[group_4034] -[group_4035] -[group_4036] -[group_4037] -[group_4038] -[group_4039] -[group_4040] -[group_4041] -[group_4042] -[group_4043] -[group_4044] -[group_4045] -[group_4046] -[group_4047] -[group_4048] -[group_4049] -[group_4050] -[group_4051] -[group_4052] -[group_4053] -[group_4054] -[group_4055] -[group_4056] -[group_4057] -[group_4058] -[group_4059] -[group_4060] -[group_4061] -[group_4062] -[group_4063] -[group_4064] -[group_4065] -[group_4066] -[group_4067] -[group_4068] -[group_4069] -[group_4070] -[group_4071] -[group_4072] -[group_4073] -[group_4074] -[group_4075] -[group_4076] -[group_4077] -[group_4078] -[group_4079] -[group_4080] -[group_4081] -[group_4082] -[group_4083] -[group_4084] -[group_4085] -[group_4086] -[group_4087] -[group_4088] -[group_4089] -[group_4090] -[group_4091] -[group_4092] -[group_4093] -[group_4094] -[group_4095] -[group_4096] -[group_4097] -[group_4098] -[group_4099] -[group_4100] -[group_4101] -[group_4102] -[group_4103] -[group_4104] -[group_4105] -[group_4106] -[group_4107] -[group_4108] -[group_4109] -[group_4110] -[group_4111] -[group_4112] -[group_4113] -[group_4114] -[group_4115] -[group_4116] -[group_4117] -[group_4118] -[group_4119] -[group_4120] -[group_4121] -[group_4122] -[group_4123] -[group_4124] -[group_4125] -[group_4126] -[group_4127] -[group_4128] -[group_4129] -[group_4130] -[group_4131] -[group_4132] -[group_4133] -[group_4134] -[group_4135] -[group_4136] -[group_4137] -[group_4138] -[group_4139] -[group_4140] -[group_4141] -[group_4142] -[group_4143] -[group_4144] -[group_4145] -[group_4146] -[group_4147] -[group_4148] -[group_4149] -[group_4150] -[group_4151] -[group_4152] -[group_4153] -[group_4154] -[group_4155] -[group_4156] -[group_4157] -[group_4158] -[group_4159] -[group_4160] -[group_4161] -[group_4162] -[group_4163] -[group_4164] -[group_4165] -[group_4166] -[group_4167] -[group_4168] -[group_4169] -[group_4170] -[group_4171] -[group_4172] -[group_4173] -[group_4174] -[group_4175] -[group_4176] -[group_4177] -[group_4178] -[group_4179] -[group_4180] -[group_4181] -[group_4182] -[group_4183] -[group_4184] -[group_4185] -[group_4186] -[group_4187] -[group_4188] -[group_4189] -[group_4190] -[group_4191] -[group_4192] -[group_4193] -[group_4194] -[group_4195] -[group_4196] -[group_4197] -[group_4198] -[group_4199] -[group_4200] -[group_4201] -[group_4202] -[group_4203] -[group_4204] -[group_4205] -[group_4206] -[group_4207] -[group_4208] -[group_4209] -[group_4210] -[group_4211] -[group_4212] -[group_4213] -[group_4214] -[group_4215] -[group_4216] -[group_4217] -[group_4218] -[group_4219] -[group_4220] -[group_4221] -[group_4222] -[group_4223] -[group_4224] -[group_4225] -[group_4226] -[group_4227] -[group_4228] -[group_4229] -[group_4230] -[group_4231] -[group_4232] -[group_4233] -[group_4234] -[group_4235] -[group_4236] -[group_4237] -[group_4238] -[group_4239] -[group_4240] -[group_4241] -[group_4242] -[group_4243] -[group_4244] -[group_4245] -[group_4246] -[group_4247] -[group_4248] -[group_4249] -[group_4250] -[group_4251] -[group_4252] -[group_4253] -[group_4254] -[group_4255] -[group_4256] -[group_4257] -[group_4258] -[group_4259] -[group_4260] -[group_4261] -[group_4262] -[group_4263] -[group_4264] -[group_4265] -[group_4266] -[group_4267] -[group_4268] -[group_4269] -[group_4270] -[group_4271] -[group_4272] -[group_4273] -[group_4274] -[group_4275] -[group_4276] -[group_4277] -[group_4278] -[group_4279] -[group_4280] -[group_4281] -[group_4282] -[group_4283] -[group_4284] -[group_4285] -[group_4286] -[group_4287] -[group_4288] -[group_4289] -[group_4290] -[group_4291] -[group_4292] -[group_4293] -[group_4294] -[group_4295] -[group_4296] -[group_4297] -[group_4298] -[group_4299] -[group_4300] -[group_4301] -[group_4302] -[group_4303] -[group_4304] -[group_4305] -[group_4306] -[group_4307] -[group_4308] -[group_4309] -[group_4310] -[group_4311] -[group_4312] -[group_4313] -[group_4314] -[group_4315] -[group_4316] -[group_4317] -[group_4318] -[group_4319] -[group_4320] -[group_4321] -[group_4322] -[group_4323] -[group_4324] -[group_4325] -[group_4326] -[group_4327] -[group_4328] -[group_4329] -[group_4330] -[group_4331] -[group_4332] -[group_4333] -[group_4334] -[group_4335] -[group_4336] -[group_4337] -[group_4338] -[group_4339] -[group_4340] -[group_4341] -[group_4342] -[group_4343] -[group_4344] -[group_4345] -[group_4346] -[group_4347] -[group_4348] -[group_4349] -[group_4350] -[group_4351] -[group_4352] -[group_4353] -[group_4354] -[group_4355] -[group_4356] -[group_4357] -[group_4358] -[group_4359] -[group_4360] -[group_4361] -[group_4362] -[group_4363] -[group_4364] -[group_4365] -[group_4366] -[group_4367] -[group_4368] -[group_4369] -[group_4370] -[group_4371] -[group_4372] -[group_4373] -[group_4374] -[group_4375] -[group_4376] -[group_4377] -[group_4378] -[group_4379] -[group_4380] -[group_4381] -[group_4382] -[group_4383] -[group_4384] -[group_4385] -[group_4386] -[group_4387] -[group_4388] -[group_4389] -[group_4390] -[group_4391] -[group_4392] -[group_4393] -[group_4394] -[group_4395] -[group_4396] -[group_4397] -[group_4398] -[group_4399] -[group_4400] -[group_4401] -[group_4402] -[group_4403] -[group_4404] -[group_4405] -[group_4406] -[group_4407] -[group_4408] -[group_4409] -[group_4410] -[group_4411] -[group_4412] -[group_4413] -[group_4414] -[group_4415] -[group_4416] -[group_4417] -[group_4418] -[group_4419] -[group_4420] -[group_4421] -[group_4422] -[group_4423] -[group_4424] -[group_4425] -[group_4426] -[group_4427] -[group_4428] -[group_4429] -[group_4430] -[group_4431] -[group_4432] -[group_4433] -[group_4434] -[group_4435] -[group_4436] -[group_4437] -[group_4438] -[group_4439] -[group_4440] -[group_4441] -[group_4442] -[group_4443] -[group_4444] -[group_4445] -[group_4446] -[group_4447] -[group_4448] -[group_4449] -[group_4450] -[group_4451] -[group_4452] -[group_4453] -[group_4454] -[group_4455] -[group_4456] -[group_4457] -[group_4458] -[group_4459] -[group_4460] -[group_4461] -[group_4462] -[group_4463] -[group_4464] -[group_4465] -[group_4466] -[group_4467] -[group_4468] -[group_4469] -[group_4470] -[group_4471] -[group_4472] -[group_4473] -[group_4474] -[group_4475] -[group_4476] -[group_4477] -[group_4478] -[group_4479] -[group_4480] -[group_4481] -[group_4482] -[group_4483] -[group_4484] -[group_4485] -[group_4486] -[group_4487] -[group_4488] -[group_4489] -[group_4490] -[group_4491] -[group_4492] -[group_4493] -[group_4494] -[group_4495] -[group_4496] -[group_4497] -[group_4498] -[group_4499] -[group_4500] -[group_4501] -[group_4502] -[group_4503] -[group_4504] -[group_4505] -[group_4506] -[group_4507] -[group_4508] -[group_4509] -[group_4510] -[group_4511] -[group_4512] -[group_4513] -[group_4514] -[group_4515] -[group_4516] -[group_4517] -[group_4518] -[group_4519] -[group_4520] -[group_4521] -[group_4522] -[group_4523] -[group_4524] -[group_4525] -[group_4526] -[group_4527] -[group_4528] -[group_4529] -[group_4530] -[group_4531] -[group_4532] -[group_4533] -[group_4534] -[group_4535] -[group_4536] -[group_4537] -[group_4538] -[group_4539] -[group_4540] -[group_4541] -[group_4542] -[group_4543] -[group_4544] -[group_4545] -[group_4546] -[group_4547] -[group_4548] -[group_4549] -[group_4550] -[group_4551] -[group_4552] -[group_4553] -[group_4554] -[group_4555] -[group_4556] -[group_4557] -[group_4558] -[group_4559] -[group_4560] -[group_4561] -[group_4562] -[group_4563] -[group_4564] -[group_4565] -[group_4566] -[group_4567] -[group_4568] -[group_4569] -[group_4570] -[group_4571] -[group_4572] -[group_4573] -[group_4574] -[group_4575] -[group_4576] -[group_4577] -[group_4578] -[group_4579] -[group_4580] -[group_4581] -[group_4582] -[group_4583] -[group_4584] -[group_4585] -[group_4586] -[group_4587] -[group_4588] -[group_4589] -[group_4590] -[group_4591] -[group_4592] -[group_4593] -[group_4594] -[group_4595] -[group_4596] -[group_4597] -[group_4598] -[group_4599] -[group_4600] -[group_4601] -[group_4602] -[group_4603] -[group_4604] -[group_4605] -[group_4606] -[group_4607] -[group_4608] -[group_4609] -[group_4610] -[group_4611] -[group_4612] -[group_4613] -[group_4614] -[group_4615] -[group_4616] -[group_4617] -[group_4618] -[group_4619] -[group_4620] -[group_4621] -[group_4622] -[group_4623] -[group_4624] -[group_4625] -[group_4626] -[group_4627] -[group_4628] -[group_4629] -[group_4630] -[group_4631] -[group_4632] -[group_4633] -[group_4634] -[group_4635] -[group_4636] -[group_4637] -[group_4638] -[group_4639] -[group_4640] -[group_4641] -[group_4642] -[group_4643] -[group_4644] -[group_4645] -[group_4646] -[group_4647] -[group_4648] -[group_4649] -[group_4650] -[group_4651] -[group_4652] -[group_4653] -[group_4654] -[group_4655] -[group_4656] -[group_4657] -[group_4658] -[group_4659] -[group_4660] -[group_4661] -[group_4662] -[group_4663] -[group_4664] -[group_4665] -[group_4666] -[group_4667] -[group_4668] -[group_4669] -[group_4670] -[group_4671] -[group_4672] -[group_4673] -[group_4674] -[group_4675] -[group_4676] -[group_4677] -[group_4678] -[group_4679] -[group_4680] -[group_4681] -[group_4682] -[group_4683] -[group_4684] -[group_4685] -[group_4686] -[group_4687] -[group_4688] -[group_4689] -[group_4690] -[group_4691] -[group_4692] -[group_4693] -[group_4694] -[group_4695] -[group_4696] -[group_4697] -[group_4698] -[group_4699] -[group_4700] -[group_4701] -[group_4702] -[group_4703] -[group_4704] -[group_4705] -[group_4706] -[group_4707] -[group_4708] -[group_4709] -[group_4710] -[group_4711] -[group_4712] -[group_4713] -[group_4714] -[group_4715] -[group_4716] -[group_4717] -[group_4718] -[group_4719] -[group_4720] -[group_4721] -[group_4722] -[group_4723] -[group_4724] -[group_4725] -[group_4726] -[group_4727] -[group_4728] -[group_4729] -[group_4730] -[group_4731] -[group_4732] -[group_4733] -[group_4734] -[group_4735] -[group_4736] -[group_4737] -[group_4738] -[group_4739] -[group_4740] -[group_4741] -[group_4742] -[group_4743] -[group_4744] -[group_4745] -[group_4746] -[group_4747] -[group_4748] -[group_4749] -[group_4750] -[group_4751] -[group_4752] -[group_4753] -[group_4754] -[group_4755] -[group_4756] -[group_4757] -[group_4758] -[group_4759] -[group_4760] -[group_4761] -[group_4762] -[group_4763] -[group_4764] -[group_4765] -[group_4766] -[group_4767] -[group_4768] -[group_4769] -[group_4770] -[group_4771] -[group_4772] -[group_4773] -[group_4774] -[group_4775] -[group_4776] -[group_4777] -[group_4778] -[group_4779] -[group_4780] -[group_4781] -[group_4782] -[group_4783] -[group_4784] -[group_4785] -[group_4786] -[group_4787] -[group_4788] -[group_4789] -[group_4790] -[group_4791] -[group_4792] -[group_4793] -[group_4794] -[group_4795] -[group_4796] -[group_4797] -[group_4798] -[group_4799] -[group_4800] -[group_4801] -[group_4802] -[group_4803] -[group_4804] -[group_4805] -[group_4806] -[group_4807] -[group_4808] -[group_4809] -[group_4810] -[group_4811] -[group_4812] -[group_4813] -[group_4814] -[group_4815] -[group_4816] -[group_4817] -[group_4818] -[group_4819] -[group_4820] -[group_4821] -[group_4822] -[group_4823] -[group_4824] -[group_4825] -[group_4826] -[group_4827] -[group_4828] -[group_4829] -[group_4830] -[group_4831] -[group_4832] -[group_4833] -[group_4834] -[group_4835] -[group_4836] -[group_4837] -[group_4838] -[group_4839] -[group_4840] -[group_4841] -[group_4842] -[group_4843] -[group_4844] -[group_4845] -[group_4846] -[group_4847] -[group_4848] -[group_4849] -[group_4850] -[group_4851] -[group_4852] -[group_4853] -[group_4854] -[group_4855] -[group_4856] -[group_4857] -[group_4858] -[group_4859] -[group_4860] -[group_4861] -[group_4862] -[group_4863] -[group_4864] -[group_4865] -[group_4866] -[group_4867] -[group_4868] -[group_4869] -[group_4870] -[group_4871] -[group_4872] -[group_4873] -[group_4874] -[group_4875] -[group_4876] -[group_4877] -[group_4878] -[group_4879] -[group_4880] -[group_4881] -[group_4882] -[group_4883] -[group_4884] -[group_4885] -[group_4886] -[group_4887] -[group_4888] -[group_4889] -[group_4890] -[group_4891] -[group_4892] -[group_4893] -[group_4894] -[group_4895] -[group_4896] -[group_4897] -[group_4898] -[group_4899] -[group_4900] -[group_4901] -[group_4902] -[group_4903] -[group_4904] -[group_4905] -[group_4906] -[group_4907] -[group_4908] -[group_4909] -[group_4910] -[group_4911] -[group_4912] -[group_4913] -[group_4914] -[group_4915] -[group_4916] -[group_4917] -[group_4918] -[group_4919] -[group_4920] -[group_4921] -[group_4922] -[group_4923] -[group_4924] -[group_4925] -[group_4926] -[group_4927] -[group_4928] -[group_4929] -[group_4930] -[group_4931] -[group_4932] -[group_4933] -[group_4934] -[group_4935] -[group_4936] -[group_4937] -[group_4938] -[group_4939] -[group_4940] -[group_4941] -[group_4942] -[group_4943] -[group_4944] -[group_4945] -[group_4946] -[group_4947] -[group_4948] -[group_4949] -[group_4950] -[group_4951] -[group_4952] -[group_4953] -[group_4954] -[group_4955] -[group_4956] -[group_4957] -[group_4958] -[group_4959] -[group_4960] -[group_4961] -[group_4962] -[group_4963] -[group_4964] -[group_4965] -[group_4966] -[group_4967] -[group_4968] -[group_4969] -[group_4970] -[group_4971] -[group_4972] -[group_4973] -[group_4974] -[group_4975] -[group_4976] -[group_4977] -[group_4978] -[group_4979] -[group_4980] -[group_4981] -[group_4982] -[group_4983] -[group_4984] -[group_4985] -[group_4986] -[group_4987] -[group_4988] -[group_4989] -[group_4990] -[group_4991] -[group_4992] -[group_4993] -[group_4994] -[group_4995] -[group_4996] -[group_4997] -[group_4998] -[group_4999] -[group_5000] -[group_5001] -[group_5002] -[group_5003] -[group_5004] -[group_5005] -[group_5006] -[group_5007] -[group_5008] -[group_5009] -[group_5010] -[group_5011] -[group_5012] -[group_5013] -[group_5014] -[group_5015] -[group_5016] -[group_5017] -[group_5018] -[group_5019] -[group_5020] -[group_5021] -[group_5022] -[group_5023] -[group_5024] -[group_5025] -[group_5026] -[group_5027] -[group_5028] -[group_5029] -[group_5030] -[group_5031] -[group_5032] -[group_5033] -[group_5034] -[group_5035] -[group_5036] -[group_5037] -[group_5038] -[group_5039] -[group_5040] -[group_5041] -[group_5042] -[group_5043] -[group_5044] -[group_5045] -[group_5046] -[group_5047] -[group_5048] -[group_5049] -[group_5050] -[group_5051] -[group_5052] -[group_5053] -[group_5054] -[group_5055] -[group_5056] -[group_5057] -[group_5058] -[group_5059] -[group_5060] -[group_5061] -[group_5062] -[group_5063] -[group_5064] -[group_5065] -[group_5066] -[group_5067] -[group_5068] -[group_5069] -[group_5070] -[group_5071] -[group_5072] -[group_5073] -[group_5074] -[group_5075] -[group_5076] -[group_5077] -[group_5078] -[group_5079] -[group_5080] -[group_5081] -[group_5082] -[group_5083] -[group_5084] -[group_5085] -[group_5086] -[group_5087] -[group_5088] -[group_5089] -[group_5090] -[group_5091] -[group_5092] -[group_5093] -[group_5094] -[group_5095] -[group_5096] -[group_5097] -[group_5098] -[group_5099] -[group_5100] -[group_5101] -[group_5102] -[group_5103] -[group_5104] -[group_5105] -[group_5106] -[group_5107] -[group_5108] -[group_5109] -[group_5110] -[group_5111] -[group_5112] -[group_5113] -[group_5114] -[group_5115] -[group_5116] -[group_5117] -[group_5118] -[group_5119] -[group_5120] -[group_5121] -[group_5122] -[group_5123] -[group_5124] -[group_5125] -[group_5126] -[group_5127] -[group_5128] -[group_5129] -[group_5130] -[group_5131] -[group_5132] -[group_5133] -[group_5134] -[group_5135] -[group_5136] -[group_5137] -[group_5138] -[group_5139] -[group_5140] -[group_5141] -[group_5142] -[group_5143] -[group_5144] -[group_5145] -[group_5146] -[group_5147] -[group_5148] -[group_5149] -[group_5150] -[group_5151] -[group_5152] -[group_5153] -[group_5154] -[group_5155] -[group_5156] -[group_5157] -[group_5158] -[group_5159] -[group_5160] -[group_5161] -[group_5162] -[group_5163] -[group_5164] -[group_5165] -[group_5166] -[group_5167] -[group_5168] -[group_5169] -[group_5170] -[group_5171] -[group_5172] -[group_5173] -[group_5174] -[group_5175] -[group_5176] -[group_5177] -[group_5178] -[group_5179] -[group_5180] -[group_5181] -[group_5182] -[group_5183] -[group_5184] -[group_5185] -[group_5186] -[group_5187] -[group_5188] -[group_5189] -[group_5190] -[group_5191] -[group_5192] -[group_5193] -[group_5194] -[group_5195] -[group_5196] -[group_5197] -[group_5198] -[group_5199] -[group_5200] -[group_5201] -[group_5202] -[group_5203] -[group_5204] -[group_5205] -[group_5206] -[group_5207] -[group_5208] -[group_5209] -[group_5210] -[group_5211] -[group_5212] -[group_5213] -[group_5214] -[group_5215] -[group_5216] -[group_5217] -[group_5218] -[group_5219] -[group_5220] -[group_5221] -[group_5222] -[group_5223] -[group_5224] -[group_5225] -[group_5226] -[group_5227] -[group_5228] -[group_5229] -[group_5230] -[group_5231] -[group_5232] -[group_5233] -[group_5234] -[group_5235] -[group_5236] -[group_5237] -[group_5238] -[group_5239] -[group_5240] -[group_5241] -[group_5242] -[group_5243] -[group_5244] -[group_5245] -[group_5246] -[group_5247] -[group_5248] -[group_5249] -[group_5250] -[group_5251] -[group_5252] -[group_5253] -[group_5254] -[group_5255] -[group_5256] -[group_5257] -[group_5258] -[group_5259] -[group_5260] -[group_5261] -[group_5262] -[group_5263] -[group_5264] -[group_5265] -[group_5266] -[group_5267] -[group_5268] -[group_5269] -[group_5270] -[group_5271] -[group_5272] -[group_5273] -[group_5274] -[group_5275] -[group_5276] -[group_5277] -[group_5278] -[group_5279] -[group_5280] -[group_5281] -[group_5282] -[group_5283] -[group_5284] -[group_5285] -[group_5286] -[group_5287] -[group_5288] -[group_5289] -[group_5290] -[group_5291] -[group_5292] -[group_5293] -[group_5294] -[group_5295] -[group_5296] -[group_5297] -[group_5298] -[group_5299] -[group_5300] -[group_5301] -[group_5302] -[group_5303] -[group_5304] -[group_5305] -[group_5306] -[group_5307] -[group_5308] -[group_5309] -[group_5310] -[group_5311] -[group_5312] -[group_5313] -[group_5314] -[group_5315] -[group_5316] -[group_5317] -[group_5318] -[group_5319] -[group_5320] -[group_5321] -[group_5322] -[group_5323] -[group_5324] -[group_5325] -[group_5326] -[group_5327] -[group_5328] -[group_5329] -[group_5330] -[group_5331] -[group_5332] -[group_5333] -[group_5334] -[group_5335] -[group_5336] -[group_5337] -[group_5338] -[group_5339] -[group_5340] -[group_5341] -[group_5342] -[group_5343] -[group_5344] -[group_5345] -[group_5346] -[group_5347] -[group_5348] -[group_5349] -[group_5350] -[group_5351] -[group_5352] -[group_5353] -[group_5354] -[group_5355] -[group_5356] -[group_5357] -[group_5358] -[group_5359] -[group_5360] -[group_5361] -[group_5362] -[group_5363] -[group_5364] -[group_5365] -[group_5366] -[group_5367] -[group_5368] -[group_5369] -[group_5370] -[group_5371] -[group_5372] -[group_5373] -[group_5374] -[group_5375] -[group_5376] -[group_5377] -[group_5378] -[group_5379] -[group_5380] -[group_5381] -[group_5382] -[group_5383] -[group_5384] -[group_5385] -[group_5386] -[group_5387] -[group_5388] -[group_5389] -[group_5390] -[group_5391] -[group_5392] -[group_5393] -[group_5394] -[group_5395] -[group_5396] -[group_5397] -[group_5398] -[group_5399] -[group_5400] -[group_5401] -[group_5402] -[group_5403] -[group_5404] -[group_5405] -[group_5406] -[group_5407] -[group_5408] -[group_5409] -[group_5410] -[group_5411] -[group_5412] -[group_5413] -[group_5414] -[group_5415] -[group_5416] -[group_5417] -[group_5418] -[group_5419] -[group_5420] -[group_5421] -[group_5422] -[group_5423] -[group_5424] -[group_5425] -[group_5426] -[group_5427] -[group_5428] -[group_5429] -[group_5430] -[group_5431] -[group_5432] -[group_5433] -[group_5434] -[group_5435] -[group_5436] -[group_5437] -[group_5438] -[group_5439] -[group_5440] -[group_5441] -[group_5442] -[group_5443] -[group_5444] -[group_5445] -[group_5446] -[group_5447] -[group_5448] -[group_5449] -[group_5450] -[group_5451] -[group_5452] -[group_5453] -[group_5454] -[group_5455] -[group_5456] -[group_5457] -[group_5458] -[group_5459] -[group_5460] -[group_5461] -[group_5462] -[group_5463] -[group_5464] -[group_5465] -[group_5466] -[group_5467] -[group_5468] -[group_5469] -[group_5470] -[group_5471] -[group_5472] -[group_5473] -[group_5474] -[group_5475] -[group_5476] -[group_5477] -[group_5478] -[group_5479] -[group_5480] -[group_5481] -[group_5482] -[group_5483] -[group_5484] -[group_5485] -[group_5486] -[group_5487] -[group_5488] -[group_5489] -[group_5490] -[group_5491] -[group_5492] -[group_5493] -[group_5494] -[group_5495] -[group_5496] -[group_5497] -[group_5498] -[group_5499] -[group_5500] -[group_5501] -[group_5502] -[group_5503] -[group_5504] -[group_5505] -[group_5506] -[group_5507] -[group_5508] -[group_5509] -[group_5510] -[group_5511] -[group_5512] -[group_5513] -[group_5514] -[group_5515] -[group_5516] -[group_5517] -[group_5518] -[group_5519] -[group_5520] -[group_5521] -[group_5522] -[group_5523] -[group_5524] -[group_5525] -[group_5526] -[group_5527] -[group_5528] -[group_5529] -[group_5530] -[group_5531] -[group_5532] -[group_5533] -[group_5534] -[group_5535] -[group_5536] -[group_5537] -[group_5538] -[group_5539] -[group_5540] -[group_5541] -[group_5542] -[group_5543] -[group_5544] -[group_5545] -[group_5546] -[group_5547] -[group_5548] -[group_5549] -[group_5550] -[group_5551] -[group_5552] -[group_5553] -[group_5554] -[group_5555] -[group_5556] -[group_5557] -[group_5558] -[group_5559] -[group_5560] -[group_5561] -[group_5562] -[group_5563] -[group_5564] -[group_5565] -[group_5566] -[group_5567] -[group_5568] -[group_5569] -[group_5570] -[group_5571] -[group_5572] -[group_5573] -[group_5574] -[group_5575] -[group_5576] -[group_5577] -[group_5578] -[group_5579] -[group_5580] -[group_5581] -[group_5582] -[group_5583] -[group_5584] -[group_5585] -[group_5586] -[group_5587] -[group_5588] -[group_5589] -[group_5590] -[group_5591] -[group_5592] -[group_5593] -[group_5594] -[group_5595] -[group_5596] -[group_5597] -[group_5598] -[group_5599] -[group_5600] -[group_5601] -[group_5602] -[group_5603] -[group_5604] -[group_5605] -[group_5606] -[group_5607] -[group_5608] -[group_5609] -[group_5610] -[group_5611] -[group_5612] -[group_5613] -[group_5614] -[group_5615] -[group_5616] -[group_5617] -[group_5618] -[group_5619] -[group_5620] -[group_5621] -[group_5622] -[group_5623] -[group_5624] -[group_5625] -[group_5626] -[group_5627] -[group_5628] -[group_5629] -[group_5630] -[group_5631] -[group_5632] -[group_5633] -[group_5634] -[group_5635] -[group_5636] -[group_5637] -[group_5638] -[group_5639] -[group_5640] -[group_5641] -[group_5642] -[group_5643] -[group_5644] -[group_5645] -[group_5646] -[group_5647] -[group_5648] -[group_5649] -[group_5650] -[group_5651] -[group_5652] -[group_5653] -[group_5654] -[group_5655] -[group_5656] -[group_5657] -[group_5658] -[group_5659] -[group_5660] -[group_5661] -[group_5662] -[group_5663] -[group_5664] -[group_5665] -[group_5666] -[group_5667] -[group_5668] -[group_5669] -[group_5670] -[group_5671] -[group_5672] -[group_5673] -[group_5674] -[group_5675] -[group_5676] -[group_5677] -[group_5678] -[group_5679] -[group_5680] -[group_5681] -[group_5682] -[group_5683] -[group_5684] -[group_5685] -[group_5686] -[group_5687] -[group_5688] -[group_5689] -[group_5690] -[group_5691] -[group_5692] -[group_5693] -[group_5694] -[group_5695] -[group_5696] -[group_5697] -[group_5698] -[group_5699] -[group_5700] -[group_5701] -[group_5702] -[group_5703] -[group_5704] -[group_5705] -[group_5706] -[group_5707] -[group_5708] -[group_5709] -[group_5710] -[group_5711] -[group_5712] -[group_5713] -[group_5714] -[group_5715] -[group_5716] -[group_5717] -[group_5718] -[group_5719] -[group_5720] -[group_5721] -[group_5722] -[group_5723] -[group_5724] -[group_5725] -[group_5726] -[group_5727] -[group_5728] -[group_5729] -[group_5730] -[group_5731] -[group_5732] -[group_5733] -[group_5734] -[group_5735] -[group_5736] -[group_5737] -[group_5738] -[group_5739] -[group_5740] -[group_5741] -[group_5742] -[group_5743] -[group_5744] -[group_5745] -[group_5746] -[group_5747] -[group_5748] -[group_5749] -[group_5750] -[group_5751] -[group_5752] -[group_5753] -[group_5754] -[group_5755] -[group_5756] -[group_5757] -[group_5758] -[group_5759] -[group_5760] -[group_5761] -[group_5762] -[group_5763] -[group_5764] -[group_5765] -[group_5766] -[group_5767] -[group_5768] -[group_5769] -[group_5770] -[group_5771] -[group_5772] -[group_5773] -[group_5774] -[group_5775] -[group_5776] -[group_5777] -[group_5778] -[group_5779] -[group_5780] -[group_5781] -[group_5782] -[group_5783] -[group_5784] -[group_5785] -[group_5786] -[group_5787] -[group_5788] -[group_5789] -[group_5790] -[group_5791] -[group_5792] -[group_5793] -[group_5794] -[group_5795] -[group_5796] -[group_5797] -[group_5798] -[group_5799] -[group_5800] -[group_5801] -[group_5802] -[group_5803] -[group_5804] -[group_5805] -[group_5806] -[group_5807] -[group_5808] -[group_5809] -[group_5810] -[group_5811] -[group_5812] -[group_5813] -[group_5814] -[group_5815] -[group_5816] -[group_5817] -[group_5818] -[group_5819] -[group_5820] -[group_5821] -[group_5822] -[group_5823] -[group_5824] -[group_5825] -[group_5826] -[group_5827] -[group_5828] -[group_5829] -[group_5830] -[group_5831] -[group_5832] -[group_5833] -[group_5834] -[group_5835] -[group_5836] -[group_5837] -[group_5838] -[group_5839] -[group_5840] -[group_5841] -[group_5842] -[group_5843] -[group_5844] -[group_5845] -[group_5846] -[group_5847] -[group_5848] -[group_5849] -[group_5850] -[group_5851] -[group_5852] -[group_5853] -[group_5854] -[group_5855] -[group_5856] -[group_5857] -[group_5858] -[group_5859] -[group_5860] -[group_5861] -[group_5862] -[group_5863] -[group_5864] -[group_5865] -[group_5866] -[group_5867] -[group_5868] -[group_5869] -[group_5870] -[group_5871] -[group_5872] -[group_5873] -[group_5874] -[group_5875] -[group_5876] -[group_5877] -[group_5878] -[group_5879] -[group_5880] -[group_5881] -[group_5882] -[group_5883] -[group_5884] -[group_5885] -[group_5886] -[group_5887] -[group_5888] -[group_5889] -[group_5890] -[group_5891] -[group_5892] -[group_5893] -[group_5894] -[group_5895] -[group_5896] -[group_5897] -[group_5898] -[group_5899] -[group_5900] -[group_5901] -[group_5902] -[group_5903] -[group_5904] -[group_5905] -[group_5906] -[group_5907] -[group_5908] -[group_5909] -[group_5910] -[group_5911] -[group_5912] -[group_5913] -[group_5914] -[group_5915] -[group_5916] -[group_5917] -[group_5918] -[group_5919] -[group_5920] -[group_5921] -[group_5922] -[group_5923] -[group_5924] -[group_5925] -[group_5926] -[group_5927] -[group_5928] -[group_5929] -[group_5930] -[group_5931] -[group_5932] -[group_5933] -[group_5934] -[group_5935] -[group_5936] -[group_5937] -[group_5938] -[group_5939] -[group_5940] -[group_5941] -[group_5942] -[group_5943] -[group_5944] -[group_5945] -[group_5946] -[group_5947] -[group_5948] -[group_5949] -[group_5950] -[group_5951] -[group_5952] -[group_5953] -[group_5954] -[group_5955] -[group_5956] -[group_5957] -[group_5958] -[group_5959] -[group_5960] -[group_5961] -[group_5962] -[group_5963] -[group_5964] -[group_5965] -[group_5966] -[group_5967] -[group_5968] -[group_5969] -[group_5970] -[group_5971] -[group_5972] -[group_5973] -[group_5974] -[group_5975] -[group_5976] -[group_5977] -[group_5978] -[group_5979] -[group_5980] -[group_5981] -[group_5982] -[group_5983] -[group_5984] -[group_5985] -[group_5986] -[group_5987] -[group_5988] -[group_5989] -[group_5990] -[group_5991] -[group_5992] -[group_5993] -[group_5994] -[group_5995] -[group_5996] -[group_5997] -[group_5998] -[group_5999] -[group_6000] -[group_6001] -[group_6002] -[group_6003] -[group_6004] -[group_6005] -[group_6006] -[group_6007] -[group_6008] -[group_6009] -[group_6010] -[group_6011] -[group_6012] -[group_6013] -[group_6014] -[group_6015] -[group_6016] -[group_6017] -[group_6018] -[group_6019] -[group_6020] -[group_6021] -[group_6022] -[group_6023] -[group_6024] -[group_6025] -[group_6026] -[group_6027] -[group_6028] -[group_6029] -[group_6030] -[group_6031] -[group_6032] -[group_6033] -[group_6034] -[group_6035] -[group_6036] -[group_6037] -[group_6038] -[group_6039] -[group_6040] -[group_6041] -[group_6042] -[group_6043] -[group_6044] -[group_6045] -[group_6046] -[group_6047] -[group_6048] -[group_6049] -[group_6050] -[group_6051] -[group_6052] -[group_6053] -[group_6054] -[group_6055] -[group_6056] -[group_6057] -[group_6058] -[group_6059] -[group_6060] -[group_6061] -[group_6062] -[group_6063] -[group_6064] -[group_6065] -[group_6066] -[group_6067] -[group_6068] -[group_6069] -[group_6070] -[group_6071] -[group_6072] -[group_6073] -[group_6074] -[group_6075] -[group_6076] -[group_6077] -[group_6078] -[group_6079] -[group_6080] -[group_6081] -[group_6082] -[group_6083] -[group_6084] -[group_6085] -[group_6086] -[group_6087] -[group_6088] -[group_6089] -[group_6090] -[group_6091] -[group_6092] -[group_6093] -[group_6094] -[group_6095] -[group_6096] -[group_6097] -[group_6098] -[group_6099] -[group_6100] -[group_6101] -[group_6102] -[group_6103] -[group_6104] -[group_6105] -[group_6106] -[group_6107] -[group_6108] -[group_6109] -[group_6110] -[group_6111] -[group_6112] -[group_6113] -[group_6114] -[group_6115] -[group_6116] -[group_6117] -[group_6118] -[group_6119] -[group_6120] -[group_6121] -[group_6122] -[group_6123] -[group_6124] -[group_6125] -[group_6126] -[group_6127] -[group_6128] -[group_6129] -[group_6130] -[group_6131] -[group_6132] -[group_6133] -[group_6134] -[group_6135] -[group_6136] -[group_6137] -[group_6138] -[group_6139] -[group_6140] -[group_6141] -[group_6142] -[group_6143] -[group_6144] -[group_6145] -[group_6146] -[group_6147] -[group_6148] -[group_6149] -[group_6150] -[group_6151] -[group_6152] -[group_6153] -[group_6154] -[group_6155] -[group_6156] -[group_6157] -[group_6158] -[group_6159] -[group_6160] -[group_6161] -[group_6162] -[group_6163] -[group_6164] -[group_6165] -[group_6166] -[group_6167] -[group_6168] -[group_6169] -[group_6170] -[group_6171] -[group_6172] -[group_6173] -[group_6174] -[group_6175] -[group_6176] -[group_6177] -[group_6178] -[group_6179] -[group_6180] -[group_6181] -[group_6182] -[group_6183] -[group_6184] -[group_6185] -[group_6186] -[group_6187] -[group_6188] -[group_6189] -[group_6190] -[group_6191] -[group_6192] -[group_6193] -[group_6194] -[group_6195] -[group_6196] -[group_6197] -[group_6198] -[group_6199] -[group_6200] -[group_6201] -[group_6202] -[group_6203] -[group_6204] -[group_6205] -[group_6206] -[group_6207] -[group_6208] -[group_6209] -[group_6210] -[group_6211] -[group_6212] -[group_6213] -[group_6214] -[group_6215] -[group_6216] -[group_6217] -[group_6218] -[group_6219] -[group_6220] -[group_6221] -[group_6222] -[group_6223] -[group_6224] -[group_6225] -[group_6226] -[group_6227] -[group_6228] -[group_6229] -[group_6230] -[group_6231] -[group_6232] -[group_6233] -[group_6234] -[group_6235] -[group_6236] -[group_6237] -[group_6238] -[group_6239] -[group_6240] -[group_6241] -[group_6242] -[group_6243] -[group_6244] -[group_6245] -[group_6246] -[group_6247] -[group_6248] -[group_6249] -[group_6250] -[group_6251] -[group_6252] -[group_6253] -[group_6254] -[group_6255] -[group_6256] -[group_6257] -[group_6258] -[group_6259] -[group_6260] -[group_6261] -[group_6262] -[group_6263] -[group_6264] -[group_6265] -[group_6266] -[group_6267] -[group_6268] -[group_6269] -[group_6270] -[group_6271] -[group_6272] -[group_6273] -[group_6274] -[group_6275] -[group_6276] -[group_6277] -[group_6278] -[group_6279] -[group_6280] -[group_6281] -[group_6282] -[group_6283] -[group_6284] -[group_6285] -[group_6286] -[group_6287] -[group_6288] -[group_6289] -[group_6290] -[group_6291] -[group_6292] -[group_6293] -[group_6294] -[group_6295] -[group_6296] -[group_6297] -[group_6298] -[group_6299] -[group_6300] -[group_6301] -[group_6302] -[group_6303] -[group_6304] -[group_6305] -[group_6306] -[group_6307] -[group_6308] -[group_6309] -[group_6310] -[group_6311] -[group_6312] -[group_6313] -[group_6314] -[group_6315] -[group_6316] -[group_6317] -[group_6318] -[group_6319] -[group_6320] -[group_6321] -[group_6322] -[group_6323] -[group_6324] -[group_6325] -[group_6326] -[group_6327] -[group_6328] -[group_6329] -[group_6330] -[group_6331] -[group_6332] -[group_6333] -[group_6334] -[group_6335] -[group_6336] -[group_6337] -[group_6338] -[group_6339] -[group_6340] -[group_6341] -[group_6342] -[group_6343] -[group_6344] -[group_6345] -[group_6346] -[group_6347] -[group_6348] -[group_6349] -[group_6350] -[group_6351] -[group_6352] -[group_6353] -[group_6354] -[group_6355] -[group_6356] -[group_6357] -[group_6358] -[group_6359] -[group_6360] -[group_6361] -[group_6362] -[group_6363] -[group_6364] -[group_6365] -[group_6366] -[group_6367] -[group_6368] -[group_6369] -[group_6370] -[group_6371] -[group_6372] -[group_6373] -[group_6374] -[group_6375] -[group_6376] -[group_6377] -[group_6378] -[group_6379] -[group_6380] -[group_6381] -[group_6382] -[group_6383] -[group_6384] -[group_6385] -[group_6386] -[group_6387] -[group_6388] -[group_6389] -[group_6390] -[group_6391] -[group_6392] -[group_6393] -[group_6394] -[group_6395] -[group_6396] -[group_6397] -[group_6398] -[group_6399] -[group_6400] -[group_6401] -[group_6402] -[group_6403] -[group_6404] -[group_6405] -[group_6406] -[group_6407] -[group_6408] -[group_6409] -[group_6410] -[group_6411] -[group_6412] -[group_6413] -[group_6414] -[group_6415] -[group_6416] -[group_6417] -[group_6418] -[group_6419] -[group_6420] -[group_6421] -[group_6422] -[group_6423] -[group_6424] -[group_6425] -[group_6426] -[group_6427] -[group_6428] -[group_6429] -[group_6430] -[group_6431] -[group_6432] -[group_6433] -[group_6434] -[group_6435] -[group_6436] -[group_6437] -[group_6438] -[group_6439] -[group_6440] -[group_6441] -[group_6442] -[group_6443] -[group_6444] -[group_6445] -[group_6446] -[group_6447] -[group_6448] -[group_6449] -[group_6450] -[group_6451] -[group_6452] -[group_6453] -[group_6454] -[group_6455] -[group_6456] -[group_6457] -[group_6458] -[group_6459] -[group_6460] -[group_6461] -[group_6462] -[group_6463] -[group_6464] -[group_6465] -[group_6466] -[group_6467] -[group_6468] -[group_6469] -[group_6470] -[group_6471] -[group_6472] -[group_6473] -[group_6474] -[group_6475] -[group_6476] -[group_6477] -[group_6478] -[group_6479] -[group_6480] -[group_6481] -[group_6482] -[group_6483] -[group_6484] -[group_6485] -[group_6486] -[group_6487] -[group_6488] -[group_6489] -[group_6490] -[group_6491] -[group_6492] -[group_6493] -[group_6494] -[group_6495] -[group_6496] -[group_6497] -[group_6498] -[group_6499] -[group_6500] -[group_6501] -[group_6502] -[group_6503] -[group_6504] -[group_6505] -[group_6506] -[group_6507] -[group_6508] -[group_6509] -[group_6510] -[group_6511] -[group_6512] -[group_6513] -[group_6514] -[group_6515] -[group_6516] -[group_6517] -[group_6518] -[group_6519] -[group_6520] -[group_6521] -[group_6522] -[group_6523] -[group_6524] -[group_6525] -[group_6526] -[group_6527] -[group_6528] -[group_6529] -[group_6530] -[group_6531] -[group_6532] -[group_6533] -[group_6534] -[group_6535] -[group_6536] -[group_6537] -[group_6538] -[group_6539] -[group_6540] -[group_6541] -[group_6542] -[group_6543] -[group_6544] -[group_6545] -[group_6546] -[group_6547] -[group_6548] -[group_6549] -[group_6550] -[group_6551] -[group_6552] -[group_6553] -[group_6554] -[group_6555] -[group_6556] -[group_6557] -[group_6558] -[group_6559] -[group_6560] -[group_6561] -[group_6562] -[group_6563] -[group_6564] -[group_6565] -[group_6566] -[group_6567] -[group_6568] -[group_6569] -[group_6570] -[group_6571] -[group_6572] -[group_6573] -[group_6574] -[group_6575] -[group_6576] -[group_6577] -[group_6578] -[group_6579] -[group_6580] -[group_6581] -[group_6582] -[group_6583] -[group_6584] -[group_6585] -[group_6586] -[group_6587] -[group_6588] -[group_6589] -[group_6590] -[group_6591] -[group_6592] -[group_6593] -[group_6594] -[group_6595] -[group_6596] -[group_6597] -[group_6598] -[group_6599] -[group_6600] -[group_6601] -[group_6602] -[group_6603] -[group_6604] -[group_6605] -[group_6606] -[group_6607] -[group_6608] -[group_6609] -[group_6610] -[group_6611] -[group_6612] -[group_6613] -[group_6614] -[group_6615] -[group_6616] -[group_6617] -[group_6618] -[group_6619] -[group_6620] -[group_6621] -[group_6622] -[group_6623] -[group_6624] -[group_6625] -[group_6626] -[group_6627] -[group_6628] -[group_6629] -[group_6630] -[group_6631] -[group_6632] -[group_6633] -[group_6634] -[group_6635] -[group_6636] -[group_6637] -[group_6638] -[group_6639] -[group_6640] -[group_6641] -[group_6642] -[group_6643] -[group_6644] -[group_6645] -[group_6646] -[group_6647] -[group_6648] -[group_6649] -[group_6650] -[group_6651] -[group_6652] -[group_6653] -[group_6654] -[group_6655] -[group_6656] -[group_6657] -[group_6658] -[group_6659] -[group_6660] -[group_6661] -[group_6662] -[group_6663] -[group_6664] -[group_6665] -[group_6666] -[group_6667] -[group_6668] -[group_6669] -[group_6670] -[group_6671] -[group_6672] -[group_6673] -[group_6674] -[group_6675] -[group_6676] -[group_6677] -[group_6678] -[group_6679] -[group_6680] -[group_6681] -[group_6682] -[group_6683] -[group_6684] -[group_6685] -[group_6686] -[group_6687] -[group_6688] -[group_6689] -[group_6690] -[group_6691] -[group_6692] -[group_6693] -[group_6694] -[group_6695] -[group_6696] -[group_6697] -[group_6698] -[group_6699] -[group_6700] -[group_6701] -[group_6702] -[group_6703] -[group_6704] -[group_6705] -[group_6706] -[group_6707] -[group_6708] -[group_6709] -[group_6710] -[group_6711] -[group_6712] -[group_6713] -[group_6714] -[group_6715] -[group_6716] -[group_6717] -[group_6718] -[group_6719] -[group_6720] -[group_6721] -[group_6722] -[group_6723] -[group_6724] -[group_6725] -[group_6726] -[group_6727] -[group_6728] -[group_6729] -[group_6730] -[group_6731] -[group_6732] -[group_6733] -[group_6734] -[group_6735] -[group_6736] -[group_6737] -[group_6738] -[group_6739] -[group_6740] -[group_6741] -[group_6742] -[group_6743] -[group_6744] -[group_6745] -[group_6746] -[group_6747] -[group_6748] -[group_6749] -[group_6750] -[group_6751] -[group_6752] -[group_6753] -[group_6754] -[group_6755] -[group_6756] -[group_6757] -[group_6758] -[group_6759] -[group_6760] -[group_6761] -[group_6762] -[group_6763] -[group_6764] -[group_6765] -[group_6766] -[group_6767] -[group_6768] -[group_6769] -[group_6770] -[group_6771] -[group_6772] -[group_6773] -[group_6774] -[group_6775] -[group_6776] -[group_6777] -[group_6778] -[group_6779] -[group_6780] -[group_6781] -[group_6782] -[group_6783] -[group_6784] -[group_6785] -[group_6786] -[group_6787] -[group_6788] -[group_6789] -[group_6790] -[group_6791] -[group_6792] -[group_6793] -[group_6794] -[group_6795] -[group_6796] -[group_6797] -[group_6798] -[group_6799] -[group_6800] -[group_6801] -[group_6802] -[group_6803] -[group_6804] -[group_6805] -[group_6806] -[group_6807] -[group_6808] -[group_6809] -[group_6810] -[group_6811] -[group_6812] -[group_6813] -[group_6814] -[group_6815] -[group_6816] -[group_6817] -[group_6818] -[group_6819] -[group_6820] -[group_6821] -[group_6822] -[group_6823] -[group_6824] -[group_6825] -[group_6826] -[group_6827] -[group_6828] -[group_6829] -[group_6830] -[group_6831] -[group_6832] -[group_6833] -[group_6834] -[group_6835] -[group_6836] -[group_6837] -[group_6838] -[group_6839] -[group_6840] -[group_6841] -[group_6842] -[group_6843] -[group_6844] -[group_6845] -[group_6846] -[group_6847] -[group_6848] -[group_6849] -[group_6850] -[group_6851] -[group_6852] -[group_6853] -[group_6854] -[group_6855] -[group_6856] -[group_6857] -[group_6858] -[group_6859] -[group_6860] -[group_6861] -[group_6862] -[group_6863] -[group_6864] -[group_6865] -[group_6866] -[group_6867] -[group_6868] -[group_6869] -[group_6870] -[group_6871] -[group_6872] -[group_6873] -[group_6874] -[group_6875] -[group_6876] -[group_6877] -[group_6878] -[group_6879] -[group_6880] -[group_6881] -[group_6882] -[group_6883] -[group_6884] -[group_6885] -[group_6886] -[group_6887] -[group_6888] -[group_6889] -[group_6890] -[group_6891] -[group_6892] -[group_6893] -[group_6894] -[group_6895] -[group_6896] -[group_6897] -[group_6898] -[group_6899] -[group_6900] -[group_6901] -[group_6902] -[group_6903] -[group_6904] -[group_6905] -[group_6906] -[group_6907] -[group_6908] -[group_6909] -[group_6910] -[group_6911] -[group_6912] -[group_6913] -[group_6914] -[group_6915] -[group_6916] -[group_6917] -[group_6918] -[group_6919] -[group_6920] -[group_6921] -[group_6922] -[group_6923] -[group_6924] -[group_6925] -[group_6926] -[group_6927] -[group_6928] -[group_6929] -[group_6930] -[group_6931] -[group_6932] -[group_6933] -[group_6934] -[group_6935] -[group_6936] -[group_6937] -[group_6938] -[group_6939] -[group_6940] -[group_6941] -[group_6942] -[group_6943] -[group_6944] -[group_6945] -[group_6946] -[group_6947] -[group_6948] -[group_6949] -[group_6950] -[group_6951] -[group_6952] -[group_6953] -[group_6954] -[group_6955] -[group_6956] -[group_6957] -[group_6958] -[group_6959] -[group_6960] -[group_6961] -[group_6962] -[group_6963] -[group_6964] -[group_6965] -[group_6966] -[group_6967] -[group_6968] -[group_6969] -[group_6970] -[group_6971] -[group_6972] -[group_6973] -[group_6974] -[group_6975] -[group_6976] -[group_6977] -[group_6978] -[group_6979] -[group_6980] -[group_6981] -[group_6982] -[group_6983] -[group_6984] -[group_6985] -[group_6986] -[group_6987] -[group_6988] -[group_6989] -[group_6990] -[group_6991] -[group_6992] -[group_6993] -[group_6994] -[group_6995] -[group_6996] -[group_6997] -[group_6998] -[group_6999] -[group_7000] -[group_7001] -[group_7002] -[group_7003] -[group_7004] -[group_7005] -[group_7006] -[group_7007] -[group_7008] -[group_7009] -[group_7010] -[group_7011] -[group_7012] -[group_7013] -[group_7014] -[group_7015] -[group_7016] -[group_7017] -[group_7018] -[group_7019] -[group_7020] -[group_7021] -[group_7022] -[group_7023] -[group_7024] -[group_7025] -[group_7026] -[group_7027] -[group_7028] -[group_7029] -[group_7030] -[group_7031] -[group_7032] -[group_7033] -[group_7034] -[group_7035] -[group_7036] -[group_7037] -[group_7038] -[group_7039] -[group_7040] -[group_7041] -[group_7042] -[group_7043] -[group_7044] -[group_7045] -[group_7046] -[group_7047] -[group_7048] -[group_7049] -[group_7050] -[group_7051] -[group_7052] -[group_7053] -[group_7054] -[group_7055] -[group_7056] -[group_7057] -[group_7058] -[group_7059] -[group_7060] -[group_7061] -[group_7062] -[group_7063] -[group_7064] -[group_7065] -[group_7066] -[group_7067] -[group_7068] -[group_7069] -[group_7070] -[group_7071] -[group_7072] -[group_7073] -[group_7074] -[group_7075] -[group_7076] -[group_7077] -[group_7078] -[group_7079] -[group_7080] -[group_7081] -[group_7082] -[group_7083] -[group_7084] -[group_7085] -[group_7086] -[group_7087] -[group_7088] -[group_7089] -[group_7090] -[group_7091] -[group_7092] -[group_7093] -[group_7094] -[group_7095] -[group_7096] -[group_7097] -[group_7098] -[group_7099] -[group_7100] -[group_7101] -[group_7102] -[group_7103] -[group_7104] -[group_7105] -[group_7106] -[group_7107] -[group_7108] -[group_7109] -[group_7110] -[group_7111] -[group_7112] -[group_7113] -[group_7114] -[group_7115] -[group_7116] -[group_7117] -[group_7118] -[group_7119] -[group_7120] -[group_7121] -[group_7122] -[group_7123] -[group_7124] -[group_7125] -[group_7126] -[group_7127] -[group_7128] -[group_7129] -[group_7130] -[group_7131] -[group_7132] -[group_7133] -[group_7134] -[group_7135] -[group_7136] -[group_7137] -[group_7138] -[group_7139] -[group_7140] -[group_7141] -[group_7142] -[group_7143] -[group_7144] -[group_7145] -[group_7146] -[group_7147] -[group_7148] -[group_7149] -[group_7150] -[group_7151] -[group_7152] -[group_7153] -[group_7154] -[group_7155] -[group_7156] -[group_7157] -[group_7158] -[group_7159] -[group_7160] -[group_7161] -[group_7162] -[group_7163] -[group_7164] -[group_7165] -[group_7166] -[group_7167] -[group_7168] -[group_7169] -[group_7170] -[group_7171] -[group_7172] -[group_7173] -[group_7174] -[group_7175] -[group_7176] -[group_7177] -[group_7178] -[group_7179] -[group_7180] -[group_7181] -[group_7182] -[group_7183] -[group_7184] -[group_7185] -[group_7186] -[group_7187] -[group_7188] -[group_7189] -[group_7190] -[group_7191] -[group_7192] -[group_7193] -[group_7194] -[group_7195] -[group_7196] -[group_7197] -[group_7198] -[group_7199] -[group_7200] -[group_7201] -[group_7202] -[group_7203] -[group_7204] -[group_7205] -[group_7206] -[group_7207] -[group_7208] -[group_7209] -[group_7210] -[group_7211] -[group_7212] -[group_7213] -[group_7214] -[group_7215] -[group_7216] -[group_7217] -[group_7218] -[group_7219] -[group_7220] -[group_7221] -[group_7222] -[group_7223] -[group_7224] -[group_7225] -[group_7226] -[group_7227] -[group_7228] -[group_7229] -[group_7230] -[group_7231] -[group_7232] -[group_7233] -[group_7234] -[group_7235] -[group_7236] -[group_7237] -[group_7238] -[group_7239] -[group_7240] -[group_7241] -[group_7242] -[group_7243] -[group_7244] -[group_7245] -[group_7246] -[group_7247] -[group_7248] -[group_7249] -[group_7250] -[group_7251] -[group_7252] -[group_7253] -[group_7254] -[group_7255] -[group_7256] -[group_7257] -[group_7258] -[group_7259] -[group_7260] -[group_7261] -[group_7262] -[group_7263] -[group_7264] -[group_7265] -[group_7266] -[group_7267] -[group_7268] -[group_7269] -[group_7270] -[group_7271] -[group_7272] -[group_7273] -[group_7274] -[group_7275] -[group_7276] -[group_7277] -[group_7278] -[group_7279] -[group_7280] -[group_7281] -[group_7282] -[group_7283] -[group_7284] -[group_7285] -[group_7286] -[group_7287] -[group_7288] -[group_7289] -[group_7290] -[group_7291] -[group_7292] -[group_7293] -[group_7294] -[group_7295] -[group_7296] -[group_7297] -[group_7298] -[group_7299] -[group_7300] -[group_7301] -[group_7302] -[group_7303] -[group_7304] -[group_7305] -[group_7306] -[group_7307] -[group_7308] -[group_7309] -[group_7310] -[group_7311] -[group_7312] -[group_7313] -[group_7314] -[group_7315] -[group_7316] -[group_7317] -[group_7318] -[group_7319] -[group_7320] -[group_7321] -[group_7322] -[group_7323] -[group_7324] -[group_7325] -[group_7326] -[group_7327] -[group_7328] -[group_7329] -[group_7330] -[group_7331] -[group_7332] -[group_7333] -[group_7334] -[group_7335] -[group_7336] -[group_7337] -[group_7338] -[group_7339] -[group_7340] -[group_7341] -[group_7342] -[group_7343] -[group_7344] -[group_7345] -[group_7346] -[group_7347] -[group_7348] -[group_7349] -[group_7350] -[group_7351] -[group_7352] -[group_7353] -[group_7354] -[group_7355] -[group_7356] -[group_7357] -[group_7358] -[group_7359] -[group_7360] -[group_7361] -[group_7362] -[group_7363] -[group_7364] -[group_7365] -[group_7366] -[group_7367] -[group_7368] -[group_7369] -[group_7370] -[group_7371] -[group_7372] -[group_7373] -[group_7374] -[group_7375] -[group_7376] -[group_7377] -[group_7378] -[group_7379] -[group_7380] -[group_7381] -[group_7382] -[group_7383] -[group_7384] -[group_7385] -[group_7386] -[group_7387] -[group_7388] -[group_7389] -[group_7390] -[group_7391] -[group_7392] -[group_7393] -[group_7394] -[group_7395] -[group_7396] -[group_7397] -[group_7398] -[group_7399] -[group_7400] -[group_7401] -[group_7402] -[group_7403] -[group_7404] -[group_7405] -[group_7406] -[group_7407] -[group_7408] -[group_7409] -[group_7410] -[group_7411] -[group_7412] -[group_7413] -[group_7414] -[group_7415] -[group_7416] -[group_7417] -[group_7418] -[group_7419] -[group_7420] -[group_7421] -[group_7422] -[group_7423] -[group_7424] -[group_7425] -[group_7426] -[group_7427] -[group_7428] -[group_7429] -[group_7430] -[group_7431] -[group_7432] -[group_7433] -[group_7434] -[group_7435] -[group_7436] -[group_7437] -[group_7438] -[group_7439] -[group_7440] -[group_7441] -[group_7442] -[group_7443] -[group_7444] -[group_7445] -[group_7446] -[group_7447] -[group_7448] -[group_7449] -[group_7450] -[group_7451] -[group_7452] -[group_7453] -[group_7454] -[group_7455] -[group_7456] -[group_7457] -[group_7458] -[group_7459] -[group_7460] -[group_7461] -[group_7462] -[group_7463] -[group_7464] -[group_7465] -[group_7466] -[group_7467] -[group_7468] -[group_7469] -[group_7470] -[group_7471] -[group_7472] -[group_7473] -[group_7474] -[group_7475] -[group_7476] -[group_7477] -[group_7478] -[group_7479] -[group_7480] -[group_7481] -[group_7482] -[group_7483] -[group_7484] -[group_7485] -[group_7486] -[group_7487] -[group_7488] -[group_7489] -[group_7490] -[group_7491] -[group_7492] -[group_7493] -[group_7494] -[group_7495] -[group_7496] -[group_7497] -[group_7498] -[group_7499] -[group_7500] -[group_7501] -[group_7502] -[group_7503] -[group_7504] -[group_7505] -[group_7506] -[group_7507] -[group_7508] -[group_7509] -[group_7510] -[group_7511] -[group_7512] -[group_7513] -[group_7514] -[group_7515] -[group_7516] -[group_7517] -[group_7518] -[group_7519] -[group_7520] -[group_7521] -[group_7522] -[group_7523] -[group_7524] -[group_7525] -[group_7526] -[group_7527] -[group_7528] -[group_7529] -[group_7530] -[group_7531] -[group_7532] -[group_7533] -[group_7534] -[group_7535] -[group_7536] -[group_7537] -[group_7538] -[group_7539] -[group_7540] -[group_7541] -[group_7542] -[group_7543] -[group_7544] -[group_7545] -[group_7546] -[group_7547] -[group_7548] -[group_7549] -[group_7550] -[group_7551] -[group_7552] -[group_7553] -[group_7554] -[group_7555] -[group_7556] -[group_7557] -[group_7558] -[group_7559] -[group_7560] -[group_7561] -[group_7562] -[group_7563] -[group_7564] -[group_7565] -[group_7566] -[group_7567] -[group_7568] -[group_7569] -[group_7570] -[group_7571] -[group_7572] -[group_7573] -[group_7574] -[group_7575] -[group_7576] -[group_7577] -[group_7578] -[group_7579] -[group_7580] -[group_7581] -[group_7582] -[group_7583] -[group_7584] -[group_7585] -[group_7586] -[group_7587] -[group_7588] -[group_7589] -[group_7590] -[group_7591] -[group_7592] -[group_7593] -[group_7594] -[group_7595] -[group_7596] -[group_7597] -[group_7598] -[group_7599] -[group_7600] -[group_7601] -[group_7602] -[group_7603] -[group_7604] -[group_7605] -[group_7606] -[group_7607] -[group_7608] -[group_7609] -[group_7610] -[group_7611] -[group_7612] -[group_7613] -[group_7614] -[group_7615] -[group_7616] -[group_7617] -[group_7618] -[group_7619] -[group_7620] -[group_7621] -[group_7622] -[group_7623] -[group_7624] -[group_7625] -[group_7626] -[group_7627] -[group_7628] -[group_7629] -[group_7630] -[group_7631] -[group_7632] -[group_7633] -[group_7634] -[group_7635] -[group_7636] -[group_7637] -[group_7638] -[group_7639] -[group_7640] -[group_7641] -[group_7642] -[group_7643] -[group_7644] -[group_7645] -[group_7646] -[group_7647] -[group_7648] -[group_7649] -[group_7650] -[group_7651] -[group_7652] -[group_7653] -[group_7654] -[group_7655] -[group_7656] -[group_7657] -[group_7658] -[group_7659] -[group_7660] -[group_7661] -[group_7662] -[group_7663] -[group_7664] -[group_7665] -[group_7666] -[group_7667] -[group_7668] -[group_7669] -[group_7670] -[group_7671] -[group_7672] -[group_7673] -[group_7674] -[group_7675] -[group_7676] -[group_7677] -[group_7678] -[group_7679] -[group_7680] -[group_7681] -[group_7682] -[group_7683] -[group_7684] -[group_7685] -[group_7686] -[group_7687] -[group_7688] -[group_7689] -[group_7690] -[group_7691] -[group_7692] -[group_7693] -[group_7694] -[group_7695] -[group_7696] -[group_7697] -[group_7698] -[group_7699] -[group_7700] -[group_7701] -[group_7702] -[group_7703] -[group_7704] -[group_7705] -[group_7706] -[group_7707] -[group_7708] -[group_7709] -[group_7710] -[group_7711] -[group_7712] -[group_7713] -[group_7714] -[group_7715] -[group_7716] -[group_7717] -[group_7718] -[group_7719] -[group_7720] -[group_7721] -[group_7722] -[group_7723] -[group_7724] -[group_7725] -[group_7726] -[group_7727] -[group_7728] -[group_7729] -[group_7730] -[group_7731] -[group_7732] -[group_7733] -[group_7734] -[group_7735] -[group_7736] -[group_7737] -[group_7738] -[group_7739] -[group_7740] -[group_7741] -[group_7742] -[group_7743] -[group_7744] -[group_7745] -[group_7746] -[group_7747] -[group_7748] -[group_7749] -[group_7750] -[group_7751] -[group_7752] -[group_7753] -[group_7754] -[group_7755] -[group_7756] -[group_7757] -[group_7758] -[group_7759] -[group_7760] -[group_7761] -[group_7762] -[group_7763] -[group_7764] -[group_7765] -[group_7766] -[group_7767] -[group_7768] -[group_7769] -[group_7770] -[group_7771] -[group_7772] -[group_7773] -[group_7774] -[group_7775] -[group_7776] -[group_7777] -[group_7778] -[group_7779] -[group_7780] -[group_7781] -[group_7782] -[group_7783] -[group_7784] -[group_7785] -[group_7786] -[group_7787] -[group_7788] -[group_7789] -[group_7790] -[group_7791] -[group_7792] -[group_7793] -[group_7794] -[group_7795] -[group_7796] -[group_7797] -[group_7798] -[group_7799] -[group_7800] -[group_7801] -[group_7802] -[group_7803] -[group_7804] -[group_7805] -[group_7806] -[group_7807] -[group_7808] -[group_7809] -[group_7810] -[group_7811] -[group_7812] -[group_7813] -[group_7814] -[group_7815] -[group_7816] -[group_7817] -[group_7818] -[group_7819] -[group_7820] -[group_7821] -[group_7822] -[group_7823] -[group_7824] -[group_7825] -[group_7826] -[group_7827] -[group_7828] -[group_7829] -[group_7830] -[group_7831] -[group_7832] -[group_7833] -[group_7834] -[group_7835] -[group_7836] -[group_7837] -[group_7838] -[group_7839] -[group_7840] -[group_7841] -[group_7842] -[group_7843] -[group_7844] -[group_7845] -[group_7846] -[group_7847] -[group_7848] -[group_7849] -[group_7850] -[group_7851] -[group_7852] -[group_7853] -[group_7854] -[group_7855] -[group_7856] -[group_7857] -[group_7858] -[group_7859] -[group_7860] -[group_7861] -[group_7862] -[group_7863] -[group_7864] -[group_7865] -[group_7866] -[group_7867] -[group_7868] -[group_7869] -[group_7870] -[group_7871] -[group_7872] -[group_7873] -[group_7874] -[group_7875] -[group_7876] -[group_7877] -[group_7878] -[group_7879] -[group_7880] -[group_7881] -[group_7882] -[group_7883] -[group_7884] -[group_7885] -[group_7886] -[group_7887] -[group_7888] -[group_7889] -[group_7890] -[group_7891] -[group_7892] -[group_7893] -[group_7894] -[group_7895] -[group_7896] -[group_7897] -[group_7898] -[group_7899] -[group_7900] -[group_7901] -[group_7902] -[group_7903] -[group_7904] -[group_7905] -[group_7906] -[group_7907] -[group_7908] -[group_7909] -[group_7910] -[group_7911] -[group_7912] -[group_7913] -[group_7914] -[group_7915] -[group_7916] -[group_7917] -[group_7918] -[group_7919] -[group_7920] -[group_7921] -[group_7922] -[group_7923] -[group_7924] -[group_7925] -[group_7926] -[group_7927] -[group_7928] -[group_7929] -[group_7930] -[group_7931] -[group_7932] -[group_7933] -[group_7934] -[group_7935] -[group_7936] -[group_7937] -[group_7938] -[group_7939] -[group_7940] -[group_7941] -[group_7942] -[group_7943] -[group_7944] -[group_7945] -[group_7946] -[group_7947] -[group_7948] -[group_7949] -[group_7950] -[group_7951] -[group_7952] -[group_7953] -[group_7954] -[group_7955] -[group_7956] -[group_7957] -[group_7958] -[group_7959] -[group_7960] -[group_7961] -[group_7962] -[group_7963] -[group_7964] -[group_7965] -[group_7966] -[group_7967] -[group_7968] -[group_7969] -[group_7970] -[group_7971] -[group_7972] -[group_7973] -[group_7974] -[group_7975] -[group_7976] -[group_7977] -[group_7978] -[group_7979] -[group_7980] -[group_7981] -[group_7982] -[group_7983] -[group_7984] -[group_7985] -[group_7986] -[group_7987] -[group_7988] -[group_7989] -[group_7990] -[group_7991] -[group_7992] -[group_7993] -[group_7994] -[group_7995] -[group_7996] -[group_7997] -[group_7998] -[group_7999] -[group_8000] -[group_8001] -[group_8002] -[group_8003] -[group_8004] -[group_8005] -[group_8006] -[group_8007] -[group_8008] -[group_8009] -[group_8010] -[group_8011] -[group_8012] -[group_8013] -[group_8014] -[group_8015] -[group_8016] -[group_8017] -[group_8018] -[group_8019] -[group_8020] -[group_8021] -[group_8022] -[group_8023] -[group_8024] -[group_8025] -[group_8026] -[group_8027] -[group_8028] -[group_8029] -[group_8030] -[group_8031] -[group_8032] -[group_8033] -[group_8034] -[group_8035] -[group_8036] -[group_8037] -[group_8038] -[group_8039] -[group_8040] -[group_8041] -[group_8042] -[group_8043] -[group_8044] -[group_8045] -[group_8046] -[group_8047] -[group_8048] -[group_8049] -[group_8050] -[group_8051] -[group_8052] -[group_8053] -[group_8054] -[group_8055] -[group_8056] -[group_8057] -[group_8058] -[group_8059] -[group_8060] -[group_8061] -[group_8062] -[group_8063] -[group_8064] -[group_8065] -[group_8066] -[group_8067] -[group_8068] -[group_8069] -[group_8070] -[group_8071] -[group_8072] -[group_8073] -[group_8074] -[group_8075] -[group_8076] -[group_8077] -[group_8078] -[group_8079] -[group_8080] -[group_8081] -[group_8082] -[group_8083] -[group_8084] -[group_8085] -[group_8086] -[group_8087] -[group_8088] -[group_8089] -[group_8090] -[group_8091] -[group_8092] -[group_8093] -[group_8094] -[group_8095] -[group_8096] -[group_8097] -[group_8098] -[group_8099] -[group_8100] -[group_8101] -[group_8102] -[group_8103] -[group_8104] -[group_8105] -[group_8106] -[group_8107] -[group_8108] -[group_8109] -[group_8110] -[group_8111] -[group_8112] -[group_8113] -[group_8114] -[group_8115] -[group_8116] -[group_8117] -[group_8118] -[group_8119] -[group_8120] -[group_8121] -[group_8122] -[group_8123] -[group_8124] -[group_8125] -[group_8126] -[group_8127] -[group_8128] -[group_8129] -[group_8130] -[group_8131] -[group_8132] -[group_8133] -[group_8134] -[group_8135] -[group_8136] -[group_8137] -[group_8138] -[group_8139] -[group_8140] -[group_8141] -[group_8142] -[group_8143] -[group_8144] -[group_8145] -[group_8146] -[group_8147] -[group_8148] -[group_8149] -[group_8150] -[group_8151] -[group_8152] -[group_8153] -[group_8154] -[group_8155] -[group_8156] -[group_8157] -[group_8158] -[group_8159] -[group_8160] -[group_8161] -[group_8162] -[group_8163] -[group_8164] -[group_8165] -[group_8166] -[group_8167] -[group_8168] -[group_8169] -[group_8170] -[group_8171] -[group_8172] -[group_8173] -[group_8174] -[group_8175] -[group_8176] -[group_8177] -[group_8178] -[group_8179] -[group_8180] -[group_8181] -[group_8182] -[group_8183] -[group_8184] -[group_8185] -[group_8186] -[group_8187] -[group_8188] -[group_8189] -[group_8190] -[group_8191] -[group_8192] -[group_8193] -[group_8194] -[group_8195] -[group_8196] -[group_8197] -[group_8198] -[group_8199] -[group_8200] -[group_8201] -[group_8202] -[group_8203] -[group_8204] -[group_8205] -[group_8206] -[group_8207] -[group_8208] -[group_8209] -[group_8210] -[group_8211] -[group_8212] -[group_8213] -[group_8214] -[group_8215] -[group_8216] -[group_8217] -[group_8218] -[group_8219] -[group_8220] -[group_8221] -[group_8222] -[group_8223] -[group_8224] -[group_8225] -[group_8226] -[group_8227] -[group_8228] -[group_8229] -[group_8230] -[group_8231] -[group_8232] -[group_8233] -[group_8234] -[group_8235] -[group_8236] -[group_8237] -[group_8238] -[group_8239] -[group_8240] -[group_8241] -[group_8242] -[group_8243] -[group_8244] -[group_8245] -[group_8246] -[group_8247] -[group_8248] -[group_8249] -[group_8250] -[group_8251] -[group_8252] -[group_8253] -[group_8254] -[group_8255] -[group_8256] -[group_8257] -[group_8258] -[group_8259] -[group_8260] -[group_8261] -[group_8262] -[group_8263] -[group_8264] -[group_8265] -[group_8266] -[group_8267] -[group_8268] -[group_8269] -[group_8270] -[group_8271] -[group_8272] -[group_8273] -[group_8274] -[group_8275] -[group_8276] -[group_8277] -[group_8278] -[group_8279] -[group_8280] -[group_8281] -[group_8282] -[group_8283] -[group_8284] -[group_8285] -[group_8286] -[group_8287] -[group_8288] -[group_8289] -[group_8290] -[group_8291] -[group_8292] -[group_8293] -[group_8294] -[group_8295] -[group_8296] -[group_8297] -[group_8298] -[group_8299] -[group_8300] -[group_8301] -[group_8302] -[group_8303] -[group_8304] -[group_8305] -[group_8306] -[group_8307] -[group_8308] -[group_8309] -[group_8310] -[group_8311] -[group_8312] -[group_8313] -[group_8314] -[group_8315] -[group_8316] -[group_8317] -[group_8318] -[group_8319] -[group_8320] -[group_8321] -[group_8322] -[group_8323] -[group_8324] -[group_8325] -[group_8326] -[group_8327] -[group_8328] -[group_8329] -[group_8330] -[group_8331] -[group_8332] -[group_8333] -[group_8334] -[group_8335] -[group_8336] -[group_8337] -[group_8338] -[group_8339] -[group_8340] -[group_8341] -[group_8342] -[group_8343] -[group_8344] -[group_8345] -[group_8346] -[group_8347] -[group_8348] -[group_8349] -[group_8350] -[group_8351] -[group_8352] -[group_8353] -[group_8354] -[group_8355] -[group_8356] -[group_8357] -[group_8358] -[group_8359] -[group_8360] -[group_8361] -[group_8362] -[group_8363] -[group_8364] -[group_8365] -[group_8366] -[group_8367] -[group_8368] -[group_8369] -[group_8370] -[group_8371] -[group_8372] -[group_8373] -[group_8374] -[group_8375] -[group_8376] -[group_8377] -[group_8378] -[group_8379] -[group_8380] -[group_8381] -[group_8382] -[group_8383] -[group_8384] -[group_8385] -[group_8386] -[group_8387] -[group_8388] -[group_8389] -[group_8390] -[group_8391] -[group_8392] -[group_8393] -[group_8394] -[group_8395] -[group_8396] -[group_8397] -[group_8398] -[group_8399] -[group_8400] -[group_8401] -[group_8402] -[group_8403] -[group_8404] -[group_8405] -[group_8406] -[group_8407] -[group_8408] -[group_8409] -[group_8410] -[group_8411] -[group_8412] -[group_8413] -[group_8414] -[group_8415] -[group_8416] -[group_8417] -[group_8418] -[group_8419] -[group_8420] -[group_8421] -[group_8422] -[group_8423] -[group_8424] -[group_8425] -[group_8426] -[group_8427] -[group_8428] -[group_8429] -[group_8430] -[group_8431] -[group_8432] -[group_8433] -[group_8434] -[group_8435] -[group_8436] -[group_8437] -[group_8438] -[group_8439] -[group_8440] -[group_8441] -[group_8442] -[group_8443] -[group_8444] -[group_8445] -[group_8446] -[group_8447] -[group_8448] -[group_8449] -[group_8450] -[group_8451] -[group_8452] -[group_8453] -[group_8454] -[group_8455] -[group_8456] -[group_8457] -[group_8458] -[group_8459] -[group_8460] -[group_8461] -[group_8462] -[group_8463] -[group_8464] -[group_8465] -[group_8466] -[group_8467] -[group_8468] -[group_8469] -[group_8470] -[group_8471] -[group_8472] -[group_8473] -[group_8474] -[group_8475] -[group_8476] -[group_8477] -[group_8478] -[group_8479] -[group_8480] -[group_8481] -[group_8482] -[group_8483] -[group_8484] -[group_8485] -[group_8486] -[group_8487] -[group_8488] -[group_8489] -[group_8490] -[group_8491] -[group_8492] -[group_8493] -[group_8494] -[group_8495] -[group_8496] -[group_8497] -[group_8498] -[group_8499] -[group_8500] -[group_8501] -[group_8502] -[group_8503] -[group_8504] -[group_8505] -[group_8506] -[group_8507] -[group_8508] -[group_8509] -[group_8510] -[group_8511] -[group_8512] -[group_8513] -[group_8514] -[group_8515] -[group_8516] -[group_8517] -[group_8518] -[group_8519] -[group_8520] -[group_8521] -[group_8522] -[group_8523] -[group_8524] -[group_8525] -[group_8526] -[group_8527] -[group_8528] -[group_8529] -[group_8530] -[group_8531] -[group_8532] -[group_8533] -[group_8534] -[group_8535] -[group_8536] -[group_8537] -[group_8538] -[group_8539] -[group_8540] -[group_8541] -[group_8542] -[group_8543] -[group_8544] -[group_8545] -[group_8546] -[group_8547] -[group_8548] -[group_8549] -[group_8550] -[group_8551] -[group_8552] -[group_8553] -[group_8554] -[group_8555] -[group_8556] -[group_8557] -[group_8558] -[group_8559] -[group_8560] -[group_8561] -[group_8562] -[group_8563] -[group_8564] -[group_8565] -[group_8566] -[group_8567] -[group_8568] -[group_8569] -[group_8570] -[group_8571] -[group_8572] -[group_8573] -[group_8574] -[group_8575] -[group_8576] -[group_8577] -[group_8578] -[group_8579] -[group_8580] -[group_8581] -[group_8582] -[group_8583] -[group_8584] -[group_8585] -[group_8586] -[group_8587] -[group_8588] -[group_8589] -[group_8590] -[group_8591] -[group_8592] -[group_8593] -[group_8594] -[group_8595] -[group_8596] -[group_8597] -[group_8598] -[group_8599] -[group_8600] -[group_8601] -[group_8602] -[group_8603] -[group_8604] -[group_8605] -[group_8606] -[group_8607] -[group_8608] -[group_8609] -[group_8610] -[group_8611] -[group_8612] -[group_8613] -[group_8614] -[group_8615] -[group_8616] -[group_8617] -[group_8618] -[group_8619] -[group_8620] -[group_8621] -[group_8622] -[group_8623] -[group_8624] -[group_8625] -[group_8626] -[group_8627] -[group_8628] -[group_8629] -[group_8630] -[group_8631] -[group_8632] -[group_8633] -[group_8634] -[group_8635] -[group_8636] -[group_8637] -[group_8638] -[group_8639] -[group_8640] -[group_8641] -[group_8642] -[group_8643] -[group_8644] -[group_8645] -[group_8646] -[group_8647] -[group_8648] -[group_8649] -[group_8650] -[group_8651] -[group_8652] -[group_8653] -[group_8654] -[group_8655] -[group_8656] -[group_8657] -[group_8658] -[group_8659] -[group_8660] -[group_8661] -[group_8662] -[group_8663] -[group_8664] -[group_8665] -[group_8666] -[group_8667] -[group_8668] -[group_8669] -[group_8670] -[group_8671] -[group_8672] -[group_8673] -[group_8674] -[group_8675] -[group_8676] -[group_8677] -[group_8678] -[group_8679] -[group_8680] -[group_8681] -[group_8682] -[group_8683] -[group_8684] -[group_8685] -[group_8686] -[group_8687] -[group_8688] -[group_8689] -[group_8690] -[group_8691] -[group_8692] -[group_8693] -[group_8694] -[group_8695] -[group_8696] -[group_8697] -[group_8698] -[group_8699] -[group_8700] -[group_8701] -[group_8702] -[group_8703] -[group_8704] -[group_8705] -[group_8706] -[group_8707] -[group_8708] -[group_8709] -[group_8710] -[group_8711] -[group_8712] -[group_8713] -[group_8714] -[group_8715] -[group_8716] -[group_8717] -[group_8718] -[group_8719] -[group_8720] -[group_8721] -[group_8722] -[group_8723] -[group_8724] -[group_8725] -[group_8726] -[group_8727] -[group_8728] -[group_8729] -[group_8730] -[group_8731] -[group_8732] -[group_8733] -[group_8734] -[group_8735] -[group_8736] -[group_8737] -[group_8738] -[group_8739] -[group_8740] -[group_8741] -[group_8742] -[group_8743] -[group_8744] -[group_8745] -[group_8746] -[group_8747] -[group_8748] -[group_8749] -[group_8750] -[group_8751] -[group_8752] -[group_8753] -[group_8754] -[group_8755] -[group_8756] -[group_8757] -[group_8758] -[group_8759] -[group_8760] -[group_8761] -[group_8762] -[group_8763] -[group_8764] -[group_8765] -[group_8766] -[group_8767] -[group_8768] -[group_8769] -[group_8770] -[group_8771] -[group_8772] -[group_8773] -[group_8774] -[group_8775] -[group_8776] -[group_8777] -[group_8778] -[group_8779] -[group_8780] -[group_8781] -[group_8782] -[group_8783] -[group_8784] -[group_8785] -[group_8786] -[group_8787] -[group_8788] -[group_8789] -[group_8790] -[group_8791] -[group_8792] -[group_8793] -[group_8794] -[group_8795] -[group_8796] -[group_8797] -[group_8798] -[group_8799] -[group_8800] -[group_8801] -[group_8802] -[group_8803] -[group_8804] -[group_8805] -[group_8806] -[group_8807] -[group_8808] -[group_8809] -[group_8810] -[group_8811] -[group_8812] -[group_8813] -[group_8814] -[group_8815] -[group_8816] -[group_8817] -[group_8818] -[group_8819] -[group_8820] -[group_8821] -[group_8822] -[group_8823] -[group_8824] -[group_8825] -[group_8826] -[group_8827] -[group_8828] -[group_8829] -[group_8830] -[group_8831] -[group_8832] -[group_8833] -[group_8834] -[group_8835] -[group_8836] -[group_8837] -[group_8838] -[group_8839] -[group_8840] -[group_8841] -[group_8842] -[group_8843] -[group_8844] -[group_8845] -[group_8846] -[group_8847] -[group_8848] -[group_8849] -[group_8850] -[group_8851] -[group_8852] -[group_8853] -[group_8854] -[group_8855] -[group_8856] -[group_8857] -[group_8858] -[group_8859] -[group_8860] -[group_8861] -[group_8862] -[group_8863] -[group_8864] -[group_8865] -[group_8866] -[group_8867] -[group_8868] -[group_8869] -[group_8870] -[group_8871] -[group_8872] -[group_8873] -[group_8874] -[group_8875] -[group_8876] -[group_8877] -[group_8878] -[group_8879] -[group_8880] -[group_8881] -[group_8882] -[group_8883] -[group_8884] -[group_8885] -[group_8886] -[group_8887] -[group_8888] -[group_8889] -[group_8890] -[group_8891] -[group_8892] -[group_8893] -[group_8894] -[group_8895] -[group_8896] -[group_8897] -[group_8898] -[group_8899] -[group_8900] -[group_8901] -[group_8902] -[group_8903] -[group_8904] -[group_8905] -[group_8906] -[group_8907] -[group_8908] -[group_8909] -[group_8910] -[group_8911] -[group_8912] -[group_8913] -[group_8914] -[group_8915] -[group_8916] -[group_8917] -[group_8918] -[group_8919] -[group_8920] -[group_8921] -[group_8922] -[group_8923] -[group_8924] -[group_8925] -[group_8926] -[group_8927] -[group_8928] -[group_8929] -[group_8930] -[group_8931] -[group_8932] -[group_8933] -[group_8934] -[group_8935] -[group_8936] -[group_8937] -[group_8938] -[group_8939] -[group_8940] -[group_8941] -[group_8942] -[group_8943] -[group_8944] -[group_8945] -[group_8946] -[group_8947] -[group_8948] -[group_8949] -[group_8950] -[group_8951] -[group_8952] -[group_8953] -[group_8954] -[group_8955] -[group_8956] -[group_8957] -[group_8958] -[group_8959] -[group_8960] -[group_8961] -[group_8962] -[group_8963] -[group_8964] -[group_8965] -[group_8966] -[group_8967] -[group_8968] -[group_8969] -[group_8970] -[group_8971] -[group_8972] -[group_8973] -[group_8974] -[group_8975] -[group_8976] -[group_8977] -[group_8978] -[group_8979] -[group_8980] -[group_8981] -[group_8982] -[group_8983] -[group_8984] -[group_8985] -[group_8986] -[group_8987] -[group_8988] -[group_8989] -[group_8990] -[group_8991] -[group_8992] -[group_8993] -[group_8994] -[group_8995] -[group_8996] -[group_8997] -[group_8998] -[group_8999] -[group_9000] -[group_9001] -[group_9002] -[group_9003] -[group_9004] -[group_9005] -[group_9006] -[group_9007] -[group_9008] -[group_9009] -[group_9010] -[group_9011] -[group_9012] -[group_9013] -[group_9014] -[group_9015] -[group_9016] -[group_9017] -[group_9018] -[group_9019] -[group_9020] -[group_9021] -[group_9022] -[group_9023] -[group_9024] -[group_9025] -[group_9026] -[group_9027] -[group_9028] -[group_9029] -[group_9030] -[group_9031] -[group_9032] -[group_9033] -[group_9034] -[group_9035] -[group_9036] -[group_9037] -[group_9038] -[group_9039] -[group_9040] -[group_9041] -[group_9042] -[group_9043] -[group_9044] -[group_9045] -[group_9046] -[group_9047] -[group_9048] -[group_9049] -[group_9050] -[group_9051] -[group_9052] -[group_9053] -[group_9054] -[group_9055] -[group_9056] -[group_9057] -[group_9058] -[group_9059] -[group_9060] -[group_9061] -[group_9062] -[group_9063] -[group_9064] -[group_9065] -[group_9066] -[group_9067] -[group_9068] -[group_9069] -[group_9070] -[group_9071] -[group_9072] -[group_9073] -[group_9074] -[group_9075] -[group_9076] -[group_9077] -[group_9078] -[group_9079] -[group_9080] -[group_9081] -[group_9082] -[group_9083] -[group_9084] -[group_9085] -[group_9086] -[group_9087] -[group_9088] -[group_9089] -[group_9090] -[group_9091] -[group_9092] -[group_9093] -[group_9094] -[group_9095] -[group_9096] -[group_9097] -[group_9098] -[group_9099] -[group_9100] -[group_9101] -[group_9102] -[group_9103] -[group_9104] -[group_9105] -[group_9106] -[group_9107] -[group_9108] -[group_9109] -[group_9110] -[group_9111] -[group_9112] -[group_9113] -[group_9114] -[group_9115] -[group_9116] -[group_9117] -[group_9118] -[group_9119] -[group_9120] -[group_9121] -[group_9122] -[group_9123] -[group_9124] -[group_9125] -[group_9126] -[group_9127] -[group_9128] -[group_9129] -[group_9130] -[group_9131] -[group_9132] -[group_9133] -[group_9134] -[group_9135] -[group_9136] -[group_9137] -[group_9138] -[group_9139] -[group_9140] -[group_9141] -[group_9142] -[group_9143] -[group_9144] -[group_9145] -[group_9146] -[group_9147] -[group_9148] -[group_9149] -[group_9150] -[group_9151] -[group_9152] -[group_9153] -[group_9154] -[group_9155] -[group_9156] -[group_9157] -[group_9158] -[group_9159] -[group_9160] -[group_9161] -[group_9162] -[group_9163] -[group_9164] -[group_9165] -[group_9166] -[group_9167] -[group_9168] -[group_9169] -[group_9170] -[group_9171] -[group_9172] -[group_9173] -[group_9174] -[group_9175] -[group_9176] -[group_9177] -[group_9178] -[group_9179] -[group_9180] -[group_9181] -[group_9182] -[group_9183] -[group_9184] -[group_9185] -[group_9186] -[group_9187] -[group_9188] -[group_9189] -[group_9190] -[group_9191] -[group_9192] -[group_9193] -[group_9194] -[group_9195] -[group_9196] -[group_9197] -[group_9198] -[group_9199] -[group_9200] -[group_9201] -[group_9202] -[group_9203] -[group_9204] -[group_9205] -[group_9206] -[group_9207] -[group_9208] -[group_9209] -[group_9210] -[group_9211] -[group_9212] -[group_9213] -[group_9214] -[group_9215] -[group_9216] -[group_9217] -[group_9218] -[group_9219] -[group_9220] -[group_9221] -[group_9222] -[group_9223] -[group_9224] -[group_9225] -[group_9226] -[group_9227] -[group_9228] -[group_9229] -[group_9230] -[group_9231] -[group_9232] -[group_9233] -[group_9234] -[group_9235] -[group_9236] -[group_9237] -[group_9238] -[group_9239] -[group_9240] -[group_9241] -[group_9242] -[group_9243] -[group_9244] -[group_9245] -[group_9246] -[group_9247] -[group_9248] -[group_9249] -[group_9250] -[group_9251] -[group_9252] -[group_9253] -[group_9254] -[group_9255] -[group_9256] -[group_9257] -[group_9258] -[group_9259] -[group_9260] -[group_9261] -[group_9262] -[group_9263] -[group_9264] -[group_9265] -[group_9266] -[group_9267] -[group_9268] -[group_9269] -[group_9270] -[group_9271] -[group_9272] -[group_9273] -[group_9274] -[group_9275] -[group_9276] -[group_9277] -[group_9278] -[group_9279] -[group_9280] -[group_9281] -[group_9282] -[group_9283] -[group_9284] -[group_9285] -[group_9286] -[group_9287] -[group_9288] -[group_9289] -[group_9290] -[group_9291] -[group_9292] -[group_9293] -[group_9294] -[group_9295] -[group_9296] -[group_9297] -[group_9298] -[group_9299] -[group_9300] -[group_9301] -[group_9302] -[group_9303] -[group_9304] -[group_9305] -[group_9306] -[group_9307] -[group_9308] -[group_9309] -[group_9310] -[group_9311] -[group_9312] -[group_9313] -[group_9314] -[group_9315] -[group_9316] -[group_9317] -[group_9318] -[group_9319] -[group_9320] -[group_9321] -[group_9322] -[group_9323] -[group_9324] -[group_9325] -[group_9326] -[group_9327] -[group_9328] -[group_9329] -[group_9330] -[group_9331] -[group_9332] -[group_9333] -[group_9334] -[group_9335] -[group_9336] -[group_9337] -[group_9338] -[group_9339] -[group_9340] -[group_9341] -[group_9342] -[group_9343] -[group_9344] -[group_9345] -[group_9346] -[group_9347] -[group_9348] -[group_9349] -[group_9350] -[group_9351] -[group_9352] -[group_9353] -[group_9354] -[group_9355] -[group_9356] -[group_9357] -[group_9358] -[group_9359] -[group_9360] -[group_9361] -[group_9362] -[group_9363] -[group_9364] -[group_9365] -[group_9366] -[group_9367] -[group_9368] -[group_9369] -[group_9370] -[group_9371] -[group_9372] -[group_9373] -[group_9374] -[group_9375] -[group_9376] -[group_9377] -[group_9378] -[group_9379] -[group_9380] -[group_9381] -[group_9382] -[group_9383] -[group_9384] -[group_9385] -[group_9386] -[group_9387] -[group_9388] -[group_9389] -[group_9390] -[group_9391] -[group_9392] -[group_9393] -[group_9394] -[group_9395] -[group_9396] -[group_9397] -[group_9398] -[group_9399] -[group_9400] -[group_9401] -[group_9402] -[group_9403] -[group_9404] -[group_9405] -[group_9406] -[group_9407] -[group_9408] -[group_9409] -[group_9410] -[group_9411] -[group_9412] -[group_9413] -[group_9414] -[group_9415] -[group_9416] -[group_9417] -[group_9418] -[group_9419] -[group_9420] -[group_9421] -[group_9422] -[group_9423] -[group_9424] -[group_9425] -[group_9426] -[group_9427] -[group_9428] -[group_9429] -[group_9430] -[group_9431] -[group_9432] -[group_9433] -[group_9434] -[group_9435] -[group_9436] -[group_9437] -[group_9438] -[group_9439] -[group_9440] -[group_9441] -[group_9442] -[group_9443] -[group_9444] -[group_9445] -[group_9446] -[group_9447] -[group_9448] -[group_9449] -[group_9450] -[group_9451] -[group_9452] -[group_9453] -[group_9454] -[group_9455] -[group_9456] -[group_9457] -[group_9458] -[group_9459] -[group_9460] -[group_9461] -[group_9462] -[group_9463] -[group_9464] -[group_9465] -[group_9466] -[group_9467] -[group_9468] -[group_9469] -[group_9470] -[group_9471] -[group_9472] -[group_9473] -[group_9474] -[group_9475] -[group_9476] -[group_9477] -[group_9478] -[group_9479] -[group_9480] -[group_9481] -[group_9482] -[group_9483] -[group_9484] -[group_9485] -[group_9486] -[group_9487] -[group_9488] -[group_9489] -[group_9490] -[group_9491] -[group_9492] -[group_9493] -[group_9494] -[group_9495] -[group_9496] -[group_9497] -[group_9498] -[group_9499] -[group_9500] -[group_9501] -[group_9502] -[group_9503] -[group_9504] -[group_9505] -[group_9506] -[group_9507] -[group_9508] -[group_9509] -[group_9510] -[group_9511] -[group_9512] -[group_9513] -[group_9514] -[group_9515] -[group_9516] -[group_9517] -[group_9518] -[group_9519] -[group_9520] -[group_9521] -[group_9522] -[group_9523] -[group_9524] -[group_9525] -[group_9526] -[group_9527] -[group_9528] -[group_9529] -[group_9530] -[group_9531] -[group_9532] -[group_9533] -[group_9534] -[group_9535] -[group_9536] -[group_9537] -[group_9538] -[group_9539] -[group_9540] -[group_9541] -[group_9542] -[group_9543] -[group_9544] -[group_9545] -[group_9546] -[group_9547] -[group_9548] -[group_9549] -[group_9550] -[group_9551] -[group_9552] -[group_9553] -[group_9554] -[group_9555] -[group_9556] -[group_9557] -[group_9558] -[group_9559] -[group_9560] -[group_9561] -[group_9562] -[group_9563] -[group_9564] -[group_9565] -[group_9566] -[group_9567] -[group_9568] -[group_9569] -[group_9570] -[group_9571] -[group_9572] -[group_9573] -[group_9574] -[group_9575] -[group_9576] -[group_9577] -[group_9578] -[group_9579] -[group_9580] -[group_9581] -[group_9582] -[group_9583] -[group_9584] -[group_9585] -[group_9586] -[group_9587] -[group_9588] -[group_9589] -[group_9590] -[group_9591] -[group_9592] -[group_9593] -[group_9594] -[group_9595] -[group_9596] -[group_9597] -[group_9598] -[group_9599] -[group_9600] -[group_9601] -[group_9602] -[group_9603] -[group_9604] -[group_9605] -[group_9606] -[group_9607] -[group_9608] -[group_9609] -[group_9610] -[group_9611] -[group_9612] -[group_9613] -[group_9614] -[group_9615] -[group_9616] -[group_9617] -[group_9618] -[group_9619] -[group_9620] -[group_9621] -[group_9622] -[group_9623] -[group_9624] -[group_9625] -[group_9626] -[group_9627] -[group_9628] -[group_9629] -[group_9630] -[group_9631] -[group_9632] -[group_9633] -[group_9634] -[group_9635] -[group_9636] -[group_9637] -[group_9638] -[group_9639] -[group_9640] -[group_9641] -[group_9642] -[group_9643] -[group_9644] -[group_9645] -[group_9646] -[group_9647] -[group_9648] -[group_9649] -[group_9650] -[group_9651] -[group_9652] -[group_9653] -[group_9654] -[group_9655] -[group_9656] -[group_9657] -[group_9658] -[group_9659] -[group_9660] -[group_9661] -[group_9662] -[group_9663] -[group_9664] -[group_9665] -[group_9666] -[group_9667] -[group_9668] -[group_9669] -[group_9670] -[group_9671] -[group_9672] -[group_9673] -[group_9674] -[group_9675] -[group_9676] -[group_9677] -[group_9678] -[group_9679] -[group_9680] -[group_9681] -[group_9682] -[group_9683] -[group_9684] -[group_9685] -[group_9686] -[group_9687] -[group_9688] -[group_9689] -[group_9690] -[group_9691] -[group_9692] -[group_9693] -[group_9694] -[group_9695] -[group_9696] -[group_9697] -[group_9698] -[group_9699] -[group_9700] -[group_9701] -[group_9702] -[group_9703] -[group_9704] -[group_9705] -[group_9706] -[group_9707] -[group_9708] -[group_9709] -[group_9710] -[group_9711] -[group_9712] -[group_9713] -[group_9714] -[group_9715] -[group_9716] -[group_9717] -[group_9718] -[group_9719] -[group_9720] -[group_9721] -[group_9722] -[group_9723] -[group_9724] -[group_9725] -[group_9726] -[group_9727] -[group_9728] -[group_9729] -[group_9730] -[group_9731] -[group_9732] -[group_9733] -[group_9734] -[group_9735] -[group_9736] -[group_9737] -[group_9738] -[group_9739] -[group_9740] -[group_9741] -[group_9742] -[group_9743] -[group_9744] -[group_9745] -[group_9746] -[group_9747] -[group_9748] -[group_9749] -[group_9750] -[group_9751] -[group_9752] -[group_9753] -[group_9754] -[group_9755] -[group_9756] -[group_9757] -[group_9758] -[group_9759] -[group_9760] -[group_9761] -[group_9762] -[group_9763] -[group_9764] -[group_9765] -[group_9766] -[group_9767] -[group_9768] -[group_9769] -[group_9770] -[group_9771] -[group_9772] -[group_9773] -[group_9774] -[group_9775] -[group_9776] -[group_9777] -[group_9778] -[group_9779] -[group_9780] -[group_9781] -[group_9782] -[group_9783] -[group_9784] -[group_9785] -[group_9786] -[group_9787] -[group_9788] -[group_9789] -[group_9790] -[group_9791] -[group_9792] -[group_9793] -[group_9794] -[group_9795] -[group_9796] -[group_9797] -[group_9798] -[group_9799] -[group_9800] -[group_9801] -[group_9802] -[group_9803] -[group_9804] -[group_9805] -[group_9806] -[group_9807] -[group_9808] -[group_9809] -[group_9810] -[group_9811] -[group_9812] -[group_9813] -[group_9814] -[group_9815] -[group_9816] -[group_9817] -[group_9818] -[group_9819] -[group_9820] -[group_9821] -[group_9822] -[group_9823] -[group_9824] -[group_9825] -[group_9826] -[group_9827] -[group_9828] -[group_9829] -[group_9830] -[group_9831] -[group_9832] -[group_9833] -[group_9834] -[group_9835] -[group_9836] -[group_9837] -[group_9838] -[group_9839] -[group_9840] -[group_9841] -[group_9842] -[group_9843] -[group_9844] -[group_9845] -[group_9846] -[group_9847] -[group_9848] -[group_9849] -[group_9850] -[group_9851] -[group_9852] -[group_9853] -[group_9854] -[group_9855] -[group_9856] -[group_9857] -[group_9858] -[group_9859] -[group_9860] -[group_9861] -[group_9862] -[group_9863] -[group_9864] -[group_9865] -[group_9866] -[group_9867] -[group_9868] -[group_9869] -[group_9870] -[group_9871] -[group_9872] -[group_9873] -[group_9874] -[group_9875] -[group_9876] -[group_9877] -[group_9878] -[group_9879] -[group_9880] -[group_9881] -[group_9882] -[group_9883] -[group_9884] -[group_9885] -[group_9886] -[group_9887] -[group_9888] -[group_9889] -[group_9890] -[group_9891] -[group_9892] -[group_9893] -[group_9894] -[group_9895] -[group_9896] -[group_9897] -[group_9898] -[group_9899] -[group_9900] -[group_9901] -[group_9902] -[group_9903] -[group_9904] -[group_9905] -[group_9906] -[group_9907] -[group_9908] -[group_9909] -[group_9910] -[group_9911] -[group_9912] -[group_9913] -[group_9914] -[group_9915] -[group_9916] -[group_9917] -[group_9918] -[group_9919] -[group_9920] -[group_9921] -[group_9922] -[group_9923] -[group_9924] -[group_9925] -[group_9926] -[group_9927] -[group_9928] -[group_9929] -[group_9930] -[group_9931] -[group_9932] -[group_9933] -[group_9934] -[group_9935] -[group_9936] -[group_9937] -[group_9938] -[group_9939] -[group_9940] -[group_9941] -[group_9942] -[group_9943] -[group_9944] -[group_9945] -[group_9946] -[group_9947] -[group_9948] -[group_9949] -[group_9950] -[group_9951] -[group_9952] -[group_9953] -[group_9954] -[group_9955] -[group_9956] -[group_9957] -[group_9958] -[group_9959] -[group_9960] -[group_9961] -[group_9962] -[group_9963] -[group_9964] -[group_9965] -[group_9966] -[group_9967] -[group_9968] -[group_9969] -[group_9970] -[group_9971] -[group_9972] -[group_9973] -[group_9974] -[group_9975] -[group_9976] -[group_9977] -[group_9978] -[group_9979] -[group_9980] -[group_9981] -[group_9982] -[group_9983] -[group_9984] -[group_9985] -[group_9986] -[group_9987] -[group_9988] -[group_9989] -[group_9990] -[group_9991] -[group_9992] -[group_9993] -[group_9994] -[group_9995] -[group_9996] -[group_9997] -[group_9998] -[group_9999] -[group_10000] -[group_10001] -[group_10002] -[group_10003] -[group_10004] -[group_10005] -[group_10006] -[group_10007] -[group_10008] -[group_10009] -[group_10010] -[group_10011] -[group_10012] -[group_10013] -[group_10014] -[group_10015] -[group_10016] -[group_10017] -[group_10018] -[group_10019] -[group_10020] -[group_10021] -[group_10022] -[group_10023] -[group_10024] -[group_10025] -[group_10026] -[group_10027] -[group_10028] -[group_10029] -[group_10030] -[group_10031] -[group_10032] -[group_10033] -[group_10034] -[group_10035] -[group_10036] -[group_10037] -[group_10038] -[group_10039] -[group_10040] -[group_10041] -[group_10042] -[group_10043] -[group_10044] -[group_10045] -[group_10046] -[group_10047] -[group_10048] -[group_10049] -[group_10050] -[group_10051] -[group_10052] -[group_10053] -[group_10054] -[group_10055] -[group_10056] -[group_10057] -[group_10058] -[group_10059] -[group_10060] -[group_10061] -[group_10062] -[group_10063] -[group_10064] -[group_10065] -[group_10066] -[group_10067] -[group_10068] -[group_10069] -[group_10070] -[group_10071] -[group_10072] -[group_10073] -[group_10074] -[group_10075] -[group_10076] -[group_10077] -[group_10078] -[group_10079] -[group_10080] -[group_10081] -[group_10082] -[group_10083] -[group_10084] -[group_10085] -[group_10086] -[group_10087] -[group_10088] -[group_10089] -[group_10090] -[group_10091] -[group_10092] -[group_10093] -[group_10094] -[group_10095] -[group_10096] -[group_10097] -[group_10098] -[group_10099] -[group_10100] -[group_10101] -[group_10102] -[group_10103] -[group_10104] -[group_10105] -[group_10106] -[group_10107] -[group_10108] -[group_10109] -[group_10110] -[group_10111] -[group_10112] -[group_10113] -[group_10114] -[group_10115] -[group_10116] -[group_10117] -[group_10118] -[group_10119] -[group_10120] -[group_10121] -[group_10122] -[group_10123] -[group_10124] -[group_10125] -[group_10126] -[group_10127] -[group_10128] -[group_10129] -[group_10130] -[group_10131] -[group_10132] -[group_10133] -[group_10134] -[group_10135] -[group_10136] -[group_10137] -[group_10138] -[group_10139] -[group_10140] -[group_10141] -[group_10142] -[group_10143] -[group_10144] -[group_10145] -[group_10146] -[group_10147] -[group_10148] -[group_10149] -[group_10150] -[group_10151] -[group_10152] -[group_10153] -[group_10154] -[group_10155] -[group_10156] -[group_10157] -[group_10158] -[group_10159] -[group_10160] -[group_10161] -[group_10162] -[group_10163] -[group_10164] -[group_10165] -[group_10166] -[group_10167] -[group_10168] -[group_10169] -[group_10170] -[group_10171] -[group_10172] -[group_10173] -[group_10174] -[group_10175] -[group_10176] -[group_10177] -[group_10178] -[group_10179] -[group_10180] -[group_10181] -[group_10182] -[group_10183] -[group_10184] -[group_10185] -[group_10186] -[group_10187] -[group_10188] -[group_10189] -[group_10190] -[group_10191] -[group_10192] -[group_10193] -[group_10194] -[group_10195] -[group_10196] -[group_10197] -[group_10198] -[group_10199] -[group_10200] -[group_10201] -[group_10202] -[group_10203] -[group_10204] -[group_10205] -[group_10206] -[group_10207] -[group_10208] -[group_10209] -[group_10210] -[group_10211] -[group_10212] -[group_10213] -[group_10214] -[group_10215] -[group_10216] -[group_10217] -[group_10218] -[group_10219] -[group_10220] -[group_10221] -[group_10222] -[group_10223] -[group_10224] -[group_10225] -[group_10226] -[group_10227] -[group_10228] -[group_10229] -[group_10230] -[group_10231] -[group_10232] -[group_10233] -[group_10234] -[group_10235] -[group_10236] -[group_10237] -[group_10238] -[group_10239] -[group_10240] -[group_10241] -[group_10242] -[group_10243] -[group_10244] -[group_10245] -[group_10246] -[group_10247] -[group_10248] -[group_10249] -[group_10250] -[group_10251] -[group_10252] -[group_10253] -[group_10254] -[group_10255] -[group_10256] -[group_10257] -[group_10258] -[group_10259] -[group_10260] -[group_10261] -[group_10262] -[group_10263] -[group_10264] -[group_10265] -[group_10266] -[group_10267] -[group_10268] -[group_10269] -[group_10270] -[group_10271] -[group_10272] -[group_10273] -[group_10274] -[group_10275] -[group_10276] -[group_10277] -[group_10278] -[group_10279] -[group_10280] -[group_10281] -[group_10282] -[group_10283] -[group_10284] -[group_10285] -[group_10286] -[group_10287] -[group_10288] -[group_10289] -[group_10290] -[group_10291] -[group_10292] -[group_10293] -[group_10294] -[group_10295] -[group_10296] -[group_10297] -[group_10298] -[group_10299] -[group_10300] -[group_10301] -[group_10302] -[group_10303] -[group_10304] -[group_10305] -[group_10306] -[group_10307] -[group_10308] -[group_10309] -[group_10310] -[group_10311] -[group_10312] -[group_10313] -[group_10314] -[group_10315] -[group_10316] -[group_10317] -[group_10318] -[group_10319] -[group_10320] -[group_10321] -[group_10322] -[group_10323] -[group_10324] -[group_10325] -[group_10326] -[group_10327] -[group_10328] -[group_10329] -[group_10330] -[group_10331] -[group_10332] -[group_10333] -[group_10334] -[group_10335] -[group_10336] -[group_10337] -[group_10338] -[group_10339] -[group_10340] -[group_10341] -[group_10342] -[group_10343] -[group_10344] -[group_10345] -[group_10346] -[group_10347] -[group_10348] -[group_10349] -[group_10350] -[group_10351] -[group_10352] -[group_10353] -[group_10354] -[group_10355] -[group_10356] -[group_10357] -[group_10358] -[group_10359] -[group_10360] -[group_10361] -[group_10362] -[group_10363] -[group_10364] -[group_10365] -[group_10366] -[group_10367] -[group_10368] -[group_10369] -[group_10370] -[group_10371] -[group_10372] -[group_10373] -[group_10374] -[group_10375] -[group_10376] -[group_10377] -[group_10378] -[group_10379] -[group_10380] -[group_10381] -[group_10382] -[group_10383] -[group_10384] -[group_10385] -[group_10386] -[group_10387] -[group_10388] -[group_10389] -[group_10390] -[group_10391] -[group_10392] -[group_10393] -[group_10394] -[group_10395] -[group_10396] -[group_10397] -[group_10398] -[group_10399] -[group_10400] -[group_10401] -[group_10402] -[group_10403] -[group_10404] -[group_10405] -[group_10406] -[group_10407] -[group_10408] -[group_10409] -[group_10410] -[group_10411] -[group_10412] -[group_10413] -[group_10414] -[group_10415] -[group_10416] -[group_10417] -[group_10418] -[group_10419] -[group_10420] -[group_10421] -[group_10422] -[group_10423] -[group_10424] -[group_10425] -[group_10426] -[group_10427] -[group_10428] -[group_10429] -[group_10430] -[group_10431] -[group_10432] -[group_10433] -[group_10434] -[group_10435] -[group_10436] -[group_10437] -[group_10438] -[group_10439] -[group_10440] -[group_10441] -[group_10442] -[group_10443] -[group_10444] -[group_10445] -[group_10446] -[group_10447] -[group_10448] -[group_10449] -[group_10450] -[group_10451] -[group_10452] -[group_10453] -[group_10454] -[group_10455] -[group_10456] -[group_10457] -[group_10458] -[group_10459] -[group_10460] -[group_10461] -[group_10462] -[group_10463] -[group_10464] -[group_10465] -[group_10466] -[group_10467] -[group_10468] -[group_10469] -[group_10470] -[group_10471] -[group_10472] -[group_10473] -[group_10474] -[group_10475] -[group_10476] -[group_10477] -[group_10478] -[group_10479] -[group_10480] -[group_10481] -[group_10482] -[group_10483] -[group_10484] -[group_10485] -[group_10486] -[group_10487] -[group_10488] -[group_10489] -[group_10490] -[group_10491] -[group_10492] -[group_10493] -[group_10494] -[group_10495] -[group_10496] -[group_10497] -[group_10498] -[group_10499] -[group_10500] -[group_10501] -[group_10502] -[group_10503] -[group_10504] -[group_10505] -[group_10506] -[group_10507] -[group_10508] -[group_10509] -[group_10510] -[group_10511] -[group_10512] -[group_10513] -[group_10514] -[group_10515] -[group_10516] -[group_10517] -[group_10518] -[group_10519] -[group_10520] -[group_10521] -[group_10522] -[group_10523] -[group_10524] -[group_10525] -[group_10526] -[group_10527] -[group_10528] -[group_10529] -[group_10530] -[group_10531] -[group_10532] -[group_10533] -[group_10534] -[group_10535] -[group_10536] -[group_10537] -[group_10538] -[group_10539] -[group_10540] -[group_10541] -[group_10542] -[group_10543] -[group_10544] -[group_10545] -[group_10546] -[group_10547] -[group_10548] -[group_10549] -[group_10550] -[group_10551] -[group_10552] -[group_10553] -[group_10554] -[group_10555] -[group_10556] -[group_10557] -[group_10558] -[group_10559] -[group_10560] -[group_10561] -[group_10562] -[group_10563] -[group_10564] -[group_10565] -[group_10566] -[group_10567] -[group_10568] -[group_10569] -[group_10570] -[group_10571] -[group_10572] -[group_10573] -[group_10574] -[group_10575] -[group_10576] -[group_10577] -[group_10578] -[group_10579] -[group_10580] -[group_10581] -[group_10582] -[group_10583] -[group_10584] -[group_10585] -[group_10586] -[group_10587] -[group_10588] -[group_10589] -[group_10590] -[group_10591] -[group_10592] -[group_10593] -[group_10594] -[group_10595] -[group_10596] -[group_10597] -[group_10598] -[group_10599] -[group_10600] -[group_10601] -[group_10602] -[group_10603] -[group_10604] -[group_10605] -[group_10606] -[group_10607] -[group_10608] -[group_10609] -[group_10610] -[group_10611] -[group_10612] -[group_10613] -[group_10614] -[group_10615] -[group_10616] -[group_10617] -[group_10618] -[group_10619] -[group_10620] -[group_10621] -[group_10622] -[group_10623] -[group_10624] -[group_10625] -[group_10626] -[group_10627] -[group_10628] -[group_10629] -[group_10630] -[group_10631] -[group_10632] -[group_10633] -[group_10634] -[group_10635] -[group_10636] -[group_10637] -[group_10638] -[group_10639] -[group_10640] -[group_10641] -[group_10642] -[group_10643] -[group_10644] -[group_10645] -[group_10646] -[group_10647] -[group_10648] -[group_10649] -[group_10650] -[group_10651] -[group_10652] -[group_10653] -[group_10654] -[group_10655] -[group_10656] -[group_10657] -[group_10658] -[group_10659] -[group_10660] -[group_10661] -[group_10662] -[group_10663] -[group_10664] -[group_10665] -[group_10666] -[group_10667] -[group_10668] -[group_10669] -[group_10670] -[group_10671] -[group_10672] -[group_10673] -[group_10674] -[group_10675] -[group_10676] -[group_10677] -[group_10678] -[group_10679] -[group_10680] -[group_10681] -[group_10682] -[group_10683] -[group_10684] -[group_10685] -[group_10686] -[group_10687] -[group_10688] -[group_10689] -[group_10690] -[group_10691] -[group_10692] -[group_10693] -[group_10694] -[group_10695] -[group_10696] -[group_10697] -[group_10698] -[group_10699] -[group_10700] -[group_10701] -[group_10702] -[group_10703] -[group_10704] -[group_10705] -[group_10706] -[group_10707] -[group_10708] -[group_10709] -[group_10710] -[group_10711] -[group_10712] -[group_10713] -[group_10714] -[group_10715] -[group_10716] -[group_10717] -[group_10718] -[group_10719] -[group_10720] -[group_10721] -[group_10722] -[group_10723] -[group_10724] -[group_10725] -[group_10726] -[group_10727] -[group_10728] -[group_10729] -[group_10730] -[group_10731] -[group_10732] -[group_10733] -[group_10734] -[group_10735] -[group_10736] -[group_10737] -[group_10738] -[group_10739] -[group_10740] -[group_10741] -[group_10742] -[group_10743] -[group_10744] -[group_10745] -[group_10746] -[group_10747] -[group_10748] -[group_10749] -[group_10750] -[group_10751] -[group_10752] -[group_10753] -[group_10754] -[group_10755] -[group_10756] -[group_10757] -[group_10758] -[group_10759] -[group_10760] -[group_10761] -[group_10762] -[group_10763] -[group_10764] -[group_10765] -[group_10766] -[group_10767] -[group_10768] -[group_10769] -[group_10770] -[group_10771] -[group_10772] -[group_10773] -[group_10774] -[group_10775] -[group_10776] -[group_10777] -[group_10778] -[group_10779] -[group_10780] -[group_10781] -[group_10782] -[group_10783] -[group_10784] -[group_10785] -[group_10786] -[group_10787] -[group_10788] -[group_10789] -[group_10790] -[group_10791] -[group_10792] -[group_10793] -[group_10794] -[group_10795] -[group_10796] -[group_10797] -[group_10798] -[group_10799] -[group_10800] -[group_10801] -[group_10802] -[group_10803] -[group_10804] -[group_10805] -[group_10806] -[group_10807] -[group_10808] -[group_10809] -[group_10810] -[group_10811] -[group_10812] -[group_10813] -[group_10814] -[group_10815] -[group_10816] -[group_10817] -[group_10818] -[group_10819] -[group_10820] -[group_10821] -[group_10822] -[group_10823] -[group_10824] -[group_10825] -[group_10826] -[group_10827] -[group_10828] -[group_10829] -[group_10830] -[group_10831] -[group_10832] -[group_10833] -[group_10834] -[group_10835] -[group_10836] -[group_10837] -[group_10838] -[group_10839] -[group_10840] -[group_10841] -[group_10842] -[group_10843] -[group_10844] -[group_10845] -[group_10846] -[group_10847] -[group_10848] -[group_10849] -[group_10850] -[group_10851] -[group_10852] -[group_10853] -[group_10854] -[group_10855] -[group_10856] -[group_10857] -[group_10858] -[group_10859] -[group_10860] -[group_10861] -[group_10862] -[group_10863] -[group_10864] -[group_10865] -[group_10866] -[group_10867] -[group_10868] -[group_10869] -[group_10870] -[group_10871] -[group_10872] -[group_10873] -[group_10874] -[group_10875] -[group_10876] -[group_10877] -[group_10878] -[group_10879] -[group_10880] -[group_10881] -[group_10882] -[group_10883] -[group_10884] -[group_10885] -[group_10886] -[group_10887] -[group_10888] -[group_10889] -[group_10890] -[group_10891] -[group_10892] -[group_10893] -[group_10894] -[group_10895] -[group_10896] -[group_10897] -[group_10898] -[group_10899] -[group_10900] -[group_10901] -[group_10902] -[group_10903] -[group_10904] -[group_10905] -[group_10906] -[group_10907] -[group_10908] -[group_10909] -[group_10910] -[group_10911] -[group_10912] -[group_10913] -[group_10914] -[group_10915] -[group_10916] -[group_10917] -[group_10918] -[group_10919] -[group_10920] -[group_10921] -[group_10922] -[group_10923] -[group_10924] -[group_10925] -[group_10926] -[group_10927] -[group_10928] -[group_10929] -[group_10930] -[group_10931] -[group_10932] -[group_10933] -[group_10934] -[group_10935] -[group_10936] -[group_10937] -[group_10938] -[group_10939] -[group_10940] -[group_10941] -[group_10942] -[group_10943] -[group_10944] -[group_10945] -[group_10946] -[group_10947] -[group_10948] -[group_10949] -[group_10950] -[group_10951] -[group_10952] -[group_10953] -[group_10954] -[group_10955] -[group_10956] -[group_10957] -[group_10958] -[group_10959] -[group_10960] -[group_10961] -[group_10962] -[group_10963] -[group_10964] -[group_10965] -[group_10966] -[group_10967] -[group_10968] -[group_10969] -[group_10970] -[group_10971] -[group_10972] -[group_10973] -[group_10974] -[group_10975] -[group_10976] -[group_10977] -[group_10978] -[group_10979] -[group_10980] -[group_10981] -[group_10982] -[group_10983] -[group_10984] -[group_10985] -[group_10986] -[group_10987] -[group_10988] -[group_10989] -[group_10990] -[group_10991] -[group_10992] -[group_10993] -[group_10994] -[group_10995] -[group_10996] -[group_10997] -[group_10998] -[group_10999] -[group_11000] -[group_11001] -[group_11002] -[group_11003] -[group_11004] -[group_11005] -[group_11006] -[group_11007] -[group_11008] -[group_11009] -[group_11010] -[group_11011] -[group_11012] -[group_11013] -[group_11014] -[group_11015] -[group_11016] -[group_11017] -[group_11018] -[group_11019] -[group_11020] -[group_11021] -[group_11022] -[group_11023] -[group_11024] -[group_11025] -[group_11026] -[group_11027] -[group_11028] -[group_11029] -[group_11030] -[group_11031] -[group_11032] -[group_11033] -[group_11034] -[group_11035] -[group_11036] -[group_11037] -[group_11038] -[group_11039] -[group_11040] -[group_11041] -[group_11042] -[group_11043] -[group_11044] -[group_11045] -[group_11046] -[group_11047] -[group_11048] -[group_11049] -[group_11050] -[group_11051] -[group_11052] -[group_11053] -[group_11054] -[group_11055] -[group_11056] -[group_11057] -[group_11058] -[group_11059] -[group_11060] -[group_11061] -[group_11062] -[group_11063] -[group_11064] -[group_11065] -[group_11066] -[group_11067] -[group_11068] -[group_11069] -[group_11070] -[group_11071] -[group_11072] -[group_11073] -[group_11074] -[group_11075] -[group_11076] -[group_11077] -[group_11078] -[group_11079] -[group_11080] -[group_11081] -[group_11082] -[group_11083] -[group_11084] -[group_11085] -[group_11086] -[group_11087] -[group_11088] -[group_11089] -[group_11090] -[group_11091] -[group_11092] -[group_11093] -[group_11094] -[group_11095] -[group_11096] -[group_11097] -[group_11098] -[group_11099] -[group_11100] -[group_11101] -[group_11102] -[group_11103] -[group_11104] -[group_11105] -[group_11106] -[group_11107] -[group_11108] -[group_11109] -[group_11110] -[group_11111] -[group_11112] -[group_11113] -[group_11114] -[group_11115] -[group_11116] -[group_11117] -[group_11118] -[group_11119] -[group_11120] -[group_11121] -[group_11122] -[group_11123] -[group_11124] -[group_11125] -[group_11126] -[group_11127] -[group_11128] -[group_11129] -[group_11130] -[group_11131] -[group_11132] -[group_11133] -[group_11134] -[group_11135] -[group_11136] -[group_11137] -[group_11138] -[group_11139] -[group_11140] -[group_11141] -[group_11142] -[group_11143] -[group_11144] -[group_11145] -[group_11146] -[group_11147] -[group_11148] -[group_11149] -[group_11150] -[group_11151] -[group_11152] -[group_11153] -[group_11154] -[group_11155] -[group_11156] -[group_11157] -[group_11158] -[group_11159] -[group_11160] -[group_11161] -[group_11162] -[group_11163] -[group_11164] -[group_11165] -[group_11166] -[group_11167] -[group_11168] -[group_11169] -[group_11170] -[group_11171] -[group_11172] -[group_11173] -[group_11174] -[group_11175] -[group_11176] -[group_11177] -[group_11178] -[group_11179] -[group_11180] -[group_11181] -[group_11182] -[group_11183] -[group_11184] -[group_11185] -[group_11186] -[group_11187] -[group_11188] -[group_11189] -[group_11190] -[group_11191] -[group_11192] -[group_11193] -[group_11194] -[group_11195] -[group_11196] -[group_11197] -[group_11198] -[group_11199] -[group_11200] -[group_11201] -[group_11202] -[group_11203] -[group_11204] -[group_11205] -[group_11206] -[group_11207] -[group_11208] -[group_11209] -[group_11210] -[group_11211] -[group_11212] -[group_11213] -[group_11214] -[group_11215] -[group_11216] -[group_11217] -[group_11218] -[group_11219] -[group_11220] -[group_11221] -[group_11222] -[group_11223] -[group_11224] -[group_11225] -[group_11226] -[group_11227] -[group_11228] -[group_11229] -[group_11230] -[group_11231] -[group_11232] -[group_11233] -[group_11234] -[group_11235] -[group_11236] -[group_11237] -[group_11238] -[group_11239] -[group_11240] -[group_11241] -[group_11242] -[group_11243] -[group_11244] -[group_11245] -[group_11246] -[group_11247] -[group_11248] -[group_11249] -[group_11250] -[group_11251] -[group_11252] -[group_11253] -[group_11254] -[group_11255] -[group_11256] -[group_11257] -[group_11258] -[group_11259] -[group_11260] -[group_11261] -[group_11262] -[group_11263] -[group_11264] -[group_11265] -[group_11266] -[group_11267] -[group_11268] -[group_11269] -[group_11270] -[group_11271] -[group_11272] -[group_11273] -[group_11274] -[group_11275] -[group_11276] -[group_11277] -[group_11278] -[group_11279] -[group_11280] -[group_11281] -[group_11282] -[group_11283] -[group_11284] -[group_11285] -[group_11286] -[group_11287] -[group_11288] -[group_11289] -[group_11290] -[group_11291] -[group_11292] -[group_11293] -[group_11294] -[group_11295] -[group_11296] -[group_11297] -[group_11298] -[group_11299] -[group_11300] -[group_11301] -[group_11302] -[group_11303] -[group_11304] -[group_11305] -[group_11306] -[group_11307] -[group_11308] -[group_11309] -[group_11310] -[group_11311] -[group_11312] -[group_11313] -[group_11314] -[group_11315] -[group_11316] -[group_11317] -[group_11318] -[group_11319] -[group_11320] -[group_11321] -[group_11322] -[group_11323] -[group_11324] -[group_11325] -[group_11326] -[group_11327] -[group_11328] -[group_11329] -[group_11330] -[group_11331] -[group_11332] -[group_11333] -[group_11334] -[group_11335] -[group_11336] -[group_11337] -[group_11338] -[group_11339] -[group_11340] -[group_11341] -[group_11342] -[group_11343] -[group_11344] -[group_11345] -[group_11346] -[group_11347] -[group_11348] -[group_11349] -[group_11350] -[group_11351] -[group_11352] -[group_11353] -[group_11354] -[group_11355] -[group_11356] -[group_11357] -[group_11358] -[group_11359] -[group_11360] -[group_11361] -[group_11362] -[group_11363] -[group_11364] -[group_11365] -[group_11366] -[group_11367] -[group_11368] -[group_11369] -[group_11370] -[group_11371] -[group_11372] -[group_11373] -[group_11374] -[group_11375] -[group_11376] -[group_11377] -[group_11378] -[group_11379] -[group_11380] -[group_11381] -[group_11382] -[group_11383] -[group_11384] -[group_11385] -[group_11386] -[group_11387] -[group_11388] -[group_11389] -[group_11390] -[group_11391] -[group_11392] -[group_11393] -[group_11394] -[group_11395] -[group_11396] -[group_11397] -[group_11398] -[group_11399] -[group_11400] -[group_11401] -[group_11402] -[group_11403] -[group_11404] -[group_11405] -[group_11406] -[group_11407] -[group_11408] -[group_11409] -[group_11410] -[group_11411] -[group_11412] -[group_11413] -[group_11414] -[group_11415] -[group_11416] -[group_11417] -[group_11418] -[group_11419] -[group_11420] -[group_11421] -[group_11422] -[group_11423] -[group_11424] -[group_11425] -[group_11426] -[group_11427] -[group_11428] -[group_11429] -[group_11430] -[group_11431] -[group_11432] -[group_11433] -[group_11434] -[group_11435] -[group_11436] -[group_11437] -[group_11438] -[group_11439] -[group_11440] -[group_11441] -[group_11442] -[group_11443] -[group_11444] -[group_11445] -[group_11446] -[group_11447] -[group_11448] -[group_11449] -[group_11450] -[group_11451] -[group_11452] -[group_11453] -[group_11454] -[group_11455] -[group_11456] -[group_11457] -[group_11458] -[group_11459] -[group_11460] -[group_11461] -[group_11462] -[group_11463] -[group_11464] -[group_11465] -[group_11466] -[group_11467] -[group_11468] -[group_11469] -[group_11470] -[group_11471] -[group_11472] -[group_11473] -[group_11474] -[group_11475] -[group_11476] -[group_11477] -[group_11478] -[group_11479] -[group_11480] -[group_11481] -[group_11482] -[group_11483] -[group_11484] -[group_11485] -[group_11486] -[group_11487] -[group_11488] -[group_11489] -[group_11490] -[group_11491] -[group_11492] -[group_11493] -[group_11494] -[group_11495] -[group_11496] -[group_11497] -[group_11498] -[group_11499] -[group_11500] -[group_11501] -[group_11502] -[group_11503] -[group_11504] -[group_11505] -[group_11506] -[group_11507] -[group_11508] -[group_11509] -[group_11510] -[group_11511] -[group_11512] -[group_11513] -[group_11514] -[group_11515] -[group_11516] -[group_11517] -[group_11518] -[group_11519] -[group_11520] -[group_11521] -[group_11522] -[group_11523] -[group_11524] -[group_11525] -[group_11526] -[group_11527] -[group_11528] -[group_11529] -[group_11530] -[group_11531] -[group_11532] -[group_11533] -[group_11534] -[group_11535] -[group_11536] -[group_11537] -[group_11538] -[group_11539] -[group_11540] -[group_11541] -[group_11542] -[group_11543] -[group_11544] -[group_11545] -[group_11546] -[group_11547] -[group_11548] -[group_11549] -[group_11550] -[group_11551] -[group_11552] -[group_11553] -[group_11554] -[group_11555] -[group_11556] -[group_11557] -[group_11558] -[group_11559] -[group_11560] -[group_11561] -[group_11562] -[group_11563] -[group_11564] -[group_11565] -[group_11566] -[group_11567] -[group_11568] -[group_11569] -[group_11570] -[group_11571] -[group_11572] -[group_11573] -[group_11574] -[group_11575] -[group_11576] -[group_11577] -[group_11578] -[group_11579] -[group_11580] -[group_11581] -[group_11582] -[group_11583] -[group_11584] -[group_11585] -[group_11586] -[group_11587] -[group_11588] -[group_11589] -[group_11590] -[group_11591] -[group_11592] -[group_11593] -[group_11594] -[group_11595] -[group_11596] -[group_11597] -[group_11598] -[group_11599] -[group_11600] -[group_11601] -[group_11602] -[group_11603] -[group_11604] -[group_11605] -[group_11606] -[group_11607] -[group_11608] -[group_11609] -[group_11610] -[group_11611] -[group_11612] -[group_11613] -[group_11614] -[group_11615] -[group_11616] -[group_11617] -[group_11618] -[group_11619] -[group_11620] -[group_11621] -[group_11622] -[group_11623] -[group_11624] -[group_11625] -[group_11626] -[group_11627] -[group_11628] -[group_11629] -[group_11630] -[group_11631] -[group_11632] -[group_11633] -[group_11634] -[group_11635] -[group_11636] -[group_11637] -[group_11638] -[group_11639] -[group_11640] -[group_11641] -[group_11642] -[group_11643] -[group_11644] -[group_11645] -[group_11646] -[group_11647] -[group_11648] -[group_11649] -[group_11650] -[group_11651] -[group_11652] -[group_11653] -[group_11654] -[group_11655] -[group_11656] -[group_11657] -[group_11658] -[group_11659] -[group_11660] -[group_11661] -[group_11662] -[group_11663] -[group_11664] -[group_11665] -[group_11666] -[group_11667] -[group_11668] -[group_11669] -[group_11670] -[group_11671] -[group_11672] -[group_11673] -[group_11674] -[group_11675] -[group_11676] -[group_11677] -[group_11678] -[group_11679] -[group_11680] -[group_11681] -[group_11682] -[group_11683] -[group_11684] -[group_11685] -[group_11686] -[group_11687] -[group_11688] -[group_11689] -[group_11690] -[group_11691] -[group_11692] -[group_11693] -[group_11694] -[group_11695] -[group_11696] -[group_11697] -[group_11698] -[group_11699] -[group_11700] -[group_11701] -[group_11702] -[group_11703] -[group_11704] -[group_11705] -[group_11706] -[group_11707] -[group_11708] -[group_11709] -[group_11710] -[group_11711] -[group_11712] -[group_11713] -[group_11714] -[group_11715] -[group_11716] -[group_11717] -[group_11718] -[group_11719] -[group_11720] -[group_11721] -[group_11722] -[group_11723] -[group_11724] -[group_11725] -[group_11726] -[group_11727] -[group_11728] -[group_11729] -[group_11730] -[group_11731] -[group_11732] -[group_11733] -[group_11734] -[group_11735] -[group_11736] -[group_11737] -[group_11738] -[group_11739] -[group_11740] -[group_11741] -[group_11742] -[group_11743] -[group_11744] -[group_11745] -[group_11746] -[group_11747] -[group_11748] -[group_11749] -[group_11750] -[group_11751] -[group_11752] -[group_11753] -[group_11754] -[group_11755] -[group_11756] -[group_11757] -[group_11758] -[group_11759] -[group_11760] -[group_11761] -[group_11762] -[group_11763] -[group_11764] -[group_11765] -[group_11766] -[group_11767] -[group_11768] -[group_11769] -[group_11770] -[group_11771] -[group_11772] -[group_11773] -[group_11774] -[group_11775] -[group_11776] -[group_11777] -[group_11778] -[group_11779] -[group_11780] -[group_11781] -[group_11782] -[group_11783] -[group_11784] -[group_11785] -[group_11786] -[group_11787] -[group_11788] -[group_11789] -[group_11790] -[group_11791] -[group_11792] -[group_11793] -[group_11794] -[group_11795] -[group_11796] -[group_11797] -[group_11798] -[group_11799] -[group_11800] -[group_11801] -[group_11802] -[group_11803] -[group_11804] -[group_11805] -[group_11806] -[group_11807] -[group_11808] -[group_11809] -[group_11810] -[group_11811] -[group_11812] -[group_11813] -[group_11814] -[group_11815] -[group_11816] -[group_11817] -[group_11818] -[group_11819] -[group_11820] -[group_11821] -[group_11822] -[group_11823] -[group_11824] -[group_11825] -[group_11826] -[group_11827] -[group_11828] -[group_11829] -[group_11830] -[group_11831] -[group_11832] -[group_11833] -[group_11834] -[group_11835] -[group_11836] -[group_11837] -[group_11838] -[group_11839] -[group_11840] -[group_11841] -[group_11842] -[group_11843] -[group_11844] -[group_11845] -[group_11846] -[group_11847] -[group_11848] -[group_11849] -[group_11850] -[group_11851] -[group_11852] -[group_11853] -[group_11854] -[group_11855] -[group_11856] -[group_11857] -[group_11858] -[group_11859] -[group_11860] -[group_11861] -[group_11862] -[group_11863] -[group_11864] -[group_11865] -[group_11866] -[group_11867] -[group_11868] -[group_11869] -[group_11870] -[group_11871] -[group_11872] -[group_11873] -[group_11874] -[group_11875] -[group_11876] -[group_11877] -[group_11878] -[group_11879] -[group_11880] -[group_11881] -[group_11882] -[group_11883] -[group_11884] -[group_11885] -[group_11886] -[group_11887] -[group_11888] -[group_11889] -[group_11890] -[group_11891] -[group_11892] -[group_11893] -[group_11894] -[group_11895] -[group_11896] -[group_11897] -[group_11898] -[group_11899] -[group_11900] -[group_11901] -[group_11902] -[group_11903] -[group_11904] -[group_11905] -[group_11906] -[group_11907] -[group_11908] -[group_11909] -[group_11910] -[group_11911] -[group_11912] -[group_11913] -[group_11914] -[group_11915] -[group_11916] -[group_11917] -[group_11918] -[group_11919] -[group_11920] -[group_11921] -[group_11922] -[group_11923] -[group_11924] -[group_11925] -[group_11926] -[group_11927] -[group_11928] -[group_11929] -[group_11930] -[group_11931] -[group_11932] -[group_11933] -[group_11934] -[group_11935] -[group_11936] -[group_11937] -[group_11938] -[group_11939] -[group_11940] -[group_11941] -[group_11942] -[group_11943] -[group_11944] -[group_11945] -[group_11946] -[group_11947] -[group_11948] -[group_11949] -[group_11950] -[group_11951] -[group_11952] -[group_11953] -[group_11954] -[group_11955] -[group_11956] -[group_11957] -[group_11958] -[group_11959] -[group_11960] -[group_11961] -[group_11962] -[group_11963] -[group_11964] -[group_11965] -[group_11966] -[group_11967] -[group_11968] -[group_11969] -[group_11970] -[group_11971] -[group_11972] -[group_11973] -[group_11974] -[group_11975] -[group_11976] -[group_11977] -[group_11978] -[group_11979] -[group_11980] -[group_11981] -[group_11982] -[group_11983] -[group_11984] -[group_11985] -[group_11986] -[group_11987] -[group_11988] -[group_11989] -[group_11990] -[group_11991] -[group_11992] -[group_11993] -[group_11994] -[group_11995] -[group_11996] -[group_11997] -[group_11998] -[group_11999] -[group_12000] -[group_12001] -[group_12002] -[group_12003] -[group_12004] -[group_12005] -[group_12006] -[group_12007] -[group_12008] -[group_12009] -[group_12010] -[group_12011] -[group_12012] -[group_12013] -[group_12014] -[group_12015] -[group_12016] -[group_12017] -[group_12018] -[group_12019] -[group_12020] -[group_12021] -[group_12022] -[group_12023] -[group_12024] -[group_12025] -[group_12026] -[group_12027] -[group_12028] -[group_12029] -[group_12030] -[group_12031] -[group_12032] -[group_12033] -[group_12034] -[group_12035] -[group_12036] -[group_12037] -[group_12038] -[group_12039] -[group_12040] -[group_12041] -[group_12042] -[group_12043] -[group_12044] -[group_12045] -[group_12046] -[group_12047] -[group_12048] -[group_12049] -[group_12050] -[group_12051] -[group_12052] -[group_12053] -[group_12054] -[group_12055] -[group_12056] -[group_12057] -[group_12058] -[group_12059] -[group_12060] -[group_12061] -[group_12062] -[group_12063] -[group_12064] -[group_12065] -[group_12066] -[group_12067] -[group_12068] -[group_12069] -[group_12070] -[group_12071] -[group_12072] -[group_12073] -[group_12074] -[group_12075] -[group_12076] -[group_12077] -[group_12078] -[group_12079] -[group_12080] -[group_12081] -[group_12082] -[group_12083] -[group_12084] -[group_12085] -[group_12086] -[group_12087] -[group_12088] -[group_12089] -[group_12090] -[group_12091] -[group_12092] -[group_12093] -[group_12094] -[group_12095] -[group_12096] -[group_12097] -[group_12098] -[group_12099] -[group_12100] -[group_12101] -[group_12102] -[group_12103] -[group_12104] -[group_12105] -[group_12106] -[group_12107] -[group_12108] -[group_12109] -[group_12110] -[group_12111] -[group_12112] -[group_12113] -[group_12114] -[group_12115] -[group_12116] -[group_12117] -[group_12118] -[group_12119] -[group_12120] -[group_12121] -[group_12122] -[group_12123] -[group_12124] -[group_12125] -[group_12126] -[group_12127] -[group_12128] -[group_12129] -[group_12130] -[group_12131] -[group_12132] -[group_12133] -[group_12134] -[group_12135] -[group_12136] -[group_12137] -[group_12138] -[group_12139] -[group_12140] -[group_12141] -[group_12142] -[group_12143] -[group_12144] -[group_12145] -[group_12146] -[group_12147] -[group_12148] -[group_12149] -[group_12150] -[group_12151] -[group_12152] -[group_12153] -[group_12154] -[group_12155] -[group_12156] -[group_12157] -[group_12158] -[group_12159] -[group_12160] -[group_12161] -[group_12162] -[group_12163] -[group_12164] -[group_12165] -[group_12166] -[group_12167] -[group_12168] -[group_12169] -[group_12170] -[group_12171] -[group_12172] -[group_12173] -[group_12174] -[group_12175] -[group_12176] -[group_12177] -[group_12178] -[group_12179] -[group_12180] -[group_12181] -[group_12182] -[group_12183] -[group_12184] -[group_12185] -[group_12186] -[group_12187] -[group_12188] -[group_12189] -[group_12190] -[group_12191] -[group_12192] -[group_12193] -[group_12194] -[group_12195] -[group_12196] -[group_12197] -[group_12198] -[group_12199] -[group_12200] -[group_12201] -[group_12202] -[group_12203] -[group_12204] -[group_12205] -[group_12206] -[group_12207] -[group_12208] -[group_12209] -[group_12210] -[group_12211] -[group_12212] -[group_12213] -[group_12214] -[group_12215] -[group_12216] -[group_12217] -[group_12218] -[group_12219] -[group_12220] -[group_12221] -[group_12222] -[group_12223] -[group_12224] -[group_12225] -[group_12226] -[group_12227] -[group_12228] -[group_12229] -[group_12230] -[group_12231] -[group_12232] -[group_12233] -[group_12234] -[group_12235] -[group_12236] -[group_12237] -[group_12238] -[group_12239] -[group_12240] -[group_12241] -[group_12242] -[group_12243] -[group_12244] -[group_12245] -[group_12246] -[group_12247] -[group_12248] -[group_12249] -[group_12250] -[group_12251] -[group_12252] -[group_12253] -[group_12254] -[group_12255] -[group_12256] -[group_12257] -[group_12258] -[group_12259] -[group_12260] -[group_12261] -[group_12262] -[group_12263] -[group_12264] -[group_12265] -[group_12266] -[group_12267] -[group_12268] -[group_12269] -[group_12270] -[group_12271] -[group_12272] -[group_12273] -[group_12274] -[group_12275] -[group_12276] -[group_12277] -[group_12278] -[group_12279] -[group_12280] -[group_12281] -[group_12282] -[group_12283] -[group_12284] -[group_12285] -[group_12286] -[group_12287] -[group_12288] -[group_12289] -[group_12290] -[group_12291] -[group_12292] -[group_12293] -[group_12294] -[group_12295] -[group_12296] -[group_12297] -[group_12298] -[group_12299] -[group_12300] -[group_12301] -[group_12302] -[group_12303] -[group_12304] -[group_12305] -[group_12306] -[group_12307] -[group_12308] -[group_12309] -[group_12310] -[group_12311] -[group_12312] -[group_12313] -[group_12314] -[group_12315] -[group_12316] -[group_12317] -[group_12318] -[group_12319] -[group_12320] -[group_12321] -[group_12322] -[group_12323] -[group_12324] -[group_12325] -[group_12326] -[group_12327] -[group_12328] -[group_12329] -[group_12330] -[group_12331] -[group_12332] -[group_12333] -[group_12334] -[group_12335] -[group_12336] -[group_12337] -[group_12338] -[group_12339] -[group_12340] -[group_12341] -[group_12342] -[group_12343] -[group_12344] -[group_12345] -[group_12346] -[group_12347] -[group_12348] -[group_12349] -[group_12350] -[group_12351] -[group_12352] -[group_12353] -[group_12354] -[group_12355] -[group_12356] -[group_12357] -[group_12358] -[group_12359] -[group_12360] -[group_12361] -[group_12362] -[group_12363] -[group_12364] -[group_12365] -[group_12366] -[group_12367] -[group_12368] -[group_12369] -[group_12370] -[group_12371] -[group_12372] -[group_12373] -[group_12374] -[group_12375] -[group_12376] -[group_12377] -[group_12378] -[group_12379] -[group_12380] -[group_12381] -[group_12382] -[group_12383] -[group_12384] -[group_12385] -[group_12386] -[group_12387] -[group_12388] -[group_12389] -[group_12390] -[group_12391] -[group_12392] -[group_12393] -[group_12394] -[group_12395] -[group_12396] -[group_12397] -[group_12398] -[group_12399] -[group_12400] -[group_12401] -[group_12402] -[group_12403] -[group_12404] -[group_12405] -[group_12406] -[group_12407] -[group_12408] -[group_12409] -[group_12410] -[group_12411] -[group_12412] -[group_12413] -[group_12414] -[group_12415] -[group_12416] -[group_12417] -[group_12418] -[group_12419] -[group_12420] -[group_12421] -[group_12422] -[group_12423] -[group_12424] -[group_12425] -[group_12426] -[group_12427] -[group_12428] -[group_12429] -[group_12430] -[group_12431] -[group_12432] -[group_12433] -[group_12434] -[group_12435] -[group_12436] -[group_12437] -[group_12438] -[group_12439] -[group_12440] -[group_12441] -[group_12442] -[group_12443] -[group_12444] -[group_12445] -[group_12446] -[group_12447] -[group_12448] -[group_12449] -[group_12450] -[group_12451] -[group_12452] -[group_12453] -[group_12454] -[group_12455] -[group_12456] -[group_12457] -[group_12458] -[group_12459] -[group_12460] -[group_12461] -[group_12462] -[group_12463] -[group_12464] -[group_12465] -[group_12466] -[group_12467] -[group_12468] -[group_12469] -[group_12470] -[group_12471] -[group_12472] -[group_12473] -[group_12474] -[group_12475] -[group_12476] -[group_12477] -[group_12478] -[group_12479] -[group_12480] -[group_12481] -[group_12482] -[group_12483] -[group_12484] -[group_12485] -[group_12486] -[group_12487] -[group_12488] -[group_12489] -[group_12490] -[group_12491] -[group_12492] -[group_12493] -[group_12494] -[group_12495] -[group_12496] -[group_12497] -[group_12498] -[group_12499] -[group_12500] -[group_12501] -[group_12502] -[group_12503] -[group_12504] -[group_12505] -[group_12506] -[group_12507] -[group_12508] -[group_12509] -[group_12510] -[group_12511] -[group_12512] -[group_12513] -[group_12514] -[group_12515] -[group_12516] -[group_12517] -[group_12518] -[group_12519] -[group_12520] -[group_12521] -[group_12522] -[group_12523] -[group_12524] -[group_12525] -[group_12526] -[group_12527] -[group_12528] -[group_12529] -[group_12530] -[group_12531] -[group_12532] -[group_12533] -[group_12534] -[group_12535] -[group_12536] -[group_12537] -[group_12538] -[group_12539] -[group_12540] -[group_12541] -[group_12542] -[group_12543] -[group_12544] -[group_12545] -[group_12546] -[group_12547] -[group_12548] -[group_12549] -[group_12550] -[group_12551] -[group_12552] -[group_12553] -[group_12554] -[group_12555] -[group_12556] -[group_12557] -[group_12558] -[group_12559] -[group_12560] -[group_12561] -[group_12562] -[group_12563] -[group_12564] -[group_12565] -[group_12566] -[group_12567] -[group_12568] -[group_12569] -[group_12570] -[group_12571] -[group_12572] -[group_12573] -[group_12574] -[group_12575] -[group_12576] -[group_12577] -[group_12578] -[group_12579] -[group_12580] -[group_12581] -[group_12582] -[group_12583] -[group_12584] -[group_12585] -[group_12586] -[group_12587] -[group_12588] -[group_12589] -[group_12590] -[group_12591] -[group_12592] -[group_12593] -[group_12594] -[group_12595] -[group_12596] -[group_12597] -[group_12598] -[group_12599] -[group_12600] -[group_12601] -[group_12602] -[group_12603] -[group_12604] -[group_12605] -[group_12606] -[group_12607] -[group_12608] -[group_12609] -[group_12610] -[group_12611] -[group_12612] -[group_12613] -[group_12614] -[group_12615] -[group_12616] -[group_12617] -[group_12618] -[group_12619] -[group_12620] -[group_12621] -[group_12622] -[group_12623] -[group_12624] -[group_12625] -[group_12626] -[group_12627] -[group_12628] -[group_12629] -[group_12630] -[group_12631] -[group_12632] -[group_12633] -[group_12634] -[group_12635] -[group_12636] -[group_12637] -[group_12638] -[group_12639] -[group_12640] -[group_12641] -[group_12642] -[group_12643] -[group_12644] -[group_12645] -[group_12646] -[group_12647] -[group_12648] -[group_12649] -[group_12650] -[group_12651] -[group_12652] -[group_12653] -[group_12654] -[group_12655] -[group_12656] -[group_12657] -[group_12658] -[group_12659] -[group_12660] -[group_12661] -[group_12662] -[group_12663] -[group_12664] -[group_12665] -[group_12666] -[group_12667] -[group_12668] -[group_12669] -[group_12670] -[group_12671] -[group_12672] -[group_12673] -[group_12674] -[group_12675] -[group_12676] -[group_12677] -[group_12678] -[group_12679] -[group_12680] -[group_12681] -[group_12682] -[group_12683] -[group_12684] -[group_12685] -[group_12686] -[group_12687] -[group_12688] -[group_12689] -[group_12690] -[group_12691] -[group_12692] -[group_12693] -[group_12694] -[group_12695] -[group_12696] -[group_12697] -[group_12698] -[group_12699] -[group_12700] -[group_12701] -[group_12702] -[group_12703] -[group_12704] -[group_12705] -[group_12706] -[group_12707] -[group_12708] -[group_12709] -[group_12710] -[group_12711] -[group_12712] -[group_12713] -[group_12714] -[group_12715] -[group_12716] -[group_12717] -[group_12718] -[group_12719] -[group_12720] -[group_12721] -[group_12722] -[group_12723] -[group_12724] -[group_12725] -[group_12726] -[group_12727] -[group_12728] -[group_12729] -[group_12730] -[group_12731] -[group_12732] -[group_12733] -[group_12734] -[group_12735] -[group_12736] -[group_12737] -[group_12738] -[group_12739] -[group_12740] -[group_12741] -[group_12742] -[group_12743] -[group_12744] -[group_12745] -[group_12746] -[group_12747] -[group_12748] -[group_12749] -[group_12750] -[group_12751] -[group_12752] -[group_12753] -[group_12754] -[group_12755] -[group_12756] -[group_12757] -[group_12758] -[group_12759] -[group_12760] -[group_12761] -[group_12762] -[group_12763] -[group_12764] -[group_12765] -[group_12766] -[group_12767] -[group_12768] -[group_12769] -[group_12770] -[group_12771] -[group_12772] -[group_12773] -[group_12774] -[group_12775] -[group_12776] -[group_12777] -[group_12778] -[group_12779] -[group_12780] -[group_12781] -[group_12782] -[group_12783] -[group_12784] -[group_12785] -[group_12786] -[group_12787] -[group_12788] -[group_12789] -[group_12790] -[group_12791] -[group_12792] -[group_12793] -[group_12794] -[group_12795] -[group_12796] -[group_12797] -[group_12798] -[group_12799] -[group_12800] -[group_12801] -[group_12802] -[group_12803] -[group_12804] -[group_12805] -[group_12806] -[group_12807] -[group_12808] -[group_12809] -[group_12810] -[group_12811] -[group_12812] -[group_12813] -[group_12814] -[group_12815] -[group_12816] -[group_12817] -[group_12818] -[group_12819] -[group_12820] -[group_12821] -[group_12822] -[group_12823] -[group_12824] -[group_12825] -[group_12826] -[group_12827] -[group_12828] -[group_12829] -[group_12830] -[group_12831] -[group_12832] -[group_12833] -[group_12834] -[group_12835] -[group_12836] -[group_12837] -[group_12838] -[group_12839] -[group_12840] -[group_12841] -[group_12842] -[group_12843] -[group_12844] -[group_12845] -[group_12846] -[group_12847] -[group_12848] -[group_12849] -[group_12850] -[group_12851] -[group_12852] -[group_12853] -[group_12854] -[group_12855] -[group_12856] -[group_12857] -[group_12858] -[group_12859] -[group_12860] -[group_12861] -[group_12862] -[group_12863] -[group_12864] -[group_12865] -[group_12866] -[group_12867] -[group_12868] -[group_12869] -[group_12870] -[group_12871] -[group_12872] -[group_12873] -[group_12874] -[group_12875] -[group_12876] -[group_12877] -[group_12878] -[group_12879] -[group_12880] -[group_12881] -[group_12882] -[group_12883] -[group_12884] -[group_12885] -[group_12886] -[group_12887] -[group_12888] -[group_12889] -[group_12890] -[group_12891] -[group_12892] -[group_12893] -[group_12894] -[group_12895] -[group_12896] -[group_12897] -[group_12898] -[group_12899] -[group_12900] -[group_12901] -[group_12902] -[group_12903] -[group_12904] -[group_12905] -[group_12906] -[group_12907] -[group_12908] -[group_12909] -[group_12910] -[group_12911] -[group_12912] -[group_12913] -[group_12914] -[group_12915] -[group_12916] -[group_12917] -[group_12918] -[group_12919] -[group_12920] -[group_12921] -[group_12922] -[group_12923] -[group_12924] -[group_12925] -[group_12926] -[group_12927] -[group_12928] -[group_12929] -[group_12930] -[group_12931] -[group_12932] -[group_12933] -[group_12934] -[group_12935] -[group_12936] -[group_12937] -[group_12938] -[group_12939] -[group_12940] -[group_12941] -[group_12942] -[group_12943] -[group_12944] -[group_12945] -[group_12946] -[group_12947] -[group_12948] -[group_12949] -[group_12950] -[group_12951] -[group_12952] -[group_12953] -[group_12954] -[group_12955] -[group_12956] -[group_12957] -[group_12958] -[group_12959] -[group_12960] -[group_12961] -[group_12962] -[group_12963] -[group_12964] -[group_12965] -[group_12966] -[group_12967] -[group_12968] -[group_12969] -[group_12970] -[group_12971] -[group_12972] -[group_12973] -[group_12974] -[group_12975] -[group_12976] -[group_12977] -[group_12978] -[group_12979] -[group_12980] -[group_12981] -[group_12982] -[group_12983] -[group_12984] -[group_12985] -[group_12986] -[group_12987] -[group_12988] -[group_12989] -[group_12990] -[group_12991] -[group_12992] -[group_12993] -[group_12994] -[group_12995] -[group_12996] -[group_12997] -[group_12998] -[group_12999] -[group_13000] -[group_13001] -[group_13002] -[group_13003] -[group_13004] -[group_13005] -[group_13006] -[group_13007] -[group_13008] -[group_13009] -[group_13010] -[group_13011] -[group_13012] -[group_13013] -[group_13014] -[group_13015] -[group_13016] -[group_13017] -[group_13018] -[group_13019] -[group_13020] -[group_13021] -[group_13022] -[group_13023] -[group_13024] -[group_13025] -[group_13026] -[group_13027] -[group_13028] -[group_13029] -[group_13030] -[group_13031] -[group_13032] -[group_13033] -[group_13034] -[group_13035] -[group_13036] -[group_13037] -[group_13038] -[group_13039] -[group_13040] -[group_13041] -[group_13042] -[group_13043] -[group_13044] -[group_13045] -[group_13046] -[group_13047] -[group_13048] -[group_13049] -[group_13050] -[group_13051] -[group_13052] -[group_13053] -[group_13054] -[group_13055] -[group_13056] -[group_13057] -[group_13058] -[group_13059] -[group_13060] -[group_13061] -[group_13062] -[group_13063] -[group_13064] -[group_13065] -[group_13066] -[group_13067] -[group_13068] -[group_13069] -[group_13070] -[group_13071] -[group_13072] -[group_13073] -[group_13074] -[group_13075] -[group_13076] -[group_13077] -[group_13078] -[group_13079] -[group_13080] -[group_13081] -[group_13082] -[group_13083] -[group_13084] -[group_13085] -[group_13086] -[group_13087] -[group_13088] -[group_13089] -[group_13090] -[group_13091] -[group_13092] -[group_13093] -[group_13094] -[group_13095] -[group_13096] -[group_13097] -[group_13098] -[group_13099] -[group_13100] -[group_13101] -[group_13102] -[group_13103] -[group_13104] -[group_13105] -[group_13106] -[group_13107] -[group_13108] -[group_13109] -[group_13110] -[group_13111] -[group_13112] -[group_13113] -[group_13114] -[group_13115] -[group_13116] -[group_13117] -[group_13118] -[group_13119] -[group_13120] -[group_13121] -[group_13122] -[group_13123] -[group_13124] -[group_13125] -[group_13126] -[group_13127] -[group_13128] -[group_13129] -[group_13130] -[group_13131] -[group_13132] -[group_13133] -[group_13134] -[group_13135] -[group_13136] -[group_13137] -[group_13138] -[group_13139] -[group_13140] -[group_13141] -[group_13142] -[group_13143] -[group_13144] -[group_13145] -[group_13146] -[group_13147] -[group_13148] -[group_13149] -[group_13150] -[group_13151] -[group_13152] -[group_13153] -[group_13154] -[group_13155] -[group_13156] -[group_13157] -[group_13158] -[group_13159] -[group_13160] -[group_13161] -[group_13162] -[group_13163] -[group_13164] -[group_13165] -[group_13166] -[group_13167] -[group_13168] -[group_13169] -[group_13170] -[group_13171] -[group_13172] -[group_13173] -[group_13174] -[group_13175] -[group_13176] -[group_13177] -[group_13178] -[group_13179] -[group_13180] -[group_13181] -[group_13182] -[group_13183] -[group_13184] -[group_13185] -[group_13186] -[group_13187] -[group_13188] -[group_13189] -[group_13190] -[group_13191] -[group_13192] -[group_13193] -[group_13194] -[group_13195] -[group_13196] -[group_13197] -[group_13198] -[group_13199] -[group_13200] -[group_13201] -[group_13202] -[group_13203] -[group_13204] -[group_13205] -[group_13206] -[group_13207] -[group_13208] -[group_13209] -[group_13210] -[group_13211] -[group_13212] -[group_13213] -[group_13214] -[group_13215] -[group_13216] -[group_13217] -[group_13218] -[group_13219] -[group_13220] -[group_13221] -[group_13222] -[group_13223] -[group_13224] -[group_13225] -[group_13226] -[group_13227] -[group_13228] -[group_13229] -[group_13230] -[group_13231] -[group_13232] -[group_13233] -[group_13234] -[group_13235] -[group_13236] -[group_13237] -[group_13238] -[group_13239] -[group_13240] -[group_13241] -[group_13242] -[group_13243] -[group_13244] -[group_13245] -[group_13246] -[group_13247] -[group_13248] -[group_13249] -[group_13250] -[group_13251] -[group_13252] -[group_13253] -[group_13254] -[group_13255] -[group_13256] -[group_13257] -[group_13258] -[group_13259] -[group_13260] -[group_13261] -[group_13262] -[group_13263] -[group_13264] -[group_13265] -[group_13266] -[group_13267] -[group_13268] -[group_13269] -[group_13270] -[group_13271] -[group_13272] -[group_13273] -[group_13274] -[group_13275] -[group_13276] -[group_13277] -[group_13278] -[group_13279] -[group_13280] -[group_13281] -[group_13282] -[group_13283] -[group_13284] -[group_13285] -[group_13286] -[group_13287] -[group_13288] -[group_13289] -[group_13290] -[group_13291] -[group_13292] -[group_13293] -[group_13294] -[group_13295] -[group_13296] -[group_13297] -[group_13298] -[group_13299] -[group_13300] -[group_13301] -[group_13302] -[group_13303] -[group_13304] -[group_13305] -[group_13306] -[group_13307] -[group_13308] -[group_13309] -[group_13310] -[group_13311] -[group_13312] -[group_13313] -[group_13314] -[group_13315] -[group_13316] -[group_13317] -[group_13318] -[group_13319] -[group_13320] -[group_13321] -[group_13322] -[group_13323] -[group_13324] -[group_13325] -[group_13326] -[group_13327] -[group_13328] -[group_13329] -[group_13330] -[group_13331] -[group_13332] -[group_13333] -[group_13334] -[group_13335] -[group_13336] -[group_13337] -[group_13338] -[group_13339] -[group_13340] -[group_13341] -[group_13342] -[group_13343] -[group_13344] -[group_13345] -[group_13346] -[group_13347] -[group_13348] -[group_13349] -[group_13350] -[group_13351] -[group_13352] -[group_13353] -[group_13354] -[group_13355] -[group_13356] -[group_13357] -[group_13358] -[group_13359] -[group_13360] -[group_13361] -[group_13362] -[group_13363] -[group_13364] -[group_13365] -[group_13366] -[group_13367] -[group_13368] -[group_13369] -[group_13370] -[group_13371] -[group_13372] -[group_13373] -[group_13374] -[group_13375] -[group_13376] -[group_13377] -[group_13378] -[group_13379] -[group_13380] -[group_13381] -[group_13382] -[group_13383] -[group_13384] -[group_13385] -[group_13386] -[group_13387] -[group_13388] -[group_13389] -[group_13390] -[group_13391] -[group_13392] -[group_13393] -[group_13394] -[group_13395] -[group_13396] -[group_13397] -[group_13398] -[group_13399] -[group_13400] -[group_13401] -[group_13402] -[group_13403] -[group_13404] -[group_13405] -[group_13406] -[group_13407] -[group_13408] -[group_13409] -[group_13410] -[group_13411] -[group_13412] -[group_13413] -[group_13414] -[group_13415] -[group_13416] -[group_13417] -[group_13418] -[group_13419] -[group_13420] -[group_13421] -[group_13422] -[group_13423] -[group_13424] -[group_13425] -[group_13426] -[group_13427] -[group_13428] -[group_13429] -[group_13430] -[group_13431] -[group_13432] -[group_13433] -[group_13434] -[group_13435] -[group_13436] -[group_13437] -[group_13438] -[group_13439] -[group_13440] -[group_13441] -[group_13442] -[group_13443] -[group_13444] -[group_13445] -[group_13446] -[group_13447] -[group_13448] -[group_13449] -[group_13450] -[group_13451] -[group_13452] -[group_13453] -[group_13454] -[group_13455] -[group_13456] -[group_13457] -[group_13458] -[group_13459] -[group_13460] -[group_13461] -[group_13462] -[group_13463] -[group_13464] -[group_13465] -[group_13466] -[group_13467] -[group_13468] -[group_13469] -[group_13470] -[group_13471] -[group_13472] -[group_13473] -[group_13474] -[group_13475] -[group_13476] -[group_13477] -[group_13478] -[group_13479] -[group_13480] -[group_13481] -[group_13482] -[group_13483] -[group_13484] -[group_13485] -[group_13486] -[group_13487] -[group_13488] -[group_13489] -[group_13490] -[group_13491] -[group_13492] -[group_13493] -[group_13494] -[group_13495] -[group_13496] -[group_13497] -[group_13498] -[group_13499] -[group_13500] -[group_13501] -[group_13502] -[group_13503] -[group_13504] -[group_13505] -[group_13506] -[group_13507] -[group_13508] -[group_13509] -[group_13510] -[group_13511] -[group_13512] -[group_13513] -[group_13514] -[group_13515] -[group_13516] -[group_13517] -[group_13518] -[group_13519] -[group_13520] -[group_13521] -[group_13522] -[group_13523] -[group_13524] -[group_13525] -[group_13526] -[group_13527] -[group_13528] -[group_13529] -[group_13530] -[group_13531] -[group_13532] -[group_13533] -[group_13534] -[group_13535] -[group_13536] -[group_13537] -[group_13538] -[group_13539] -[group_13540] -[group_13541] -[group_13542] -[group_13543] -[group_13544] -[group_13545] -[group_13546] -[group_13547] -[group_13548] -[group_13549] -[group_13550] -[group_13551] -[group_13552] -[group_13553] -[group_13554] -[group_13555] -[group_13556] -[group_13557] -[group_13558] -[group_13559] -[group_13560] -[group_13561] -[group_13562] -[group_13563] -[group_13564] -[group_13565] -[group_13566] -[group_13567] -[group_13568] -[group_13569] -[group_13570] -[group_13571] -[group_13572] -[group_13573] -[group_13574] -[group_13575] -[group_13576] -[group_13577] -[group_13578] -[group_13579] -[group_13580] -[group_13581] -[group_13582] -[group_13583] -[group_13584] -[group_13585] -[group_13586] -[group_13587] -[group_13588] -[group_13589] -[group_13590] -[group_13591] -[group_13592] -[group_13593] -[group_13594] -[group_13595] -[group_13596] -[group_13597] -[group_13598] -[group_13599] -[group_13600] -[group_13601] -[group_13602] -[group_13603] -[group_13604] -[group_13605] -[group_13606] -[group_13607] -[group_13608] -[group_13609] -[group_13610] -[group_13611] -[group_13612] -[group_13613] -[group_13614] -[group_13615] -[group_13616] -[group_13617] -[group_13618] -[group_13619] -[group_13620] -[group_13621] -[group_13622] -[group_13623] -[group_13624] -[group_13625] -[group_13626] -[group_13627] -[group_13628] -[group_13629] -[group_13630] -[group_13631] -[group_13632] -[group_13633] -[group_13634] -[group_13635] -[group_13636] -[group_13637] -[group_13638] -[group_13639] -[group_13640] -[group_13641] -[group_13642] -[group_13643] -[group_13644] -[group_13645] -[group_13646] -[group_13647] -[group_13648] -[group_13649] -[group_13650] -[group_13651] -[group_13652] -[group_13653] -[group_13654] -[group_13655] -[group_13656] -[group_13657] -[group_13658] -[group_13659] -[group_13660] -[group_13661] -[group_13662] -[group_13663] -[group_13664] -[group_13665] -[group_13666] -[group_13667] -[group_13668] -[group_13669] -[group_13670] -[group_13671] -[group_13672] -[group_13673] -[group_13674] -[group_13675] -[group_13676] -[group_13677] -[group_13678] -[group_13679] -[group_13680] -[group_13681] -[group_13682] -[group_13683] -[group_13684] -[group_13685] -[group_13686] -[group_13687] -[group_13688] -[group_13689] -[group_13690] -[group_13691] -[group_13692] -[group_13693] -[group_13694] -[group_13695] -[group_13696] -[group_13697] -[group_13698] -[group_13699] -[group_13700] -[group_13701] -[group_13702] -[group_13703] -[group_13704] -[group_13705] -[group_13706] -[group_13707] -[group_13708] -[group_13709] -[group_13710] -[group_13711] -[group_13712] -[group_13713] -[group_13714] -[group_13715] -[group_13716] -[group_13717] -[group_13718] -[group_13719] -[group_13720] -[group_13721] -[group_13722] -[group_13723] -[group_13724] -[group_13725] -[group_13726] -[group_13727] -[group_13728] -[group_13729] -[group_13730] -[group_13731] -[group_13732] -[group_13733] -[group_13734] -[group_13735] -[group_13736] -[group_13737] -[group_13738] -[group_13739] -[group_13740] -[group_13741] -[group_13742] -[group_13743] -[group_13744] -[group_13745] -[group_13746] -[group_13747] -[group_13748] -[group_13749] -[group_13750] -[group_13751] -[group_13752] -[group_13753] -[group_13754] -[group_13755] -[group_13756] -[group_13757] -[group_13758] -[group_13759] -[group_13760] -[group_13761] -[group_13762] -[group_13763] -[group_13764] -[group_13765] -[group_13766] -[group_13767] -[group_13768] -[group_13769] -[group_13770] -[group_13771] -[group_13772] -[group_13773] -[group_13774] -[group_13775] -[group_13776] -[group_13777] -[group_13778] -[group_13779] -[group_13780] -[group_13781] -[group_13782] -[group_13783] -[group_13784] -[group_13785] -[group_13786] -[group_13787] -[group_13788] -[group_13789] -[group_13790] -[group_13791] -[group_13792] -[group_13793] -[group_13794] -[group_13795] -[group_13796] -[group_13797] -[group_13798] -[group_13799] -[group_13800] -[group_13801] -[group_13802] -[group_13803] -[group_13804] -[group_13805] -[group_13806] -[group_13807] -[group_13808] -[group_13809] -[group_13810] -[group_13811] -[group_13812] -[group_13813] -[group_13814] -[group_13815] -[group_13816] -[group_13817] -[group_13818] -[group_13819] -[group_13820] -[group_13821] -[group_13822] -[group_13823] -[group_13824] -[group_13825] -[group_13826] -[group_13827] -[group_13828] -[group_13829] -[group_13830] -[group_13831] -[group_13832] -[group_13833] -[group_13834] -[group_13835] -[group_13836] -[group_13837] -[group_13838] -[group_13839] -[group_13840] -[group_13841] -[group_13842] -[group_13843] -[group_13844] -[group_13845] -[group_13846] -[group_13847] -[group_13848] -[group_13849] -[group_13850] -[group_13851] -[group_13852] -[group_13853] -[group_13854] -[group_13855] -[group_13856] -[group_13857] -[group_13858] -[group_13859] -[group_13860] -[group_13861] -[group_13862] -[group_13863] -[group_13864] -[group_13865] -[group_13866] -[group_13867] -[group_13868] -[group_13869] -[group_13870] -[group_13871] -[group_13872] -[group_13873] -[group_13874] -[group_13875] -[group_13876] -[group_13877] -[group_13878] -[group_13879] -[group_13880] -[group_13881] -[group_13882] -[group_13883] -[group_13884] -[group_13885] -[group_13886] -[group_13887] -[group_13888] -[group_13889] -[group_13890] -[group_13891] -[group_13892] -[group_13893] -[group_13894] -[group_13895] -[group_13896] -[group_13897] -[group_13898] -[group_13899] -[group_13900] -[group_13901] -[group_13902] -[group_13903] -[group_13904] -[group_13905] -[group_13906] -[group_13907] -[group_13908] -[group_13909] -[group_13910] -[group_13911] -[group_13912] -[group_13913] -[group_13914] -[group_13915] -[group_13916] -[group_13917] -[group_13918] -[group_13919] -[group_13920] -[group_13921] -[group_13922] -[group_13923] -[group_13924] -[group_13925] -[group_13926] -[group_13927] -[group_13928] -[group_13929] -[group_13930] -[group_13931] -[group_13932] -[group_13933] -[group_13934] -[group_13935] -[group_13936] -[group_13937] -[group_13938] -[group_13939] -[group_13940] -[group_13941] -[group_13942] -[group_13943] -[group_13944] -[group_13945] -[group_13946] -[group_13947] -[group_13948] -[group_13949] -[group_13950] -[group_13951] -[group_13952] -[group_13953] -[group_13954] -[group_13955] -[group_13956] -[group_13957] -[group_13958] -[group_13959] -[group_13960] -[group_13961] -[group_13962] -[group_13963] -[group_13964] -[group_13965] -[group_13966] -[group_13967] -[group_13968] -[group_13969] -[group_13970] -[group_13971] -[group_13972] -[group_13973] -[group_13974] -[group_13975] -[group_13976] -[group_13977] -[group_13978] -[group_13979] -[group_13980] -[group_13981] -[group_13982] -[group_13983] -[group_13984] -[group_13985] -[group_13986] -[group_13987] -[group_13988] -[group_13989] -[group_13990] -[group_13991] -[group_13992] -[group_13993] -[group_13994] -[group_13995] -[group_13996] -[group_13997] -[group_13998] -[group_13999] -[group_14000] -[group_14001] -[group_14002] -[group_14003] -[group_14004] -[group_14005] -[group_14006] -[group_14007] -[group_14008] -[group_14009] -[group_14010] -[group_14011] -[group_14012] -[group_14013] -[group_14014] -[group_14015] -[group_14016] -[group_14017] -[group_14018] -[group_14019] -[group_14020] -[group_14021] -[group_14022] -[group_14023] -[group_14024] -[group_14025] -[group_14026] -[group_14027] -[group_14028] -[group_14029] -[group_14030] -[group_14031] -[group_14032] -[group_14033] -[group_14034] -[group_14035] -[group_14036] -[group_14037] -[group_14038] -[group_14039] -[group_14040] -[group_14041] -[group_14042] -[group_14043] -[group_14044] -[group_14045] -[group_14046] -[group_14047] -[group_14048] -[group_14049] -[group_14050] -[group_14051] -[group_14052] -[group_14053] -[group_14054] -[group_14055] -[group_14056] -[group_14057] -[group_14058] -[group_14059] -[group_14060] -[group_14061] -[group_14062] -[group_14063] -[group_14064] -[group_14065] -[group_14066] -[group_14067] -[group_14068] -[group_14069] -[group_14070] -[group_14071] -[group_14072] -[group_14073] -[group_14074] -[group_14075] -[group_14076] -[group_14077] -[group_14078] -[group_14079] -[group_14080] -[group_14081] -[group_14082] -[group_14083] -[group_14084] -[group_14085] -[group_14086] -[group_14087] -[group_14088] -[group_14089] -[group_14090] -[group_14091] -[group_14092] -[group_14093] -[group_14094] -[group_14095] -[group_14096] -[group_14097] -[group_14098] -[group_14099] -[group_14100] -[group_14101] -[group_14102] -[group_14103] -[group_14104] -[group_14105] -[group_14106] -[group_14107] -[group_14108] -[group_14109] -[group_14110] -[group_14111] -[group_14112] -[group_14113] -[group_14114] -[group_14115] -[group_14116] -[group_14117] -[group_14118] -[group_14119] -[group_14120] -[group_14121] -[group_14122] -[group_14123] -[group_14124] -[group_14125] -[group_14126] -[group_14127] -[group_14128] -[group_14129] -[group_14130] -[group_14131] -[group_14132] -[group_14133] -[group_14134] -[group_14135] -[group_14136] -[group_14137] -[group_14138] -[group_14139] -[group_14140] -[group_14141] -[group_14142] -[group_14143] -[group_14144] -[group_14145] -[group_14146] -[group_14147] -[group_14148] -[group_14149] -[group_14150] -[group_14151] -[group_14152] -[group_14153] -[group_14154] -[group_14155] -[group_14156] -[group_14157] -[group_14158] -[group_14159] -[group_14160] -[group_14161] -[group_14162] -[group_14163] -[group_14164] -[group_14165] -[group_14166] -[group_14167] -[group_14168] -[group_14169] -[group_14170] -[group_14171] -[group_14172] -[group_14173] -[group_14174] -[group_14175] -[group_14176] -[group_14177] -[group_14178] -[group_14179] -[group_14180] -[group_14181] -[group_14182] -[group_14183] -[group_14184] -[group_14185] -[group_14186] -[group_14187] -[group_14188] -[group_14189] -[group_14190] -[group_14191] -[group_14192] -[group_14193] -[group_14194] -[group_14195] -[group_14196] -[group_14197] -[group_14198] -[group_14199] -[group_14200] -[group_14201] -[group_14202] -[group_14203] -[group_14204] -[group_14205] -[group_14206] -[group_14207] -[group_14208] -[group_14209] -[group_14210] -[group_14211] -[group_14212] -[group_14213] -[group_14214] -[group_14215] -[group_14216] -[group_14217] -[group_14218] -[group_14219] -[group_14220] -[group_14221] -[group_14222] -[group_14223] -[group_14224] -[group_14225] -[group_14226] -[group_14227] -[group_14228] -[group_14229] -[group_14230] -[group_14231] -[group_14232] -[group_14233] -[group_14234] -[group_14235] -[group_14236] -[group_14237] -[group_14238] -[group_14239] -[group_14240] -[group_14241] -[group_14242] -[group_14243] -[group_14244] -[group_14245] -[group_14246] -[group_14247] -[group_14248] -[group_14249] -[group_14250] -[group_14251] -[group_14252] -[group_14253] -[group_14254] -[group_14255] -[group_14256] -[group_14257] -[group_14258] -[group_14259] -[group_14260] -[group_14261] -[group_14262] -[group_14263] -[group_14264] -[group_14265] -[group_14266] -[group_14267] -[group_14268] -[group_14269] -[group_14270] -[group_14271] -[group_14272] -[group_14273] -[group_14274] -[group_14275] -[group_14276] -[group_14277] -[group_14278] -[group_14279] -[group_14280] -[group_14281] -[group_14282] -[group_14283] -[group_14284] -[group_14285] -[group_14286] -[group_14287] -[group_14288] -[group_14289] -[group_14290] -[group_14291] -[group_14292] -[group_14293] -[group_14294] -[group_14295] -[group_14296] -[group_14297] -[group_14298] -[group_14299] -[group_14300] -[group_14301] -[group_14302] -[group_14303] -[group_14304] -[group_14305] -[group_14306] -[group_14307] -[group_14308] -[group_14309] -[group_14310] -[group_14311] -[group_14312] -[group_14313] -[group_14314] -[group_14315] -[group_14316] -[group_14317] -[group_14318] -[group_14319] -[group_14320] -[group_14321] -[group_14322] -[group_14323] -[group_14324] -[group_14325] -[group_14326] -[group_14327] -[group_14328] -[group_14329] -[group_14330] -[group_14331] -[group_14332] -[group_14333] -[group_14334] -[group_14335] -[group_14336] -[group_14337] -[group_14338] -[group_14339] -[group_14340] -[group_14341] -[group_14342] -[group_14343] -[group_14344] -[group_14345] -[group_14346] -[group_14347] -[group_14348] -[group_14349] -[group_14350] -[group_14351] -[group_14352] -[group_14353] -[group_14354] -[group_14355] -[group_14356] -[group_14357] -[group_14358] -[group_14359] -[group_14360] -[group_14361] -[group_14362] -[group_14363] -[group_14364] -[group_14365] -[group_14366] -[group_14367] -[group_14368] -[group_14369] -[group_14370] -[group_14371] -[group_14372] -[group_14373] -[group_14374] -[group_14375] -[group_14376] -[group_14377] -[group_14378] -[group_14379] -[group_14380] -[group_14381] -[group_14382] -[group_14383] -[group_14384] -[group_14385] -[group_14386] -[group_14387] -[group_14388] -[group_14389] -[group_14390] -[group_14391] -[group_14392] -[group_14393] -[group_14394] -[group_14395] -[group_14396] -[group_14397] -[group_14398] -[group_14399] -[group_14400] -[group_14401] -[group_14402] -[group_14403] -[group_14404] -[group_14405] -[group_14406] -[group_14407] -[group_14408] -[group_14409] -[group_14410] -[group_14411] -[group_14412] -[group_14413] -[group_14414] -[group_14415] -[group_14416] -[group_14417] -[group_14418] -[group_14419] -[group_14420] -[group_14421] -[group_14422] -[group_14423] -[group_14424] -[group_14425] -[group_14426] -[group_14427] -[group_14428] -[group_14429] -[group_14430] -[group_14431] -[group_14432] -[group_14433] -[group_14434] -[group_14435] -[group_14436] -[group_14437] -[group_14438] -[group_14439] -[group_14440] -[group_14441] -[group_14442] -[group_14443] -[group_14444] -[group_14445] -[group_14446] -[group_14447] -[group_14448] -[group_14449] -[group_14450] -[group_14451] -[group_14452] -[group_14453] -[group_14454] -[group_14455] -[group_14456] -[group_14457] -[group_14458] -[group_14459] -[group_14460] -[group_14461] -[group_14462] -[group_14463] -[group_14464] -[group_14465] -[group_14466] -[group_14467] -[group_14468] -[group_14469] -[group_14470] -[group_14471] -[group_14472] -[group_14473] -[group_14474] -[group_14475] -[group_14476] -[group_14477] -[group_14478] -[group_14479] -[group_14480] -[group_14481] -[group_14482] -[group_14483] -[group_14484] -[group_14485] -[group_14486] -[group_14487] -[group_14488] -[group_14489] -[group_14490] -[group_14491] -[group_14492] -[group_14493] -[group_14494] -[group_14495] -[group_14496] -[group_14497] -[group_14498] -[group_14499] -[group_14500] -[group_14501] -[group_14502] -[group_14503] -[group_14504] -[group_14505] -[group_14506] -[group_14507] -[group_14508] -[group_14509] -[group_14510] -[group_14511] -[group_14512] -[group_14513] -[group_14514] -[group_14515] -[group_14516] -[group_14517] -[group_14518] -[group_14519] -[group_14520] -[group_14521] -[group_14522] -[group_14523] -[group_14524] -[group_14525] -[group_14526] -[group_14527] -[group_14528] -[group_14529] -[group_14530] -[group_14531] -[group_14532] -[group_14533] -[group_14534] -[group_14535] -[group_14536] -[group_14537] -[group_14538] -[group_14539] -[group_14540] -[group_14541] -[group_14542] -[group_14543] -[group_14544] -[group_14545] -[group_14546] -[group_14547] -[group_14548] -[group_14549] -[group_14550] -[group_14551] -[group_14552] -[group_14553] -[group_14554] -[group_14555] -[group_14556] -[group_14557] -[group_14558] -[group_14559] -[group_14560] -[group_14561] -[group_14562] -[group_14563] -[group_14564] -[group_14565] -[group_14566] -[group_14567] -[group_14568] -[group_14569] -[group_14570] -[group_14571] -[group_14572] -[group_14573] -[group_14574] -[group_14575] -[group_14576] -[group_14577] -[group_14578] -[group_14579] -[group_14580] -[group_14581] -[group_14582] -[group_14583] -[group_14584] -[group_14585] -[group_14586] -[group_14587] -[group_14588] -[group_14589] -[group_14590] -[group_14591] -[group_14592] -[group_14593] -[group_14594] -[group_14595] -[group_14596] -[group_14597] -[group_14598] -[group_14599] -[group_14600] -[group_14601] -[group_14602] -[group_14603] -[group_14604] -[group_14605] -[group_14606] -[group_14607] -[group_14608] -[group_14609] -[group_14610] -[group_14611] -[group_14612] -[group_14613] -[group_14614] -[group_14615] -[group_14616] -[group_14617] -[group_14618] -[group_14619] -[group_14620] -[group_14621] -[group_14622] -[group_14623] -[group_14624] -[group_14625] -[group_14626] -[group_14627] -[group_14628] -[group_14629] -[group_14630] -[group_14631] -[group_14632] -[group_14633] -[group_14634] -[group_14635] -[group_14636] -[group_14637] -[group_14638] -[group_14639] -[group_14640] -[group_14641] -[group_14642] -[group_14643] -[group_14644] -[group_14645] -[group_14646] -[group_14647] -[group_14648] -[group_14649] -[group_14650] -[group_14651] -[group_14652] -[group_14653] -[group_14654] -[group_14655] -[group_14656] -[group_14657] -[group_14658] -[group_14659] -[group_14660] -[group_14661] -[group_14662] -[group_14663] -[group_14664] -[group_14665] -[group_14666] -[group_14667] -[group_14668] -[group_14669] -[group_14670] -[group_14671] -[group_14672] -[group_14673] -[group_14674] -[group_14675] -[group_14676] -[group_14677] -[group_14678] -[group_14679] -[group_14680] -[group_14681] -[group_14682] -[group_14683] -[group_14684] -[group_14685] -[group_14686] -[group_14687] -[group_14688] -[group_14689] -[group_14690] -[group_14691] -[group_14692] -[group_14693] -[group_14694] -[group_14695] -[group_14696] -[group_14697] -[group_14698] -[group_14699] -[group_14700] -[group_14701] -[group_14702] -[group_14703] -[group_14704] -[group_14705] -[group_14706] -[group_14707] -[group_14708] -[group_14709] -[group_14710] -[group_14711] -[group_14712] -[group_14713] -[group_14714] -[group_14715] -[group_14716] -[group_14717] -[group_14718] -[group_14719] -[group_14720] -[group_14721] -[group_14722] -[group_14723] -[group_14724] -[group_14725] -[group_14726] -[group_14727] -[group_14728] -[group_14729] -[group_14730] -[group_14731] -[group_14732] -[group_14733] -[group_14734] -[group_14735] -[group_14736] -[group_14737] -[group_14738] -[group_14739] -[group_14740] -[group_14741] -[group_14742] -[group_14743] -[group_14744] -[group_14745] -[group_14746] -[group_14747] -[group_14748] -[group_14749] -[group_14750] -[group_14751] -[group_14752] -[group_14753] -[group_14754] -[group_14755] -[group_14756] -[group_14757] -[group_14758] -[group_14759] -[group_14760] -[group_14761] -[group_14762] -[group_14763] -[group_14764] -[group_14765] -[group_14766] -[group_14767] -[group_14768] -[group_14769] -[group_14770] -[group_14771] -[group_14772] -[group_14773] -[group_14774] -[group_14775] -[group_14776] -[group_14777] -[group_14778] -[group_14779] -[group_14780] -[group_14781] -[group_14782] -[group_14783] -[group_14784] -[group_14785] -[group_14786] -[group_14787] -[group_14788] -[group_14789] -[group_14790] -[group_14791] -[group_14792] -[group_14793] -[group_14794] -[group_14795] -[group_14796] -[group_14797] -[group_14798] -[group_14799] -[group_14800] -[group_14801] -[group_14802] -[group_14803] -[group_14804] -[group_14805] -[group_14806] -[group_14807] -[group_14808] -[group_14809] -[group_14810] -[group_14811] -[group_14812] -[group_14813] -[group_14814] -[group_14815] -[group_14816] -[group_14817] -[group_14818] -[group_14819] -[group_14820] -[group_14821] -[group_14822] -[group_14823] -[group_14824] -[group_14825] -[group_14826] -[group_14827] -[group_14828] -[group_14829] -[group_14830] -[group_14831] -[group_14832] -[group_14833] -[group_14834] -[group_14835] -[group_14836] -[group_14837] -[group_14838] -[group_14839] -[group_14840] -[group_14841] -[group_14842] -[group_14843] -[group_14844] -[group_14845] -[group_14846] -[group_14847] -[group_14848] -[group_14849] -[group_14850] -[group_14851] -[group_14852] -[group_14853] -[group_14854] -[group_14855] -[group_14856] -[group_14857] -[group_14858] -[group_14859] -[group_14860] -[group_14861] -[group_14862] -[group_14863] -[group_14864] -[group_14865] -[group_14866] -[group_14867] -[group_14868] -[group_14869] -[group_14870] -[group_14871] -[group_14872] -[group_14873] -[group_14874] -[group_14875] -[group_14876] -[group_14877] -[group_14878] -[group_14879] -[group_14880] -[group_14881] -[group_14882] -[group_14883] -[group_14884] -[group_14885] -[group_14886] -[group_14887] -[group_14888] -[group_14889] -[group_14890] -[group_14891] -[group_14892] -[group_14893] -[group_14894] -[group_14895] -[group_14896] -[group_14897] -[group_14898] -[group_14899] -[group_14900] -[group_14901] -[group_14902] -[group_14903] -[group_14904] -[group_14905] -[group_14906] -[group_14907] -[group_14908] -[group_14909] -[group_14910] -[group_14911] -[group_14912] -[group_14913] -[group_14914] -[group_14915] -[group_14916] -[group_14917] -[group_14918] -[group_14919] -[group_14920] -[group_14921] -[group_14922] -[group_14923] -[group_14924] -[group_14925] -[group_14926] -[group_14927] -[group_14928] -[group_14929] -[group_14930] -[group_14931] -[group_14932] -[group_14933] -[group_14934] -[group_14935] -[group_14936] -[group_14937] -[group_14938] -[group_14939] -[group_14940] -[group_14941] -[group_14942] -[group_14943] -[group_14944] -[group_14945] -[group_14946] -[group_14947] -[group_14948] -[group_14949] -[group_14950] -[group_14951] -[group_14952] -[group_14953] -[group_14954] -[group_14955] -[group_14956] -[group_14957] -[group_14958] -[group_14959] -[group_14960] -[group_14961] -[group_14962] -[group_14963] -[group_14964] -[group_14965] -[group_14966] -[group_14967] -[group_14968] -[group_14969] -[group_14970] -[group_14971] -[group_14972] -[group_14973] -[group_14974] -[group_14975] -[group_14976] -[group_14977] -[group_14978] -[group_14979] -[group_14980] -[group_14981] -[group_14982] -[group_14983] -[group_14984] -[group_14985] -[group_14986] -[group_14987] -[group_14988] -[group_14989] -[group_14990] -[group_14991] -[group_14992] -[group_14993] -[group_14994] -[group_14995] -[group_14996] -[group_14997] -[group_14998] -[group_14999] -[group_15000] -[group_15001] -[group_15002] -[group_15003] -[group_15004] -[group_15005] -[group_15006] -[group_15007] -[group_15008] -[group_15009] -[group_15010] -[group_15011] -[group_15012] -[group_15013] -[group_15014] -[group_15015] -[group_15016] -[group_15017] -[group_15018] -[group_15019] -[group_15020] -[group_15021] -[group_15022] -[group_15023] -[group_15024] -[group_15025] -[group_15026] -[group_15027] -[group_15028] -[group_15029] -[group_15030] -[group_15031] -[group_15032] -[group_15033] -[group_15034] -[group_15035] -[group_15036] -[group_15037] -[group_15038] -[group_15039] -[group_15040] -[group_15041] -[group_15042] -[group_15043] -[group_15044] -[group_15045] -[group_15046] -[group_15047] -[group_15048] -[group_15049] -[group_15050] -[group_15051] -[group_15052] -[group_15053] -[group_15054] -[group_15055] -[group_15056] -[group_15057] -[group_15058] -[group_15059] -[group_15060] -[group_15061] -[group_15062] -[group_15063] -[group_15064] -[group_15065] -[group_15066] -[group_15067] -[group_15068] -[group_15069] -[group_15070] -[group_15071] -[group_15072] -[group_15073] -[group_15074] -[group_15075] -[group_15076] -[group_15077] -[group_15078] -[group_15079] -[group_15080] -[group_15081] -[group_15082] -[group_15083] -[group_15084] -[group_15085] -[group_15086] -[group_15087] -[group_15088] -[group_15089] -[group_15090] -[group_15091] -[group_15092] -[group_15093] -[group_15094] -[group_15095] -[group_15096] -[group_15097] -[group_15098] -[group_15099] -[group_15100] -[group_15101] -[group_15102] -[group_15103] -[group_15104] -[group_15105] -[group_15106] -[group_15107] -[group_15108] -[group_15109] -[group_15110] -[group_15111] -[group_15112] -[group_15113] -[group_15114] -[group_15115] -[group_15116] -[group_15117] -[group_15118] -[group_15119] -[group_15120] -[group_15121] -[group_15122] -[group_15123] -[group_15124] -[group_15125] -[group_15126] -[group_15127] -[group_15128] -[group_15129] -[group_15130] -[group_15131] -[group_15132] -[group_15133] -[group_15134] -[group_15135] -[group_15136] -[group_15137] -[group_15138] -[group_15139] -[group_15140] -[group_15141] -[group_15142] -[group_15143] -[group_15144] -[group_15145] -[group_15146] -[group_15147] -[group_15148] -[group_15149] -[group_15150] -[group_15151] -[group_15152] -[group_15153] -[group_15154] -[group_15155] -[group_15156] -[group_15157] -[group_15158] -[group_15159] -[group_15160] -[group_15161] -[group_15162] -[group_15163] -[group_15164] -[group_15165] -[group_15166] -[group_15167] -[group_15168] -[group_15169] -[group_15170] -[group_15171] -[group_15172] -[group_15173] -[group_15174] -[group_15175] -[group_15176] -[group_15177] -[group_15178] -[group_15179] -[group_15180] -[group_15181] -[group_15182] -[group_15183] -[group_15184] -[group_15185] -[group_15186] -[group_15187] -[group_15188] -[group_15189] -[group_15190] -[group_15191] -[group_15192] -[group_15193] -[group_15194] -[group_15195] -[group_15196] -[group_15197] -[group_15198] -[group_15199] -[group_15200] -[group_15201] -[group_15202] -[group_15203] -[group_15204] -[group_15205] -[group_15206] -[group_15207] -[group_15208] -[group_15209] -[group_15210] -[group_15211] -[group_15212] -[group_15213] -[group_15214] -[group_15215] -[group_15216] -[group_15217] -[group_15218] -[group_15219] -[group_15220] -[group_15221] -[group_15222] -[group_15223] -[group_15224] -[group_15225] -[group_15226] -[group_15227] -[group_15228] -[group_15229] -[group_15230] -[group_15231] -[group_15232] -[group_15233] -[group_15234] -[group_15235] -[group_15236] -[group_15237] -[group_15238] -[group_15239] -[group_15240] -[group_15241] -[group_15242] -[group_15243] -[group_15244] -[group_15245] -[group_15246] -[group_15247] -[group_15248] -[group_15249] -[group_15250] -[group_15251] -[group_15252] -[group_15253] -[group_15254] -[group_15255] -[group_15256] -[group_15257] -[group_15258] -[group_15259] -[group_15260] -[group_15261] -[group_15262] -[group_15263] -[group_15264] -[group_15265] -[group_15266] -[group_15267] -[group_15268] -[group_15269] -[group_15270] -[group_15271] -[group_15272] -[group_15273] -[group_15274] -[group_15275] -[group_15276] -[group_15277] -[group_15278] -[group_15279] -[group_15280] -[group_15281] -[group_15282] -[group_15283] -[group_15284] -[group_15285] -[group_15286] -[group_15287] -[group_15288] -[group_15289] -[group_15290] -[group_15291] -[group_15292] -[group_15293] -[group_15294] -[group_15295] -[group_15296] -[group_15297] -[group_15298] -[group_15299] -[group_15300] -[group_15301] -[group_15302] -[group_15303] -[group_15304] -[group_15305] -[group_15306] -[group_15307] -[group_15308] -[group_15309] -[group_15310] -[group_15311] -[group_15312] -[group_15313] -[group_15314] -[group_15315] -[group_15316] -[group_15317] -[group_15318] -[group_15319] -[group_15320] -[group_15321] -[group_15322] -[group_15323] -[group_15324] -[group_15325] -[group_15326] -[group_15327] -[group_15328] -[group_15329] -[group_15330] -[group_15331] -[group_15332] -[group_15333] -[group_15334] -[group_15335] -[group_15336] -[group_15337] -[group_15338] -[group_15339] -[group_15340] -[group_15341] -[group_15342] -[group_15343] -[group_15344] -[group_15345] -[group_15346] -[group_15347] -[group_15348] -[group_15349] -[group_15350] -[group_15351] -[group_15352] -[group_15353] -[group_15354] -[group_15355] -[group_15356] -[group_15357] -[group_15358] -[group_15359] -[group_15360] -[group_15361] -[group_15362] -[group_15363] -[group_15364] -[group_15365] -[group_15366] -[group_15367] -[group_15368] -[group_15369] -[group_15370] -[group_15371] -[group_15372] -[group_15373] -[group_15374] -[group_15375] -[group_15376] -[group_15377] -[group_15378] -[group_15379] -[group_15380] -[group_15381] -[group_15382] -[group_15383] -[group_15384] -[group_15385] -[group_15386] -[group_15387] -[group_15388] -[group_15389] -[group_15390] -[group_15391] -[group_15392] -[group_15393] -[group_15394] -[group_15395] -[group_15396] -[group_15397] -[group_15398] -[group_15399] -[group_15400] -[group_15401] -[group_15402] -[group_15403] -[group_15404] -[group_15405] -[group_15406] -[group_15407] -[group_15408] -[group_15409] -[group_15410] -[group_15411] -[group_15412] -[group_15413] -[group_15414] -[group_15415] -[group_15416] -[group_15417] -[group_15418] -[group_15419] -[group_15420] -[group_15421] -[group_15422] -[group_15423] -[group_15424] -[group_15425] -[group_15426] -[group_15427] -[group_15428] -[group_15429] -[group_15430] -[group_15431] -[group_15432] -[group_15433] -[group_15434] -[group_15435] -[group_15436] -[group_15437] -[group_15438] -[group_15439] -[group_15440] -[group_15441] -[group_15442] -[group_15443] -[group_15444] -[group_15445] -[group_15446] -[group_15447] -[group_15448] -[group_15449] -[group_15450] -[group_15451] -[group_15452] -[group_15453] -[group_15454] -[group_15455] -[group_15456] -[group_15457] -[group_15458] -[group_15459] -[group_15460] -[group_15461] -[group_15462] -[group_15463] -[group_15464] -[group_15465] -[group_15466] -[group_15467] -[group_15468] -[group_15469] -[group_15470] -[group_15471] -[group_15472] -[group_15473] -[group_15474] -[group_15475] -[group_15476] -[group_15477] -[group_15478] -[group_15479] -[group_15480] -[group_15481] -[group_15482] -[group_15483] -[group_15484] -[group_15485] -[group_15486] -[group_15487] -[group_15488] -[group_15489] -[group_15490] -[group_15491] -[group_15492] -[group_15493] -[group_15494] -[group_15495] -[group_15496] -[group_15497] -[group_15498] -[group_15499] -[group_15500] -[group_15501] -[group_15502] -[group_15503] -[group_15504] -[group_15505] -[group_15506] -[group_15507] -[group_15508] -[group_15509] -[group_15510] -[group_15511] -[group_15512] -[group_15513] -[group_15514] -[group_15515] -[group_15516] -[group_15517] -[group_15518] -[group_15519] -[group_15520] -[group_15521] -[group_15522] -[group_15523] -[group_15524] -[group_15525] -[group_15526] -[group_15527] -[group_15528] -[group_15529] -[group_15530] -[group_15531] -[group_15532] -[group_15533] -[group_15534] -[group_15535] -[group_15536] -[group_15537] -[group_15538] -[group_15539] -[group_15540] -[group_15541] -[group_15542] -[group_15543] -[group_15544] -[group_15545] -[group_15546] -[group_15547] -[group_15548] -[group_15549] -[group_15550] -[group_15551] -[group_15552] -[group_15553] -[group_15554] -[group_15555] -[group_15556] -[group_15557] -[group_15558] -[group_15559] -[group_15560] -[group_15561] -[group_15562] -[group_15563] -[group_15564] -[group_15565] -[group_15566] -[group_15567] -[group_15568] -[group_15569] -[group_15570] -[group_15571] -[group_15572] -[group_15573] -[group_15574] -[group_15575] -[group_15576] -[group_15577] -[group_15578] -[group_15579] -[group_15580] -[group_15581] -[group_15582] -[group_15583] -[group_15584] -[group_15585] -[group_15586] -[group_15587] -[group_15588] -[group_15589] -[group_15590] -[group_15591] -[group_15592] -[group_15593] -[group_15594] -[group_15595] -[group_15596] -[group_15597] -[group_15598] -[group_15599] -[group_15600] -[group_15601] -[group_15602] -[group_15603] -[group_15604] -[group_15605] -[group_15606] -[group_15607] -[group_15608] -[group_15609] -[group_15610] -[group_15611] -[group_15612] -[group_15613] -[group_15614] -[group_15615] -[group_15616] -[group_15617] -[group_15618] -[group_15619] -[group_15620] -[group_15621] -[group_15622] -[group_15623] -[group_15624] -[group_15625] -[group_15626] -[group_15627] -[group_15628] -[group_15629] -[group_15630] -[group_15631] -[group_15632] -[group_15633] -[group_15634] -[group_15635] -[group_15636] -[group_15637] -[group_15638] -[group_15639] -[group_15640] -[group_15641] -[group_15642] -[group_15643] -[group_15644] -[group_15645] -[group_15646] -[group_15647] -[group_15648] -[group_15649] -[group_15650] -[group_15651] -[group_15652] -[group_15653] -[group_15654] -[group_15655] -[group_15656] -[group_15657] -[group_15658] -[group_15659] -[group_15660] -[group_15661] -[group_15662] -[group_15663] -[group_15664] -[group_15665] -[group_15666] -[group_15667] -[group_15668] -[group_15669] -[group_15670] -[group_15671] -[group_15672] -[group_15673] -[group_15674] -[group_15675] -[group_15676] -[group_15677] -[group_15678] -[group_15679] -[group_15680] -[group_15681] -[group_15682] -[group_15683] -[group_15684] -[group_15685] -[group_15686] -[group_15687] -[group_15688] -[group_15689] -[group_15690] -[group_15691] -[group_15692] -[group_15693] -[group_15694] -[group_15695] -[group_15696] -[group_15697] -[group_15698] -[group_15699] -[group_15700] -[group_15701] -[group_15702] -[group_15703] -[group_15704] -[group_15705] -[group_15706] -[group_15707] -[group_15708] -[group_15709] -[group_15710] -[group_15711] -[group_15712] -[group_15713] -[group_15714] -[group_15715] -[group_15716] -[group_15717] -[group_15718] -[group_15719] -[group_15720] -[group_15721] -[group_15722] -[group_15723] -[group_15724] -[group_15725] -[group_15726] -[group_15727] -[group_15728] -[group_15729] -[group_15730] -[group_15731] -[group_15732] -[group_15733] -[group_15734] -[group_15735] -[group_15736] -[group_15737] -[group_15738] -[group_15739] -[group_15740] -[group_15741] -[group_15742] -[group_15743] -[group_15744] -[group_15745] -[group_15746] -[group_15747] -[group_15748] -[group_15749] -[group_15750] -[group_15751] -[group_15752] -[group_15753] -[group_15754] -[group_15755] -[group_15756] -[group_15757] -[group_15758] -[group_15759] -[group_15760] -[group_15761] -[group_15762] -[group_15763] -[group_15764] -[group_15765] -[group_15766] -[group_15767] -[group_15768] -[group_15769] -[group_15770] -[group_15771] -[group_15772] -[group_15773] -[group_15774] -[group_15775] -[group_15776] -[group_15777] -[group_15778] -[group_15779] -[group_15780] -[group_15781] -[group_15782] -[group_15783] -[group_15784] -[group_15785] -[group_15786] -[group_15787] -[group_15788] -[group_15789] -[group_15790] -[group_15791] -[group_15792] -[group_15793] -[group_15794] -[group_15795] -[group_15796] -[group_15797] -[group_15798] -[group_15799] -[group_15800] -[group_15801] -[group_15802] -[group_15803] -[group_15804] -[group_15805] -[group_15806] -[group_15807] -[group_15808] -[group_15809] -[group_15810] -[group_15811] -[group_15812] -[group_15813] -[group_15814] -[group_15815] -[group_15816] -[group_15817] -[group_15818] -[group_15819] -[group_15820] -[group_15821] -[group_15822] -[group_15823] -[group_15824] -[group_15825] -[group_15826] -[group_15827] -[group_15828] -[group_15829] -[group_15830] -[group_15831] -[group_15832] -[group_15833] -[group_15834] -[group_15835] -[group_15836] -[group_15837] -[group_15838] -[group_15839] -[group_15840] -[group_15841] -[group_15842] -[group_15843] -[group_15844] -[group_15845] -[group_15846] -[group_15847] -[group_15848] -[group_15849] -[group_15850] -[group_15851] -[group_15852] -[group_15853] -[group_15854] -[group_15855] -[group_15856] -[group_15857] -[group_15858] -[group_15859] -[group_15860] -[group_15861] -[group_15862] -[group_15863] -[group_15864] -[group_15865] -[group_15866] -[group_15867] -[group_15868] -[group_15869] -[group_15870] -[group_15871] -[group_15872] -[group_15873] -[group_15874] -[group_15875] -[group_15876] -[group_15877] -[group_15878] -[group_15879] -[group_15880] -[group_15881] -[group_15882] -[group_15883] -[group_15884] -[group_15885] -[group_15886] -[group_15887] -[group_15888] -[group_15889] -[group_15890] -[group_15891] -[group_15892] -[group_15893] -[group_15894] -[group_15895] -[group_15896] -[group_15897] -[group_15898] -[group_15899] -[group_15900] -[group_15901] -[group_15902] -[group_15903] -[group_15904] -[group_15905] -[group_15906] -[group_15907] -[group_15908] -[group_15909] -[group_15910] -[group_15911] -[group_15912] -[group_15913] -[group_15914] -[group_15915] -[group_15916] -[group_15917] -[group_15918] -[group_15919] -[group_15920] -[group_15921] -[group_15922] -[group_15923] -[group_15924] -[group_15925] -[group_15926] -[group_15927] -[group_15928] -[group_15929] -[group_15930] -[group_15931] -[group_15932] -[group_15933] -[group_15934] -[group_15935] -[group_15936] -[group_15937] -[group_15938] -[group_15939] -[group_15940] -[group_15941] -[group_15942] -[group_15943] -[group_15944] -[group_15945] -[group_15946] -[group_15947] -[group_15948] -[group_15949] -[group_15950] -[group_15951] -[group_15952] -[group_15953] -[group_15954] -[group_15955] -[group_15956] -[group_15957] -[group_15958] -[group_15959] -[group_15960] -[group_15961] -[group_15962] -[group_15963] -[group_15964] -[group_15965] -[group_15966] -[group_15967] -[group_15968] -[group_15969] -[group_15970] -[group_15971] -[group_15972] -[group_15973] -[group_15974] -[group_15975] -[group_15976] -[group_15977] -[group_15978] -[group_15979] -[group_15980] -[group_15981] -[group_15982] -[group_15983] -[group_15984] -[group_15985] -[group_15986] -[group_15987] -[group_15988] -[group_15989] -[group_15990] -[group_15991] -[group_15992] -[group_15993] -[group_15994] -[group_15995] -[group_15996] -[group_15997] -[group_15998] -[group_15999] -[group_16000] -[group_16001] -[group_16002] -[group_16003] -[group_16004] -[group_16005] -[group_16006] -[group_16007] -[group_16008] -[group_16009] -[group_16010] -[group_16011] -[group_16012] -[group_16013] -[group_16014] -[group_16015] -[group_16016] -[group_16017] -[group_16018] -[group_16019] -[group_16020] -[group_16021] -[group_16022] -[group_16023] -[group_16024] -[group_16025] -[group_16026] -[group_16027] -[group_16028] -[group_16029] -[group_16030] -[group_16031] -[group_16032] -[group_16033] -[group_16034] -[group_16035] -[group_16036] -[group_16037] -[group_16038] -[group_16039] -[group_16040] -[group_16041] -[group_16042] -[group_16043] -[group_16044] -[group_16045] -[group_16046] -[group_16047] -[group_16048] -[group_16049] -[group_16050] -[group_16051] -[group_16052] -[group_16053] -[group_16054] -[group_16055] -[group_16056] -[group_16057] -[group_16058] -[group_16059] -[group_16060] -[group_16061] -[group_16062] -[group_16063] -[group_16064] -[group_16065] -[group_16066] -[group_16067] -[group_16068] -[group_16069] -[group_16070] -[group_16071] -[group_16072] -[group_16073] -[group_16074] -[group_16075] -[group_16076] -[group_16077] -[group_16078] -[group_16079] -[group_16080] -[group_16081] -[group_16082] -[group_16083] -[group_16084] -[group_16085] -[group_16086] -[group_16087] -[group_16088] -[group_16089] -[group_16090] -[group_16091] -[group_16092] -[group_16093] -[group_16094] -[group_16095] -[group_16096] -[group_16097] -[group_16098] -[group_16099] -[group_16100] -[group_16101] -[group_16102] -[group_16103] -[group_16104] -[group_16105] -[group_16106] -[group_16107] -[group_16108] -[group_16109] -[group_16110] -[group_16111] -[group_16112] -[group_16113] -[group_16114] -[group_16115] -[group_16116] -[group_16117] -[group_16118] -[group_16119] -[group_16120] -[group_16121] -[group_16122] -[group_16123] -[group_16124] -[group_16125] -[group_16126] -[group_16127] -[group_16128] -[group_16129] -[group_16130] -[group_16131] -[group_16132] -[group_16133] -[group_16134] -[group_16135] -[group_16136] -[group_16137] -[group_16138] -[group_16139] -[group_16140] -[group_16141] -[group_16142] -[group_16143] -[group_16144] -[group_16145] -[group_16146] -[group_16147] -[group_16148] -[group_16149] -[group_16150] -[group_16151] -[group_16152] -[group_16153] -[group_16154] -[group_16155] -[group_16156] -[group_16157] -[group_16158] -[group_16159] -[group_16160] -[group_16161] -[group_16162] -[group_16163] -[group_16164] -[group_16165] -[group_16166] -[group_16167] -[group_16168] -[group_16169] -[group_16170] -[group_16171] -[group_16172] -[group_16173] -[group_16174] -[group_16175] -[group_16176] -[group_16177] -[group_16178] -[group_16179] -[group_16180] -[group_16181] -[group_16182] -[group_16183] -[group_16184] -[group_16185] -[group_16186] -[group_16187] -[group_16188] -[group_16189] -[group_16190] -[group_16191] -[group_16192] -[group_16193] -[group_16194] -[group_16195] -[group_16196] -[group_16197] -[group_16198] -[group_16199] -[group_16200] -[group_16201] -[group_16202] -[group_16203] -[group_16204] -[group_16205] -[group_16206] -[group_16207] -[group_16208] -[group_16209] -[group_16210] -[group_16211] -[group_16212] -[group_16213] -[group_16214] -[group_16215] -[group_16216] -[group_16217] -[group_16218] -[group_16219] -[group_16220] -[group_16221] -[group_16222] -[group_16223] -[group_16224] -[group_16225] -[group_16226] -[group_16227] -[group_16228] -[group_16229] -[group_16230] -[group_16231] -[group_16232] -[group_16233] -[group_16234] -[group_16235] -[group_16236] -[group_16237] -[group_16238] -[group_16239] -[group_16240] -[group_16241] -[group_16242] -[group_16243] -[group_16244] -[group_16245] -[group_16246] -[group_16247] -[group_16248] -[group_16249] -[group_16250] -[group_16251] -[group_16252] -[group_16253] -[group_16254] -[group_16255] -[group_16256] -[group_16257] -[group_16258] -[group_16259] -[group_16260] -[group_16261] -[group_16262] -[group_16263] -[group_16264] -[group_16265] -[group_16266] -[group_16267] -[group_16268] -[group_16269] -[group_16270] -[group_16271] -[group_16272] -[group_16273] -[group_16274] -[group_16275] -[group_16276] -[group_16277] -[group_16278] -[group_16279] -[group_16280] -[group_16281] -[group_16282] -[group_16283] -[group_16284] -[group_16285] -[group_16286] -[group_16287] -[group_16288] -[group_16289] -[group_16290] -[group_16291] -[group_16292] -[group_16293] -[group_16294] -[group_16295] -[group_16296] -[group_16297] -[group_16298] -[group_16299] -[group_16300] -[group_16301] -[group_16302] -[group_16303] -[group_16304] -[group_16305] -[group_16306] -[group_16307] -[group_16308] -[group_16309] -[group_16310] -[group_16311] -[group_16312] -[group_16313] -[group_16314] -[group_16315] -[group_16316] -[group_16317] -[group_16318] -[group_16319] -[group_16320] -[group_16321] -[group_16322] -[group_16323] -[group_16324] -[group_16325] -[group_16326] -[group_16327] -[group_16328] -[group_16329] -[group_16330] -[group_16331] -[group_16332] -[group_16333] -[group_16334] -[group_16335] -[group_16336] -[group_16337] -[group_16338] -[group_16339] -[group_16340] -[group_16341] -[group_16342] -[group_16343] -[group_16344] -[group_16345] -[group_16346] -[group_16347] -[group_16348] -[group_16349] -[group_16350] -[group_16351] -[group_16352] -[group_16353] -[group_16354] -[group_16355] -[group_16356] -[group_16357] -[group_16358] -[group_16359] -[group_16360] -[group_16361] -[group_16362] -[group_16363] -[group_16364] -[group_16365] -[group_16366] -[group_16367] -[group_16368] -[group_16369] -[group_16370] -[group_16371] -[group_16372] -[group_16373] -[group_16374] -[group_16375] -[group_16376] -[group_16377] -[group_16378] -[group_16379] -[group_16380] -[group_16381] -[group_16382] -[group_16383] -[group_16384] -[group_16385] -[group_16386] -[group_16387] -[group_16388] -[group_16389] -[group_16390] -[group_16391] -[group_16392] -[group_16393] -[group_16394] -[group_16395] -[group_16396] -[group_16397] -[group_16398] -[group_16399] -[group_16400] -[group_16401] -[group_16402] -[group_16403] -[group_16404] -[group_16405] -[group_16406] -[group_16407] -[group_16408] -[group_16409] -[group_16410] -[group_16411] -[group_16412] -[group_16413] -[group_16414] -[group_16415] -[group_16416] -[group_16417] -[group_16418] -[group_16419] -[group_16420] -[group_16421] -[group_16422] -[group_16423] -[group_16424] -[group_16425] -[group_16426] -[group_16427] -[group_16428] -[group_16429] -[group_16430] -[group_16431] -[group_16432] -[group_16433] -[group_16434] -[group_16435] -[group_16436] -[group_16437] -[group_16438] -[group_16439] -[group_16440] -[group_16441] -[group_16442] -[group_16443] -[group_16444] -[group_16445] -[group_16446] -[group_16447] -[group_16448] -[group_16449] -[group_16450] -[group_16451] -[group_16452] -[group_16453] -[group_16454] -[group_16455] -[group_16456] -[group_16457] -[group_16458] -[group_16459] -[group_16460] -[group_16461] -[group_16462] -[group_16463] -[group_16464] -[group_16465] -[group_16466] -[group_16467] -[group_16468] -[group_16469] -[group_16470] -[group_16471] -[group_16472] -[group_16473] -[group_16474] -[group_16475] -[group_16476] -[group_16477] -[group_16478] -[group_16479] -[group_16480] -[group_16481] -[group_16482] -[group_16483] -[group_16484] -[group_16485] -[group_16486] -[group_16487] -[group_16488] -[group_16489] -[group_16490] -[group_16491] -[group_16492] -[group_16493] -[group_16494] -[group_16495] -[group_16496] -[group_16497] -[group_16498] -[group_16499] -[group_16500] -[group_16501] -[group_16502] -[group_16503] -[group_16504] -[group_16505] -[group_16506] -[group_16507] -[group_16508] -[group_16509] -[group_16510] -[group_16511] -[group_16512] -[group_16513] -[group_16514] -[group_16515] -[group_16516] -[group_16517] -[group_16518] -[group_16519] -[group_16520] -[group_16521] -[group_16522] -[group_16523] -[group_16524] -[group_16525] -[group_16526] -[group_16527] -[group_16528] -[group_16529] -[group_16530] -[group_16531] -[group_16532] -[group_16533] -[group_16534] -[group_16535] -[group_16536] -[group_16537] -[group_16538] -[group_16539] -[group_16540] -[group_16541] -[group_16542] -[group_16543] -[group_16544] -[group_16545] -[group_16546] -[group_16547] -[group_16548] -[group_16549] -[group_16550] -[group_16551] -[group_16552] -[group_16553] -[group_16554] -[group_16555] -[group_16556] -[group_16557] -[group_16558] -[group_16559] -[group_16560] -[group_16561] -[group_16562] -[group_16563] -[group_16564] -[group_16565] -[group_16566] -[group_16567] -[group_16568] -[group_16569] -[group_16570] -[group_16571] -[group_16572] -[group_16573] -[group_16574] -[group_16575] -[group_16576] -[group_16577] -[group_16578] -[group_16579] -[group_16580] -[group_16581] -[group_16582] -[group_16583] -[group_16584] -[group_16585] -[group_16586] -[group_16587] -[group_16588] -[group_16589] -[group_16590] -[group_16591] -[group_16592] -[group_16593] -[group_16594] -[group_16595] -[group_16596] -[group_16597] -[group_16598] -[group_16599] -[group_16600] -[group_16601] -[group_16602] -[group_16603] -[group_16604] -[group_16605] -[group_16606] -[group_16607] -[group_16608] -[group_16609] -[group_16610] -[group_16611] -[group_16612] -[group_16613] -[group_16614] -[group_16615] -[group_16616] -[group_16617] -[group_16618] -[group_16619] -[group_16620] -[group_16621] -[group_16622] -[group_16623] -[group_16624] -[group_16625] -[group_16626] -[group_16627] -[group_16628] -[group_16629] -[group_16630] -[group_16631] -[group_16632] -[group_16633] -[group_16634] -[group_16635] -[group_16636] -[group_16637] -[group_16638] -[group_16639] -[group_16640] -[group_16641] -[group_16642] -[group_16643] -[group_16644] -[group_16645] -[group_16646] -[group_16647] -[group_16648] -[group_16649] -[group_16650] -[group_16651] -[group_16652] -[group_16653] -[group_16654] -[group_16655] -[group_16656] -[group_16657] -[group_16658] -[group_16659] -[group_16660] -[group_16661] -[group_16662] -[group_16663] -[group_16664] -[group_16665] -[group_16666] -[group_16667] -[group_16668] -[group_16669] -[group_16670] -[group_16671] -[group_16672] -[group_16673] -[group_16674] -[group_16675] -[group_16676] -[group_16677] -[group_16678] -[group_16679] -[group_16680] -[group_16681] -[group_16682] -[group_16683] -[group_16684] -[group_16685] -[group_16686] -[group_16687] -[group_16688] -[group_16689] -[group_16690] -[group_16691] -[group_16692] -[group_16693] -[group_16694] -[group_16695] -[group_16696] -[group_16697] -[group_16698] -[group_16699] -[group_16700] -[group_16701] -[group_16702] -[group_16703] -[group_16704] -[group_16705] -[group_16706] -[group_16707] -[group_16708] -[group_16709] -[group_16710] -[group_16711] -[group_16712] -[group_16713] -[group_16714] -[group_16715] -[group_16716] -[group_16717] -[group_16718] -[group_16719] -[group_16720] -[group_16721] -[group_16722] -[group_16723] -[group_16724] -[group_16725] -[group_16726] -[group_16727] -[group_16728] -[group_16729] -[group_16730] -[group_16731] -[group_16732] -[group_16733] -[group_16734] -[group_16735] -[group_16736] -[group_16737] -[group_16738] -[group_16739] -[group_16740] -[group_16741] -[group_16742] -[group_16743] -[group_16744] -[group_16745] -[group_16746] -[group_16747] -[group_16748] -[group_16749] -[group_16750] -[group_16751] -[group_16752] -[group_16753] -[group_16754] -[group_16755] -[group_16756] -[group_16757] -[group_16758] -[group_16759] -[group_16760] -[group_16761] -[group_16762] -[group_16763] -[group_16764] -[group_16765] -[group_16766] -[group_16767] -[group_16768] -[group_16769] -[group_16770] -[group_16771] -[group_16772] -[group_16773] -[group_16774] -[group_16775] -[group_16776] -[group_16777] -[group_16778] -[group_16779] -[group_16780] -[group_16781] -[group_16782] -[group_16783] -[group_16784] -[group_16785] -[group_16786] -[group_16787] -[group_16788] -[group_16789] -[group_16790] -[group_16791] -[group_16792] -[group_16793] -[group_16794] -[group_16795] -[group_16796] -[group_16797] -[group_16798] -[group_16799] -[group_16800] -[group_16801] -[group_16802] -[group_16803] -[group_16804] -[group_16805] -[group_16806] -[group_16807] -[group_16808] -[group_16809] -[group_16810] -[group_16811] -[group_16812] -[group_16813] -[group_16814] -[group_16815] -[group_16816] -[group_16817] -[group_16818] -[group_16819] -[group_16820] -[group_16821] -[group_16822] -[group_16823] -[group_16824] -[group_16825] -[group_16826] -[group_16827] -[group_16828] -[group_16829] -[group_16830] -[group_16831] -[group_16832] -[group_16833] -[group_16834] -[group_16835] -[group_16836] -[group_16837] -[group_16838] -[group_16839] -[group_16840] -[group_16841] -[group_16842] -[group_16843] -[group_16844] -[group_16845] -[group_16846] -[group_16847] -[group_16848] -[group_16849] -[group_16850] -[group_16851] -[group_16852] -[group_16853] -[group_16854] -[group_16855] -[group_16856] -[group_16857] -[group_16858] -[group_16859] -[group_16860] -[group_16861] -[group_16862] -[group_16863] -[group_16864] -[group_16865] -[group_16866] -[group_16867] -[group_16868] -[group_16869] -[group_16870] -[group_16871] -[group_16872] -[group_16873] -[group_16874] -[group_16875] -[group_16876] -[group_16877] -[group_16878] -[group_16879] -[group_16880] -[group_16881] -[group_16882] -[group_16883] -[group_16884] -[group_16885] -[group_16886] -[group_16887] -[group_16888] -[group_16889] -[group_16890] -[group_16891] -[group_16892] -[group_16893] -[group_16894] -[group_16895] -[group_16896] -[group_16897] -[group_16898] -[group_16899] -[group_16900] -[group_16901] -[group_16902] -[group_16903] -[group_16904] -[group_16905] -[group_16906] -[group_16907] -[group_16908] -[group_16909] -[group_16910] -[group_16911] -[group_16912] -[group_16913] -[group_16914] -[group_16915] -[group_16916] -[group_16917] -[group_16918] -[group_16919] -[group_16920] -[group_16921] -[group_16922] -[group_16923] -[group_16924] -[group_16925] -[group_16926] -[group_16927] -[group_16928] -[group_16929] -[group_16930] -[group_16931] -[group_16932] -[group_16933] -[group_16934] -[group_16935] -[group_16936] -[group_16937] -[group_16938] -[group_16939] -[group_16940] -[group_16941] -[group_16942] -[group_16943] -[group_16944] -[group_16945] -[group_16946] -[group_16947] -[group_16948] -[group_16949] -[group_16950] -[group_16951] -[group_16952] -[group_16953] -[group_16954] -[group_16955] -[group_16956] -[group_16957] -[group_16958] -[group_16959] -[group_16960] -[group_16961] -[group_16962] -[group_16963] -[group_16964] -[group_16965] -[group_16966] -[group_16967] -[group_16968] -[group_16969] -[group_16970] -[group_16971] -[group_16972] -[group_16973] -[group_16974] -[group_16975] -[group_16976] -[group_16977] -[group_16978] -[group_16979] -[group_16980] -[group_16981] -[group_16982] -[group_16983] -[group_16984] -[group_16985] -[group_16986] -[group_16987] -[group_16988] -[group_16989] -[group_16990] -[group_16991] -[group_16992] -[group_16993] -[group_16994] -[group_16995] -[group_16996] -[group_16997] -[group_16998] -[group_16999] -[group_17000] -[group_17001] -[group_17002] -[group_17003] -[group_17004] -[group_17005] -[group_17006] -[group_17007] -[group_17008] -[group_17009] -[group_17010] -[group_17011] -[group_17012] -[group_17013] -[group_17014] -[group_17015] -[group_17016] -[group_17017] -[group_17018] -[group_17019] -[group_17020] -[group_17021] -[group_17022] -[group_17023] -[group_17024] -[group_17025] -[group_17026] -[group_17027] -[group_17028] -[group_17029] -[group_17030] -[group_17031] -[group_17032] -[group_17033] -[group_17034] -[group_17035] -[group_17036] -[group_17037] -[group_17038] -[group_17039] -[group_17040] -[group_17041] -[group_17042] -[group_17043] -[group_17044] -[group_17045] -[group_17046] -[group_17047] -[group_17048] -[group_17049] -[group_17050] -[group_17051] -[group_17052] -[group_17053] -[group_17054] -[group_17055] -[group_17056] -[group_17057] -[group_17058] -[group_17059] -[group_17060] -[group_17061] -[group_17062] -[group_17063] -[group_17064] -[group_17065] -[group_17066] -[group_17067] -[group_17068] -[group_17069] -[group_17070] -[group_17071] -[group_17072] -[group_17073] -[group_17074] -[group_17075] -[group_17076] -[group_17077] -[group_17078] -[group_17079] -[group_17080] -[group_17081] -[group_17082] -[group_17083] -[group_17084] -[group_17085] -[group_17086] -[group_17087] -[group_17088] -[group_17089] -[group_17090] -[group_17091] -[group_17092] -[group_17093] -[group_17094] -[group_17095] -[group_17096] -[group_17097] -[group_17098] -[group_17099] -[group_17100] -[group_17101] -[group_17102] -[group_17103] -[group_17104] -[group_17105] -[group_17106] -[group_17107] -[group_17108] -[group_17109] -[group_17110] -[group_17111] -[group_17112] -[group_17113] -[group_17114] -[group_17115] -[group_17116] -[group_17117] -[group_17118] -[group_17119] -[group_17120] -[group_17121] -[group_17122] -[group_17123] -[group_17124] -[group_17125] -[group_17126] -[group_17127] -[group_17128] -[group_17129] -[group_17130] -[group_17131] -[group_17132] -[group_17133] -[group_17134] -[group_17135] -[group_17136] -[group_17137] -[group_17138] -[group_17139] -[group_17140] -[group_17141] -[group_17142] -[group_17143] -[group_17144] -[group_17145] -[group_17146] -[group_17147] -[group_17148] -[group_17149] -[group_17150] -[group_17151] -[group_17152] -[group_17153] -[group_17154] -[group_17155] -[group_17156] -[group_17157] -[group_17158] -[group_17159] -[group_17160] -[group_17161] -[group_17162] -[group_17163] -[group_17164] -[group_17165] -[group_17166] -[group_17167] -[group_17168] -[group_17169] -[group_17170] -[group_17171] -[group_17172] -[group_17173] -[group_17174] -[group_17175] -[group_17176] -[group_17177] -[group_17178] -[group_17179] -[group_17180] -[group_17181] -[group_17182] -[group_17183] -[group_17184] -[group_17185] -[group_17186] -[group_17187] -[group_17188] -[group_17189] -[group_17190] -[group_17191] -[group_17192] -[group_17193] -[group_17194] -[group_17195] -[group_17196] -[group_17197] -[group_17198] -[group_17199] -[group_17200] -[group_17201] -[group_17202] -[group_17203] -[group_17204] -[group_17205] -[group_17206] -[group_17207] -[group_17208] -[group_17209] -[group_17210] -[group_17211] -[group_17212] -[group_17213] -[group_17214] -[group_17215] -[group_17216] -[group_17217] -[group_17218] -[group_17219] -[group_17220] -[group_17221] -[group_17222] -[group_17223] -[group_17224] -[group_17225] -[group_17226] -[group_17227] -[group_17228] -[group_17229] -[group_17230] -[group_17231] -[group_17232] -[group_17233] -[group_17234] -[group_17235] -[group_17236] -[group_17237] -[group_17238] -[group_17239] -[group_17240] -[group_17241] -[group_17242] -[group_17243] -[group_17244] -[group_17245] -[group_17246] -[group_17247] -[group_17248] -[group_17249] -[group_17250] -[group_17251] -[group_17252] -[group_17253] -[group_17254] -[group_17255] -[group_17256] -[group_17257] -[group_17258] -[group_17259] -[group_17260] -[group_17261] -[group_17262] -[group_17263] -[group_17264] -[group_17265] -[group_17266] -[group_17267] -[group_17268] -[group_17269] -[group_17270] -[group_17271] -[group_17272] -[group_17273] -[group_17274] -[group_17275] -[group_17276] -[group_17277] -[group_17278] -[group_17279] -[group_17280] -[group_17281] -[group_17282] -[group_17283] -[group_17284] -[group_17285] -[group_17286] -[group_17287] -[group_17288] -[group_17289] -[group_17290] -[group_17291] -[group_17292] -[group_17293] -[group_17294] -[group_17295] -[group_17296] -[group_17297] -[group_17298] -[group_17299] -[group_17300] -[group_17301] -[group_17302] -[group_17303] -[group_17304] -[group_17305] -[group_17306] -[group_17307] -[group_17308] -[group_17309] -[group_17310] -[group_17311] -[group_17312] -[group_17313] -[group_17314] -[group_17315] -[group_17316] -[group_17317] -[group_17318] -[group_17319] -[group_17320] -[group_17321] -[group_17322] -[group_17323] -[group_17324] -[group_17325] -[group_17326] -[group_17327] -[group_17328] -[group_17329] -[group_17330] -[group_17331] -[group_17332] -[group_17333] -[group_17334] -[group_17335] -[group_17336] -[group_17337] -[group_17338] -[group_17339] -[group_17340] -[group_17341] -[group_17342] -[group_17343] -[group_17344] -[group_17345] -[group_17346] -[group_17347] -[group_17348] -[group_17349] -[group_17350] -[group_17351] -[group_17352] -[group_17353] -[group_17354] -[group_17355] -[group_17356] -[group_17357] -[group_17358] -[group_17359] -[group_17360] -[group_17361] -[group_17362] -[group_17363] -[group_17364] -[group_17365] -[group_17366] -[group_17367] -[group_17368] -[group_17369] -[group_17370] -[group_17371] -[group_17372] -[group_17373] -[group_17374] -[group_17375] -[group_17376] -[group_17377] -[group_17378] -[group_17379] -[group_17380] -[group_17381] -[group_17382] -[group_17383] -[group_17384] -[group_17385] -[group_17386] -[group_17387] -[group_17388] -[group_17389] -[group_17390] -[group_17391] -[group_17392] -[group_17393] -[group_17394] -[group_17395] -[group_17396] -[group_17397] -[group_17398] -[group_17399] -[group_17400] -[group_17401] -[group_17402] -[group_17403] -[group_17404] -[group_17405] -[group_17406] -[group_17407] -[group_17408] -[group_17409] -[group_17410] -[group_17411] -[group_17412] -[group_17413] -[group_17414] -[group_17415] -[group_17416] -[group_17417] -[group_17418] -[group_17419] -[group_17420] -[group_17421] -[group_17422] -[group_17423] -[group_17424] -[group_17425] -[group_17426] -[group_17427] -[group_17428] -[group_17429] -[group_17430] -[group_17431] -[group_17432] -[group_17433] -[group_17434] -[group_17435] -[group_17436] -[group_17437] -[group_17438] -[group_17439] -[group_17440] -[group_17441] -[group_17442] -[group_17443] -[group_17444] -[group_17445] -[group_17446] -[group_17447] -[group_17448] -[group_17449] -[group_17450] -[group_17451] -[group_17452] -[group_17453] -[group_17454] -[group_17455] -[group_17456] -[group_17457] -[group_17458] -[group_17459] -[group_17460] -[group_17461] -[group_17462] -[group_17463] -[group_17464] -[group_17465] -[group_17466] -[group_17467] -[group_17468] -[group_17469] -[group_17470] -[group_17471] -[group_17472] -[group_17473] -[group_17474] -[group_17475] -[group_17476] -[group_17477] -[group_17478] -[group_17479] -[group_17480] -[group_17481] -[group_17482] -[group_17483] -[group_17484] -[group_17485] -[group_17486] -[group_17487] -[group_17488] -[group_17489] -[group_17490] -[group_17491] -[group_17492] -[group_17493] -[group_17494] -[group_17495] -[group_17496] -[group_17497] -[group_17498] -[group_17499] -[group_17500] -[group_17501] -[group_17502] -[group_17503] -[group_17504] -[group_17505] -[group_17506] -[group_17507] -[group_17508] -[group_17509] -[group_17510] -[group_17511] -[group_17512] -[group_17513] -[group_17514] -[group_17515] -[group_17516] -[group_17517] -[group_17518] -[group_17519] -[group_17520] -[group_17521] -[group_17522] -[group_17523] -[group_17524] -[group_17525] -[group_17526] -[group_17527] -[group_17528] -[group_17529] -[group_17530] -[group_17531] -[group_17532] -[group_17533] -[group_17534] -[group_17535] -[group_17536] -[group_17537] -[group_17538] -[group_17539] -[group_17540] -[group_17541] -[group_17542] -[group_17543] -[group_17544] -[group_17545] -[group_17546] -[group_17547] -[group_17548] -[group_17549] -[group_17550] -[group_17551] -[group_17552] -[group_17553] -[group_17554] -[group_17555] -[group_17556] -[group_17557] -[group_17558] -[group_17559] -[group_17560] -[group_17561] -[group_17562] -[group_17563] -[group_17564] -[group_17565] -[group_17566] -[group_17567] -[group_17568] -[group_17569] -[group_17570] -[group_17571] -[group_17572] -[group_17573] -[group_17574] -[group_17575] -[group_17576] -[group_17577] -[group_17578] -[group_17579] -[group_17580] -[group_17581] -[group_17582] -[group_17583] -[group_17584] -[group_17585] -[group_17586] -[group_17587] -[group_17588] -[group_17589] -[group_17590] -[group_17591] -[group_17592] -[group_17593] -[group_17594] -[group_17595] -[group_17596] -[group_17597] -[group_17598] -[group_17599] -[group_17600] -[group_17601] -[group_17602] -[group_17603] -[group_17604] -[group_17605] -[group_17606] -[group_17607] -[group_17608] -[group_17609] -[group_17610] -[group_17611] -[group_17612] -[group_17613] -[group_17614] -[group_17615] -[group_17616] -[group_17617] -[group_17618] -[group_17619] -[group_17620] -[group_17621] -[group_17622] -[group_17623] -[group_17624] -[group_17625] -[group_17626] -[group_17627] -[group_17628] -[group_17629] -[group_17630] -[group_17631] -[group_17632] -[group_17633] -[group_17634] -[group_17635] -[group_17636] -[group_17637] -[group_17638] -[group_17639] -[group_17640] -[group_17641] -[group_17642] -[group_17643] -[group_17644] -[group_17645] -[group_17646] -[group_17647] -[group_17648] -[group_17649] -[group_17650] -[group_17651] -[group_17652] -[group_17653] -[group_17654] -[group_17655] -[group_17656] -[group_17657] -[group_17658] -[group_17659] -[group_17660] -[group_17661] -[group_17662] -[group_17663] -[group_17664] -[group_17665] -[group_17666] -[group_17667] -[group_17668] -[group_17669] -[group_17670] -[group_17671] -[group_17672] -[group_17673] -[group_17674] -[group_17675] -[group_17676] -[group_17677] -[group_17678] -[group_17679] -[group_17680] -[group_17681] -[group_17682] -[group_17683] -[group_17684] -[group_17685] -[group_17686] -[group_17687] -[group_17688] -[group_17689] -[group_17690] -[group_17691] -[group_17692] -[group_17693] -[group_17694] -[group_17695] -[group_17696] -[group_17697] -[group_17698] -[group_17699] -[group_17700] -[group_17701] -[group_17702] -[group_17703] -[group_17704] -[group_17705] -[group_17706] -[group_17707] -[group_17708] -[group_17709] -[group_17710] -[group_17711] -[group_17712] -[group_17713] -[group_17714] -[group_17715] -[group_17716] -[group_17717] -[group_17718] -[group_17719] -[group_17720] -[group_17721] -[group_17722] -[group_17723] -[group_17724] -[group_17725] -[group_17726] -[group_17727] -[group_17728] -[group_17729] -[group_17730] -[group_17731] -[group_17732] -[group_17733] -[group_17734] -[group_17735] -[group_17736] -[group_17737] -[group_17738] -[group_17739] -[group_17740] -[group_17741] -[group_17742] -[group_17743] -[group_17744] -[group_17745] -[group_17746] -[group_17747] -[group_17748] -[group_17749] -[group_17750] -[group_17751] -[group_17752] -[group_17753] -[group_17754] -[group_17755] -[group_17756] -[group_17757] -[group_17758] -[group_17759] -[group_17760] -[group_17761] -[group_17762] -[group_17763] -[group_17764] -[group_17765] -[group_17766] -[group_17767] -[group_17768] -[group_17769] -[group_17770] -[group_17771] -[group_17772] -[group_17773] -[group_17774] -[group_17775] -[group_17776] -[group_17777] -[group_17778] -[group_17779] -[group_17780] -[group_17781] -[group_17782] -[group_17783] -[group_17784] -[group_17785] -[group_17786] -[group_17787] -[group_17788] -[group_17789] -[group_17790] -[group_17791] -[group_17792] -[group_17793] -[group_17794] -[group_17795] -[group_17796] -[group_17797] -[group_17798] -[group_17799] -[group_17800] -[group_17801] -[group_17802] -[group_17803] -[group_17804] -[group_17805] -[group_17806] -[group_17807] -[group_17808] -[group_17809] -[group_17810] -[group_17811] -[group_17812] -[group_17813] -[group_17814] -[group_17815] -[group_17816] -[group_17817] -[group_17818] -[group_17819] -[group_17820] -[group_17821] -[group_17822] -[group_17823] -[group_17824] -[group_17825] -[group_17826] -[group_17827] -[group_17828] -[group_17829] -[group_17830] -[group_17831] -[group_17832] -[group_17833] -[group_17834] -[group_17835] -[group_17836] -[group_17837] -[group_17838] -[group_17839] -[group_17840] -[group_17841] -[group_17842] -[group_17843] -[group_17844] -[group_17845] -[group_17846] -[group_17847] -[group_17848] -[group_17849] -[group_17850] -[group_17851] -[group_17852] -[group_17853] -[group_17854] -[group_17855] -[group_17856] -[group_17857] -[group_17858] -[group_17859] -[group_17860] -[group_17861] -[group_17862] -[group_17863] -[group_17864] -[group_17865] -[group_17866] -[group_17867] -[group_17868] -[group_17869] -[group_17870] -[group_17871] -[group_17872] -[group_17873] -[group_17874] -[group_17875] -[group_17876] -[group_17877] -[group_17878] -[group_17879] -[group_17880] -[group_17881] -[group_17882] -[group_17883] -[group_17884] -[group_17885] -[group_17886] -[group_17887] -[group_17888] -[group_17889] -[group_17890] -[group_17891] -[group_17892] -[group_17893] -[group_17894] -[group_17895] -[group_17896] -[group_17897] -[group_17898] -[group_17899] -[group_17900] -[group_17901] -[group_17902] -[group_17903] -[group_17904] -[group_17905] -[group_17906] -[group_17907] -[group_17908] -[group_17909] -[group_17910] -[group_17911] -[group_17912] -[group_17913] -[group_17914] -[group_17915] -[group_17916] -[group_17917] -[group_17918] -[group_17919] -[group_17920] -[group_17921] -[group_17922] -[group_17923] -[group_17924] -[group_17925] -[group_17926] -[group_17927] -[group_17928] -[group_17929] -[group_17930] -[group_17931] -[group_17932] -[group_17933] -[group_17934] -[group_17935] -[group_17936] -[group_17937] -[group_17938] -[group_17939] -[group_17940] -[group_17941] -[group_17942] -[group_17943] -[group_17944] -[group_17945] -[group_17946] -[group_17947] -[group_17948] -[group_17949] -[group_17950] -[group_17951] -[group_17952] -[group_17953] -[group_17954] -[group_17955] -[group_17956] -[group_17957] -[group_17958] -[group_17959] -[group_17960] -[group_17961] -[group_17962] -[group_17963] -[group_17964] -[group_17965] -[group_17966] -[group_17967] -[group_17968] -[group_17969] -[group_17970] -[group_17971] -[group_17972] -[group_17973] -[group_17974] -[group_17975] -[group_17976] -[group_17977] -[group_17978] -[group_17979] -[group_17980] -[group_17981] -[group_17982] -[group_17983] -[group_17984] -[group_17985] -[group_17986] -[group_17987] -[group_17988] -[group_17989] -[group_17990] -[group_17991] -[group_17992] -[group_17993] -[group_17994] -[group_17995] -[group_17996] -[group_17997] -[group_17998] -[group_17999] -[group_18000] -[group_18001] -[group_18002] -[group_18003] -[group_18004] -[group_18005] -[group_18006] -[group_18007] -[group_18008] -[group_18009] -[group_18010] -[group_18011] -[group_18012] -[group_18013] -[group_18014] -[group_18015] -[group_18016] -[group_18017] -[group_18018] -[group_18019] -[group_18020] -[group_18021] -[group_18022] -[group_18023] -[group_18024] -[group_18025] -[group_18026] -[group_18027] -[group_18028] -[group_18029] -[group_18030] -[group_18031] -[group_18032] -[group_18033] -[group_18034] -[group_18035] -[group_18036] -[group_18037] -[group_18038] -[group_18039] -[group_18040] -[group_18041] -[group_18042] -[group_18043] -[group_18044] -[group_18045] -[group_18046] -[group_18047] -[group_18048] -[group_18049] -[group_18050] -[group_18051] -[group_18052] -[group_18053] -[group_18054] -[group_18055] -[group_18056] -[group_18057] -[group_18058] -[group_18059] -[group_18060] -[group_18061] -[group_18062] -[group_18063] -[group_18064] -[group_18065] -[group_18066] -[group_18067] -[group_18068] -[group_18069] -[group_18070] -[group_18071] -[group_18072] -[group_18073] -[group_18074] -[group_18075] -[group_18076] -[group_18077] -[group_18078] -[group_18079] -[group_18080] -[group_18081] -[group_18082] -[group_18083] -[group_18084] -[group_18085] -[group_18086] -[group_18087] -[group_18088] -[group_18089] -[group_18090] -[group_18091] -[group_18092] -[group_18093] -[group_18094] -[group_18095] -[group_18096] -[group_18097] -[group_18098] -[group_18099] -[group_18100] -[group_18101] -[group_18102] -[group_18103] -[group_18104] -[group_18105] -[group_18106] -[group_18107] -[group_18108] -[group_18109] -[group_18110] -[group_18111] -[group_18112] -[group_18113] -[group_18114] -[group_18115] -[group_18116] -[group_18117] -[group_18118] -[group_18119] -[group_18120] -[group_18121] -[group_18122] -[group_18123] -[group_18124] -[group_18125] -[group_18126] -[group_18127] -[group_18128] -[group_18129] -[group_18130] -[group_18131] -[group_18132] -[group_18133] -[group_18134] -[group_18135] -[group_18136] -[group_18137] -[group_18138] -[group_18139] -[group_18140] -[group_18141] -[group_18142] -[group_18143] -[group_18144] -[group_18145] -[group_18146] -[group_18147] -[group_18148] -[group_18149] -[group_18150] -[group_18151] -[group_18152] -[group_18153] -[group_18154] -[group_18155] -[group_18156] -[group_18157] -[group_18158] -[group_18159] -[group_18160] -[group_18161] -[group_18162] -[group_18163] -[group_18164] -[group_18165] -[group_18166] -[group_18167] -[group_18168] -[group_18169] -[group_18170] -[group_18171] -[group_18172] -[group_18173] -[group_18174] -[group_18175] -[group_18176] -[group_18177] -[group_18178] -[group_18179] -[group_18180] -[group_18181] -[group_18182] -[group_18183] -[group_18184] -[group_18185] -[group_18186] -[group_18187] -[group_18188] -[group_18189] -[group_18190] -[group_18191] -[group_18192] -[group_18193] -[group_18194] -[group_18195] -[group_18196] -[group_18197] -[group_18198] -[group_18199] -[group_18200] -[group_18201] -[group_18202] -[group_18203] -[group_18204] -[group_18205] -[group_18206] -[group_18207] -[group_18208] -[group_18209] -[group_18210] -[group_18211] -[group_18212] -[group_18213] -[group_18214] -[group_18215] -[group_18216] -[group_18217] -[group_18218] -[group_18219] -[group_18220] -[group_18221] -[group_18222] -[group_18223] -[group_18224] -[group_18225] -[group_18226] -[group_18227] -[group_18228] -[group_18229] -[group_18230] -[group_18231] -[group_18232] -[group_18233] -[group_18234] -[group_18235] -[group_18236] -[group_18237] -[group_18238] -[group_18239] -[group_18240] -[group_18241] -[group_18242] -[group_18243] -[group_18244] -[group_18245] -[group_18246] -[group_18247] -[group_18248] -[group_18249] -[group_18250] -[group_18251] -[group_18252] -[group_18253] -[group_18254] -[group_18255] -[group_18256] -[group_18257] -[group_18258] -[group_18259] -[group_18260] -[group_18261] -[group_18262] -[group_18263] -[group_18264] -[group_18265] -[group_18266] -[group_18267] -[group_18268] -[group_18269] -[group_18270] -[group_18271] -[group_18272] -[group_18273] -[group_18274] -[group_18275] -[group_18276] -[group_18277] -[group_18278] -[group_18279] -[group_18280] -[group_18281] -[group_18282] -[group_18283] -[group_18284] -[group_18285] -[group_18286] -[group_18287] -[group_18288] -[group_18289] -[group_18290] -[group_18291] -[group_18292] -[group_18293] -[group_18294] -[group_18295] -[group_18296] -[group_18297] -[group_18298] -[group_18299] -[group_18300] -[group_18301] -[group_18302] -[group_18303] -[group_18304] -[group_18305] -[group_18306] -[group_18307] -[group_18308] -[group_18309] -[group_18310] -[group_18311] -[group_18312] -[group_18313] -[group_18314] -[group_18315] -[group_18316] -[group_18317] -[group_18318] -[group_18319] -[group_18320] -[group_18321] -[group_18322] -[group_18323] -[group_18324] -[group_18325] -[group_18326] -[group_18327] -[group_18328] -[group_18329] -[group_18330] -[group_18331] -[group_18332] -[group_18333] -[group_18334] -[group_18335] -[group_18336] -[group_18337] -[group_18338] -[group_18339] -[group_18340] -[group_18341] -[group_18342] -[group_18343] -[group_18344] -[group_18345] -[group_18346] -[group_18347] -[group_18348] -[group_18349] -[group_18350] -[group_18351] -[group_18352] -[group_18353] -[group_18354] -[group_18355] -[group_18356] -[group_18357] -[group_18358] -[group_18359] -[group_18360] -[group_18361] -[group_18362] -[group_18363] -[group_18364] -[group_18365] -[group_18366] -[group_18367] -[group_18368] -[group_18369] -[group_18370] -[group_18371] -[group_18372] -[group_18373] -[group_18374] -[group_18375] -[group_18376] -[group_18377] -[group_18378] -[group_18379] -[group_18380] -[group_18381] -[group_18382] -[group_18383] -[group_18384] -[group_18385] -[group_18386] -[group_18387] -[group_18388] -[group_18389] -[group_18390] -[group_18391] -[group_18392] -[group_18393] -[group_18394] -[group_18395] -[group_18396] -[group_18397] -[group_18398] -[group_18399] -[group_18400] -[group_18401] -[group_18402] -[group_18403] -[group_18404] -[group_18405] -[group_18406] -[group_18407] -[group_18408] -[group_18409] -[group_18410] -[group_18411] -[group_18412] -[group_18413] -[group_18414] -[group_18415] -[group_18416] -[group_18417] -[group_18418] -[group_18419] -[group_18420] -[group_18421] -[group_18422] -[group_18423] -[group_18424] -[group_18425] -[group_18426] -[group_18427] -[group_18428] -[group_18429] -[group_18430] -[group_18431] -[group_18432] -[group_18433] -[group_18434] -[group_18435] -[group_18436] -[group_18437] -[group_18438] -[group_18439] -[group_18440] -[group_18441] -[group_18442] -[group_18443] -[group_18444] -[group_18445] -[group_18446] -[group_18447] -[group_18448] -[group_18449] -[group_18450] -[group_18451] -[group_18452] -[group_18453] -[group_18454] -[group_18455] -[group_18456] -[group_18457] -[group_18458] -[group_18459] -[group_18460] -[group_18461] -[group_18462] -[group_18463] -[group_18464] -[group_18465] -[group_18466] -[group_18467] -[group_18468] -[group_18469] -[group_18470] -[group_18471] -[group_18472] -[group_18473] -[group_18474] -[group_18475] -[group_18476] -[group_18477] -[group_18478] -[group_18479] -[group_18480] -[group_18481] -[group_18482] -[group_18483] -[group_18484] -[group_18485] -[group_18486] -[group_18487] -[group_18488] -[group_18489] -[group_18490] -[group_18491] -[group_18492] -[group_18493] -[group_18494] -[group_18495] -[group_18496] -[group_18497] -[group_18498] -[group_18499] -[group_18500] -[group_18501] -[group_18502] -[group_18503] -[group_18504] -[group_18505] -[group_18506] -[group_18507] -[group_18508] -[group_18509] -[group_18510] -[group_18511] -[group_18512] -[group_18513] -[group_18514] -[group_18515] -[group_18516] -[group_18517] -[group_18518] -[group_18519] -[group_18520] -[group_18521] -[group_18522] -[group_18523] -[group_18524] -[group_18525] -[group_18526] -[group_18527] -[group_18528] -[group_18529] -[group_18530] -[group_18531] -[group_18532] -[group_18533] -[group_18534] -[group_18535] -[group_18536] -[group_18537] -[group_18538] -[group_18539] -[group_18540] -[group_18541] -[group_18542] -[group_18543] -[group_18544] -[group_18545] -[group_18546] -[group_18547] -[group_18548] -[group_18549] -[group_18550] -[group_18551] -[group_18552] -[group_18553] -[group_18554] -[group_18555] -[group_18556] -[group_18557] -[group_18558] -[group_18559] -[group_18560] -[group_18561] -[group_18562] -[group_18563] -[group_18564] -[group_18565] -[group_18566] -[group_18567] -[group_18568] -[group_18569] -[group_18570] -[group_18571] -[group_18572] -[group_18573] -[group_18574] -[group_18575] -[group_18576] -[group_18577] -[group_18578] -[group_18579] -[group_18580] -[group_18581] -[group_18582] -[group_18583] -[group_18584] -[group_18585] -[group_18586] -[group_18587] -[group_18588] -[group_18589] -[group_18590] -[group_18591] -[group_18592] -[group_18593] -[group_18594] -[group_18595] -[group_18596] -[group_18597] -[group_18598] -[group_18599] -[group_18600] -[group_18601] -[group_18602] -[group_18603] -[group_18604] -[group_18605] -[group_18606] -[group_18607] -[group_18608] -[group_18609] -[group_18610] -[group_18611] -[group_18612] -[group_18613] -[group_18614] -[group_18615] -[group_18616] -[group_18617] -[group_18618] -[group_18619] -[group_18620] -[group_18621] -[group_18622] -[group_18623] -[group_18624] -[group_18625] -[group_18626] -[group_18627] -[group_18628] -[group_18629] -[group_18630] -[group_18631] -[group_18632] -[group_18633] -[group_18634] -[group_18635] -[group_18636] -[group_18637] -[group_18638] -[group_18639] -[group_18640] -[group_18641] -[group_18642] -[group_18643] -[group_18644] -[group_18645] -[group_18646] -[group_18647] -[group_18648] -[group_18649] -[group_18650] -[group_18651] -[group_18652] -[group_18653] -[group_18654] -[group_18655] -[group_18656] -[group_18657] -[group_18658] -[group_18659] -[group_18660] -[group_18661] -[group_18662] -[group_18663] -[group_18664] -[group_18665] -[group_18666] -[group_18667] -[group_18668] -[group_18669] -[group_18670] -[group_18671] -[group_18672] -[group_18673] -[group_18674] -[group_18675] -[group_18676] -[group_18677] -[group_18678] -[group_18679] -[group_18680] -[group_18681] -[group_18682] -[group_18683] -[group_18684] -[group_18685] -[group_18686] -[group_18687] -[group_18688] -[group_18689] -[group_18690] -[group_18691] -[group_18692] -[group_18693] -[group_18694] -[group_18695] -[group_18696] -[group_18697] -[group_18698] -[group_18699] -[group_18700] -[group_18701] -[group_18702] -[group_18703] -[group_18704] -[group_18705] -[group_18706] -[group_18707] -[group_18708] -[group_18709] -[group_18710] -[group_18711] -[group_18712] -[group_18713] -[group_18714] -[group_18715] -[group_18716] -[group_18717] -[group_18718] -[group_18719] -[group_18720] -[group_18721] -[group_18722] -[group_18723] -[group_18724] -[group_18725] -[group_18726] -[group_18727] -[group_18728] -[group_18729] -[group_18730] -[group_18731] -[group_18732] -[group_18733] -[group_18734] -[group_18735] -[group_18736] -[group_18737] -[group_18738] -[group_18739] -[group_18740] -[group_18741] -[group_18742] -[group_18743] -[group_18744] -[group_18745] -[group_18746] -[group_18747] -[group_18748] -[group_18749] -[group_18750] -[group_18751] -[group_18752] -[group_18753] -[group_18754] -[group_18755] -[group_18756] -[group_18757] -[group_18758] -[group_18759] -[group_18760] -[group_18761] -[group_18762] -[group_18763] -[group_18764] -[group_18765] -[group_18766] -[group_18767] -[group_18768] -[group_18769] -[group_18770] -[group_18771] -[group_18772] -[group_18773] -[group_18774] -[group_18775] -[group_18776] -[group_18777] -[group_18778] -[group_18779] -[group_18780] -[group_18781] -[group_18782] -[group_18783] -[group_18784] -[group_18785] -[group_18786] -[group_18787] -[group_18788] -[group_18789] -[group_18790] -[group_18791] -[group_18792] -[group_18793] -[group_18794] -[group_18795] -[group_18796] -[group_18797] -[group_18798] -[group_18799] -[group_18800] -[group_18801] -[group_18802] -[group_18803] -[group_18804] -[group_18805] -[group_18806] -[group_18807] -[group_18808] -[group_18809] -[group_18810] -[group_18811] -[group_18812] -[group_18813] -[group_18814] -[group_18815] -[group_18816] -[group_18817] -[group_18818] -[group_18819] -[group_18820] -[group_18821] -[group_18822] -[group_18823] -[group_18824] -[group_18825] -[group_18826] -[group_18827] -[group_18828] -[group_18829] -[group_18830] -[group_18831] -[group_18832] -[group_18833] -[group_18834] -[group_18835] -[group_18836] -[group_18837] -[group_18838] -[group_18839] -[group_18840] -[group_18841] -[group_18842] -[group_18843] -[group_18844] -[group_18845] -[group_18846] -[group_18847] -[group_18848] -[group_18849] -[group_18850] -[group_18851] -[group_18852] -[group_18853] -[group_18854] -[group_18855] -[group_18856] -[group_18857] -[group_18858] -[group_18859] -[group_18860] -[group_18861] -[group_18862] -[group_18863] -[group_18864] -[group_18865] -[group_18866] -[group_18867] -[group_18868] -[group_18869] -[group_18870] -[group_18871] -[group_18872] -[group_18873] -[group_18874] -[group_18875] -[group_18876] -[group_18877] -[group_18878] -[group_18879] -[group_18880] -[group_18881] -[group_18882] -[group_18883] -[group_18884] -[group_18885] -[group_18886] -[group_18887] -[group_18888] -[group_18889] -[group_18890] -[group_18891] -[group_18892] -[group_18893] -[group_18894] -[group_18895] -[group_18896] -[group_18897] -[group_18898] -[group_18899] -[group_18900] -[group_18901] -[group_18902] -[group_18903] -[group_18904] -[group_18905] -[group_18906] -[group_18907] -[group_18908] -[group_18909] -[group_18910] -[group_18911] -[group_18912] -[group_18913] -[group_18914] -[group_18915] -[group_18916] -[group_18917] -[group_18918] -[group_18919] -[group_18920] -[group_18921] -[group_18922] -[group_18923] -[group_18924] -[group_18925] -[group_18926] -[group_18927] -[group_18928] -[group_18929] -[group_18930] -[group_18931] -[group_18932] -[group_18933] -[group_18934] -[group_18935] -[group_18936] -[group_18937] -[group_18938] -[group_18939] -[group_18940] -[group_18941] -[group_18942] -[group_18943] -[group_18944] -[group_18945] -[group_18946] -[group_18947] -[group_18948] -[group_18949] -[group_18950] -[group_18951] -[group_18952] -[group_18953] -[group_18954] -[group_18955] -[group_18956] -[group_18957] -[group_18958] -[group_18959] -[group_18960] -[group_18961] -[group_18962] -[group_18963] -[group_18964] -[group_18965] -[group_18966] -[group_18967] -[group_18968] -[group_18969] -[group_18970] -[group_18971] -[group_18972] -[group_18973] -[group_18974] -[group_18975] -[group_18976] -[group_18977] -[group_18978] -[group_18979] -[group_18980] -[group_18981] -[group_18982] -[group_18983] -[group_18984] -[group_18985] -[group_18986] -[group_18987] -[group_18988] -[group_18989] -[group_18990] -[group_18991] -[group_18992] -[group_18993] -[group_18994] -[group_18995] -[group_18996] -[group_18997] -[group_18998] -[group_18999] -[group_19000] -[group_19001] -[group_19002] -[group_19003] -[group_19004] -[group_19005] -[group_19006] -[group_19007] -[group_19008] -[group_19009] -[group_19010] -[group_19011] -[group_19012] -[group_19013] -[group_19014] -[group_19015] -[group_19016] -[group_19017] -[group_19018] -[group_19019] -[group_19020] -[group_19021] -[group_19022] -[group_19023] -[group_19024] -[group_19025] -[group_19026] -[group_19027] -[group_19028] -[group_19029] -[group_19030] -[group_19031] -[group_19032] -[group_19033] -[group_19034] -[group_19035] -[group_19036] -[group_19037] -[group_19038] -[group_19039] -[group_19040] -[group_19041] -[group_19042] -[group_19043] -[group_19044] -[group_19045] -[group_19046] -[group_19047] -[group_19048] -[group_19049] -[group_19050] -[group_19051] -[group_19052] -[group_19053] -[group_19054] -[group_19055] -[group_19056] -[group_19057] -[group_19058] -[group_19059] -[group_19060] -[group_19061] -[group_19062] -[group_19063] -[group_19064] -[group_19065] -[group_19066] -[group_19067] -[group_19068] -[group_19069] -[group_19070] -[group_19071] -[group_19072] -[group_19073] -[group_19074] -[group_19075] -[group_19076] -[group_19077] -[group_19078] -[group_19079] -[group_19080] -[group_19081] -[group_19082] -[group_19083] -[group_19084] -[group_19085] -[group_19086] -[group_19087] -[group_19088] -[group_19089] -[group_19090] -[group_19091] -[group_19092] -[group_19093] -[group_19094] -[group_19095] -[group_19096] -[group_19097] -[group_19098] -[group_19099] -[group_19100] -[group_19101] -[group_19102] -[group_19103] -[group_19104] -[group_19105] -[group_19106] -[group_19107] -[group_19108] -[group_19109] -[group_19110] -[group_19111] -[group_19112] -[group_19113] -[group_19114] -[group_19115] -[group_19116] -[group_19117] -[group_19118] -[group_19119] -[group_19120] -[group_19121] -[group_19122] -[group_19123] -[group_19124] -[group_19125] -[group_19126] -[group_19127] -[group_19128] -[group_19129] -[group_19130] -[group_19131] -[group_19132] -[group_19133] -[group_19134] -[group_19135] -[group_19136] -[group_19137] -[group_19138] -[group_19139] -[group_19140] -[group_19141] -[group_19142] -[group_19143] -[group_19144] -[group_19145] -[group_19146] -[group_19147] -[group_19148] -[group_19149] -[group_19150] -[group_19151] -[group_19152] -[group_19153] -[group_19154] -[group_19155] -[group_19156] -[group_19157] -[group_19158] -[group_19159] -[group_19160] -[group_19161] -[group_19162] -[group_19163] -[group_19164] -[group_19165] -[group_19166] -[group_19167] -[group_19168] -[group_19169] -[group_19170] -[group_19171] -[group_19172] -[group_19173] -[group_19174] -[group_19175] -[group_19176] -[group_19177] -[group_19178] -[group_19179] -[group_19180] -[group_19181] -[group_19182] -[group_19183] -[group_19184] -[group_19185] -[group_19186] -[group_19187] -[group_19188] -[group_19189] -[group_19190] -[group_19191] -[group_19192] -[group_19193] -[group_19194] -[group_19195] -[group_19196] -[group_19197] -[group_19198] -[group_19199] -[group_19200] -[group_19201] -[group_19202] -[group_19203] -[group_19204] -[group_19205] -[group_19206] -[group_19207] -[group_19208] -[group_19209] -[group_19210] -[group_19211] -[group_19212] -[group_19213] -[group_19214] -[group_19215] -[group_19216] -[group_19217] -[group_19218] -[group_19219] -[group_19220] -[group_19221] -[group_19222] -[group_19223] -[group_19224] -[group_19225] -[group_19226] -[group_19227] -[group_19228] -[group_19229] -[group_19230] -[group_19231] -[group_19232] -[group_19233] -[group_19234] -[group_19235] -[group_19236] -[group_19237] -[group_19238] -[group_19239] -[group_19240] -[group_19241] -[group_19242] -[group_19243] -[group_19244] -[group_19245] -[group_19246] -[group_19247] -[group_19248] -[group_19249] -[group_19250] -[group_19251] -[group_19252] -[group_19253] -[group_19254] -[group_19255] -[group_19256] -[group_19257] -[group_19258] -[group_19259] -[group_19260] -[group_19261] -[group_19262] -[group_19263] -[group_19264] -[group_19265] -[group_19266] -[group_19267] -[group_19268] -[group_19269] -[group_19270] -[group_19271] -[group_19272] -[group_19273] -[group_19274] -[group_19275] -[group_19276] -[group_19277] -[group_19278] -[group_19279] -[group_19280] -[group_19281] -[group_19282] -[group_19283] -[group_19284] -[group_19285] -[group_19286] -[group_19287] -[group_19288] -[group_19289] -[group_19290] -[group_19291] -[group_19292] -[group_19293] -[group_19294] -[group_19295] -[group_19296] -[group_19297] -[group_19298] -[group_19299] -[group_19300] -[group_19301] -[group_19302] -[group_19303] -[group_19304] -[group_19305] -[group_19306] -[group_19307] -[group_19308] -[group_19309] -[group_19310] -[group_19311] -[group_19312] -[group_19313] -[group_19314] -[group_19315] -[group_19316] -[group_19317] -[group_19318] -[group_19319] -[group_19320] -[group_19321] -[group_19322] -[group_19323] -[group_19324] -[group_19325] -[group_19326] -[group_19327] -[group_19328] -[group_19329] -[group_19330] -[group_19331] -[group_19332] -[group_19333] -[group_19334] -[group_19335] -[group_19336] -[group_19337] -[group_19338] -[group_19339] -[group_19340] -[group_19341] -[group_19342] -[group_19343] -[group_19344] -[group_19345] -[group_19346] -[group_19347] -[group_19348] -[group_19349] -[group_19350] -[group_19351] -[group_19352] -[group_19353] -[group_19354] -[group_19355] -[group_19356] -[group_19357] -[group_19358] -[group_19359] -[group_19360] -[group_19361] -[group_19362] -[group_19363] -[group_19364] -[group_19365] -[group_19366] -[group_19367] -[group_19368] -[group_19369] -[group_19370] -[group_19371] -[group_19372] -[group_19373] -[group_19374] -[group_19375] -[group_19376] -[group_19377] -[group_19378] -[group_19379] -[group_19380] -[group_19381] -[group_19382] -[group_19383] -[group_19384] -[group_19385] -[group_19386] -[group_19387] -[group_19388] -[group_19389] -[group_19390] -[group_19391] -[group_19392] -[group_19393] -[group_19394] -[group_19395] -[group_19396] -[group_19397] -[group_19398] -[group_19399] -[group_19400] -[group_19401] -[group_19402] -[group_19403] -[group_19404] -[group_19405] -[group_19406] -[group_19407] -[group_19408] -[group_19409] -[group_19410] -[group_19411] -[group_19412] -[group_19413] -[group_19414] -[group_19415] -[group_19416] -[group_19417] -[group_19418] -[group_19419] -[group_19420] -[group_19421] -[group_19422] -[group_19423] -[group_19424] -[group_19425] -[group_19426] -[group_19427] -[group_19428] -[group_19429] -[group_19430] -[group_19431] -[group_19432] -[group_19433] -[group_19434] -[group_19435] -[group_19436] -[group_19437] -[group_19438] -[group_19439] -[group_19440] -[group_19441] -[group_19442] -[group_19443] -[group_19444] -[group_19445] -[group_19446] -[group_19447] -[group_19448] -[group_19449] -[group_19450] -[group_19451] -[group_19452] -[group_19453] -[group_19454] -[group_19455] -[group_19456] -[group_19457] -[group_19458] -[group_19459] -[group_19460] -[group_19461] -[group_19462] -[group_19463] -[group_19464] -[group_19465] -[group_19466] -[group_19467] -[group_19468] -[group_19469] -[group_19470] -[group_19471] -[group_19472] -[group_19473] -[group_19474] -[group_19475] -[group_19476] -[group_19477] -[group_19478] -[group_19479] -[group_19480] -[group_19481] -[group_19482] -[group_19483] -[group_19484] -[group_19485] -[group_19486] -[group_19487] -[group_19488] -[group_19489] -[group_19490] -[group_19491] -[group_19492] -[group_19493] -[group_19494] -[group_19495] -[group_19496] -[group_19497] -[group_19498] -[group_19499] -[group_19500] -[group_19501] -[group_19502] -[group_19503] -[group_19504] -[group_19505] -[group_19506] -[group_19507] -[group_19508] -[group_19509] -[group_19510] -[group_19511] -[group_19512] -[group_19513] -[group_19514] -[group_19515] -[group_19516] -[group_19517] -[group_19518] -[group_19519] -[group_19520] -[group_19521] -[group_19522] -[group_19523] -[group_19524] -[group_19525] -[group_19526] -[group_19527] -[group_19528] -[group_19529] -[group_19530] -[group_19531] -[group_19532] -[group_19533] -[group_19534] -[group_19535] -[group_19536] -[group_19537] -[group_19538] -[group_19539] -[group_19540] -[group_19541] -[group_19542] -[group_19543] -[group_19544] -[group_19545] -[group_19546] -[group_19547] -[group_19548] -[group_19549] -[group_19550] -[group_19551] -[group_19552] -[group_19553] -[group_19554] -[group_19555] -[group_19556] -[group_19557] -[group_19558] -[group_19559] -[group_19560] -[group_19561] -[group_19562] -[group_19563] -[group_19564] -[group_19565] -[group_19566] -[group_19567] -[group_19568] -[group_19569] -[group_19570] -[group_19571] -[group_19572] -[group_19573] -[group_19574] -[group_19575] -[group_19576] -[group_19577] -[group_19578] -[group_19579] -[group_19580] -[group_19581] -[group_19582] -[group_19583] -[group_19584] -[group_19585] -[group_19586] -[group_19587] -[group_19588] -[group_19589] -[group_19590] -[group_19591] -[group_19592] -[group_19593] -[group_19594] -[group_19595] -[group_19596] -[group_19597] -[group_19598] -[group_19599] -[group_19600] -[group_19601] -[group_19602] -[group_19603] -[group_19604] -[group_19605] -[group_19606] -[group_19607] -[group_19608] -[group_19609] -[group_19610] -[group_19611] -[group_19612] -[group_19613] -[group_19614] -[group_19615] -[group_19616] -[group_19617] -[group_19618] -[group_19619] -[group_19620] -[group_19621] -[group_19622] -[group_19623] -[group_19624] -[group_19625] -[group_19626] -[group_19627] -[group_19628] -[group_19629] -[group_19630] -[group_19631] -[group_19632] -[group_19633] -[group_19634] -[group_19635] -[group_19636] -[group_19637] -[group_19638] -[group_19639] -[group_19640] -[group_19641] -[group_19642] -[group_19643] -[group_19644] -[group_19645] -[group_19646] -[group_19647] -[group_19648] -[group_19649] -[group_19650] -[group_19651] -[group_19652] -[group_19653] -[group_19654] -[group_19655] -[group_19656] -[group_19657] -[group_19658] -[group_19659] -[group_19660] -[group_19661] -[group_19662] -[group_19663] -[group_19664] -[group_19665] -[group_19666] -[group_19667] -[group_19668] -[group_19669] -[group_19670] -[group_19671] -[group_19672] -[group_19673] -[group_19674] -[group_19675] -[group_19676] -[group_19677] -[group_19678] -[group_19679] -[group_19680] -[group_19681] -[group_19682] -[group_19683] -[group_19684] -[group_19685] -[group_19686] -[group_19687] -[group_19688] -[group_19689] -[group_19690] -[group_19691] -[group_19692] -[group_19693] -[group_19694] -[group_19695] -[group_19696] -[group_19697] -[group_19698] -[group_19699] -[group_19700] -[group_19701] -[group_19702] -[group_19703] -[group_19704] -[group_19705] -[group_19706] -[group_19707] -[group_19708] -[group_19709] -[group_19710] -[group_19711] -[group_19712] -[group_19713] -[group_19714] -[group_19715] -[group_19716] -[group_19717] -[group_19718] -[group_19719] -[group_19720] -[group_19721] -[group_19722] -[group_19723] -[group_19724] -[group_19725] -[group_19726] -[group_19727] -[group_19728] -[group_19729] -[group_19730] -[group_19731] -[group_19732] -[group_19733] -[group_19734] -[group_19735] -[group_19736] -[group_19737] -[group_19738] -[group_19739] -[group_19740] -[group_19741] -[group_19742] -[group_19743] -[group_19744] -[group_19745] -[group_19746] -[group_19747] -[group_19748] -[group_19749] -[group_19750] -[group_19751] -[group_19752] -[group_19753] -[group_19754] -[group_19755] -[group_19756] -[group_19757] -[group_19758] -[group_19759] -[group_19760] -[group_19761] -[group_19762] -[group_19763] -[group_19764] -[group_19765] -[group_19766] -[group_19767] -[group_19768] -[group_19769] -[group_19770] -[group_19771] -[group_19772] -[group_19773] -[group_19774] -[group_19775] -[group_19776] -[group_19777] -[group_19778] -[group_19779] -[group_19780] -[group_19781] -[group_19782] -[group_19783] -[group_19784] -[group_19785] -[group_19786] -[group_19787] -[group_19788] -[group_19789] -[group_19790] -[group_19791] -[group_19792] -[group_19793] -[group_19794] -[group_19795] -[group_19796] -[group_19797] -[group_19798] -[group_19799] -[group_19800] -[group_19801] -[group_19802] -[group_19803] -[group_19804] -[group_19805] -[group_19806] -[group_19807] -[group_19808] -[group_19809] -[group_19810] -[group_19811] -[group_19812] -[group_19813] -[group_19814] -[group_19815] -[group_19816] -[group_19817] -[group_19818] -[group_19819] -[group_19820] -[group_19821] -[group_19822] -[group_19823] -[group_19824] -[group_19825] -[group_19826] -[group_19827] -[group_19828] -[group_19829] -[group_19830] -[group_19831] -[group_19832] -[group_19833] -[group_19834] -[group_19835] -[group_19836] -[group_19837] -[group_19838] -[group_19839] -[group_19840] -[group_19841] -[group_19842] -[group_19843] -[group_19844] -[group_19845] -[group_19846] -[group_19847] -[group_19848] -[group_19849] -[group_19850] -[group_19851] -[group_19852] -[group_19853] -[group_19854] -[group_19855] -[group_19856] -[group_19857] -[group_19858] -[group_19859] -[group_19860] -[group_19861] -[group_19862] -[group_19863] -[group_19864] -[group_19865] -[group_19866] -[group_19867] -[group_19868] -[group_19869] -[group_19870] -[group_19871] -[group_19872] -[group_19873] -[group_19874] -[group_19875] -[group_19876] -[group_19877] -[group_19878] -[group_19879] -[group_19880] -[group_19881] -[group_19882] -[group_19883] -[group_19884] -[group_19885] -[group_19886] -[group_19887] -[group_19888] -[group_19889] -[group_19890] -[group_19891] -[group_19892] -[group_19893] -[group_19894] -[group_19895] -[group_19896] -[group_19897] -[group_19898] -[group_19899] -[group_19900] -[group_19901] -[group_19902] -[group_19903] -[group_19904] -[group_19905] -[group_19906] -[group_19907] -[group_19908] -[group_19909] -[group_19910] -[group_19911] -[group_19912] -[group_19913] -[group_19914] -[group_19915] -[group_19916] -[group_19917] -[group_19918] -[group_19919] -[group_19920] -[group_19921] -[group_19922] -[group_19923] -[group_19924] -[group_19925] -[group_19926] -[group_19927] -[group_19928] -[group_19929] -[group_19930] -[group_19931] -[group_19932] -[group_19933] -[group_19934] -[group_19935] -[group_19936] -[group_19937] -[group_19938] -[group_19939] -[group_19940] -[group_19941] -[group_19942] -[group_19943] -[group_19944] -[group_19945] -[group_19946] -[group_19947] -[group_19948] -[group_19949] -[group_19950] -[group_19951] -[group_19952] -[group_19953] -[group_19954] -[group_19955] -[group_19956] -[group_19957] -[group_19958] -[group_19959] -[group_19960] -[group_19961] -[group_19962] -[group_19963] -[group_19964] -[group_19965] -[group_19966] -[group_19967] -[group_19968] -[group_19969] -[group_19970] -[group_19971] -[group_19972] -[group_19973] -[group_19974] -[group_19975] -[group_19976] -[group_19977] -[group_19978] -[group_19979] -[group_19980] -[group_19981] -[group_19982] -[group_19983] -[group_19984] -[group_19985] -[group_19986] -[group_19987] -[group_19988] -[group_19989] -[group_19990] -[group_19991] -[group_19992] -[group_19993] -[group_19994] -[group_19995] -[group_19996] -[group_19997] -[group_19998] -[group_19999] -[group_20000] -[group_20001] -[group_20002] -[group_20003] -[group_20004] -[group_20005] -[group_20006] -[group_20007] -[group_20008] -[group_20009] -[group_20010] -[group_20011] -[group_20012] -[group_20013] -[group_20014] -[group_20015] -[group_20016] -[group_20017] -[group_20018] -[group_20019] -[group_20020] -[group_20021] -[group_20022] -[group_20023] -[group_20024] -[group_20025] -[group_20026] -[group_20027] -[group_20028] -[group_20029] -[group_20030] -[group_20031] -[group_20032] -[group_20033] -[group_20034] -[group_20035] -[group_20036] -[group_20037] -[group_20038] -[group_20039] -[group_20040] -[group_20041] -[group_20042] -[group_20043] -[group_20044] -[group_20045] -[group_20046] -[group_20047] -[group_20048] -[group_20049] -[group_20050] -[group_20051] -[group_20052] -[group_20053] -[group_20054] -[group_20055] -[group_20056] -[group_20057] -[group_20058] -[group_20059] -[group_20060] -[group_20061] -[group_20062] -[group_20063] -[group_20064] -[group_20065] -[group_20066] -[group_20067] -[group_20068] -[group_20069] -[group_20070] -[group_20071] -[group_20072] -[group_20073] -[group_20074] -[group_20075] -[group_20076] -[group_20077] -[group_20078] -[group_20079] -[group_20080] -[group_20081] -[group_20082] -[group_20083] -[group_20084] -[group_20085] -[group_20086] -[group_20087] -[group_20088] -[group_20089] -[group_20090] -[group_20091] -[group_20092] -[group_20093] -[group_20094] -[group_20095] -[group_20096] -[group_20097] -[group_20098] -[group_20099] -[group_20100] -[group_20101] -[group_20102] -[group_20103] -[group_20104] -[group_20105] -[group_20106] -[group_20107] -[group_20108] -[group_20109] -[group_20110] -[group_20111] -[group_20112] -[group_20113] -[group_20114] -[group_20115] -[group_20116] -[group_20117] -[group_20118] -[group_20119] -[group_20120] -[group_20121] -[group_20122] -[group_20123] -[group_20124] -[group_20125] -[group_20126] -[group_20127] -[group_20128] -[group_20129] -[group_20130] -[group_20131] -[group_20132] -[group_20133] -[group_20134] -[group_20135] -[group_20136] -[group_20137] -[group_20138] -[group_20139] -[group_20140] -[group_20141] -[group_20142] -[group_20143] -[group_20144] -[group_20145] -[group_20146] -[group_20147] -[group_20148] -[group_20149] -[group_20150] -[group_20151] -[group_20152] -[group_20153] -[group_20154] -[group_20155] -[group_20156] -[group_20157] -[group_20158] -[group_20159] -[group_20160] -[group_20161] -[group_20162] -[group_20163] -[group_20164] -[group_20165] -[group_20166] -[group_20167] -[group_20168] -[group_20169] -[group_20170] -[group_20171] -[group_20172] -[group_20173] -[group_20174] -[group_20175] -[group_20176] -[group_20177] -[group_20178] -[group_20179] -[group_20180] -[group_20181] -[group_20182] -[group_20183] -[group_20184] -[group_20185] -[group_20186] -[group_20187] -[group_20188] -[group_20189] -[group_20190] -[group_20191] -[group_20192] -[group_20193] -[group_20194] -[group_20195] -[group_20196] -[group_20197] -[group_20198] -[group_20199] -[group_20200] -[group_20201] -[group_20202] -[group_20203] -[group_20204] -[group_20205] -[group_20206] -[group_20207] -[group_20208] -[group_20209] -[group_20210] -[group_20211] -[group_20212] -[group_20213] -[group_20214] -[group_20215] -[group_20216] -[group_20217] -[group_20218] -[group_20219] -[group_20220] -[group_20221] -[group_20222] -[group_20223] -[group_20224] -[group_20225] -[group_20226] -[group_20227] -[group_20228] -[group_20229] -[group_20230] -[group_20231] -[group_20232] -[group_20233] -[group_20234] -[group_20235] -[group_20236] -[group_20237] -[group_20238] -[group_20239] -[group_20240] -[group_20241] -[group_20242] -[group_20243] -[group_20244] -[group_20245] -[group_20246] -[group_20247] -[group_20248] -[group_20249] -[group_20250] -[group_20251] -[group_20252] -[group_20253] -[group_20254] -[group_20255] -[group_20256] -[group_20257] -[group_20258] -[group_20259] -[group_20260] -[group_20261] -[group_20262] -[group_20263] -[group_20264] -[group_20265] -[group_20266] -[group_20267] -[group_20268] -[group_20269] -[group_20270] -[group_20271] -[group_20272] -[group_20273] -[group_20274] -[group_20275] -[group_20276] -[group_20277] -[group_20278] -[group_20279] -[group_20280] -[group_20281] -[group_20282] -[group_20283] -[group_20284] -[group_20285] -[group_20286] -[group_20287] -[group_20288] -[group_20289] -[group_20290] -[group_20291] -[group_20292] -[group_20293] -[group_20294] -[group_20295] -[group_20296] -[group_20297] -[group_20298] -[group_20299] -[group_20300] -[group_20301] -[group_20302] -[group_20303] -[group_20304] -[group_20305] -[group_20306] -[group_20307] -[group_20308] -[group_20309] -[group_20310] -[group_20311] -[group_20312] -[group_20313] -[group_20314] -[group_20315] -[group_20316] -[group_20317] -[group_20318] -[group_20319] -[group_20320] -[group_20321] -[group_20322] -[group_20323] -[group_20324] -[group_20325] -[group_20326] -[group_20327] -[group_20328] -[group_20329] -[group_20330] -[group_20331] -[group_20332] -[group_20333] -[group_20334] -[group_20335] -[group_20336] -[group_20337] -[group_20338] -[group_20339] -[group_20340] -[group_20341] -[group_20342] -[group_20343] -[group_20344] -[group_20345] -[group_20346] -[group_20347] -[group_20348] -[group_20349] -[group_20350] -[group_20351] -[group_20352] -[group_20353] -[group_20354] -[group_20355] -[group_20356] -[group_20357] -[group_20358] -[group_20359] -[group_20360] -[group_20361] -[group_20362] -[group_20363] -[group_20364] -[group_20365] -[group_20366] -[group_20367] -[group_20368] -[group_20369] -[group_20370] -[group_20371] -[group_20372] -[group_20373] -[group_20374] -[group_20375] -[group_20376] -[group_20377] -[group_20378] -[group_20379] -[group_20380] -[group_20381] -[group_20382] -[group_20383] -[group_20384] -[group_20385] -[group_20386] -[group_20387] -[group_20388] -[group_20389] -[group_20390] -[group_20391] -[group_20392] -[group_20393] -[group_20394] -[group_20395] -[group_20396] -[group_20397] -[group_20398] -[group_20399] -[group_20400] -[group_20401] -[group_20402] -[group_20403] -[group_20404] -[group_20405] -[group_20406] -[group_20407] -[group_20408] -[group_20409] -[group_20410] -[group_20411] -[group_20412] -[group_20413] -[group_20414] -[group_20415] -[group_20416] -[group_20417] -[group_20418] -[group_20419] -[group_20420] -[group_20421] -[group_20422] -[group_20423] -[group_20424] -[group_20425] -[group_20426] -[group_20427] -[group_20428] -[group_20429] -[group_20430] -[group_20431] -[group_20432] -[group_20433] -[group_20434] -[group_20435] -[group_20436] -[group_20437] -[group_20438] -[group_20439] -[group_20440] -[group_20441] -[group_20442] -[group_20443] -[group_20444] -[group_20445] -[group_20446] -[group_20447] -[group_20448] -[group_20449] -[group_20450] -[group_20451] -[group_20452] -[group_20453] -[group_20454] -[group_20455] -[group_20456] -[group_20457] -[group_20458] -[group_20459] -[group_20460] -[group_20461] -[group_20462] -[group_20463] -[group_20464] -[group_20465] -[group_20466] -[group_20467] -[group_20468] -[group_20469] -[group_20470] -[group_20471] -[group_20472] -[group_20473] -[group_20474] -[group_20475] -[group_20476] -[group_20477] -[group_20478] -[group_20479] -[group_20480] -[group_20481] -[group_20482] -[group_20483] -[group_20484] -[group_20485] -[group_20486] -[group_20487] -[group_20488] -[group_20489] -[group_20490] -[group_20491] -[group_20492] -[group_20493] -[group_20494] -[group_20495] -[group_20496] -[group_20497] -[group_20498] -[group_20499] -[group_20500] -[group_20501] -[group_20502] -[group_20503] -[group_20504] -[group_20505] -[group_20506] -[group_20507] -[group_20508] -[group_20509] -[group_20510] -[group_20511] -[group_20512] -[group_20513] -[group_20514] -[group_20515] -[group_20516] -[group_20517] -[group_20518] -[group_20519] -[group_20520] -[group_20521] -[group_20522] -[group_20523] -[group_20524] -[group_20525] -[group_20526] -[group_20527] -[group_20528] -[group_20529] -[group_20530] -[group_20531] -[group_20532] -[group_20533] -[group_20534] -[group_20535] -[group_20536] -[group_20537] -[group_20538] -[group_20539] -[group_20540] -[group_20541] -[group_20542] -[group_20543] -[group_20544] -[group_20545] -[group_20546] -[group_20547] -[group_20548] -[group_20549] -[group_20550] -[group_20551] -[group_20552] -[group_20553] -[group_20554] -[group_20555] -[group_20556] -[group_20557] -[group_20558] -[group_20559] -[group_20560] -[group_20561] -[group_20562] -[group_20563] -[group_20564] -[group_20565] -[group_20566] -[group_20567] -[group_20568] -[group_20569] -[group_20570] -[group_20571] -[group_20572] -[group_20573] -[group_20574] -[group_20575] -[group_20576] -[group_20577] -[group_20578] -[group_20579] -[group_20580] -[group_20581] -[group_20582] -[group_20583] -[group_20584] -[group_20585] -[group_20586] -[group_20587] -[group_20588] -[group_20589] -[group_20590] -[group_20591] -[group_20592] -[group_20593] -[group_20594] -[group_20595] -[group_20596] -[group_20597] -[group_20598] -[group_20599] -[group_20600] -[group_20601] -[group_20602] -[group_20603] -[group_20604] -[group_20605] -[group_20606] -[group_20607] -[group_20608] -[group_20609] -[group_20610] -[group_20611] -[group_20612] -[group_20613] -[group_20614] -[group_20615] -[group_20616] -[group_20617] -[group_20618] -[group_20619] -[group_20620] -[group_20621] -[group_20622] -[group_20623] -[group_20624] -[group_20625] -[group_20626] -[group_20627] -[group_20628] -[group_20629] -[group_20630] -[group_20631] -[group_20632] -[group_20633] -[group_20634] -[group_20635] -[group_20636] -[group_20637] -[group_20638] -[group_20639] -[group_20640] -[group_20641] -[group_20642] -[group_20643] -[group_20644] -[group_20645] -[group_20646] -[group_20647] -[group_20648] -[group_20649] -[group_20650] -[group_20651] -[group_20652] -[group_20653] -[group_20654] -[group_20655] -[group_20656] -[group_20657] -[group_20658] -[group_20659] -[group_20660] -[group_20661] -[group_20662] -[group_20663] -[group_20664] -[group_20665] -[group_20666] -[group_20667] -[group_20668] -[group_20669] -[group_20670] -[group_20671] -[group_20672] -[group_20673] -[group_20674] -[group_20675] -[group_20676] -[group_20677] -[group_20678] -[group_20679] -[group_20680] -[group_20681] -[group_20682] -[group_20683] -[group_20684] -[group_20685] -[group_20686] -[group_20687] -[group_20688] -[group_20689] -[group_20690] -[group_20691] -[group_20692] -[group_20693] -[group_20694] -[group_20695] -[group_20696] -[group_20697] -[group_20698] -[group_20699] -[group_20700] -[group_20701] -[group_20702] -[group_20703] -[group_20704] -[group_20705] -[group_20706] -[group_20707] -[group_20708] -[group_20709] -[group_20710] -[group_20711] -[group_20712] -[group_20713] -[group_20714] -[group_20715] -[group_20716] -[group_20717] -[group_20718] -[group_20719] -[group_20720] -[group_20721] -[group_20722] -[group_20723] -[group_20724] -[group_20725] -[group_20726] -[group_20727] -[group_20728] -[group_20729] -[group_20730] -[group_20731] -[group_20732] -[group_20733] -[group_20734] -[group_20735] -[group_20736] -[group_20737] -[group_20738] -[group_20739] -[group_20740] -[group_20741] -[group_20742] -[group_20743] -[group_20744] -[group_20745] -[group_20746] -[group_20747] -[group_20748] -[group_20749] -[group_20750] -[group_20751] -[group_20752] -[group_20753] -[group_20754] -[group_20755] -[group_20756] -[group_20757] -[group_20758] -[group_20759] -[group_20760] -[group_20761] -[group_20762] -[group_20763] -[group_20764] -[group_20765] -[group_20766] -[group_20767] -[group_20768] -[group_20769] -[group_20770] -[group_20771] -[group_20772] -[group_20773] -[group_20774] -[group_20775] -[group_20776] -[group_20777] -[group_20778] -[group_20779] -[group_20780] -[group_20781] -[group_20782] -[group_20783] -[group_20784] -[group_20785] -[group_20786] -[group_20787] -[group_20788] -[group_20789] -[group_20790] -[group_20791] -[group_20792] -[group_20793] -[group_20794] -[group_20795] -[group_20796] -[group_20797] -[group_20798] -[group_20799] -[group_20800] -[group_20801] -[group_20802] -[group_20803] -[group_20804] -[group_20805] -[group_20806] -[group_20807] -[group_20808] -[group_20809] -[group_20810] -[group_20811] -[group_20812] -[group_20813] -[group_20814] -[group_20815] -[group_20816] -[group_20817] -[group_20818] -[group_20819] -[group_20820] -[group_20821] -[group_20822] -[group_20823] -[group_20824] -[group_20825] -[group_20826] -[group_20827] -[group_20828] -[group_20829] -[group_20830] -[group_20831] -[group_20832] -[group_20833] -[group_20834] -[group_20835] -[group_20836] -[group_20837] -[group_20838] -[group_20839] -[group_20840] -[group_20841] -[group_20842] -[group_20843] -[group_20844] -[group_20845] -[group_20846] -[group_20847] -[group_20848] -[group_20849] -[group_20850] -[group_20851] -[group_20852] -[group_20853] -[group_20854] -[group_20855] -[group_20856] -[group_20857] -[group_20858] -[group_20859] -[group_20860] -[group_20861] -[group_20862] -[group_20863] -[group_20864] -[group_20865] -[group_20866] -[group_20867] -[group_20868] -[group_20869] -[group_20870] -[group_20871] -[group_20872] -[group_20873] -[group_20874] -[group_20875] -[group_20876] -[group_20877] -[group_20878] -[group_20879] -[group_20880] -[group_20881] -[group_20882] -[group_20883] -[group_20884] -[group_20885] -[group_20886] -[group_20887] -[group_20888] -[group_20889] -[group_20890] -[group_20891] -[group_20892] -[group_20893] -[group_20894] -[group_20895] -[group_20896] -[group_20897] -[group_20898] -[group_20899] -[group_20900] -[group_20901] -[group_20902] -[group_20903] -[group_20904] -[group_20905] -[group_20906] -[group_20907] -[group_20908] -[group_20909] -[group_20910] -[group_20911] -[group_20912] -[group_20913] -[group_20914] -[group_20915] -[group_20916] -[group_20917] -[group_20918] -[group_20919] -[group_20920] -[group_20921] -[group_20922] -[group_20923] -[group_20924] -[group_20925] -[group_20926] -[group_20927] -[group_20928] -[group_20929] -[group_20930] -[group_20931] -[group_20932] -[group_20933] -[group_20934] -[group_20935] -[group_20936] -[group_20937] -[group_20938] -[group_20939] -[group_20940] -[group_20941] -[group_20942] -[group_20943] -[group_20944] -[group_20945] -[group_20946] -[group_20947] -[group_20948] -[group_20949] -[group_20950] -[group_20951] -[group_20952] -[group_20953] -[group_20954] -[group_20955] -[group_20956] -[group_20957] -[group_20958] -[group_20959] -[group_20960] -[group_20961] -[group_20962] -[group_20963] -[group_20964] -[group_20965] -[group_20966] -[group_20967] -[group_20968] -[group_20969] -[group_20970] -[group_20971] -[group_20972] -[group_20973] -[group_20974] -[group_20975] -[group_20976] -[group_20977] -[group_20978] -[group_20979] -[group_20980] -[group_20981] -[group_20982] -[group_20983] -[group_20984] -[group_20985] -[group_20986] -[group_20987] -[group_20988] -[group_20989] -[group_20990] -[group_20991] -[group_20992] -[group_20993] -[group_20994] -[group_20995] -[group_20996] -[group_20997] -[group_20998] -[group_20999] -[group_21000] -[group_21001] -[group_21002] -[group_21003] -[group_21004] -[group_21005] -[group_21006] -[group_21007] -[group_21008] -[group_21009] -[group_21010] -[group_21011] -[group_21012] -[group_21013] -[group_21014] -[group_21015] -[group_21016] -[group_21017] -[group_21018] -[group_21019] -[group_21020] -[group_21021] -[group_21022] -[group_21023] -[group_21024] -[group_21025] -[group_21026] -[group_21027] -[group_21028] -[group_21029] -[group_21030] -[group_21031] -[group_21032] -[group_21033] -[group_21034] -[group_21035] -[group_21036] -[group_21037] -[group_21038] -[group_21039] -[group_21040] -[group_21041] -[group_21042] -[group_21043] -[group_21044] -[group_21045] -[group_21046] -[group_21047] -[group_21048] -[group_21049] -[group_21050] -[group_21051] -[group_21052] -[group_21053] -[group_21054] -[group_21055] -[group_21056] -[group_21057] -[group_21058] -[group_21059] -[group_21060] -[group_21061] -[group_21062] -[group_21063] -[group_21064] -[group_21065] -[group_21066] -[group_21067] -[group_21068] -[group_21069] -[group_21070] -[group_21071] -[group_21072] -[group_21073] -[group_21074] -[group_21075] -[group_21076] -[group_21077] -[group_21078] -[group_21079] -[group_21080] -[group_21081] -[group_21082] -[group_21083] -[group_21084] -[group_21085] -[group_21086] -[group_21087] -[group_21088] -[group_21089] -[group_21090] -[group_21091] -[group_21092] -[group_21093] -[group_21094] -[group_21095] -[group_21096] -[group_21097] -[group_21098] -[group_21099] -[group_21100] -[group_21101] -[group_21102] -[group_21103] -[group_21104] -[group_21105] -[group_21106] -[group_21107] -[group_21108] -[group_21109] -[group_21110] -[group_21111] -[group_21112] -[group_21113] -[group_21114] -[group_21115] -[group_21116] -[group_21117] -[group_21118] -[group_21119] -[group_21120] -[group_21121] -[group_21122] -[group_21123] -[group_21124] -[group_21125] -[group_21126] -[group_21127] -[group_21128] -[group_21129] -[group_21130] -[group_21131] -[group_21132] -[group_21133] -[group_21134] -[group_21135] -[group_21136] -[group_21137] -[group_21138] -[group_21139] -[group_21140] -[group_21141] -[group_21142] -[group_21143] -[group_21144] -[group_21145] -[group_21146] -[group_21147] -[group_21148] -[group_21149] -[group_21150] -[group_21151] -[group_21152] -[group_21153] -[group_21154] -[group_21155] -[group_21156] -[group_21157] -[group_21158] -[group_21159] -[group_21160] -[group_21161] -[group_21162] -[group_21163] -[group_21164] -[group_21165] -[group_21166] -[group_21167] -[group_21168] -[group_21169] -[group_21170] -[group_21171] -[group_21172] -[group_21173] -[group_21174] -[group_21175] -[group_21176] -[group_21177] -[group_21178] -[group_21179] -[group_21180] -[group_21181] -[group_21182] -[group_21183] -[group_21184] -[group_21185] -[group_21186] -[group_21187] -[group_21188] -[group_21189] -[group_21190] -[group_21191] -[group_21192] -[group_21193] -[group_21194] -[group_21195] -[group_21196] -[group_21197] -[group_21198] -[group_21199] -[group_21200] -[group_21201] -[group_21202] -[group_21203] -[group_21204] -[group_21205] -[group_21206] -[group_21207] -[group_21208] -[group_21209] -[group_21210] -[group_21211] -[group_21212] -[group_21213] -[group_21214] -[group_21215] -[group_21216] -[group_21217] -[group_21218] -[group_21219] -[group_21220] -[group_21221] -[group_21222] -[group_21223] -[group_21224] -[group_21225] -[group_21226] -[group_21227] -[group_21228] -[group_21229] -[group_21230] -[group_21231] -[group_21232] -[group_21233] -[group_21234] -[group_21235] -[group_21236] -[group_21237] -[group_21238] -[group_21239] -[group_21240] -[group_21241] -[group_21242] -[group_21243] -[group_21244] -[group_21245] -[group_21246] -[group_21247] -[group_21248] -[group_21249] -[group_21250] -[group_21251] -[group_21252] -[group_21253] -[group_21254] -[group_21255] -[group_21256] -[group_21257] -[group_21258] -[group_21259] -[group_21260] -[group_21261] -[group_21262] -[group_21263] -[group_21264] -[group_21265] -[group_21266] -[group_21267] -[group_21268] -[group_21269] -[group_21270] -[group_21271] -[group_21272] -[group_21273] -[group_21274] -[group_21275] -[group_21276] -[group_21277] -[group_21278] -[group_21279] -[group_21280] -[group_21281] -[group_21282] -[group_21283] -[group_21284] -[group_21285] -[group_21286] -[group_21287] -[group_21288] -[group_21289] -[group_21290] -[group_21291] -[group_21292] -[group_21293] -[group_21294] -[group_21295] -[group_21296] -[group_21297] -[group_21298] -[group_21299] -[group_21300] -[group_21301] -[group_21302] -[group_21303] -[group_21304] -[group_21305] -[group_21306] -[group_21307] -[group_21308] -[group_21309] -[group_21310] -[group_21311] -[group_21312] -[group_21313] -[group_21314] -[group_21315] -[group_21316] -[group_21317] -[group_21318] -[group_21319] -[group_21320] -[group_21321] -[group_21322] -[group_21323] -[group_21324] -[group_21325] -[group_21326] -[group_21327] -[group_21328] -[group_21329] -[group_21330] -[group_21331] -[group_21332] -[group_21333] -[group_21334] -[group_21335] -[group_21336] -[group_21337] -[group_21338] -[group_21339] -[group_21340] -[group_21341] -[group_21342] -[group_21343] -[group_21344] -[group_21345] -[group_21346] -[group_21347] -[group_21348] -[group_21349] -[group_21350] -[group_21351] -[group_21352] -[group_21353] -[group_21354] -[group_21355] -[group_21356] -[group_21357] -[group_21358] -[group_21359] -[group_21360] -[group_21361] -[group_21362] -[group_21363] -[group_21364] -[group_21365] -[group_21366] -[group_21367] -[group_21368] -[group_21369] -[group_21370] -[group_21371] -[group_21372] -[group_21373] -[group_21374] -[group_21375] -[group_21376] -[group_21377] -[group_21378] -[group_21379] -[group_21380] -[group_21381] -[group_21382] -[group_21383] -[group_21384] -[group_21385] -[group_21386] -[group_21387] -[group_21388] -[group_21389] -[group_21390] -[group_21391] -[group_21392] -[group_21393] -[group_21394] -[group_21395] -[group_21396] -[group_21397] -[group_21398] -[group_21399] -[group_21400] -[group_21401] -[group_21402] -[group_21403] -[group_21404] -[group_21405] -[group_21406] -[group_21407] -[group_21408] -[group_21409] -[group_21410] -[group_21411] -[group_21412] -[group_21413] -[group_21414] -[group_21415] -[group_21416] -[group_21417] -[group_21418] -[group_21419] -[group_21420] -[group_21421] -[group_21422] -[group_21423] -[group_21424] -[group_21425] -[group_21426] -[group_21427] -[group_21428] -[group_21429] -[group_21430] -[group_21431] -[group_21432] -[group_21433] -[group_21434] -[group_21435] -[group_21436] -[group_21437] -[group_21438] -[group_21439] -[group_21440] -[group_21441] -[group_21442] -[group_21443] -[group_21444] -[group_21445] -[group_21446] -[group_21447] -[group_21448] -[group_21449] -[group_21450] -[group_21451] -[group_21452] -[group_21453] -[group_21454] -[group_21455] -[group_21456] -[group_21457] -[group_21458] -[group_21459] -[group_21460] -[group_21461] -[group_21462] -[group_21463] -[group_21464] -[group_21465] -[group_21466] -[group_21467] -[group_21468] -[group_21469] -[group_21470] -[group_21471] -[group_21472] -[group_21473] -[group_21474] -[group_21475] -[group_21476] -[group_21477] -[group_21478] -[group_21479] -[group_21480] -[group_21481] -[group_21482] -[group_21483] -[group_21484] -[group_21485] -[group_21486] -[group_21487] -[group_21488] -[group_21489] -[group_21490] -[group_21491] -[group_21492] -[group_21493] -[group_21494] -[group_21495] -[group_21496] -[group_21497] -[group_21498] -[group_21499] -[group_21500] -[group_21501] -[group_21502] -[group_21503] -[group_21504] -[group_21505] -[group_21506] -[group_21507] -[group_21508] -[group_21509] -[group_21510] -[group_21511] -[group_21512] -[group_21513] -[group_21514] -[group_21515] -[group_21516] -[group_21517] -[group_21518] -[group_21519] -[group_21520] -[group_21521] -[group_21522] -[group_21523] -[group_21524] -[group_21525] -[group_21526] -[group_21527] -[group_21528] -[group_21529] -[group_21530] -[group_21531] -[group_21532] -[group_21533] -[group_21534] -[group_21535] -[group_21536] -[group_21537] -[group_21538] -[group_21539] -[group_21540] -[group_21541] -[group_21542] -[group_21543] -[group_21544] -[group_21545] -[group_21546] -[group_21547] -[group_21548] -[group_21549] -[group_21550] -[group_21551] -[group_21552] -[group_21553] -[group_21554] -[group_21555] -[group_21556] -[group_21557] -[group_21558] -[group_21559] -[group_21560] -[group_21561] -[group_21562] -[group_21563] -[group_21564] -[group_21565] -[group_21566] -[group_21567] -[group_21568] -[group_21569] -[group_21570] -[group_21571] -[group_21572] -[group_21573] -[group_21574] -[group_21575] -[group_21576] -[group_21577] -[group_21578] -[group_21579] -[group_21580] -[group_21581] -[group_21582] -[group_21583] -[group_21584] -[group_21585] -[group_21586] -[group_21587] -[group_21588] -[group_21589] -[group_21590] -[group_21591] -[group_21592] -[group_21593] -[group_21594] -[group_21595] -[group_21596] -[group_21597] -[group_21598] -[group_21599] -[group_21600] -[group_21601] -[group_21602] -[group_21603] -[group_21604] -[group_21605] -[group_21606] -[group_21607] -[group_21608] -[group_21609] -[group_21610] -[group_21611] -[group_21612] -[group_21613] -[group_21614] -[group_21615] -[group_21616] -[group_21617] -[group_21618] -[group_21619] -[group_21620] -[group_21621] -[group_21622] -[group_21623] -[group_21624] -[group_21625] -[group_21626] -[group_21627] -[group_21628] -[group_21629] -[group_21630] -[group_21631] -[group_21632] -[group_21633] -[group_21634] -[group_21635] -[group_21636] -[group_21637] -[group_21638] -[group_21639] -[group_21640] -[group_21641] -[group_21642] -[group_21643] -[group_21644] -[group_21645] -[group_21646] -[group_21647] -[group_21648] -[group_21649] -[group_21650] -[group_21651] -[group_21652] -[group_21653] -[group_21654] -[group_21655] -[group_21656] -[group_21657] -[group_21658] -[group_21659] -[group_21660] -[group_21661] -[group_21662] -[group_21663] -[group_21664] -[group_21665] -[group_21666] -[group_21667] -[group_21668] -[group_21669] -[group_21670] -[group_21671] -[group_21672] -[group_21673] -[group_21674] -[group_21675] -[group_21676] -[group_21677] -[group_21678] -[group_21679] -[group_21680] -[group_21681] -[group_21682] -[group_21683] -[group_21684] -[group_21685] -[group_21686] -[group_21687] -[group_21688] -[group_21689] -[group_21690] -[group_21691] -[group_21692] -[group_21693] -[group_21694] -[group_21695] -[group_21696] -[group_21697] -[group_21698] -[group_21699] -[group_21700] -[group_21701] -[group_21702] -[group_21703] -[group_21704] -[group_21705] -[group_21706] -[group_21707] -[group_21708] -[group_21709] -[group_21710] -[group_21711] -[group_21712] -[group_21713] -[group_21714] -[group_21715] -[group_21716] -[group_21717] -[group_21718] -[group_21719] -[group_21720] -[group_21721] -[group_21722] -[group_21723] -[group_21724] -[group_21725] -[group_21726] -[group_21727] -[group_21728] -[group_21729] -[group_21730] -[group_21731] -[group_21732] -[group_21733] -[group_21734] -[group_21735] -[group_21736] -[group_21737] -[group_21738] -[group_21739] -[group_21740] -[group_21741] -[group_21742] -[group_21743] -[group_21744] -[group_21745] -[group_21746] -[group_21747] -[group_21748] -[group_21749] -[group_21750] -[group_21751] -[group_21752] -[group_21753] -[group_21754] -[group_21755] -[group_21756] -[group_21757] -[group_21758] -[group_21759] -[group_21760] -[group_21761] -[group_21762] -[group_21763] -[group_21764] -[group_21765] -[group_21766] -[group_21767] -[group_21768] -[group_21769] -[group_21770] -[group_21771] -[group_21772] -[group_21773] -[group_21774] -[group_21775] -[group_21776] -[group_21777] -[group_21778] -[group_21779] -[group_21780] -[group_21781] -[group_21782] -[group_21783] -[group_21784] -[group_21785] -[group_21786] -[group_21787] -[group_21788] -[group_21789] -[group_21790] -[group_21791] -[group_21792] -[group_21793] -[group_21794] -[group_21795] -[group_21796] -[group_21797] -[group_21798] -[group_21799] -[group_21800] -[group_21801] -[group_21802] -[group_21803] -[group_21804] -[group_21805] -[group_21806] -[group_21807] -[group_21808] -[group_21809] -[group_21810] -[group_21811] -[group_21812] -[group_21813] -[group_21814] -[group_21815] -[group_21816] -[group_21817] -[group_21818] -[group_21819] -[group_21820] -[group_21821] -[group_21822] -[group_21823] -[group_21824] -[group_21825] -[group_21826] -[group_21827] -[group_21828] -[group_21829] -[group_21830] -[group_21831] -[group_21832] -[group_21833] -[group_21834] -[group_21835] -[group_21836] -[group_21837] -[group_21838] -[group_21839] -[group_21840] -[group_21841] -[group_21842] -[group_21843] -[group_21844] -[group_21845] -[group_21846] -[group_21847] -[group_21848] -[group_21849] -[group_21850] -[group_21851] -[group_21852] -[group_21853] -[group_21854] -[group_21855] -[group_21856] -[group_21857] -[group_21858] -[group_21859] -[group_21860] -[group_21861] -[group_21862] -[group_21863] -[group_21864] -[group_21865] -[group_21866] -[group_21867] -[group_21868] -[group_21869] -[group_21870] -[group_21871] -[group_21872] -[group_21873] -[group_21874] -[group_21875] -[group_21876] -[group_21877] -[group_21878] -[group_21879] -[group_21880] -[group_21881] -[group_21882] -[group_21883] -[group_21884] -[group_21885] -[group_21886] -[group_21887] -[group_21888] -[group_21889] -[group_21890] -[group_21891] -[group_21892] -[group_21893] -[group_21894] -[group_21895] -[group_21896] -[group_21897] -[group_21898] -[group_21899] -[group_21900] -[group_21901] -[group_21902] -[group_21903] -[group_21904] -[group_21905] -[group_21906] -[group_21907] -[group_21908] -[group_21909] -[group_21910] -[group_21911] -[group_21912] -[group_21913] -[group_21914] -[group_21915] -[group_21916] -[group_21917] -[group_21918] -[group_21919] -[group_21920] -[group_21921] -[group_21922] -[group_21923] -[group_21924] -[group_21925] -[group_21926] -[group_21927] -[group_21928] -[group_21929] -[group_21930] -[group_21931] -[group_21932] -[group_21933] -[group_21934] -[group_21935] -[group_21936] -[group_21937] -[group_21938] -[group_21939] -[group_21940] -[group_21941] -[group_21942] -[group_21943] -[group_21944] -[group_21945] -[group_21946] -[group_21947] -[group_21948] -[group_21949] -[group_21950] -[group_21951] -[group_21952] -[group_21953] -[group_21954] -[group_21955] -[group_21956] -[group_21957] -[group_21958] -[group_21959] -[group_21960] -[group_21961] -[group_21962] -[group_21963] -[group_21964] -[group_21965] -[group_21966] -[group_21967] -[group_21968] -[group_21969] -[group_21970] -[group_21971] -[group_21972] -[group_21973] -[group_21974] -[group_21975] -[group_21976] -[group_21977] -[group_21978] -[group_21979] -[group_21980] -[group_21981] -[group_21982] -[group_21983] -[group_21984] -[group_21985] -[group_21986] -[group_21987] -[group_21988] -[group_21989] -[group_21990] -[group_21991] -[group_21992] -[group_21993] -[group_21994] -[group_21995] -[group_21996] -[group_21997] -[group_21998] -[group_21999] -[group_22000] -[group_22001] -[group_22002] -[group_22003] -[group_22004] -[group_22005] -[group_22006] -[group_22007] -[group_22008] -[group_22009] -[group_22010] -[group_22011] -[group_22012] -[group_22013] -[group_22014] -[group_22015] -[group_22016] -[group_22017] -[group_22018] -[group_22019] -[group_22020] -[group_22021] -[group_22022] -[group_22023] -[group_22024] -[group_22025] -[group_22026] -[group_22027] -[group_22028] -[group_22029] -[group_22030] -[group_22031] -[group_22032] -[group_22033] -[group_22034] -[group_22035] -[group_22036] -[group_22037] -[group_22038] -[group_22039] -[group_22040] -[group_22041] -[group_22042] -[group_22043] -[group_22044] -[group_22045] -[group_22046] -[group_22047] -[group_22048] -[group_22049] -[group_22050] -[group_22051] -[group_22052] -[group_22053] -[group_22054] -[group_22055] -[group_22056] -[group_22057] -[group_22058] -[group_22059] -[group_22060] -[group_22061] -[group_22062] -[group_22063] -[group_22064] -[group_22065] -[group_22066] -[group_22067] -[group_22068] -[group_22069] -[group_22070] -[group_22071] -[group_22072] -[group_22073] -[group_22074] -[group_22075] -[group_22076] -[group_22077] -[group_22078] -[group_22079] -[group_22080] -[group_22081] -[group_22082] -[group_22083] -[group_22084] -[group_22085] -[group_22086] -[group_22087] -[group_22088] -[group_22089] -[group_22090] -[group_22091] -[group_22092] -[group_22093] -[group_22094] -[group_22095] -[group_22096] -[group_22097] -[group_22098] -[group_22099] -[group_22100] -[group_22101] -[group_22102] -[group_22103] -[group_22104] -[group_22105] -[group_22106] -[group_22107] -[group_22108] -[group_22109] -[group_22110] -[group_22111] -[group_22112] -[group_22113] -[group_22114] -[group_22115] -[group_22116] -[group_22117] -[group_22118] -[group_22119] -[group_22120] -[group_22121] -[group_22122] -[group_22123] -[group_22124] -[group_22125] -[group_22126] -[group_22127] -[group_22128] -[group_22129] -[group_22130] -[group_22131] -[group_22132] -[group_22133] -[group_22134] -[group_22135] -[group_22136] -[group_22137] -[group_22138] -[group_22139] -[group_22140] -[group_22141] -[group_22142] -[group_22143] -[group_22144] -[group_22145] -[group_22146] -[group_22147] -[group_22148] -[group_22149] -[group_22150] -[group_22151] -[group_22152] -[group_22153] -[group_22154] -[group_22155] -[group_22156] -[group_22157] -[group_22158] -[group_22159] -[group_22160] -[group_22161] -[group_22162] -[group_22163] -[group_22164] -[group_22165] -[group_22166] -[group_22167] -[group_22168] -[group_22169] -[group_22170] -[group_22171] -[group_22172] -[group_22173] -[group_22174] -[group_22175] -[group_22176] -[group_22177] -[group_22178] -[group_22179] -[group_22180] -[group_22181] -[group_22182] -[group_22183] -[group_22184] -[group_22185] -[group_22186] -[group_22187] -[group_22188] -[group_22189] -[group_22190] -[group_22191] -[group_22192] -[group_22193] -[group_22194] -[group_22195] -[group_22196] -[group_22197] -[group_22198] -[group_22199] -[group_22200] -[group_22201] -[group_22202] -[group_22203] -[group_22204] -[group_22205] -[group_22206] -[group_22207] -[group_22208] -[group_22209] -[group_22210] -[group_22211] -[group_22212] -[group_22213] -[group_22214] -[group_22215] -[group_22216] -[group_22217] -[group_22218] -[group_22219] -[group_22220] -[group_22221] -[group_22222] -[group_22223] -[group_22224] -[group_22225] -[group_22226] -[group_22227] -[group_22228] -[group_22229] -[group_22230] -[group_22231] -[group_22232] -[group_22233] -[group_22234] -[group_22235] -[group_22236] -[group_22237] -[group_22238] -[group_22239] -[group_22240] -[group_22241] -[group_22242] -[group_22243] -[group_22244] -[group_22245] -[group_22246] -[group_22247] -[group_22248] -[group_22249] -[group_22250] -[group_22251] -[group_22252] -[group_22253] -[group_22254] -[group_22255] -[group_22256] -[group_22257] -[group_22258] -[group_22259] -[group_22260] -[group_22261] -[group_22262] -[group_22263] -[group_22264] -[group_22265] -[group_22266] -[group_22267] -[group_22268] -[group_22269] -[group_22270] -[group_22271] -[group_22272] -[group_22273] -[group_22274] -[group_22275] -[group_22276] -[group_22277] -[group_22278] -[group_22279] -[group_22280] -[group_22281] -[group_22282] -[group_22283] -[group_22284] -[group_22285] -[group_22286] -[group_22287] -[group_22288] -[group_22289] -[group_22290] -[group_22291] -[group_22292] -[group_22293] -[group_22294] -[group_22295] -[group_22296] -[group_22297] -[group_22298] -[group_22299] -[group_22300] -[group_22301] -[group_22302] -[group_22303] -[group_22304] -[group_22305] -[group_22306] -[group_22307] -[group_22308] -[group_22309] -[group_22310] -[group_22311] -[group_22312] -[group_22313] -[group_22314] -[group_22315] -[group_22316] -[group_22317] -[group_22318] -[group_22319] -[group_22320] -[group_22321] -[group_22322] -[group_22323] -[group_22324] -[group_22325] -[group_22326] -[group_22327] -[group_22328] -[group_22329] -[group_22330] -[group_22331] -[group_22332] -[group_22333] -[group_22334] -[group_22335] -[group_22336] -[group_22337] -[group_22338] -[group_22339] -[group_22340] -[group_22341] -[group_22342] -[group_22343] -[group_22344] -[group_22345] -[group_22346] -[group_22347] -[group_22348] -[group_22349] -[group_22350] -[group_22351] -[group_22352] -[group_22353] -[group_22354] -[group_22355] -[group_22356] -[group_22357] -[group_22358] -[group_22359] -[group_22360] -[group_22361] -[group_22362] -[group_22363] -[group_22364] -[group_22365] -[group_22366] -[group_22367] -[group_22368] -[group_22369] -[group_22370] -[group_22371] -[group_22372] -[group_22373] -[group_22374] -[group_22375] -[group_22376] -[group_22377] -[group_22378] -[group_22379] -[group_22380] -[group_22381] -[group_22382] -[group_22383] -[group_22384] -[group_22385] -[group_22386] -[group_22387] -[group_22388] -[group_22389] -[group_22390] -[group_22391] -[group_22392] -[group_22393] -[group_22394] -[group_22395] -[group_22396] -[group_22397] -[group_22398] -[group_22399] -[group_22400] -[group_22401] -[group_22402] -[group_22403] -[group_22404] -[group_22405] -[group_22406] -[group_22407] -[group_22408] -[group_22409] -[group_22410] -[group_22411] -[group_22412] -[group_22413] -[group_22414] -[group_22415] -[group_22416] -[group_22417] -[group_22418] -[group_22419] -[group_22420] -[group_22421] -[group_22422] -[group_22423] -[group_22424] -[group_22425] -[group_22426] -[group_22427] -[group_22428] -[group_22429] -[group_22430] -[group_22431] -[group_22432] -[group_22433] -[group_22434] -[group_22435] -[group_22436] -[group_22437] -[group_22438] -[group_22439] -[group_22440] -[group_22441] -[group_22442] -[group_22443] -[group_22444] -[group_22445] -[group_22446] -[group_22447] -[group_22448] -[group_22449] -[group_22450] -[group_22451] -[group_22452] -[group_22453] -[group_22454] -[group_22455] -[group_22456] -[group_22457] -[group_22458] -[group_22459] -[group_22460] -[group_22461] -[group_22462] -[group_22463] -[group_22464] -[group_22465] -[group_22466] -[group_22467] -[group_22468] -[group_22469] -[group_22470] -[group_22471] -[group_22472] -[group_22473] -[group_22474] -[group_22475] -[group_22476] -[group_22477] -[group_22478] -[group_22479] -[group_22480] -[group_22481] -[group_22482] -[group_22483] -[group_22484] -[group_22485] -[group_22486] -[group_22487] -[group_22488] -[group_22489] -[group_22490] -[group_22491] -[group_22492] -[group_22493] -[group_22494] -[group_22495] -[group_22496] -[group_22497] -[group_22498] -[group_22499] -[group_22500] -[group_22501] -[group_22502] -[group_22503] -[group_22504] -[group_22505] -[group_22506] -[group_22507] -[group_22508] -[group_22509] -[group_22510] -[group_22511] -[group_22512] -[group_22513] -[group_22514] -[group_22515] -[group_22516] -[group_22517] -[group_22518] -[group_22519] -[group_22520] -[group_22521] -[group_22522] -[group_22523] -[group_22524] -[group_22525] -[group_22526] -[group_22527] -[group_22528] -[group_22529] -[group_22530] -[group_22531] -[group_22532] -[group_22533] -[group_22534] -[group_22535] -[group_22536] -[group_22537] -[group_22538] -[group_22539] -[group_22540] -[group_22541] -[group_22542] -[group_22543] -[group_22544] -[group_22545] -[group_22546] -[group_22547] -[group_22548] -[group_22549] -[group_22550] -[group_22551] -[group_22552] -[group_22553] -[group_22554] -[group_22555] -[group_22556] -[group_22557] -[group_22558] -[group_22559] -[group_22560] -[group_22561] -[group_22562] -[group_22563] -[group_22564] -[group_22565] -[group_22566] -[group_22567] -[group_22568] -[group_22569] -[group_22570] -[group_22571] -[group_22572] -[group_22573] -[group_22574] -[group_22575] -[group_22576] -[group_22577] -[group_22578] -[group_22579] -[group_22580] -[group_22581] -[group_22582] -[group_22583] -[group_22584] -[group_22585] -[group_22586] -[group_22587] -[group_22588] -[group_22589] -[group_22590] -[group_22591] -[group_22592] -[group_22593] -[group_22594] -[group_22595] -[group_22596] -[group_22597] -[group_22598] -[group_22599] -[group_22600] -[group_22601] -[group_22602] -[group_22603] -[group_22604] -[group_22605] -[group_22606] -[group_22607] -[group_22608] -[group_22609] -[group_22610] -[group_22611] -[group_22612] -[group_22613] -[group_22614] -[group_22615] -[group_22616] -[group_22617] -[group_22618] -[group_22619] -[group_22620] -[group_22621] -[group_22622] -[group_22623] -[group_22624] -[group_22625] -[group_22626] -[group_22627] -[group_22628] -[group_22629] -[group_22630] -[group_22631] -[group_22632] -[group_22633] -[group_22634] -[group_22635] -[group_22636] -[group_22637] -[group_22638] -[group_22639] -[group_22640] -[group_22641] -[group_22642] -[group_22643] -[group_22644] -[group_22645] -[group_22646] -[group_22647] -[group_22648] -[group_22649] -[group_22650] -[group_22651] -[group_22652] -[group_22653] -[group_22654] -[group_22655] -[group_22656] -[group_22657] -[group_22658] -[group_22659] -[group_22660] -[group_22661] -[group_22662] -[group_22663] -[group_22664] -[group_22665] -[group_22666] -[group_22667] -[group_22668] -[group_22669] -[group_22670] -[group_22671] -[group_22672] -[group_22673] -[group_22674] -[group_22675] -[group_22676] -[group_22677] -[group_22678] -[group_22679] -[group_22680] -[group_22681] -[group_22682] -[group_22683] -[group_22684] -[group_22685] -[group_22686] -[group_22687] -[group_22688] -[group_22689] -[group_22690] -[group_22691] -[group_22692] -[group_22693] -[group_22694] -[group_22695] -[group_22696] -[group_22697] -[group_22698] -[group_22699] -[group_22700] -[group_22701] -[group_22702] -[group_22703] -[group_22704] -[group_22705] -[group_22706] -[group_22707] -[group_22708] -[group_22709] -[group_22710] -[group_22711] -[group_22712] -[group_22713] -[group_22714] -[group_22715] -[group_22716] -[group_22717] -[group_22718] -[group_22719] -[group_22720] -[group_22721] -[group_22722] -[group_22723] -[group_22724] -[group_22725] -[group_22726] -[group_22727] -[group_22728] -[group_22729] -[group_22730] -[group_22731] -[group_22732] -[group_22733] -[group_22734] -[group_22735] -[group_22736] -[group_22737] -[group_22738] -[group_22739] -[group_22740] -[group_22741] -[group_22742] -[group_22743] -[group_22744] -[group_22745] -[group_22746] -[group_22747] -[group_22748] -[group_22749] -[group_22750] -[group_22751] -[group_22752] -[group_22753] -[group_22754] -[group_22755] -[group_22756] -[group_22757] -[group_22758] -[group_22759] -[group_22760] -[group_22761] -[group_22762] -[group_22763] -[group_22764] -[group_22765] -[group_22766] -[group_22767] -[group_22768] -[group_22769] -[group_22770] -[group_22771] -[group_22772] -[group_22773] -[group_22774] -[group_22775] -[group_22776] -[group_22777] -[group_22778] -[group_22779] -[group_22780] -[group_22781] -[group_22782] -[group_22783] -[group_22784] -[group_22785] -[group_22786] -[group_22787] -[group_22788] -[group_22789] -[group_22790] -[group_22791] -[group_22792] -[group_22793] -[group_22794] -[group_22795] -[group_22796] -[group_22797] -[group_22798] -[group_22799] -[group_22800] -[group_22801] -[group_22802] -[group_22803] -[group_22804] -[group_22805] -[group_22806] -[group_22807] -[group_22808] -[group_22809] -[group_22810] -[group_22811] -[group_22812] -[group_22813] -[group_22814] -[group_22815] -[group_22816] -[group_22817] -[group_22818] -[group_22819] -[group_22820] -[group_22821] -[group_22822] -[group_22823] -[group_22824] -[group_22825] -[group_22826] -[group_22827] -[group_22828] -[group_22829] -[group_22830] -[group_22831] -[group_22832] -[group_22833] -[group_22834] -[group_22835] -[group_22836] -[group_22837] -[group_22838] -[group_22839] -[group_22840] -[group_22841] -[group_22842] -[group_22843] -[group_22844] -[group_22845] -[group_22846] -[group_22847] -[group_22848] -[group_22849] -[group_22850] -[group_22851] -[group_22852] -[group_22853] -[group_22854] -[group_22855] -[group_22856] -[group_22857] -[group_22858] -[group_22859] -[group_22860] -[group_22861] -[group_22862] -[group_22863] -[group_22864] -[group_22865] -[group_22866] -[group_22867] -[group_22868] -[group_22869] -[group_22870] -[group_22871] -[group_22872] -[group_22873] -[group_22874] -[group_22875] -[group_22876] -[group_22877] -[group_22878] -[group_22879] -[group_22880] -[group_22881] -[group_22882] -[group_22883] -[group_22884] -[group_22885] -[group_22886] -[group_22887] -[group_22888] -[group_22889] -[group_22890] -[group_22891] -[group_22892] -[group_22893] -[group_22894] -[group_22895] -[group_22896] -[group_22897] -[group_22898] -[group_22899] -[group_22900] -[group_22901] -[group_22902] -[group_22903] -[group_22904] -[group_22905] -[group_22906] -[group_22907] -[group_22908] -[group_22909] -[group_22910] -[group_22911] -[group_22912] -[group_22913] -[group_22914] -[group_22915] -[group_22916] -[group_22917] -[group_22918] -[group_22919] -[group_22920] -[group_22921] -[group_22922] -[group_22923] -[group_22924] -[group_22925] -[group_22926] -[group_22927] -[group_22928] -[group_22929] -[group_22930] -[group_22931] -[group_22932] -[group_22933] -[group_22934] -[group_22935] -[group_22936] -[group_22937] -[group_22938] -[group_22939] -[group_22940] -[group_22941] -[group_22942] -[group_22943] -[group_22944] -[group_22945] -[group_22946] -[group_22947] -[group_22948] -[group_22949] -[group_22950] -[group_22951] -[group_22952] -[group_22953] -[group_22954] -[group_22955] -[group_22956] -[group_22957] -[group_22958] -[group_22959] -[group_22960] -[group_22961] -[group_22962] -[group_22963] -[group_22964] -[group_22965] -[group_22966] -[group_22967] -[group_22968] -[group_22969] -[group_22970] -[group_22971] -[group_22972] -[group_22973] -[group_22974] -[group_22975] -[group_22976] -[group_22977] -[group_22978] -[group_22979] -[group_22980] -[group_22981] -[group_22982] -[group_22983] -[group_22984] -[group_22985] -[group_22986] -[group_22987] -[group_22988] -[group_22989] -[group_22990] -[group_22991] -[group_22992] -[group_22993] -[group_22994] -[group_22995] -[group_22996] -[group_22997] -[group_22998] -[group_22999] -[group_23000] -[group_23001] -[group_23002] -[group_23003] -[group_23004] -[group_23005] -[group_23006] -[group_23007] -[group_23008] -[group_23009] -[group_23010] -[group_23011] -[group_23012] -[group_23013] -[group_23014] -[group_23015] -[group_23016] -[group_23017] -[group_23018] -[group_23019] -[group_23020] -[group_23021] -[group_23022] -[group_23023] -[group_23024] -[group_23025] -[group_23026] -[group_23027] -[group_23028] -[group_23029] -[group_23030] -[group_23031] -[group_23032] -[group_23033] -[group_23034] -[group_23035] -[group_23036] -[group_23037] -[group_23038] -[group_23039] -[group_23040] -[group_23041] -[group_23042] -[group_23043] -[group_23044] -[group_23045] -[group_23046] -[group_23047] -[group_23048] -[group_23049] -[group_23050] -[group_23051] -[group_23052] -[group_23053] -[group_23054] -[group_23055] -[group_23056] -[group_23057] -[group_23058] -[group_23059] -[group_23060] -[group_23061] -[group_23062] -[group_23063] -[group_23064] -[group_23065] -[group_23066] -[group_23067] -[group_23068] -[group_23069] -[group_23070] -[group_23071] -[group_23072] -[group_23073] -[group_23074] -[group_23075] -[group_23076] -[group_23077] -[group_23078] -[group_23079] -[group_23080] -[group_23081] -[group_23082] -[group_23083] -[group_23084] -[group_23085] -[group_23086] -[group_23087] -[group_23088] -[group_23089] -[group_23090] -[group_23091] -[group_23092] -[group_23093] -[group_23094] -[group_23095] -[group_23096] -[group_23097] -[group_23098] -[group_23099] -[group_23100] -[group_23101] -[group_23102] -[group_23103] -[group_23104] -[group_23105] -[group_23106] -[group_23107] -[group_23108] -[group_23109] -[group_23110] -[group_23111] -[group_23112] -[group_23113] -[group_23114] -[group_23115] -[group_23116] -[group_23117] -[group_23118] -[group_23119] -[group_23120] -[group_23121] -[group_23122] -[group_23123] -[group_23124] -[group_23125] -[group_23126] -[group_23127] -[group_23128] -[group_23129] -[group_23130] -[group_23131] -[group_23132] -[group_23133] -[group_23134] -[group_23135] -[group_23136] -[group_23137] -[group_23138] -[group_23139] -[group_23140] -[group_23141] -[group_23142] -[group_23143] -[group_23144] -[group_23145] -[group_23146] -[group_23147] -[group_23148] -[group_23149] -[group_23150] -[group_23151] -[group_23152] -[group_23153] -[group_23154] -[group_23155] -[group_23156] -[group_23157] -[group_23158] -[group_23159] -[group_23160] -[group_23161] -[group_23162] -[group_23163] -[group_23164] -[group_23165] -[group_23166] -[group_23167] -[group_23168] -[group_23169] -[group_23170] -[group_23171] -[group_23172] -[group_23173] -[group_23174] -[group_23175] -[group_23176] -[group_23177] -[group_23178] -[group_23179] -[group_23180] -[group_23181] -[group_23182] -[group_23183] -[group_23184] -[group_23185] -[group_23186] -[group_23187] -[group_23188] -[group_23189] -[group_23190] -[group_23191] -[group_23192] -[group_23193] -[group_23194] -[group_23195] -[group_23196] -[group_23197] -[group_23198] -[group_23199] -[group_23200] -[group_23201] -[group_23202] -[group_23203] -[group_23204] -[group_23205] -[group_23206] -[group_23207] -[group_23208] -[group_23209] -[group_23210] -[group_23211] -[group_23212] -[group_23213] -[group_23214] -[group_23215] -[group_23216] -[group_23217] -[group_23218] -[group_23219] -[group_23220] -[group_23221] -[group_23222] -[group_23223] -[group_23224] -[group_23225] -[group_23226] -[group_23227] -[group_23228] -[group_23229] -[group_23230] -[group_23231] -[group_23232] -[group_23233] -[group_23234] -[group_23235] -[group_23236] -[group_23237] -[group_23238] -[group_23239] -[group_23240] -[group_23241] -[group_23242] -[group_23243] -[group_23244] -[group_23245] -[group_23246] -[group_23247] -[group_23248] -[group_23249] -[group_23250] -[group_23251] -[group_23252] -[group_23253] -[group_23254] -[group_23255] -[group_23256] -[group_23257] -[group_23258] -[group_23259] -[group_23260] -[group_23261] -[group_23262] -[group_23263] -[group_23264] -[group_23265] -[group_23266] -[group_23267] -[group_23268] -[group_23269] -[group_23270] -[group_23271] -[group_23272] -[group_23273] -[group_23274] -[group_23275] -[group_23276] -[group_23277] -[group_23278] -[group_23279] -[group_23280] -[group_23281] -[group_23282] -[group_23283] -[group_23284] -[group_23285] -[group_23286] -[group_23287] -[group_23288] -[group_23289] -[group_23290] -[group_23291] -[group_23292] -[group_23293] -[group_23294] -[group_23295] -[group_23296] -[group_23297] -[group_23298] -[group_23299] -[group_23300] -[group_23301] -[group_23302] -[group_23303] -[group_23304] -[group_23305] -[group_23306] -[group_23307] -[group_23308] -[group_23309] -[group_23310] -[group_23311] -[group_23312] -[group_23313] -[group_23314] -[group_23315] -[group_23316] -[group_23317] -[group_23318] -[group_23319] -[group_23320] -[group_23321] -[group_23322] -[group_23323] -[group_23324] -[group_23325] -[group_23326] -[group_23327] -[group_23328] -[group_23329] -[group_23330] -[group_23331] -[group_23332] -[group_23333] -[group_23334] -[group_23335] -[group_23336] -[group_23337] -[group_23338] -[group_23339] -[group_23340] -[group_23341] -[group_23342] -[group_23343] -[group_23344] -[group_23345] -[group_23346] -[group_23347] -[group_23348] -[group_23349] -[group_23350] -[group_23351] -[group_23352] -[group_23353] -[group_23354] -[group_23355] -[group_23356] -[group_23357] -[group_23358] -[group_23359] -[group_23360] -[group_23361] -[group_23362] -[group_23363] -[group_23364] -[group_23365] -[group_23366] -[group_23367] -[group_23368] -[group_23369] -[group_23370] -[group_23371] -[group_23372] -[group_23373] -[group_23374] -[group_23375] -[group_23376] -[group_23377] -[group_23378] -[group_23379] -[group_23380] -[group_23381] -[group_23382] -[group_23383] -[group_23384] -[group_23385] -[group_23386] -[group_23387] -[group_23388] -[group_23389] -[group_23390] -[group_23391] -[group_23392] -[group_23393] -[group_23394] -[group_23395] -[group_23396] -[group_23397] -[group_23398] -[group_23399] -[group_23400] -[group_23401] -[group_23402] -[group_23403] -[group_23404] -[group_23405] -[group_23406] -[group_23407] -[group_23408] -[group_23409] -[group_23410] -[group_23411] -[group_23412] -[group_23413] -[group_23414] -[group_23415] -[group_23416] -[group_23417] -[group_23418] -[group_23419] -[group_23420] -[group_23421] -[group_23422] -[group_23423] -[group_23424] -[group_23425] -[group_23426] -[group_23427] -[group_23428] -[group_23429] -[group_23430] -[group_23431] -[group_23432] -[group_23433] -[group_23434] -[group_23435] -[group_23436] -[group_23437] -[group_23438] -[group_23439] -[group_23440] -[group_23441] -[group_23442] -[group_23443] -[group_23444] -[group_23445] -[group_23446] -[group_23447] -[group_23448] -[group_23449] -[group_23450] -[group_23451] -[group_23452] -[group_23453] -[group_23454] -[group_23455] -[group_23456] -[group_23457] -[group_23458] -[group_23459] -[group_23460] -[group_23461] -[group_23462] -[group_23463] -[group_23464] -[group_23465] -[group_23466] -[group_23467] -[group_23468] -[group_23469] -[group_23470] -[group_23471] -[group_23472] -[group_23473] -[group_23474] -[group_23475] -[group_23476] -[group_23477] -[group_23478] -[group_23479] -[group_23480] -[group_23481] -[group_23482] -[group_23483] -[group_23484] -[group_23485] -[group_23486] -[group_23487] -[group_23488] -[group_23489] -[group_23490] -[group_23491] -[group_23492] -[group_23493] -[group_23494] -[group_23495] -[group_23496] -[group_23497] -[group_23498] -[group_23499] -[group_23500] -[group_23501] -[group_23502] -[group_23503] -[group_23504] -[group_23505] -[group_23506] -[group_23507] -[group_23508] -[group_23509] -[group_23510] -[group_23511] -[group_23512] -[group_23513] -[group_23514] -[group_23515] -[group_23516] -[group_23517] -[group_23518] -[group_23519] -[group_23520] -[group_23521] -[group_23522] -[group_23523] -[group_23524] -[group_23525] -[group_23526] -[group_23527] -[group_23528] -[group_23529] -[group_23530] -[group_23531] -[group_23532] -[group_23533] -[group_23534] -[group_23535] -[group_23536] -[group_23537] -[group_23538] -[group_23539] -[group_23540] -[group_23541] -[group_23542] -[group_23543] -[group_23544] -[group_23545] -[group_23546] -[group_23547] -[group_23548] -[group_23549] -[group_23550] -[group_23551] -[group_23552] -[group_23553] -[group_23554] -[group_23555] -[group_23556] -[group_23557] -[group_23558] -[group_23559] -[group_23560] -[group_23561] -[group_23562] -[group_23563] -[group_23564] -[group_23565] -[group_23566] -[group_23567] -[group_23568] -[group_23569] -[group_23570] -[group_23571] -[group_23572] -[group_23573] -[group_23574] -[group_23575] -[group_23576] -[group_23577] -[group_23578] -[group_23579] -[group_23580] -[group_23581] -[group_23582] -[group_23583] -[group_23584] -[group_23585] -[group_23586] -[group_23587] -[group_23588] -[group_23589] -[group_23590] -[group_23591] -[group_23592] -[group_23593] -[group_23594] -[group_23595] -[group_23596] -[group_23597] -[group_23598] -[group_23599] -[group_23600] -[group_23601] -[group_23602] -[group_23603] -[group_23604] -[group_23605] -[group_23606] -[group_23607] -[group_23608] -[group_23609] -[group_23610] -[group_23611] -[group_23612] -[group_23613] -[group_23614] -[group_23615] -[group_23616] -[group_23617] -[group_23618] -[group_23619] -[group_23620] -[group_23621] -[group_23622] -[group_23623] -[group_23624] -[group_23625] -[group_23626] -[group_23627] -[group_23628] -[group_23629] -[group_23630] -[group_23631] -[group_23632] -[group_23633] -[group_23634] -[group_23635] -[group_23636] -[group_23637] -[group_23638] -[group_23639] -[group_23640] -[group_23641] -[group_23642] -[group_23643] -[group_23644] -[group_23645] -[group_23646] -[group_23647] -[group_23648] -[group_23649] -[group_23650] -[group_23651] -[group_23652] -[group_23653] -[group_23654] -[group_23655] -[group_23656] -[group_23657] -[group_23658] -[group_23659] -[group_23660] -[group_23661] -[group_23662] -[group_23663] -[group_23664] -[group_23665] -[group_23666] -[group_23667] -[group_23668] -[group_23669] -[group_23670] -[group_23671] -[group_23672] -[group_23673] -[group_23674] -[group_23675] -[group_23676] -[group_23677] -[group_23678] -[group_23679] -[group_23680] -[group_23681] -[group_23682] -[group_23683] -[group_23684] -[group_23685] -[group_23686] -[group_23687] -[group_23688] -[group_23689] -[group_23690] -[group_23691] -[group_23692] -[group_23693] -[group_23694] -[group_23695] -[group_23696] -[group_23697] -[group_23698] -[group_23699] -[group_23700] -[group_23701] -[group_23702] -[group_23703] -[group_23704] -[group_23705] -[group_23706] -[group_23707] -[group_23708] -[group_23709] -[group_23710] -[group_23711] -[group_23712] -[group_23713] -[group_23714] -[group_23715] -[group_23716] -[group_23717] -[group_23718] -[group_23719] -[group_23720] -[group_23721] -[group_23722] -[group_23723] -[group_23724] -[group_23725] -[group_23726] -[group_23727] -[group_23728] -[group_23729] -[group_23730] -[group_23731] -[group_23732] -[group_23733] -[group_23734] -[group_23735] -[group_23736] -[group_23737] -[group_23738] -[group_23739] -[group_23740] -[group_23741] -[group_23742] -[group_23743] -[group_23744] -[group_23745] -[group_23746] -[group_23747] -[group_23748] -[group_23749] -[group_23750] -[group_23751] -[group_23752] -[group_23753] -[group_23754] -[group_23755] -[group_23756] -[group_23757] -[group_23758] -[group_23759] -[group_23760] -[group_23761] -[group_23762] -[group_23763] -[group_23764] -[group_23765] -[group_23766] -[group_23767] -[group_23768] -[group_23769] -[group_23770] -[group_23771] -[group_23772] -[group_23773] -[group_23774] -[group_23775] -[group_23776] -[group_23777] -[group_23778] -[group_23779] -[group_23780] -[group_23781] -[group_23782] -[group_23783] -[group_23784] -[group_23785] -[group_23786] -[group_23787] -[group_23788] -[group_23789] -[group_23790] -[group_23791] -[group_23792] -[group_23793] -[group_23794] -[group_23795] -[group_23796] -[group_23797] -[group_23798] -[group_23799] -[group_23800] -[group_23801] -[group_23802] -[group_23803] -[group_23804] -[group_23805] -[group_23806] -[group_23807] -[group_23808] -[group_23809] -[group_23810] -[group_23811] -[group_23812] -[group_23813] -[group_23814] -[group_23815] -[group_23816] -[group_23817] -[group_23818] -[group_23819] -[group_23820] -[group_23821] -[group_23822] -[group_23823] -[group_23824] -[group_23825] -[group_23826] -[group_23827] -[group_23828] -[group_23829] -[group_23830] -[group_23831] -[group_23832] -[group_23833] -[group_23834] -[group_23835] -[group_23836] -[group_23837] -[group_23838] -[group_23839] -[group_23840] -[group_23841] -[group_23842] -[group_23843] -[group_23844] -[group_23845] -[group_23846] -[group_23847] -[group_23848] -[group_23849] -[group_23850] -[group_23851] -[group_23852] -[group_23853] -[group_23854] -[group_23855] -[group_23856] -[group_23857] -[group_23858] -[group_23859] -[group_23860] -[group_23861] -[group_23862] -[group_23863] -[group_23864] -[group_23865] -[group_23866] -[group_23867] -[group_23868] -[group_23869] -[group_23870] -[group_23871] -[group_23872] -[group_23873] -[group_23874] -[group_23875] -[group_23876] -[group_23877] -[group_23878] -[group_23879] -[group_23880] -[group_23881] -[group_23882] -[group_23883] -[group_23884] -[group_23885] -[group_23886] -[group_23887] -[group_23888] -[group_23889] -[group_23890] -[group_23891] -[group_23892] -[group_23893] -[group_23894] -[group_23895] -[group_23896] -[group_23897] -[group_23898] -[group_23899] -[group_23900] -[group_23901] -[group_23902] -[group_23903] -[group_23904] -[group_23905] -[group_23906] -[group_23907] -[group_23908] -[group_23909] -[group_23910] -[group_23911] -[group_23912] -[group_23913] -[group_23914] -[group_23915] -[group_23916] -[group_23917] -[group_23918] -[group_23919] -[group_23920] -[group_23921] -[group_23922] -[group_23923] -[group_23924] -[group_23925] -[group_23926] -[group_23927] -[group_23928] -[group_23929] -[group_23930] -[group_23931] -[group_23932] -[group_23933] -[group_23934] -[group_23935] -[group_23936] -[group_23937] -[group_23938] -[group_23939] -[group_23940] -[group_23941] -[group_23942] -[group_23943] -[group_23944] -[group_23945] -[group_23946] -[group_23947] -[group_23948] -[group_23949] -[group_23950] -[group_23951] -[group_23952] -[group_23953] -[group_23954] -[group_23955] -[group_23956] -[group_23957] -[group_23958] -[group_23959] -[group_23960] -[group_23961] -[group_23962] -[group_23963] -[group_23964] -[group_23965] -[group_23966] -[group_23967] -[group_23968] -[group_23969] -[group_23970] -[group_23971] -[group_23972] -[group_23973] -[group_23974] -[group_23975] -[group_23976] -[group_23977] -[group_23978] -[group_23979] -[group_23980] -[group_23981] -[group_23982] -[group_23983] -[group_23984] -[group_23985] -[group_23986] -[group_23987] -[group_23988] -[group_23989] -[group_23990] -[group_23991] -[group_23992] -[group_23993] -[group_23994] -[group_23995] -[group_23996] -[group_23997] -[group_23998] -[group_23999] -[group_24000] -[group_24001] -[group_24002] -[group_24003] -[group_24004] -[group_24005] -[group_24006] -[group_24007] -[group_24008] -[group_24009] -[group_24010] -[group_24011] -[group_24012] -[group_24013] -[group_24014] -[group_24015] -[group_24016] -[group_24017] -[group_24018] -[group_24019] -[group_24020] -[group_24021] -[group_24022] -[group_24023] -[group_24024] -[group_24025] -[group_24026] -[group_24027] -[group_24028] -[group_24029] -[group_24030] -[group_24031] -[group_24032] -[group_24033] -[group_24034] -[group_24035] -[group_24036] -[group_24037] -[group_24038] -[group_24039] -[group_24040] -[group_24041] -[group_24042] -[group_24043] -[group_24044] -[group_24045] -[group_24046] -[group_24047] -[group_24048] -[group_24049] -[group_24050] -[group_24051] -[group_24052] -[group_24053] -[group_24054] -[group_24055] -[group_24056] -[group_24057] -[group_24058] -[group_24059] -[group_24060] -[group_24061] -[group_24062] -[group_24063] -[group_24064] -[group_24065] -[group_24066] -[group_24067] -[group_24068] -[group_24069] -[group_24070] -[group_24071] -[group_24072] -[group_24073] -[group_24074] -[group_24075] -[group_24076] -[group_24077] -[group_24078] -[group_24079] -[group_24080] -[group_24081] -[group_24082] -[group_24083] -[group_24084] -[group_24085] -[group_24086] -[group_24087] -[group_24088] -[group_24089] -[group_24090] -[group_24091] -[group_24092] -[group_24093] -[group_24094] -[group_24095] -[group_24096] -[group_24097] -[group_24098] -[group_24099] -[group_24100] -[group_24101] -[group_24102] -[group_24103] -[group_24104] -[group_24105] -[group_24106] -[group_24107] -[group_24108] -[group_24109] -[group_24110] -[group_24111] -[group_24112] -[group_24113] -[group_24114] -[group_24115] -[group_24116] -[group_24117] -[group_24118] -[group_24119] -[group_24120] -[group_24121] -[group_24122] -[group_24123] -[group_24124] -[group_24125] -[group_24126] -[group_24127] -[group_24128] -[group_24129] -[group_24130] -[group_24131] -[group_24132] -[group_24133] -[group_24134] -[group_24135] -[group_24136] -[group_24137] -[group_24138] -[group_24139] -[group_24140] -[group_24141] -[group_24142] -[group_24143] -[group_24144] -[group_24145] -[group_24146] -[group_24147] -[group_24148] -[group_24149] -[group_24150] -[group_24151] -[group_24152] -[group_24153] -[group_24154] -[group_24155] -[group_24156] -[group_24157] -[group_24158] -[group_24159] -[group_24160] -[group_24161] -[group_24162] -[group_24163] -[group_24164] -[group_24165] -[group_24166] -[group_24167] -[group_24168] -[group_24169] -[group_24170] -[group_24171] -[group_24172] -[group_24173] -[group_24174] -[group_24175] -[group_24176] -[group_24177] -[group_24178] -[group_24179] -[group_24180] -[group_24181] -[group_24182] -[group_24183] -[group_24184] -[group_24185] -[group_24186] -[group_24187] -[group_24188] -[group_24189] -[group_24190] -[group_24191] -[group_24192] -[group_24193] -[group_24194] -[group_24195] -[group_24196] -[group_24197] -[group_24198] -[group_24199] -[group_24200] -[group_24201] -[group_24202] -[group_24203] -[group_24204] -[group_24205] -[group_24206] -[group_24207] -[group_24208] -[group_24209] -[group_24210] -[group_24211] -[group_24212] -[group_24213] -[group_24214] -[group_24215] -[group_24216] -[group_24217] -[group_24218] -[group_24219] -[group_24220] -[group_24221] -[group_24222] -[group_24223] -[group_24224] -[group_24225] -[group_24226] -[group_24227] -[group_24228] -[group_24229] -[group_24230] -[group_24231] -[group_24232] -[group_24233] -[group_24234] -[group_24235] -[group_24236] -[group_24237] -[group_24238] -[group_24239] -[group_24240] -[group_24241] -[group_24242] -[group_24243] -[group_24244] -[group_24245] -[group_24246] -[group_24247] -[group_24248] -[group_24249] -[group_24250] -[group_24251] -[group_24252] -[group_24253] -[group_24254] -[group_24255] -[group_24256] -[group_24257] -[group_24258] -[group_24259] -[group_24260] -[group_24261] -[group_24262] -[group_24263] -[group_24264] -[group_24265] -[group_24266] -[group_24267] -[group_24268] -[group_24269] -[group_24270] -[group_24271] -[group_24272] -[group_24273] -[group_24274] -[group_24275] -[group_24276] -[group_24277] -[group_24278] -[group_24279] -[group_24280] -[group_24281] -[group_24282] -[group_24283] -[group_24284] -[group_24285] -[group_24286] -[group_24287] -[group_24288] -[group_24289] -[group_24290] -[group_24291] -[group_24292] -[group_24293] -[group_24294] -[group_24295] -[group_24296] -[group_24297] -[group_24298] -[group_24299] -[group_24300] -[group_24301] -[group_24302] -[group_24303] -[group_24304] -[group_24305] -[group_24306] -[group_24307] -[group_24308] -[group_24309] -[group_24310] -[group_24311] -[group_24312] -[group_24313] -[group_24314] -[group_24315] -[group_24316] -[group_24317] -[group_24318] -[group_24319] -[group_24320] -[group_24321] -[group_24322] -[group_24323] -[group_24324] -[group_24325] -[group_24326] -[group_24327] -[group_24328] -[group_24329] -[group_24330] -[group_24331] -[group_24332] -[group_24333] -[group_24334] -[group_24335] -[group_24336] -[group_24337] -[group_24338] -[group_24339] -[group_24340] -[group_24341] -[group_24342] -[group_24343] -[group_24344] -[group_24345] -[group_24346] -[group_24347] -[group_24348] -[group_24349] -[group_24350] -[group_24351] -[group_24352] -[group_24353] -[group_24354] -[group_24355] -[group_24356] -[group_24357] -[group_24358] -[group_24359] -[group_24360] -[group_24361] -[group_24362] -[group_24363] -[group_24364] -[group_24365] -[group_24366] -[group_24367] -[group_24368] -[group_24369] -[group_24370] -[group_24371] -[group_24372] -[group_24373] -[group_24374] -[group_24375] -[group_24376] -[group_24377] -[group_24378] -[group_24379] -[group_24380] -[group_24381] -[group_24382] -[group_24383] -[group_24384] -[group_24385] -[group_24386] -[group_24387] -[group_24388] -[group_24389] -[group_24390] -[group_24391] -[group_24392] -[group_24393] -[group_24394] -[group_24395] -[group_24396] -[group_24397] -[group_24398] -[group_24399] -[group_24400] -[group_24401] -[group_24402] -[group_24403] -[group_24404] -[group_24405] -[group_24406] -[group_24407] -[group_24408] -[group_24409] -[group_24410] -[group_24411] -[group_24412] -[group_24413] -[group_24414] -[group_24415] -[group_24416] -[group_24417] -[group_24418] -[group_24419] -[group_24420] -[group_24421] -[group_24422] -[group_24423] -[group_24424] -[group_24425] -[group_24426] -[group_24427] -[group_24428] -[group_24429] -[group_24430] -[group_24431] -[group_24432] -[group_24433] -[group_24434] -[group_24435] -[group_24436] -[group_24437] -[group_24438] -[group_24439] -[group_24440] -[group_24441] -[group_24442] -[group_24443] -[group_24444] -[group_24445] -[group_24446] -[group_24447] -[group_24448] -[group_24449] -[group_24450] -[group_24451] -[group_24452] -[group_24453] -[group_24454] -[group_24455] -[group_24456] -[group_24457] -[group_24458] -[group_24459] -[group_24460] -[group_24461] -[group_24462] -[group_24463] -[group_24464] -[group_24465] -[group_24466] -[group_24467] -[group_24468] -[group_24469] -[group_24470] -[group_24471] -[group_24472] -[group_24473] -[group_24474] -[group_24475] -[group_24476] -[group_24477] -[group_24478] -[group_24479] -[group_24480] -[group_24481] -[group_24482] -[group_24483] -[group_24484] -[group_24485] -[group_24486] -[group_24487] -[group_24488] -[group_24489] -[group_24490] -[group_24491] -[group_24492] -[group_24493] -[group_24494] -[group_24495] -[group_24496] -[group_24497] -[group_24498] -[group_24499] -[group_24500] -[group_24501] -[group_24502] -[group_24503] -[group_24504] -[group_24505] -[group_24506] -[group_24507] -[group_24508] -[group_24509] -[group_24510] -[group_24511] -[group_24512] -[group_24513] -[group_24514] -[group_24515] -[group_24516] -[group_24517] -[group_24518] -[group_24519] -[group_24520] -[group_24521] -[group_24522] -[group_24523] -[group_24524] -[group_24525] -[group_24526] -[group_24527] -[group_24528] -[group_24529] -[group_24530] -[group_24531] -[group_24532] -[group_24533] -[group_24534] -[group_24535] -[group_24536] -[group_24537] -[group_24538] -[group_24539] -[group_24540] -[group_24541] -[group_24542] -[group_24543] -[group_24544] -[group_24545] -[group_24546] -[group_24547] -[group_24548] -[group_24549] -[group_24550] -[group_24551] -[group_24552] -[group_24553] -[group_24554] -[group_24555] -[group_24556] -[group_24557] -[group_24558] -[group_24559] -[group_24560] -[group_24561] -[group_24562] -[group_24563] -[group_24564] -[group_24565] -[group_24566] -[group_24567] -[group_24568] -[group_24569] -[group_24570] -[group_24571] -[group_24572] -[group_24573] -[group_24574] -[group_24575] -[group_24576] -[group_24577] -[group_24578] -[group_24579] -[group_24580] -[group_24581] -[group_24582] -[group_24583] -[group_24584] -[group_24585] -[group_24586] -[group_24587] -[group_24588] -[group_24589] -[group_24590] -[group_24591] -[group_24592] -[group_24593] -[group_24594] -[group_24595] -[group_24596] -[group_24597] -[group_24598] -[group_24599] -[group_24600] -[group_24601] -[group_24602] -[group_24603] -[group_24604] -[group_24605] -[group_24606] -[group_24607] -[group_24608] -[group_24609] -[group_24610] -[group_24611] -[group_24612] -[group_24613] -[group_24614] -[group_24615] -[group_24616] -[group_24617] -[group_24618] -[group_24619] -[group_24620] -[group_24621] -[group_24622] -[group_24623] -[group_24624] -[group_24625] -[group_24626] -[group_24627] -[group_24628] -[group_24629] -[group_24630] -[group_24631] -[group_24632] -[group_24633] -[group_24634] -[group_24635] -[group_24636] -[group_24637] -[group_24638] -[group_24639] -[group_24640] -[group_24641] -[group_24642] -[group_24643] -[group_24644] -[group_24645] -[group_24646] -[group_24647] -[group_24648] -[group_24649] -[group_24650] -[group_24651] -[group_24652] -[group_24653] -[group_24654] -[group_24655] -[group_24656] -[group_24657] -[group_24658] -[group_24659] -[group_24660] -[group_24661] -[group_24662] -[group_24663] -[group_24664] -[group_24665] -[group_24666] -[group_24667] -[group_24668] -[group_24669] -[group_24670] -[group_24671] -[group_24672] -[group_24673] -[group_24674] -[group_24675] -[group_24676] -[group_24677] -[group_24678] -[group_24679] -[group_24680] -[group_24681] -[group_24682] -[group_24683] -[group_24684] -[group_24685] -[group_24686] -[group_24687] -[group_24688] -[group_24689] -[group_24690] -[group_24691] -[group_24692] -[group_24693] -[group_24694] -[group_24695] -[group_24696] -[group_24697] -[group_24698] -[group_24699] -[group_24700] -[group_24701] -[group_24702] -[group_24703] -[group_24704] -[group_24705] -[group_24706] -[group_24707] -[group_24708] -[group_24709] -[group_24710] -[group_24711] -[group_24712] -[group_24713] -[group_24714] -[group_24715] -[group_24716] -[group_24717] -[group_24718] -[group_24719] -[group_24720] -[group_24721] -[group_24722] -[group_24723] -[group_24724] -[group_24725] -[group_24726] -[group_24727] -[group_24728] -[group_24729] -[group_24730] -[group_24731] -[group_24732] -[group_24733] -[group_24734] -[group_24735] -[group_24736] -[group_24737] -[group_24738] -[group_24739] -[group_24740] -[group_24741] -[group_24742] -[group_24743] -[group_24744] -[group_24745] -[group_24746] -[group_24747] -[group_24748] -[group_24749] -[group_24750] -[group_24751] -[group_24752] -[group_24753] -[group_24754] -[group_24755] -[group_24756] -[group_24757] -[group_24758] -[group_24759] -[group_24760] -[group_24761] -[group_24762] -[group_24763] -[group_24764] -[group_24765] -[group_24766] -[group_24767] -[group_24768] -[group_24769] -[group_24770] -[group_24771] -[group_24772] -[group_24773] -[group_24774] -[group_24775] -[group_24776] -[group_24777] -[group_24778] -[group_24779] -[group_24780] -[group_24781] -[group_24782] -[group_24783] -[group_24784] -[group_24785] -[group_24786] -[group_24787] -[group_24788] -[group_24789] -[group_24790] -[group_24791] -[group_24792] -[group_24793] -[group_24794] -[group_24795] -[group_24796] -[group_24797] -[group_24798] -[group_24799] -[group_24800] -[group_24801] -[group_24802] -[group_24803] -[group_24804] -[group_24805] -[group_24806] -[group_24807] -[group_24808] -[group_24809] -[group_24810] -[group_24811] -[group_24812] -[group_24813] -[group_24814] -[group_24815] -[group_24816] -[group_24817] -[group_24818] -[group_24819] -[group_24820] -[group_24821] -[group_24822] -[group_24823] -[group_24824] -[group_24825] -[group_24826] -[group_24827] -[group_24828] -[group_24829] -[group_24830] -[group_24831] -[group_24832] -[group_24833] -[group_24834] -[group_24835] -[group_24836] -[group_24837] -[group_24838] -[group_24839] -[group_24840] -[group_24841] -[group_24842] -[group_24843] -[group_24844] -[group_24845] -[group_24846] -[group_24847] -[group_24848] -[group_24849] -[group_24850] -[group_24851] -[group_24852] -[group_24853] -[group_24854] -[group_24855] -[group_24856] -[group_24857] -[group_24858] -[group_24859] -[group_24860] -[group_24861] -[group_24862] -[group_24863] -[group_24864] -[group_24865] -[group_24866] -[group_24867] -[group_24868] -[group_24869] -[group_24870] -[group_24871] -[group_24872] -[group_24873] -[group_24874] -[group_24875] -[group_24876] -[group_24877] -[group_24878] -[group_24879] -[group_24880] -[group_24881] -[group_24882] -[group_24883] -[group_24884] -[group_24885] -[group_24886] -[group_24887] -[group_24888] -[group_24889] -[group_24890] -[group_24891] -[group_24892] -[group_24893] -[group_24894] -[group_24895] -[group_24896] -[group_24897] -[group_24898] -[group_24899] -[group_24900] -[group_24901] -[group_24902] -[group_24903] -[group_24904] -[group_24905] -[group_24906] -[group_24907] -[group_24908] -[group_24909] -[group_24910] -[group_24911] -[group_24912] -[group_24913] -[group_24914] -[group_24915] -[group_24916] -[group_24917] -[group_24918] -[group_24919] -[group_24920] -[group_24921] -[group_24922] -[group_24923] -[group_24924] -[group_24925] -[group_24926] -[group_24927] -[group_24928] -[group_24929] -[group_24930] -[group_24931] -[group_24932] -[group_24933] -[group_24934] -[group_24935] -[group_24936] -[group_24937] -[group_24938] -[group_24939] -[group_24940] -[group_24941] -[group_24942] -[group_24943] -[group_24944] -[group_24945] -[group_24946] -[group_24947] -[group_24948] -[group_24949] -[group_24950] -[group_24951] -[group_24952] -[group_24953] -[group_24954] -[group_24955] -[group_24956] -[group_24957] -[group_24958] -[group_24959] -[group_24960] -[group_24961] -[group_24962] -[group_24963] -[group_24964] -[group_24965] -[group_24966] -[group_24967] -[group_24968] -[group_24969] -[group_24970] -[group_24971] -[group_24972] -[group_24973] -[group_24974] -[group_24975] -[group_24976] -[group_24977] -[group_24978] -[group_24979] -[group_24980] -[group_24981] -[group_24982] -[group_24983] -[group_24984] -[group_24985] -[group_24986] -[group_24987] -[group_24988] -[group_24989] -[group_24990] -[group_24991] -[group_24992] -[group_24993] -[group_24994] -[group_24995] -[group_24996] -[group_24997] -[group_24998] -[group_24999] -[group_25000] -[group_25001] -[group_25002] -[group_25003] -[group_25004] -[group_25005] -[group_25006] -[group_25007] -[group_25008] -[group_25009] -[group_25010] -[group_25011] -[group_25012] -[group_25013] -[group_25014] -[group_25015] -[group_25016] -[group_25017] -[group_25018] -[group_25019] -[group_25020] -[group_25021] -[group_25022] -[group_25023] -[group_25024] -[group_25025] -[group_25026] -[group_25027] -[group_25028] -[group_25029] -[group_25030] -[group_25031] -[group_25032] -[group_25033] -[group_25034] -[group_25035] -[group_25036] -[group_25037] -[group_25038] -[group_25039] -[group_25040] -[group_25041] -[group_25042] -[group_25043] -[group_25044] -[group_25045] -[group_25046] -[group_25047] -[group_25048] -[group_25049] -[group_25050] -[group_25051] -[group_25052] -[group_25053] -[group_25054] -[group_25055] -[group_25056] -[group_25057] -[group_25058] -[group_25059] -[group_25060] -[group_25061] -[group_25062] -[group_25063] -[group_25064] -[group_25065] -[group_25066] -[group_25067] -[group_25068] -[group_25069] -[group_25070] -[group_25071] -[group_25072] -[group_25073] -[group_25074] -[group_25075] -[group_25076] -[group_25077] -[group_25078] -[group_25079] -[group_25080] -[group_25081] -[group_25082] -[group_25083] -[group_25084] -[group_25085] -[group_25086] -[group_25087] -[group_25088] -[group_25089] -[group_25090] -[group_25091] -[group_25092] -[group_25093] -[group_25094] -[group_25095] -[group_25096] -[group_25097] -[group_25098] -[group_25099] -[group_25100] -[group_25101] -[group_25102] -[group_25103] -[group_25104] -[group_25105] -[group_25106] -[group_25107] -[group_25108] -[group_25109] -[group_25110] -[group_25111] -[group_25112] -[group_25113] -[group_25114] -[group_25115] -[group_25116] -[group_25117] -[group_25118] -[group_25119] -[group_25120] -[group_25121] -[group_25122] -[group_25123] -[group_25124] -[group_25125] -[group_25126] -[group_25127] -[group_25128] -[group_25129] -[group_25130] -[group_25131] -[group_25132] -[group_25133] -[group_25134] -[group_25135] -[group_25136] -[group_25137] -[group_25138] -[group_25139] -[group_25140] -[group_25141] -[group_25142] -[group_25143] -[group_25144] -[group_25145] -[group_25146] -[group_25147] -[group_25148] -[group_25149] -[group_25150] -[group_25151] -[group_25152] -[group_25153] -[group_25154] -[group_25155] -[group_25156] -[group_25157] -[group_25158] -[group_25159] -[group_25160] -[group_25161] -[group_25162] -[group_25163] -[group_25164] -[group_25165] -[group_25166] -[group_25167] -[group_25168] -[group_25169] -[group_25170] -[group_25171] -[group_25172] -[group_25173] -[group_25174] -[group_25175] -[group_25176] -[group_25177] -[group_25178] -[group_25179] -[group_25180] -[group_25181] -[group_25182] -[group_25183] -[group_25184] -[group_25185] -[group_25186] -[group_25187] -[group_25188] -[group_25189] -[group_25190] -[group_25191] -[group_25192] -[group_25193] -[group_25194] -[group_25195] -[group_25196] -[group_25197] -[group_25198] -[group_25199] -[group_25200] -[group_25201] -[group_25202] -[group_25203] -[group_25204] -[group_25205] -[group_25206] -[group_25207] -[group_25208] -[group_25209] -[group_25210] -[group_25211] -[group_25212] -[group_25213] -[group_25214] -[group_25215] -[group_25216] -[group_25217] -[group_25218] -[group_25219] -[group_25220] -[group_25221] -[group_25222] -[group_25223] -[group_25224] -[group_25225] -[group_25226] -[group_25227] -[group_25228] -[group_25229] -[group_25230] -[group_25231] -[group_25232] -[group_25233] -[group_25234] -[group_25235] -[group_25236] -[group_25237] -[group_25238] -[group_25239] -[group_25240] -[group_25241] -[group_25242] -[group_25243] -[group_25244] -[group_25245] -[group_25246] -[group_25247] -[group_25248] -[group_25249] -[group_25250] -[group_25251] -[group_25252] -[group_25253] -[group_25254] -[group_25255] -[group_25256] -[group_25257] -[group_25258] -[group_25259] -[group_25260] -[group_25261] -[group_25262] -[group_25263] -[group_25264] -[group_25265] -[group_25266] -[group_25267] -[group_25268] -[group_25269] -[group_25270] -[group_25271] -[group_25272] -[group_25273] -[group_25274] -[group_25275] -[group_25276] -[group_25277] -[group_25278] -[group_25279] -[group_25280] -[group_25281] -[group_25282] -[group_25283] -[group_25284] -[group_25285] -[group_25286] -[group_25287] -[group_25288] -[group_25289] -[group_25290] -[group_25291] -[group_25292] -[group_25293] -[group_25294] -[group_25295] -[group_25296] -[group_25297] -[group_25298] -[group_25299] -[group_25300] -[group_25301] -[group_25302] -[group_25303] -[group_25304] -[group_25305] -[group_25306] -[group_25307] -[group_25308] -[group_25309] -[group_25310] -[group_25311] -[group_25312] -[group_25313] -[group_25314] -[group_25315] -[group_25316] -[group_25317] -[group_25318] -[group_25319] -[group_25320] -[group_25321] -[group_25322] -[group_25323] -[group_25324] -[group_25325] -[group_25326] -[group_25327] -[group_25328] -[group_25329] -[group_25330] -[group_25331] -[group_25332] -[group_25333] -[group_25334] -[group_25335] -[group_25336] -[group_25337] -[group_25338] -[group_25339] -[group_25340] -[group_25341] -[group_25342] -[group_25343] -[group_25344] -[group_25345] -[group_25346] -[group_25347] -[group_25348] -[group_25349] -[group_25350] -[group_25351] -[group_25352] -[group_25353] -[group_25354] -[group_25355] -[group_25356] -[group_25357] -[group_25358] -[group_25359] -[group_25360] -[group_25361] -[group_25362] -[group_25363] -[group_25364] -[group_25365] -[group_25366] -[group_25367] -[group_25368] -[group_25369] -[group_25370] -[group_25371] -[group_25372] -[group_25373] -[group_25374] -[group_25375] -[group_25376] -[group_25377] -[group_25378] -[group_25379] -[group_25380] -[group_25381] -[group_25382] -[group_25383] -[group_25384] -[group_25385] -[group_25386] -[group_25387] -[group_25388] -[group_25389] -[group_25390] -[group_25391] -[group_25392] -[group_25393] -[group_25394] -[group_25395] -[group_25396] -[group_25397] -[group_25398] -[group_25399] -[group_25400] -[group_25401] -[group_25402] -[group_25403] -[group_25404] -[group_25405] -[group_25406] -[group_25407] -[group_25408] -[group_25409] -[group_25410] -[group_25411] -[group_25412] -[group_25413] -[group_25414] -[group_25415] -[group_25416] -[group_25417] -[group_25418] -[group_25419] -[group_25420] -[group_25421] -[group_25422] -[group_25423] -[group_25424] -[group_25425] -[group_25426] -[group_25427] -[group_25428] -[group_25429] -[group_25430] -[group_25431] -[group_25432] -[group_25433] -[group_25434] -[group_25435] -[group_25436] -[group_25437] -[group_25438] -[group_25439] -[group_25440] -[group_25441] -[group_25442] -[group_25443] -[group_25444] -[group_25445] -[group_25446] -[group_25447] -[group_25448] -[group_25449] -[group_25450] -[group_25451] -[group_25452] -[group_25453] -[group_25454] -[group_25455] -[group_25456] -[group_25457] -[group_25458] -[group_25459] -[group_25460] -[group_25461] -[group_25462] -[group_25463] -[group_25464] -[group_25465] -[group_25466] -[group_25467] -[group_25468] -[group_25469] -[group_25470] -[group_25471] -[group_25472] -[group_25473] -[group_25474] -[group_25475] -[group_25476] -[group_25477] -[group_25478] -[group_25479] -[group_25480] -[group_25481] -[group_25482] -[group_25483] -[group_25484] -[group_25485] -[group_25486] -[group_25487] -[group_25488] -[group_25489] -[group_25490] -[group_25491] -[group_25492] -[group_25493] -[group_25494] -[group_25495] -[group_25496] -[group_25497] -[group_25498] -[group_25499] -[group_25500] -[group_25501] -[group_25502] -[group_25503] -[group_25504] -[group_25505] -[group_25506] -[group_25507] -[group_25508] -[group_25509] -[group_25510] -[group_25511] -[group_25512] -[group_25513] -[group_25514] -[group_25515] -[group_25516] -[group_25517] -[group_25518] -[group_25519] -[group_25520] -[group_25521] -[group_25522] -[group_25523] -[group_25524] -[group_25525] -[group_25526] -[group_25527] -[group_25528] -[group_25529] -[group_25530] -[group_25531] -[group_25532] -[group_25533] -[group_25534] -[group_25535] -[group_25536] -[group_25537] -[group_25538] -[group_25539] -[group_25540] -[group_25541] -[group_25542] -[group_25543] -[group_25544] -[group_25545] -[group_25546] -[group_25547] -[group_25548] -[group_25549] -[group_25550] -[group_25551] -[group_25552] -[group_25553] -[group_25554] -[group_25555] -[group_25556] -[group_25557] -[group_25558] -[group_25559] -[group_25560] -[group_25561] -[group_25562] -[group_25563] -[group_25564] -[group_25565] -[group_25566] -[group_25567] -[group_25568] -[group_25569] -[group_25570] -[group_25571] -[group_25572] -[group_25573] -[group_25574] -[group_25575] -[group_25576] -[group_25577] -[group_25578] -[group_25579] -[group_25580] -[group_25581] -[group_25582] -[group_25583] -[group_25584] -[group_25585] -[group_25586] -[group_25587] -[group_25588] -[group_25589] -[group_25590] -[group_25591] -[group_25592] -[group_25593] -[group_25594] -[group_25595] -[group_25596] -[group_25597] -[group_25598] -[group_25599] -[group_25600] -[group_25601] -[group_25602] -[group_25603] -[group_25604] -[group_25605] -[group_25606] -[group_25607] -[group_25608] -[group_25609] -[group_25610] -[group_25611] -[group_25612] -[group_25613] -[group_25614] -[group_25615] -[group_25616] -[group_25617] -[group_25618] -[group_25619] -[group_25620] -[group_25621] -[group_25622] -[group_25623] -[group_25624] -[group_25625] -[group_25626] -[group_25627] -[group_25628] -[group_25629] -[group_25630] -[group_25631] -[group_25632] -[group_25633] -[group_25634] -[group_25635] -[group_25636] -[group_25637] -[group_25638] -[group_25639] -[group_25640] -[group_25641] -[group_25642] -[group_25643] -[group_25644] -[group_25645] -[group_25646] -[group_25647] -[group_25648] -[group_25649] -[group_25650] -[group_25651] -[group_25652] -[group_25653] -[group_25654] -[group_25655] -[group_25656] -[group_25657] -[group_25658] -[group_25659] -[group_25660] -[group_25661] -[group_25662] -[group_25663] -[group_25664] -[group_25665] -[group_25666] -[group_25667] -[group_25668] -[group_25669] -[group_25670] -[group_25671] -[group_25672] -[group_25673] -[group_25674] -[group_25675] -[group_25676] -[group_25677] -[group_25678] -[group_25679] -[group_25680] -[group_25681] -[group_25682] -[group_25683] -[group_25684] -[group_25685] -[group_25686] -[group_25687] -[group_25688] -[group_25689] -[group_25690] -[group_25691] -[group_25692] -[group_25693] -[group_25694] -[group_25695] -[group_25696] -[group_25697] -[group_25698] -[group_25699] -[group_25700] -[group_25701] -[group_25702] -[group_25703] -[group_25704] -[group_25705] -[group_25706] -[group_25707] -[group_25708] -[group_25709] -[group_25710] -[group_25711] -[group_25712] -[group_25713] -[group_25714] -[group_25715] -[group_25716] -[group_25717] -[group_25718] -[group_25719] -[group_25720] -[group_25721] -[group_25722] -[group_25723] -[group_25724] -[group_25725] -[group_25726] -[group_25727] -[group_25728] -[group_25729] -[group_25730] -[group_25731] -[group_25732] -[group_25733] -[group_25734] -[group_25735] -[group_25736] -[group_25737] -[group_25738] -[group_25739] -[group_25740] -[group_25741] -[group_25742] -[group_25743] -[group_25744] -[group_25745] -[group_25746] -[group_25747] -[group_25748] -[group_25749] -[group_25750] -[group_25751] -[group_25752] -[group_25753] -[group_25754] -[group_25755] -[group_25756] -[group_25757] -[group_25758] -[group_25759] -[group_25760] -[group_25761] -[group_25762] -[group_25763] -[group_25764] -[group_25765] -[group_25766] -[group_25767] -[group_25768] -[group_25769] -[group_25770] -[group_25771] -[group_25772] -[group_25773] -[group_25774] -[group_25775] -[group_25776] -[group_25777] -[group_25778] -[group_25779] -[group_25780] -[group_25781] -[group_25782] -[group_25783] -[group_25784] -[group_25785] -[group_25786] -[group_25787] -[group_25788] -[group_25789] -[group_25790] -[group_25791] -[group_25792] -[group_25793] -[group_25794] -[group_25795] -[group_25796] -[group_25797] -[group_25798] -[group_25799] -[group_25800] -[group_25801] -[group_25802] -[group_25803] -[group_25804] -[group_25805] -[group_25806] -[group_25807] -[group_25808] -[group_25809] -[group_25810] -[group_25811] -[group_25812] -[group_25813] -[group_25814] -[group_25815] -[group_25816] -[group_25817] -[group_25818] -[group_25819] -[group_25820] -[group_25821] -[group_25822] -[group_25823] -[group_25824] -[group_25825] -[group_25826] -[group_25827] -[group_25828] -[group_25829] -[group_25830] -[group_25831] -[group_25832] -[group_25833] -[group_25834] -[group_25835] -[group_25836] -[group_25837] -[group_25838] -[group_25839] -[group_25840] -[group_25841] -[group_25842] -[group_25843] -[group_25844] -[group_25845] -[group_25846] -[group_25847] -[group_25848] -[group_25849] -[group_25850] -[group_25851] -[group_25852] -[group_25853] -[group_25854] -[group_25855] -[group_25856] -[group_25857] -[group_25858] -[group_25859] -[group_25860] -[group_25861] -[group_25862] -[group_25863] -[group_25864] -[group_25865] -[group_25866] -[group_25867] -[group_25868] -[group_25869] -[group_25870] -[group_25871] -[group_25872] -[group_25873] -[group_25874] -[group_25875] -[group_25876] -[group_25877] -[group_25878] -[group_25879] -[group_25880] -[group_25881] -[group_25882] -[group_25883] -[group_25884] -[group_25885] -[group_25886] -[group_25887] -[group_25888] -[group_25889] -[group_25890] -[group_25891] -[group_25892] -[group_25893] -[group_25894] -[group_25895] -[group_25896] -[group_25897] -[group_25898] -[group_25899] -[group_25900] -[group_25901] -[group_25902] -[group_25903] -[group_25904] -[group_25905] -[group_25906] -[group_25907] -[group_25908] -[group_25909] -[group_25910] -[group_25911] -[group_25912] -[group_25913] -[group_25914] -[group_25915] -[group_25916] -[group_25917] -[group_25918] -[group_25919] -[group_25920] -[group_25921] -[group_25922] -[group_25923] -[group_25924] -[group_25925] -[group_25926] -[group_25927] -[group_25928] -[group_25929] -[group_25930] -[group_25931] -[group_25932] -[group_25933] -[group_25934] -[group_25935] -[group_25936] -[group_25937] -[group_25938] -[group_25939] -[group_25940] -[group_25941] -[group_25942] -[group_25943] -[group_25944] -[group_25945] -[group_25946] -[group_25947] -[group_25948] -[group_25949] -[group_25950] -[group_25951] -[group_25952] -[group_25953] -[group_25954] -[group_25955] -[group_25956] -[group_25957] -[group_25958] -[group_25959] -[group_25960] -[group_25961] -[group_25962] -[group_25963] -[group_25964] -[group_25965] -[group_25966] -[group_25967] -[group_25968] -[group_25969] -[group_25970] -[group_25971] -[group_25972] -[group_25973] -[group_25974] -[group_25975] -[group_25976] -[group_25977] -[group_25978] -[group_25979] -[group_25980] -[group_25981] -[group_25982] -[group_25983] -[group_25984] -[group_25985] -[group_25986] -[group_25987] -[group_25988] -[group_25989] -[group_25990] -[group_25991] -[group_25992] -[group_25993] -[group_25994] -[group_25995] -[group_25996] -[group_25997] -[group_25998] -[group_25999] -[group_26000] -[group_26001] -[group_26002] -[group_26003] -[group_26004] -[group_26005] -[group_26006] -[group_26007] -[group_26008] -[group_26009] -[group_26010] -[group_26011] -[group_26012] -[group_26013] -[group_26014] -[group_26015] -[group_26016] -[group_26017] -[group_26018] -[group_26019] -[group_26020] -[group_26021] -[group_26022] -[group_26023] -[group_26024] -[group_26025] -[group_26026] -[group_26027] -[group_26028] -[group_26029] -[group_26030] -[group_26031] -[group_26032] -[group_26033] -[group_26034] -[group_26035] -[group_26036] -[group_26037] -[group_26038] -[group_26039] -[group_26040] -[group_26041] -[group_26042] -[group_26043] -[group_26044] -[group_26045] -[group_26046] -[group_26047] -[group_26048] -[group_26049] -[group_26050] -[group_26051] -[group_26052] -[group_26053] -[group_26054] -[group_26055] -[group_26056] -[group_26057] -[group_26058] -[group_26059] -[group_26060] -[group_26061] -[group_26062] -[group_26063] -[group_26064] -[group_26065] -[group_26066] -[group_26067] -[group_26068] -[group_26069] -[group_26070] -[group_26071] -[group_26072] -[group_26073] -[group_26074] -[group_26075] -[group_26076] -[group_26077] -[group_26078] -[group_26079] -[group_26080] -[group_26081] -[group_26082] -[group_26083] -[group_26084] -[group_26085] -[group_26086] -[group_26087] -[group_26088] -[group_26089] -[group_26090] -[group_26091] -[group_26092] -[group_26093] -[group_26094] -[group_26095] -[group_26096] -[group_26097] -[group_26098] -[group_26099] -[group_26100] -[group_26101] -[group_26102] -[group_26103] -[group_26104] -[group_26105] -[group_26106] -[group_26107] -[group_26108] -[group_26109] -[group_26110] -[group_26111] -[group_26112] -[group_26113] -[group_26114] -[group_26115] -[group_26116] -[group_26117] -[group_26118] -[group_26119] -[group_26120] -[group_26121] -[group_26122] -[group_26123] -[group_26124] -[group_26125] -[group_26126] -[group_26127] -[group_26128] -[group_26129] -[group_26130] -[group_26131] -[group_26132] -[group_26133] -[group_26134] -[group_26135] -[group_26136] -[group_26137] -[group_26138] -[group_26139] -[group_26140] -[group_26141] -[group_26142] -[group_26143] -[group_26144] -[group_26145] -[group_26146] -[group_26147] -[group_26148] -[group_26149] -[group_26150] -[group_26151] -[group_26152] -[group_26153] -[group_26154] -[group_26155] -[group_26156] -[group_26157] -[group_26158] -[group_26159] -[group_26160] -[group_26161] -[group_26162] -[group_26163] -[group_26164] -[group_26165] -[group_26166] -[group_26167] -[group_26168] -[group_26169] -[group_26170] -[group_26171] -[group_26172] -[group_26173] -[group_26174] -[group_26175] -[group_26176] -[group_26177] -[group_26178] -[group_26179] -[group_26180] -[group_26181] -[group_26182] -[group_26183] -[group_26184] -[group_26185] -[group_26186] -[group_26187] -[group_26188] -[group_26189] -[group_26190] -[group_26191] -[group_26192] -[group_26193] -[group_26194] -[group_26195] -[group_26196] -[group_26197] -[group_26198] -[group_26199] -[group_26200] -[group_26201] -[group_26202] -[group_26203] -[group_26204] -[group_26205] -[group_26206] -[group_26207] -[group_26208] -[group_26209] -[group_26210] -[group_26211] -[group_26212] -[group_26213] -[group_26214] -[group_26215] -[group_26216] -[group_26217] -[group_26218] -[group_26219] -[group_26220] -[group_26221] -[group_26222] -[group_26223] -[group_26224] -[group_26225] -[group_26226] -[group_26227] -[group_26228] -[group_26229] -[group_26230] -[group_26231] -[group_26232] -[group_26233] -[group_26234] -[group_26235] -[group_26236] -[group_26237] -[group_26238] -[group_26239] -[group_26240] -[group_26241] -[group_26242] -[group_26243] -[group_26244] -[group_26245] -[group_26246] -[group_26247] -[group_26248] -[group_26249] -[group_26250] -[group_26251] -[group_26252] -[group_26253] -[group_26254] -[group_26255] -[group_26256] -[group_26257] -[group_26258] -[group_26259] -[group_26260] -[group_26261] -[group_26262] -[group_26263] -[group_26264] -[group_26265] -[group_26266] -[group_26267] -[group_26268] -[group_26269] -[group_26270] -[group_26271] -[group_26272] -[group_26273] -[group_26274] -[group_26275] -[group_26276] -[group_26277] -[group_26278] -[group_26279] -[group_26280] -[group_26281] -[group_26282] -[group_26283] -[group_26284] -[group_26285] -[group_26286] -[group_26287] -[group_26288] -[group_26289] -[group_26290] -[group_26291] -[group_26292] -[group_26293] -[group_26294] -[group_26295] -[group_26296] -[group_26297] -[group_26298] -[group_26299] -[group_26300] -[group_26301] -[group_26302] -[group_26303] -[group_26304] -[group_26305] -[group_26306] -[group_26307] -[group_26308] -[group_26309] -[group_26310] -[group_26311] -[group_26312] -[group_26313] -[group_26314] -[group_26315] -[group_26316] -[group_26317] -[group_26318] -[group_26319] -[group_26320] -[group_26321] -[group_26322] -[group_26323] -[group_26324] -[group_26325] -[group_26326] -[group_26327] -[group_26328] -[group_26329] -[group_26330] -[group_26331] -[group_26332] -[group_26333] -[group_26334] -[group_26335] -[group_26336] -[group_26337] -[group_26338] -[group_26339] -[group_26340] -[group_26341] -[group_26342] -[group_26343] -[group_26344] -[group_26345] -[group_26346] -[group_26347] -[group_26348] -[group_26349] -[group_26350] -[group_26351] -[group_26352] -[group_26353] -[group_26354] -[group_26355] -[group_26356] -[group_26357] -[group_26358] -[group_26359] -[group_26360] -[group_26361] -[group_26362] -[group_26363] -[group_26364] -[group_26365] -[group_26366] -[group_26367] -[group_26368] -[group_26369] -[group_26370] -[group_26371] -[group_26372] -[group_26373] -[group_26374] -[group_26375] -[group_26376] -[group_26377] -[group_26378] -[group_26379] -[group_26380] -[group_26381] -[group_26382] -[group_26383] -[group_26384] -[group_26385] -[group_26386] -[group_26387] -[group_26388] -[group_26389] -[group_26390] -[group_26391] -[group_26392] -[group_26393] -[group_26394] -[group_26395] -[group_26396] -[group_26397] -[group_26398] -[group_26399] -[group_26400] -[group_26401] -[group_26402] -[group_26403] -[group_26404] -[group_26405] -[group_26406] -[group_26407] -[group_26408] -[group_26409] -[group_26410] -[group_26411] -[group_26412] -[group_26413] -[group_26414] -[group_26415] -[group_26416] -[group_26417] -[group_26418] -[group_26419] -[group_26420] -[group_26421] -[group_26422] -[group_26423] -[group_26424] -[group_26425] -[group_26426] -[group_26427] -[group_26428] -[group_26429] -[group_26430] -[group_26431] -[group_26432] -[group_26433] -[group_26434] -[group_26435] -[group_26436] -[group_26437] -[group_26438] -[group_26439] -[group_26440] -[group_26441] -[group_26442] -[group_26443] -[group_26444] -[group_26445] -[group_26446] -[group_26447] -[group_26448] -[group_26449] -[group_26450] -[group_26451] -[group_26452] -[group_26453] -[group_26454] -[group_26455] -[group_26456] -[group_26457] -[group_26458] -[group_26459] -[group_26460] -[group_26461] -[group_26462] -[group_26463] -[group_26464] -[group_26465] -[group_26466] -[group_26467] -[group_26468] -[group_26469] -[group_26470] -[group_26471] -[group_26472] -[group_26473] -[group_26474] -[group_26475] -[group_26476] -[group_26477] -[group_26478] -[group_26479] -[group_26480] -[group_26481] -[group_26482] -[group_26483] -[group_26484] -[group_26485] -[group_26486] -[group_26487] -[group_26488] -[group_26489] -[group_26490] -[group_26491] -[group_26492] -[group_26493] -[group_26494] -[group_26495] -[group_26496] -[group_26497] -[group_26498] -[group_26499] -[group_26500] -[group_26501] -[group_26502] -[group_26503] -[group_26504] -[group_26505] -[group_26506] -[group_26507] -[group_26508] -[group_26509] -[group_26510] -[group_26511] -[group_26512] -[group_26513] -[group_26514] -[group_26515] -[group_26516] -[group_26517] -[group_26518] -[group_26519] -[group_26520] -[group_26521] -[group_26522] -[group_26523] -[group_26524] -[group_26525] -[group_26526] -[group_26527] -[group_26528] -[group_26529] -[group_26530] -[group_26531] -[group_26532] -[group_26533] -[group_26534] -[group_26535] -[group_26536] -[group_26537] -[group_26538] -[group_26539] -[group_26540] -[group_26541] -[group_26542] -[group_26543] -[group_26544] -[group_26545] -[group_26546] -[group_26547] -[group_26548] -[group_26549] -[group_26550] -[group_26551] -[group_26552] -[group_26553] -[group_26554] -[group_26555] -[group_26556] -[group_26557] -[group_26558] -[group_26559] -[group_26560] -[group_26561] -[group_26562] -[group_26563] -[group_26564] -[group_26565] -[group_26566] -[group_26567] -[group_26568] -[group_26569] -[group_26570] -[group_26571] -[group_26572] -[group_26573] -[group_26574] -[group_26575] -[group_26576] -[group_26577] -[group_26578] -[group_26579] -[group_26580] -[group_26581] -[group_26582] -[group_26583] -[group_26584] -[group_26585] -[group_26586] -[group_26587] -[group_26588] -[group_26589] -[group_26590] -[group_26591] -[group_26592] -[group_26593] -[group_26594] -[group_26595] -[group_26596] -[group_26597] -[group_26598] -[group_26599] -[group_26600] -[group_26601] -[group_26602] -[group_26603] -[group_26604] -[group_26605] -[group_26606] -[group_26607] -[group_26608] -[group_26609] -[group_26610] -[group_26611] -[group_26612] -[group_26613] -[group_26614] -[group_26615] -[group_26616] -[group_26617] -[group_26618] -[group_26619] -[group_26620] -[group_26621] -[group_26622] -[group_26623] -[group_26624] -[group_26625] -[group_26626] -[group_26627] -[group_26628] -[group_26629] -[group_26630] -[group_26631] -[group_26632] -[group_26633] -[group_26634] -[group_26635] -[group_26636] -[group_26637] -[group_26638] -[group_26639] -[group_26640] -[group_26641] -[group_26642] -[group_26643] -[group_26644] -[group_26645] -[group_26646] -[group_26647] -[group_26648] -[group_26649] -[group_26650] -[group_26651] -[group_26652] -[group_26653] -[group_26654] -[group_26655] -[group_26656] -[group_26657] -[group_26658] -[group_26659] -[group_26660] -[group_26661] -[group_26662] -[group_26663] -[group_26664] -[group_26665] -[group_26666] -[group_26667] -[group_26668] -[group_26669] -[group_26670] -[group_26671] -[group_26672] -[group_26673] -[group_26674] -[group_26675] -[group_26676] -[group_26677] -[group_26678] -[group_26679] -[group_26680] -[group_26681] -[group_26682] -[group_26683] -[group_26684] -[group_26685] -[group_26686] -[group_26687] -[group_26688] -[group_26689] -[group_26690] -[group_26691] -[group_26692] -[group_26693] -[group_26694] -[group_26695] -[group_26696] -[group_26697] -[group_26698] -[group_26699] -[group_26700] -[group_26701] -[group_26702] -[group_26703] -[group_26704] -[group_26705] -[group_26706] -[group_26707] -[group_26708] -[group_26709] -[group_26710] -[group_26711] -[group_26712] -[group_26713] -[group_26714] -[group_26715] -[group_26716] -[group_26717] -[group_26718] -[group_26719] -[group_26720] -[group_26721] -[group_26722] -[group_26723] -[group_26724] -[group_26725] -[group_26726] -[group_26727] -[group_26728] -[group_26729] -[group_26730] -[group_26731] -[group_26732] -[group_26733] -[group_26734] -[group_26735] -[group_26736] -[group_26737] -[group_26738] -[group_26739] -[group_26740] -[group_26741] -[group_26742] -[group_26743] -[group_26744] -[group_26745] -[group_26746] -[group_26747] -[group_26748] -[group_26749] -[group_26750] -[group_26751] -[group_26752] -[group_26753] -[group_26754] -[group_26755] -[group_26756] -[group_26757] -[group_26758] -[group_26759] -[group_26760] -[group_26761] -[group_26762] -[group_26763] -[group_26764] -[group_26765] -[group_26766] -[group_26767] -[group_26768] -[group_26769] -[group_26770] -[group_26771] -[group_26772] -[group_26773] -[group_26774] -[group_26775] -[group_26776] -[group_26777] -[group_26778] -[group_26779] -[group_26780] -[group_26781] -[group_26782] -[group_26783] -[group_26784] -[group_26785] -[group_26786] -[group_26787] -[group_26788] -[group_26789] -[group_26790] -[group_26791] -[group_26792] -[group_26793] -[group_26794] -[group_26795] -[group_26796] -[group_26797] -[group_26798] -[group_26799] -[group_26800] -[group_26801] -[group_26802] -[group_26803] -[group_26804] -[group_26805] -[group_26806] -[group_26807] -[group_26808] -[group_26809] -[group_26810] -[group_26811] -[group_26812] -[group_26813] -[group_26814] -[group_26815] -[group_26816] -[group_26817] -[group_26818] -[group_26819] -[group_26820] -[group_26821] -[group_26822] -[group_26823] -[group_26824] -[group_26825] -[group_26826] -[group_26827] -[group_26828] -[group_26829] -[group_26830] -[group_26831] -[group_26832] -[group_26833] -[group_26834] -[group_26835] -[group_26836] -[group_26837] -[group_26838] -[group_26839] -[group_26840] -[group_26841] -[group_26842] -[group_26843] -[group_26844] -[group_26845] -[group_26846] -[group_26847] -[group_26848] -[group_26849] -[group_26850] -[group_26851] -[group_26852] -[group_26853] -[group_26854] -[group_26855] -[group_26856] -[group_26857] -[group_26858] -[group_26859] -[group_26860] -[group_26861] -[group_26862] -[group_26863] -[group_26864] -[group_26865] -[group_26866] -[group_26867] -[group_26868] -[group_26869] -[group_26870] -[group_26871] -[group_26872] -[group_26873] -[group_26874] -[group_26875] -[group_26876] -[group_26877] -[group_26878] -[group_26879] -[group_26880] -[group_26881] -[group_26882] -[group_26883] -[group_26884] -[group_26885] -[group_26886] -[group_26887] -[group_26888] -[group_26889] -[group_26890] -[group_26891] -[group_26892] -[group_26893] -[group_26894] -[group_26895] -[group_26896] -[group_26897] -[group_26898] -[group_26899] -[group_26900] -[group_26901] -[group_26902] -[group_26903] -[group_26904] -[group_26905] -[group_26906] -[group_26907] -[group_26908] -[group_26909] -[group_26910] -[group_26911] -[group_26912] -[group_26913] -[group_26914] -[group_26915] -[group_26916] -[group_26917] -[group_26918] -[group_26919] -[group_26920] -[group_26921] -[group_26922] -[group_26923] -[group_26924] -[group_26925] -[group_26926] -[group_26927] -[group_26928] -[group_26929] -[group_26930] -[group_26931] -[group_26932] -[group_26933] -[group_26934] -[group_26935] -[group_26936] -[group_26937] -[group_26938] -[group_26939] -[group_26940] -[group_26941] -[group_26942] -[group_26943] -[group_26944] -[group_26945] -[group_26946] -[group_26947] -[group_26948] -[group_26949] -[group_26950] -[group_26951] -[group_26952] -[group_26953] -[group_26954] -[group_26955] -[group_26956] -[group_26957] -[group_26958] -[group_26959] -[group_26960] -[group_26961] -[group_26962] -[group_26963] -[group_26964] -[group_26965] -[group_26966] -[group_26967] -[group_26968] -[group_26969] -[group_26970] -[group_26971] -[group_26972] -[group_26973] -[group_26974] -[group_26975] -[group_26976] -[group_26977] -[group_26978] -[group_26979] -[group_26980] -[group_26981] -[group_26982] -[group_26983] -[group_26984] -[group_26985] -[group_26986] -[group_26987] -[group_26988] -[group_26989] -[group_26990] -[group_26991] -[group_26992] -[group_26993] -[group_26994] -[group_26995] -[group_26996] -[group_26997] -[group_26998] -[group_26999] -[group_27000] -[group_27001] -[group_27002] -[group_27003] -[group_27004] -[group_27005] -[group_27006] -[group_27007] -[group_27008] -[group_27009] -[group_27010] -[group_27011] -[group_27012] -[group_27013] -[group_27014] -[group_27015] -[group_27016] -[group_27017] -[group_27018] -[group_27019] -[group_27020] -[group_27021] -[group_27022] -[group_27023] -[group_27024] -[group_27025] -[group_27026] -[group_27027] -[group_27028] -[group_27029] -[group_27030] -[group_27031] -[group_27032] -[group_27033] -[group_27034] -[group_27035] -[group_27036] -[group_27037] -[group_27038] -[group_27039] -[group_27040] -[group_27041] -[group_27042] -[group_27043] -[group_27044] -[group_27045] -[group_27046] -[group_27047] -[group_27048] -[group_27049] -[group_27050] -[group_27051] -[group_27052] -[group_27053] -[group_27054] -[group_27055] -[group_27056] -[group_27057] -[group_27058] -[group_27059] -[group_27060] -[group_27061] -[group_27062] -[group_27063] -[group_27064] -[group_27065] -[group_27066] -[group_27067] -[group_27068] -[group_27069] -[group_27070] -[group_27071] -[group_27072] -[group_27073] -[group_27074] -[group_27075] -[group_27076] -[group_27077] -[group_27078] -[group_27079] -[group_27080] -[group_27081] -[group_27082] -[group_27083] -[group_27084] -[group_27085] -[group_27086] -[group_27087] -[group_27088] -[group_27089] -[group_27090] -[group_27091] -[group_27092] -[group_27093] -[group_27094] -[group_27095] -[group_27096] -[group_27097] -[group_27098] -[group_27099] -[group_27100] -[group_27101] -[group_27102] -[group_27103] -[group_27104] -[group_27105] -[group_27106] -[group_27107] -[group_27108] -[group_27109] -[group_27110] -[group_27111] -[group_27112] -[group_27113] -[group_27114] -[group_27115] -[group_27116] -[group_27117] -[group_27118] -[group_27119] -[group_27120] -[group_27121] -[group_27122] -[group_27123] -[group_27124] -[group_27125] -[group_27126] -[group_27127] -[group_27128] -[group_27129] -[group_27130] -[group_27131] -[group_27132] -[group_27133] -[group_27134] -[group_27135] -[group_27136] -[group_27137] -[group_27138] -[group_27139] -[group_27140] -[group_27141] -[group_27142] -[group_27143] -[group_27144] -[group_27145] -[group_27146] -[group_27147] -[group_27148] -[group_27149] -[group_27150] -[group_27151] -[group_27152] -[group_27153] -[group_27154] -[group_27155] -[group_27156] -[group_27157] -[group_27158] -[group_27159] -[group_27160] -[group_27161] -[group_27162] -[group_27163] -[group_27164] -[group_27165] -[group_27166] -[group_27167] -[group_27168] -[group_27169] -[group_27170] -[group_27171] -[group_27172] -[group_27173] -[group_27174] -[group_27175] -[group_27176] -[group_27177] -[group_27178] -[group_27179] -[group_27180] -[group_27181] -[group_27182] -[group_27183] -[group_27184] -[group_27185] -[group_27186] -[group_27187] -[group_27188] -[group_27189] -[group_27190] -[group_27191] -[group_27192] -[group_27193] -[group_27194] -[group_27195] -[group_27196] -[group_27197] -[group_27198] -[group_27199] -[group_27200] -[group_27201] -[group_27202] -[group_27203] -[group_27204] -[group_27205] -[group_27206] -[group_27207] -[group_27208] -[group_27209] -[group_27210] -[group_27211] -[group_27212] -[group_27213] -[group_27214] -[group_27215] -[group_27216] -[group_27217] -[group_27218] -[group_27219] -[group_27220] -[group_27221] -[group_27222] -[group_27223] -[group_27224] -[group_27225] -[group_27226] -[group_27227] -[group_27228] -[group_27229] -[group_27230] -[group_27231] -[group_27232] -[group_27233] -[group_27234] -[group_27235] -[group_27236] -[group_27237] -[group_27238] -[group_27239] -[group_27240] -[group_27241] -[group_27242] -[group_27243] -[group_27244] -[group_27245] -[group_27246] -[group_27247] -[group_27248] -[group_27249] -[group_27250] -[group_27251] -[group_27252] -[group_27253] -[group_27254] -[group_27255] -[group_27256] -[group_27257] -[group_27258] -[group_27259] -[group_27260] -[group_27261] -[group_27262] -[group_27263] -[group_27264] -[group_27265] -[group_27266] -[group_27267] -[group_27268] -[group_27269] -[group_27270] -[group_27271] -[group_27272] -[group_27273] -[group_27274] -[group_27275] -[group_27276] -[group_27277] -[group_27278] -[group_27279] -[group_27280] -[group_27281] -[group_27282] -[group_27283] -[group_27284] -[group_27285] -[group_27286] -[group_27287] -[group_27288] -[group_27289] -[group_27290] -[group_27291] -[group_27292] -[group_27293] -[group_27294] -[group_27295] -[group_27296] -[group_27297] -[group_27298] -[group_27299] -[group_27300] -[group_27301] -[group_27302] -[group_27303] -[group_27304] -[group_27305] -[group_27306] -[group_27307] -[group_27308] -[group_27309] -[group_27310] -[group_27311] -[group_27312] -[group_27313] -[group_27314] -[group_27315] -[group_27316] -[group_27317] -[group_27318] -[group_27319] -[group_27320] -[group_27321] -[group_27322] -[group_27323] -[group_27324] -[group_27325] -[group_27326] -[group_27327] -[group_27328] -[group_27329] -[group_27330] -[group_27331] -[group_27332] -[group_27333] -[group_27334] -[group_27335] -[group_27336] -[group_27337] -[group_27338] -[group_27339] -[group_27340] -[group_27341] -[group_27342] -[group_27343] -[group_27344] -[group_27345] -[group_27346] -[group_27347] -[group_27348] -[group_27349] -[group_27350] -[group_27351] -[group_27352] -[group_27353] -[group_27354] -[group_27355] -[group_27356] -[group_27357] -[group_27358] -[group_27359] -[group_27360] -[group_27361] -[group_27362] -[group_27363] -[group_27364] -[group_27365] -[group_27366] -[group_27367] -[group_27368] -[group_27369] -[group_27370] -[group_27371] -[group_27372] -[group_27373] -[group_27374] -[group_27375] -[group_27376] -[group_27377] -[group_27378] -[group_27379] -[group_27380] -[group_27381] -[group_27382] -[group_27383] -[group_27384] -[group_27385] -[group_27386] -[group_27387] -[group_27388] -[group_27389] -[group_27390] -[group_27391] -[group_27392] -[group_27393] -[group_27394] -[group_27395] -[group_27396] -[group_27397] -[group_27398] -[group_27399] -[group_27400] -[group_27401] -[group_27402] -[group_27403] -[group_27404] -[group_27405] -[group_27406] -[group_27407] -[group_27408] -[group_27409] -[group_27410] -[group_27411] -[group_27412] -[group_27413] -[group_27414] -[group_27415] -[group_27416] -[group_27417] -[group_27418] -[group_27419] -[group_27420] -[group_27421] -[group_27422] -[group_27423] -[group_27424] -[group_27425] -[group_27426] -[group_27427] -[group_27428] -[group_27429] -[group_27430] -[group_27431] -[group_27432] -[group_27433] -[group_27434] -[group_27435] -[group_27436] -[group_27437] -[group_27438] -[group_27439] -[group_27440] -[group_27441] -[group_27442] -[group_27443] -[group_27444] -[group_27445] -[group_27446] -[group_27447] -[group_27448] -[group_27449] -[group_27450] -[group_27451] -[group_27452] -[group_27453] -[group_27454] -[group_27455] -[group_27456] -[group_27457] -[group_27458] -[group_27459] -[group_27460] -[group_27461] -[group_27462] -[group_27463] -[group_27464] -[group_27465] -[group_27466] -[group_27467] -[group_27468] -[group_27469] -[group_27470] -[group_27471] -[group_27472] -[group_27473] -[group_27474] -[group_27475] -[group_27476] -[group_27477] -[group_27478] -[group_27479] -[group_27480] -[group_27481] -[group_27482] -[group_27483] -[group_27484] -[group_27485] -[group_27486] -[group_27487] -[group_27488] -[group_27489] -[group_27490] -[group_27491] -[group_27492] -[group_27493] -[group_27494] -[group_27495] -[group_27496] -[group_27497] -[group_27498] -[group_27499] -[group_27500] -[group_27501] -[group_27502] -[group_27503] -[group_27504] -[group_27505] -[group_27506] -[group_27507] -[group_27508] -[group_27509] -[group_27510] -[group_27511] -[group_27512] -[group_27513] -[group_27514] -[group_27515] -[group_27516] -[group_27517] -[group_27518] -[group_27519] -[group_27520] -[group_27521] -[group_27522] -[group_27523] -[group_27524] -[group_27525] -[group_27526] -[group_27527] -[group_27528] -[group_27529] -[group_27530] -[group_27531] -[group_27532] -[group_27533] -[group_27534] -[group_27535] -[group_27536] -[group_27537] -[group_27538] -[group_27539] -[group_27540] -[group_27541] -[group_27542] -[group_27543] -[group_27544] -[group_27545] -[group_27546] -[group_27547] -[group_27548] -[group_27549] -[group_27550] -[group_27551] -[group_27552] -[group_27553] -[group_27554] -[group_27555] -[group_27556] -[group_27557] -[group_27558] -[group_27559] -[group_27560] -[group_27561] -[group_27562] -[group_27563] -[group_27564] -[group_27565] -[group_27566] -[group_27567] -[group_27568] -[group_27569] -[group_27570] -[group_27571] -[group_27572] -[group_27573] -[group_27574] -[group_27575] -[group_27576] -[group_27577] -[group_27578] -[group_27579] -[group_27580] -[group_27581] -[group_27582] -[group_27583] -[group_27584] -[group_27585] -[group_27586] -[group_27587] -[group_27588] -[group_27589] -[group_27590] -[group_27591] -[group_27592] -[group_27593] -[group_27594] -[group_27595] -[group_27596] -[group_27597] -[group_27598] -[group_27599] -[group_27600] -[group_27601] -[group_27602] -[group_27603] -[group_27604] -[group_27605] -[group_27606] -[group_27607] -[group_27608] -[group_27609] -[group_27610] -[group_27611] -[group_27612] -[group_27613] -[group_27614] -[group_27615] -[group_27616] -[group_27617] -[group_27618] -[group_27619] -[group_27620] -[group_27621] -[group_27622] -[group_27623] -[group_27624] -[group_27625] -[group_27626] -[group_27627] -[group_27628] -[group_27629] -[group_27630] -[group_27631] -[group_27632] -[group_27633] -[group_27634] -[group_27635] -[group_27636] -[group_27637] -[group_27638] -[group_27639] -[group_27640] -[group_27641] -[group_27642] -[group_27643] -[group_27644] -[group_27645] -[group_27646] -[group_27647] -[group_27648] -[group_27649] -[group_27650] -[group_27651] -[group_27652] -[group_27653] -[group_27654] -[group_27655] -[group_27656] -[group_27657] -[group_27658] -[group_27659] -[group_27660] -[group_27661] -[group_27662] -[group_27663] -[group_27664] -[group_27665] -[group_27666] -[group_27667] -[group_27668] -[group_27669] -[group_27670] -[group_27671] -[group_27672] -[group_27673] -[group_27674] -[group_27675] -[group_27676] -[group_27677] -[group_27678] -[group_27679] -[group_27680] -[group_27681] -[group_27682] -[group_27683] -[group_27684] -[group_27685] -[group_27686] -[group_27687] -[group_27688] -[group_27689] -[group_27690] -[group_27691] -[group_27692] -[group_27693] -[group_27694] -[group_27695] -[group_27696] -[group_27697] -[group_27698] -[group_27699] -[group_27700] -[group_27701] -[group_27702] -[group_27703] -[group_27704] -[group_27705] -[group_27706] -[group_27707] -[group_27708] -[group_27709] -[group_27710] -[group_27711] -[group_27712] -[group_27713] -[group_27714] -[group_27715] -[group_27716] -[group_27717] -[group_27718] -[group_27719] -[group_27720] -[group_27721] -[group_27722] -[group_27723] -[group_27724] -[group_27725] -[group_27726] -[group_27727] -[group_27728] -[group_27729] -[group_27730] -[group_27731] -[group_27732] -[group_27733] -[group_27734] -[group_27735] -[group_27736] -[group_27737] -[group_27738] -[group_27739] -[group_27740] -[group_27741] -[group_27742] -[group_27743] -[group_27744] -[group_27745] -[group_27746] -[group_27747] -[group_27748] -[group_27749] -[group_27750] -[group_27751] -[group_27752] -[group_27753] -[group_27754] -[group_27755] -[group_27756] -[group_27757] -[group_27758] -[group_27759] -[group_27760] -[group_27761] -[group_27762] -[group_27763] -[group_27764] -[group_27765] -[group_27766] -[group_27767] -[group_27768] -[group_27769] -[group_27770] -[group_27771] -[group_27772] -[group_27773] -[group_27774] -[group_27775] -[group_27776] -[group_27777] -[group_27778] -[group_27779] -[group_27780] -[group_27781] -[group_27782] -[group_27783] -[group_27784] -[group_27785] -[group_27786] -[group_27787] -[group_27788] -[group_27789] -[group_27790] -[group_27791] -[group_27792] -[group_27793] -[group_27794] -[group_27795] -[group_27796] -[group_27797] -[group_27798] -[group_27799] -[group_27800] -[group_27801] -[group_27802] -[group_27803] -[group_27804] -[group_27805] -[group_27806] -[group_27807] -[group_27808] -[group_27809] -[group_27810] -[group_27811] -[group_27812] -[group_27813] -[group_27814] -[group_27815] -[group_27816] -[group_27817] -[group_27818] -[group_27819] -[group_27820] -[group_27821] -[group_27822] -[group_27823] -[group_27824] -[group_27825] -[group_27826] -[group_27827] -[group_27828] -[group_27829] -[group_27830] -[group_27831] -[group_27832] -[group_27833] -[group_27834] -[group_27835] -[group_27836] -[group_27837] -[group_27838] -[group_27839] -[group_27840] -[group_27841] -[group_27842] -[group_27843] -[group_27844] -[group_27845] -[group_27846] -[group_27847] -[group_27848] -[group_27849] -[group_27850] -[group_27851] -[group_27852] -[group_27853] -[group_27854] -[group_27855] -[group_27856] -[group_27857] -[group_27858] -[group_27859] -[group_27860] -[group_27861] -[group_27862] -[group_27863] -[group_27864] -[group_27865] -[group_27866] -[group_27867] -[group_27868] -[group_27869] -[group_27870] -[group_27871] -[group_27872] -[group_27873] -[group_27874] -[group_27875] -[group_27876] -[group_27877] -[group_27878] -[group_27879] -[group_27880] -[group_27881] -[group_27882] -[group_27883] -[group_27884] -[group_27885] -[group_27886] -[group_27887] -[group_27888] -[group_27889] -[group_27890] -[group_27891] -[group_27892] -[group_27893] -[group_27894] -[group_27895] -[group_27896] -[group_27897] -[group_27898] -[group_27899] -[group_27900] -[group_27901] -[group_27902] -[group_27903] -[group_27904] -[group_27905] -[group_27906] -[group_27907] -[group_27908] -[group_27909] -[group_27910] -[group_27911] -[group_27912] -[group_27913] -[group_27914] -[group_27915] -[group_27916] -[group_27917] -[group_27918] -[group_27919] -[group_27920] -[group_27921] -[group_27922] -[group_27923] -[group_27924] -[group_27925] -[group_27926] -[group_27927] -[group_27928] -[group_27929] -[group_27930] -[group_27931] -[group_27932] -[group_27933] -[group_27934] -[group_27935] -[group_27936] -[group_27937] -[group_27938] -[group_27939] -[group_27940] -[group_27941] -[group_27942] -[group_27943] -[group_27944] -[group_27945] -[group_27946] -[group_27947] -[group_27948] -[group_27949] -[group_27950] -[group_27951] -[group_27952] -[group_27953] -[group_27954] -[group_27955] -[group_27956] -[group_27957] -[group_27958] -[group_27959] -[group_27960] -[group_27961] -[group_27962] -[group_27963] -[group_27964] -[group_27965] -[group_27966] -[group_27967] -[group_27968] -[group_27969] -[group_27970] -[group_27971] -[group_27972] -[group_27973] -[group_27974] -[group_27975] -[group_27976] -[group_27977] -[group_27978] -[group_27979] -[group_27980] -[group_27981] -[group_27982] -[group_27983] -[group_27984] -[group_27985] -[group_27986] -[group_27987] -[group_27988] -[group_27989] -[group_27990] -[group_27991] -[group_27992] -[group_27993] -[group_27994] -[group_27995] -[group_27996] -[group_27997] -[group_27998] -[group_27999] -[group_28000] -[group_28001] -[group_28002] -[group_28003] -[group_28004] -[group_28005] -[group_28006] -[group_28007] -[group_28008] -[group_28009] -[group_28010] -[group_28011] -[group_28012] -[group_28013] -[group_28014] -[group_28015] -[group_28016] -[group_28017] -[group_28018] -[group_28019] -[group_28020] -[group_28021] -[group_28022] -[group_28023] -[group_28024] -[group_28025] -[group_28026] -[group_28027] -[group_28028] -[group_28029] -[group_28030] -[group_28031] -[group_28032] -[group_28033] -[group_28034] -[group_28035] -[group_28036] -[group_28037] -[group_28038] -[group_28039] -[group_28040] -[group_28041] -[group_28042] -[group_28043] -[group_28044] -[group_28045] -[group_28046] -[group_28047] -[group_28048] -[group_28049] -[group_28050] -[group_28051] -[group_28052] -[group_28053] -[group_28054] -[group_28055] -[group_28056] -[group_28057] -[group_28058] -[group_28059] -[group_28060] -[group_28061] -[group_28062] -[group_28063] -[group_28064] -[group_28065] -[group_28066] -[group_28067] -[group_28068] -[group_28069] -[group_28070] -[group_28071] -[group_28072] -[group_28073] -[group_28074] -[group_28075] -[group_28076] -[group_28077] -[group_28078] -[group_28079] -[group_28080] -[group_28081] -[group_28082] -[group_28083] -[group_28084] -[group_28085] -[group_28086] -[group_28087] -[group_28088] -[group_28089] -[group_28090] -[group_28091] -[group_28092] -[group_28093] -[group_28094] -[group_28095] -[group_28096] -[group_28097] -[group_28098] -[group_28099] -[group_28100] -[group_28101] -[group_28102] -[group_28103] -[group_28104] -[group_28105] -[group_28106] -[group_28107] -[group_28108] -[group_28109] -[group_28110] -[group_28111] -[group_28112] -[group_28113] -[group_28114] -[group_28115] -[group_28116] -[group_28117] -[group_28118] -[group_28119] -[group_28120] -[group_28121] -[group_28122] -[group_28123] -[group_28124] -[group_28125] -[group_28126] -[group_28127] -[group_28128] -[group_28129] -[group_28130] -[group_28131] -[group_28132] -[group_28133] -[group_28134] -[group_28135] -[group_28136] -[group_28137] -[group_28138] -[group_28139] -[group_28140] -[group_28141] -[group_28142] -[group_28143] -[group_28144] -[group_28145] -[group_28146] -[group_28147] -[group_28148] -[group_28149] -[group_28150] -[group_28151] -[group_28152] -[group_28153] -[group_28154] -[group_28155] -[group_28156] -[group_28157] -[group_28158] -[group_28159] -[group_28160] -[group_28161] -[group_28162] -[group_28163] -[group_28164] -[group_28165] -[group_28166] -[group_28167] -[group_28168] -[group_28169] -[group_28170] -[group_28171] -[group_28172] -[group_28173] -[group_28174] -[group_28175] -[group_28176] -[group_28177] -[group_28178] -[group_28179] -[group_28180] -[group_28181] -[group_28182] -[group_28183] -[group_28184] -[group_28185] -[group_28186] -[group_28187] -[group_28188] -[group_28189] -[group_28190] -[group_28191] -[group_28192] -[group_28193] -[group_28194] -[group_28195] -[group_28196] -[group_28197] -[group_28198] -[group_28199] -[group_28200] -[group_28201] -[group_28202] -[group_28203] -[group_28204] -[group_28205] -[group_28206] -[group_28207] -[group_28208] -[group_28209] -[group_28210] -[group_28211] -[group_28212] -[group_28213] -[group_28214] -[group_28215] -[group_28216] -[group_28217] -[group_28218] -[group_28219] -[group_28220] -[group_28221] -[group_28222] -[group_28223] -[group_28224] -[group_28225] -[group_28226] -[group_28227] -[group_28228] -[group_28229] -[group_28230] -[group_28231] -[group_28232] -[group_28233] -[group_28234] -[group_28235] -[group_28236] -[group_28237] -[group_28238] -[group_28239] -[group_28240] -[group_28241] -[group_28242] -[group_28243] -[group_28244] -[group_28245] -[group_28246] -[group_28247] -[group_28248] -[group_28249] -[group_28250] -[group_28251] -[group_28252] -[group_28253] -[group_28254] -[group_28255] -[group_28256] -[group_28257] -[group_28258] -[group_28259] -[group_28260] -[group_28261] -[group_28262] -[group_28263] -[group_28264] -[group_28265] -[group_28266] -[group_28267] -[group_28268] -[group_28269] -[group_28270] -[group_28271] -[group_28272] -[group_28273] -[group_28274] -[group_28275] -[group_28276] -[group_28277] -[group_28278] -[group_28279] -[group_28280] -[group_28281] -[group_28282] -[group_28283] -[group_28284] -[group_28285] -[group_28286] -[group_28287] -[group_28288] -[group_28289] -[group_28290] -[group_28291] -[group_28292] -[group_28293] -[group_28294] -[group_28295] -[group_28296] -[group_28297] -[group_28298] -[group_28299] -[group_28300] -[group_28301] -[group_28302] -[group_28303] -[group_28304] -[group_28305] -[group_28306] -[group_28307] -[group_28308] -[group_28309] -[group_28310] -[group_28311] -[group_28312] -[group_28313] -[group_28314] -[group_28315] -[group_28316] -[group_28317] -[group_28318] -[group_28319] -[group_28320] -[group_28321] -[group_28322] -[group_28323] -[group_28324] -[group_28325] -[group_28326] -[group_28327] -[group_28328] -[group_28329] -[group_28330] -[group_28331] -[group_28332] -[group_28333] -[group_28334] -[group_28335] -[group_28336] -[group_28337] -[group_28338] -[group_28339] -[group_28340] -[group_28341] -[group_28342] -[group_28343] -[group_28344] -[group_28345] -[group_28346] -[group_28347] -[group_28348] -[group_28349] -[group_28350] -[group_28351] -[group_28352] -[group_28353] -[group_28354] -[group_28355] -[group_28356] -[group_28357] -[group_28358] -[group_28359] -[group_28360] -[group_28361] -[group_28362] -[group_28363] -[group_28364] -[group_28365] -[group_28366] -[group_28367] -[group_28368] -[group_28369] -[group_28370] -[group_28371] -[group_28372] -[group_28373] -[group_28374] -[group_28375] -[group_28376] -[group_28377] -[group_28378] -[group_28379] -[group_28380] -[group_28381] -[group_28382] -[group_28383] -[group_28384] -[group_28385] -[group_28386] -[group_28387] -[group_28388] -[group_28389] -[group_28390] -[group_28391] -[group_28392] -[group_28393] -[group_28394] -[group_28395] -[group_28396] -[group_28397] -[group_28398] -[group_28399] -[group_28400] -[group_28401] -[group_28402] -[group_28403] -[group_28404] -[group_28405] -[group_28406] -[group_28407] -[group_28408] -[group_28409] -[group_28410] -[group_28411] -[group_28412] -[group_28413] -[group_28414] -[group_28415] -[group_28416] -[group_28417] -[group_28418] -[group_28419] -[group_28420] -[group_28421] -[group_28422] -[group_28423] -[group_28424] -[group_28425] -[group_28426] -[group_28427] -[group_28428] -[group_28429] -[group_28430] -[group_28431] -[group_28432] -[group_28433] -[group_28434] -[group_28435] -[group_28436] -[group_28437] -[group_28438] -[group_28439] -[group_28440] -[group_28441] -[group_28442] -[group_28443] -[group_28444] -[group_28445] -[group_28446] -[group_28447] -[group_28448] -[group_28449] -[group_28450] -[group_28451] -[group_28452] -[group_28453] -[group_28454] -[group_28455] -[group_28456] -[group_28457] -[group_28458] -[group_28459] -[group_28460] -[group_28461] -[group_28462] -[group_28463] -[group_28464] -[group_28465] -[group_28466] -[group_28467] -[group_28468] -[group_28469] -[group_28470] -[group_28471] -[group_28472] -[group_28473] -[group_28474] -[group_28475] -[group_28476] -[group_28477] -[group_28478] -[group_28479] -[group_28480] -[group_28481] -[group_28482] -[group_28483] -[group_28484] -[group_28485] -[group_28486] -[group_28487] -[group_28488] -[group_28489] -[group_28490] -[group_28491] -[group_28492] -[group_28493] -[group_28494] -[group_28495] -[group_28496] -[group_28497] -[group_28498] -[group_28499] -[group_28500] -[group_28501] -[group_28502] -[group_28503] -[group_28504] -[group_28505] -[group_28506] -[group_28507] -[group_28508] -[group_28509] -[group_28510] -[group_28511] -[group_28512] -[group_28513] -[group_28514] -[group_28515] -[group_28516] -[group_28517] -[group_28518] -[group_28519] -[group_28520] -[group_28521] -[group_28522] -[group_28523] -[group_28524] -[group_28525] -[group_28526] -[group_28527] -[group_28528] -[group_28529] -[group_28530] -[group_28531] -[group_28532] -[group_28533] -[group_28534] -[group_28535] -[group_28536] -[group_28537] -[group_28538] -[group_28539] -[group_28540] -[group_28541] -[group_28542] -[group_28543] -[group_28544] -[group_28545] -[group_28546] -[group_28547] -[group_28548] -[group_28549] -[group_28550] -[group_28551] -[group_28552] -[group_28553] -[group_28554] -[group_28555] -[group_28556] -[group_28557] -[group_28558] -[group_28559] -[group_28560] -[group_28561] -[group_28562] -[group_28563] -[group_28564] -[group_28565] -[group_28566] -[group_28567] -[group_28568] -[group_28569] -[group_28570] -[group_28571] -[group_28572] -[group_28573] -[group_28574] -[group_28575] -[group_28576] -[group_28577] -[group_28578] -[group_28579] -[group_28580] -[group_28581] -[group_28582] -[group_28583] -[group_28584] -[group_28585] -[group_28586] -[group_28587] -[group_28588] -[group_28589] -[group_28590] -[group_28591] -[group_28592] -[group_28593] -[group_28594] -[group_28595] -[group_28596] -[group_28597] -[group_28598] -[group_28599] -[group_28600] -[group_28601] -[group_28602] -[group_28603] -[group_28604] -[group_28605] -[group_28606] -[group_28607] -[group_28608] -[group_28609] -[group_28610] -[group_28611] -[group_28612] -[group_28613] -[group_28614] -[group_28615] -[group_28616] -[group_28617] -[group_28618] -[group_28619] -[group_28620] -[group_28621] -[group_28622] -[group_28623] -[group_28624] -[group_28625] -[group_28626] -[group_28627] -[group_28628] -[group_28629] -[group_28630] -[group_28631] -[group_28632] -[group_28633] -[group_28634] -[group_28635] -[group_28636] -[group_28637] -[group_28638] -[group_28639] -[group_28640] -[group_28641] -[group_28642] -[group_28643] -[group_28644] -[group_28645] -[group_28646] -[group_28647] -[group_28648] -[group_28649] -[group_28650] -[group_28651] -[group_28652] -[group_28653] -[group_28654] -[group_28655] -[group_28656] -[group_28657] -[group_28658] -[group_28659] -[group_28660] -[group_28661] -[group_28662] -[group_28663] -[group_28664] -[group_28665] -[group_28666] -[group_28667] -[group_28668] -[group_28669] -[group_28670] -[group_28671] -[group_28672] -[group_28673] -[group_28674] -[group_28675] -[group_28676] -[group_28677] -[group_28678] -[group_28679] -[group_28680] -[group_28681] -[group_28682] -[group_28683] -[group_28684] -[group_28685] -[group_28686] -[group_28687] -[group_28688] -[group_28689] -[group_28690] -[group_28691] -[group_28692] -[group_28693] -[group_28694] -[group_28695] -[group_28696] -[group_28697] -[group_28698] -[group_28699] -[group_28700] -[group_28701] -[group_28702] -[group_28703] -[group_28704] -[group_28705] -[group_28706] -[group_28707] -[group_28708] -[group_28709] -[group_28710] -[group_28711] -[group_28712] -[group_28713] -[group_28714] -[group_28715] -[group_28716] -[group_28717] -[group_28718] -[group_28719] -[group_28720] -[group_28721] -[group_28722] -[group_28723] -[group_28724] -[group_28725] -[group_28726] -[group_28727] -[group_28728] -[group_28729] -[group_28730] -[group_28731] -[group_28732] -[group_28733] -[group_28734] -[group_28735] -[group_28736] -[group_28737] -[group_28738] -[group_28739] -[group_28740] -[group_28741] -[group_28742] -[group_28743] -[group_28744] -[group_28745] -[group_28746] -[group_28747] -[group_28748] -[group_28749] -[group_28750] -[group_28751] -[group_28752] -[group_28753] -[group_28754] -[group_28755] -[group_28756] -[group_28757] -[group_28758] -[group_28759] -[group_28760] -[group_28761] -[group_28762] -[group_28763] -[group_28764] -[group_28765] -[group_28766] -[group_28767] -[group_28768] -[group_28769] -[group_28770] -[group_28771] -[group_28772] -[group_28773] -[group_28774] -[group_28775] -[group_28776] -[group_28777] -[group_28778] -[group_28779] -[group_28780] -[group_28781] -[group_28782] -[group_28783] -[group_28784] -[group_28785] -[group_28786] -[group_28787] -[group_28788] -[group_28789] -[group_28790] -[group_28791] -[group_28792] -[group_28793] -[group_28794] -[group_28795] -[group_28796] -[group_28797] -[group_28798] -[group_28799] -[group_28800] -[group_28801] -[group_28802] -[group_28803] -[group_28804] -[group_28805] -[group_28806] -[group_28807] -[group_28808] -[group_28809] -[group_28810] -[group_28811] -[group_28812] -[group_28813] -[group_28814] -[group_28815] -[group_28816] -[group_28817] -[group_28818] -[group_28819] -[group_28820] -[group_28821] -[group_28822] -[group_28823] -[group_28824] -[group_28825] -[group_28826] -[group_28827] -[group_28828] -[group_28829] -[group_28830] -[group_28831] -[group_28832] -[group_28833] -[group_28834] -[group_28835] -[group_28836] -[group_28837] -[group_28838] -[group_28839] -[group_28840] -[group_28841] -[group_28842] -[group_28843] -[group_28844] -[group_28845] -[group_28846] -[group_28847] -[group_28848] -[group_28849] -[group_28850] -[group_28851] -[group_28852] -[group_28853] -[group_28854] -[group_28855] -[group_28856] -[group_28857] -[group_28858] -[group_28859] -[group_28860] -[group_28861] -[group_28862] -[group_28863] -[group_28864] -[group_28865] -[group_28866] -[group_28867] -[group_28868] -[group_28869] -[group_28870] -[group_28871] -[group_28872] -[group_28873] -[group_28874] -[group_28875] -[group_28876] -[group_28877] -[group_28878] -[group_28879] -[group_28880] -[group_28881] -[group_28882] -[group_28883] -[group_28884] -[group_28885] -[group_28886] -[group_28887] -[group_28888] -[group_28889] -[group_28890] -[group_28891] -[group_28892] -[group_28893] -[group_28894] -[group_28895] -[group_28896] -[group_28897] -[group_28898] -[group_28899] -[group_28900] -[group_28901] -[group_28902] -[group_28903] -[group_28904] -[group_28905] -[group_28906] -[group_28907] -[group_28908] -[group_28909] -[group_28910] -[group_28911] -[group_28912] -[group_28913] -[group_28914] -[group_28915] -[group_28916] -[group_28917] -[group_28918] -[group_28919] -[group_28920] -[group_28921] -[group_28922] -[group_28923] -[group_28924] -[group_28925] -[group_28926] -[group_28927] -[group_28928] -[group_28929] -[group_28930] -[group_28931] -[group_28932] -[group_28933] -[group_28934] -[group_28935] -[group_28936] -[group_28937] -[group_28938] -[group_28939] -[group_28940] -[group_28941] -[group_28942] -[group_28943] -[group_28944] -[group_28945] -[group_28946] -[group_28947] -[group_28948] -[group_28949] -[group_28950] -[group_28951] -[group_28952] -[group_28953] -[group_28954] -[group_28955] -[group_28956] -[group_28957] -[group_28958] -[group_28959] -[group_28960] -[group_28961] -[group_28962] -[group_28963] -[group_28964] -[group_28965] -[group_28966] -[group_28967] -[group_28968] -[group_28969] -[group_28970] -[group_28971] -[group_28972] -[group_28973] -[group_28974] -[group_28975] -[group_28976] -[group_28977] -[group_28978] -[group_28979] -[group_28980] -[group_28981] -[group_28982] -[group_28983] -[group_28984] -[group_28985] -[group_28986] -[group_28987] -[group_28988] -[group_28989] -[group_28990] -[group_28991] -[group_28992] -[group_28993] -[group_28994] -[group_28995] -[group_28996] -[group_28997] -[group_28998] -[group_28999] -[group_29000] -[group_29001] -[group_29002] -[group_29003] -[group_29004] -[group_29005] -[group_29006] -[group_29007] -[group_29008] -[group_29009] -[group_29010] -[group_29011] -[group_29012] -[group_29013] -[group_29014] -[group_29015] -[group_29016] -[group_29017] -[group_29018] -[group_29019] -[group_29020] -[group_29021] -[group_29022] -[group_29023] -[group_29024] -[group_29025] -[group_29026] -[group_29027] -[group_29028] -[group_29029] -[group_29030] -[group_29031] -[group_29032] -[group_29033] -[group_29034] -[group_29035] -[group_29036] -[group_29037] -[group_29038] -[group_29039] -[group_29040] -[group_29041] -[group_29042] -[group_29043] -[group_29044] -[group_29045] -[group_29046] -[group_29047] -[group_29048] -[group_29049] -[group_29050] -[group_29051] -[group_29052] -[group_29053] -[group_29054] -[group_29055] -[group_29056] -[group_29057] -[group_29058] -[group_29059] -[group_29060] -[group_29061] -[group_29062] -[group_29063] -[group_29064] -[group_29065] -[group_29066] -[group_29067] -[group_29068] -[group_29069] -[group_29070] -[group_29071] -[group_29072] -[group_29073] -[group_29074] -[group_29075] -[group_29076] -[group_29077] -[group_29078] -[group_29079] -[group_29080] -[group_29081] -[group_29082] -[group_29083] -[group_29084] -[group_29085] -[group_29086] -[group_29087] -[group_29088] -[group_29089] -[group_29090] -[group_29091] -[group_29092] -[group_29093] -[group_29094] -[group_29095] -[group_29096] -[group_29097] -[group_29098] -[group_29099] -[group_29100] -[group_29101] -[group_29102] -[group_29103] -[group_29104] -[group_29105] -[group_29106] -[group_29107] -[group_29108] -[group_29109] -[group_29110] -[group_29111] -[group_29112] -[group_29113] -[group_29114] -[group_29115] -[group_29116] -[group_29117] -[group_29118] -[group_29119] -[group_29120] -[group_29121] -[group_29122] -[group_29123] -[group_29124] -[group_29125] -[group_29126] -[group_29127] -[group_29128] -[group_29129] -[group_29130] -[group_29131] -[group_29132] -[group_29133] -[group_29134] -[group_29135] -[group_29136] -[group_29137] -[group_29138] -[group_29139] -[group_29140] -[group_29141] -[group_29142] -[group_29143] -[group_29144] -[group_29145] -[group_29146] -[group_29147] -[group_29148] -[group_29149] -[group_29150] -[group_29151] -[group_29152] -[group_29153] -[group_29154] -[group_29155] -[group_29156] -[group_29157] -[group_29158] -[group_29159] -[group_29160] -[group_29161] -[group_29162] -[group_29163] -[group_29164] -[group_29165] -[group_29166] -[group_29167] -[group_29168] -[group_29169] -[group_29170] -[group_29171] -[group_29172] -[group_29173] -[group_29174] -[group_29175] -[group_29176] -[group_29177] -[group_29178] -[group_29179] -[group_29180] -[group_29181] -[group_29182] -[group_29183] -[group_29184] -[group_29185] -[group_29186] -[group_29187] -[group_29188] -[group_29189] -[group_29190] -[group_29191] -[group_29192] -[group_29193] -[group_29194] -[group_29195] -[group_29196] -[group_29197] -[group_29198] -[group_29199] -[group_29200] -[group_29201] -[group_29202] -[group_29203] -[group_29204] -[group_29205] -[group_29206] -[group_29207] -[group_29208] -[group_29209] -[group_29210] -[group_29211] -[group_29212] -[group_29213] -[group_29214] -[group_29215] -[group_29216] -[group_29217] -[group_29218] -[group_29219] -[group_29220] -[group_29221] -[group_29222] -[group_29223] -[group_29224] -[group_29225] -[group_29226] -[group_29227] -[group_29228] -[group_29229] -[group_29230] -[group_29231] -[group_29232] -[group_29233] -[group_29234] -[group_29235] -[group_29236] -[group_29237] -[group_29238] -[group_29239] -[group_29240] -[group_29241] -[group_29242] -[group_29243] -[group_29244] -[group_29245] -[group_29246] -[group_29247] -[group_29248] -[group_29249] -[group_29250] -[group_29251] -[group_29252] -[group_29253] -[group_29254] -[group_29255] -[group_29256] -[group_29257] -[group_29258] -[group_29259] -[group_29260] -[group_29261] -[group_29262] -[group_29263] -[group_29264] -[group_29265] -[group_29266] -[group_29267] -[group_29268] -[group_29269] -[group_29270] -[group_29271] -[group_29272] -[group_29273] -[group_29274] -[group_29275] -[group_29276] -[group_29277] -[group_29278] -[group_29279] -[group_29280] -[group_29281] -[group_29282] -[group_29283] -[group_29284] -[group_29285] -[group_29286] -[group_29287] -[group_29288] -[group_29289] -[group_29290] -[group_29291] -[group_29292] -[group_29293] -[group_29294] -[group_29295] -[group_29296] -[group_29297] -[group_29298] -[group_29299] -[group_29300] -[group_29301] -[group_29302] -[group_29303] -[group_29304] -[group_29305] -[group_29306] -[group_29307] -[group_29308] -[group_29309] -[group_29310] -[group_29311] -[group_29312] -[group_29313] -[group_29314] -[group_29315] -[group_29316] -[group_29317] -[group_29318] -[group_29319] -[group_29320] -[group_29321] -[group_29322] -[group_29323] -[group_29324] -[group_29325] -[group_29326] -[group_29327] -[group_29328] -[group_29329] -[group_29330] -[group_29331] -[group_29332] -[group_29333] -[group_29334] -[group_29335] -[group_29336] -[group_29337] -[group_29338] -[group_29339] -[group_29340] -[group_29341] -[group_29342] -[group_29343] -[group_29344] -[group_29345] -[group_29346] -[group_29347] -[group_29348] -[group_29349] -[group_29350] -[group_29351] -[group_29352] -[group_29353] -[group_29354] -[group_29355] -[group_29356] -[group_29357] -[group_29358] -[group_29359] -[group_29360] -[group_29361] -[group_29362] -[group_29363] -[group_29364] -[group_29365] -[group_29366] -[group_29367] -[group_29368] -[group_29369] -[group_29370] -[group_29371] -[group_29372] -[group_29373] -[group_29374] -[group_29375] -[group_29376] -[group_29377] -[group_29378] -[group_29379] -[group_29380] -[group_29381] -[group_29382] -[group_29383] -[group_29384] -[group_29385] -[group_29386] -[group_29387] -[group_29388] -[group_29389] -[group_29390] -[group_29391] -[group_29392] -[group_29393] -[group_29394] -[group_29395] -[group_29396] -[group_29397] -[group_29398] -[group_29399] -[group_29400] -[group_29401] -[group_29402] -[group_29403] -[group_29404] -[group_29405] -[group_29406] -[group_29407] -[group_29408] -[group_29409] -[group_29410] -[group_29411] -[group_29412] -[group_29413] -[group_29414] -[group_29415] -[group_29416] -[group_29417] -[group_29418] -[group_29419] -[group_29420] -[group_29421] -[group_29422] -[group_29423] -[group_29424] -[group_29425] -[group_29426] -[group_29427] -[group_29428] -[group_29429] -[group_29430] -[group_29431] -[group_29432] -[group_29433] -[group_29434] -[group_29435] -[group_29436] -[group_29437] -[group_29438] -[group_29439] -[group_29440] -[group_29441] -[group_29442] -[group_29443] -[group_29444] -[group_29445] -[group_29446] -[group_29447] -[group_29448] -[group_29449] -[group_29450] -[group_29451] -[group_29452] -[group_29453] -[group_29454] -[group_29455] -[group_29456] -[group_29457] -[group_29458] -[group_29459] -[group_29460] -[group_29461] -[group_29462] -[group_29463] -[group_29464] -[group_29465] -[group_29466] -[group_29467] -[group_29468] -[group_29469] -[group_29470] -[group_29471] -[group_29472] -[group_29473] -[group_29474] -[group_29475] -[group_29476] -[group_29477] -[group_29478] -[group_29479] -[group_29480] -[group_29481] -[group_29482] -[group_29483] -[group_29484] -[group_29485] -[group_29486] -[group_29487] -[group_29488] -[group_29489] -[group_29490] -[group_29491] -[group_29492] -[group_29493] -[group_29494] -[group_29495] -[group_29496] -[group_29497] -[group_29498] -[group_29499] -[group_29500] -[group_29501] -[group_29502] -[group_29503] -[group_29504] -[group_29505] -[group_29506] -[group_29507] -[group_29508] -[group_29509] -[group_29510] -[group_29511] -[group_29512] -[group_29513] -[group_29514] -[group_29515] -[group_29516] -[group_29517] -[group_29518] -[group_29519] -[group_29520] -[group_29521] -[group_29522] -[group_29523] -[group_29524] -[group_29525] -[group_29526] -[group_29527] -[group_29528] -[group_29529] -[group_29530] -[group_29531] -[group_29532] -[group_29533] -[group_29534] -[group_29535] -[group_29536] -[group_29537] -[group_29538] -[group_29539] -[group_29540] -[group_29541] -[group_29542] -[group_29543] -[group_29544] -[group_29545] -[group_29546] -[group_29547] -[group_29548] -[group_29549] -[group_29550] -[group_29551] -[group_29552] -[group_29553] -[group_29554] -[group_29555] -[group_29556] -[group_29557] -[group_29558] -[group_29559] -[group_29560] -[group_29561] -[group_29562] -[group_29563] -[group_29564] -[group_29565] -[group_29566] -[group_29567] -[group_29568] -[group_29569] -[group_29570] -[group_29571] -[group_29572] -[group_29573] -[group_29574] -[group_29575] -[group_29576] -[group_29577] -[group_29578] -[group_29579] -[group_29580] -[group_29581] -[group_29582] -[group_29583] -[group_29584] -[group_29585] -[group_29586] -[group_29587] -[group_29588] -[group_29589] -[group_29590] -[group_29591] -[group_29592] -[group_29593] -[group_29594] -[group_29595] -[group_29596] -[group_29597] -[group_29598] -[group_29599] -[group_29600] -[group_29601] -[group_29602] -[group_29603] -[group_29604] -[group_29605] -[group_29606] -[group_29607] -[group_29608] -[group_29609] -[group_29610] -[group_29611] -[group_29612] -[group_29613] -[group_29614] -[group_29615] -[group_29616] -[group_29617] -[group_29618] -[group_29619] -[group_29620] -[group_29621] -[group_29622] -[group_29623] -[group_29624] -[group_29625] -[group_29626] -[group_29627] -[group_29628] -[group_29629] -[group_29630] -[group_29631] -[group_29632] -[group_29633] -[group_29634] -[group_29635] -[group_29636] -[group_29637] -[group_29638] -[group_29639] -[group_29640] -[group_29641] -[group_29642] -[group_29643] -[group_29644] -[group_29645] -[group_29646] -[group_29647] -[group_29648] -[group_29649] -[group_29650] -[group_29651] -[group_29652] -[group_29653] -[group_29654] -[group_29655] -[group_29656] -[group_29657] -[group_29658] -[group_29659] -[group_29660] -[group_29661] -[group_29662] -[group_29663] -[group_29664] -[group_29665] -[group_29666] -[group_29667] -[group_29668] -[group_29669] -[group_29670] -[group_29671] -[group_29672] -[group_29673] -[group_29674] -[group_29675] -[group_29676] -[group_29677] -[group_29678] -[group_29679] -[group_29680] -[group_29681] -[group_29682] -[group_29683] -[group_29684] -[group_29685] -[group_29686] -[group_29687] -[group_29688] -[group_29689] -[group_29690] -[group_29691] -[group_29692] -[group_29693] -[group_29694] -[group_29695] -[group_29696] -[group_29697] -[group_29698] -[group_29699] -[group_29700] -[group_29701] -[group_29702] -[group_29703] -[group_29704] -[group_29705] -[group_29706] -[group_29707] -[group_29708] -[group_29709] -[group_29710] -[group_29711] -[group_29712] -[group_29713] -[group_29714] -[group_29715] -[group_29716] -[group_29717] -[group_29718] -[group_29719] -[group_29720] -[group_29721] -[group_29722] -[group_29723] -[group_29724] -[group_29725] -[group_29726] -[group_29727] -[group_29728] -[group_29729] -[group_29730] -[group_29731] -[group_29732] -[group_29733] -[group_29734] -[group_29735] -[group_29736] -[group_29737] -[group_29738] -[group_29739] -[group_29740] -[group_29741] -[group_29742] -[group_29743] -[group_29744] -[group_29745] -[group_29746] -[group_29747] -[group_29748] -[group_29749] -[group_29750] -[group_29751] -[group_29752] -[group_29753] -[group_29754] -[group_29755] -[group_29756] -[group_29757] -[group_29758] -[group_29759] -[group_29760] -[group_29761] -[group_29762] -[group_29763] -[group_29764] -[group_29765] -[group_29766] -[group_29767] -[group_29768] -[group_29769] -[group_29770] -[group_29771] -[group_29772] -[group_29773] -[group_29774] -[group_29775] -[group_29776] -[group_29777] -[group_29778] -[group_29779] -[group_29780] -[group_29781] -[group_29782] -[group_29783] -[group_29784] -[group_29785] -[group_29786] -[group_29787] -[group_29788] -[group_29789] -[group_29790] -[group_29791] -[group_29792] -[group_29793] -[group_29794] -[group_29795] -[group_29796] -[group_29797] -[group_29798] -[group_29799] -[group_29800] -[group_29801] -[group_29802] -[group_29803] -[group_29804] -[group_29805] -[group_29806] -[group_29807] -[group_29808] -[group_29809] -[group_29810] -[group_29811] -[group_29812] -[group_29813] -[group_29814] -[group_29815] -[group_29816] -[group_29817] -[group_29818] -[group_29819] -[group_29820] -[group_29821] -[group_29822] -[group_29823] -[group_29824] -[group_29825] -[group_29826] -[group_29827] -[group_29828] -[group_29829] -[group_29830] -[group_29831] -[group_29832] -[group_29833] -[group_29834] -[group_29835] -[group_29836] -[group_29837] -[group_29838] -[group_29839] -[group_29840] -[group_29841] -[group_29842] -[group_29843] -[group_29844] -[group_29845] -[group_29846] -[group_29847] -[group_29848] -[group_29849] -[group_29850] -[group_29851] -[group_29852] -[group_29853] -[group_29854] -[group_29855] -[group_29856] -[group_29857] -[group_29858] -[group_29859] -[group_29860] -[group_29861] -[group_29862] -[group_29863] -[group_29864] -[group_29865] -[group_29866] -[group_29867] -[group_29868] -[group_29869] -[group_29870] -[group_29871] -[group_29872] -[group_29873] -[group_29874] -[group_29875] -[group_29876] -[group_29877] -[group_29878] -[group_29879] -[group_29880] -[group_29881] -[group_29882] -[group_29883] -[group_29884] -[group_29885] -[group_29886] -[group_29887] -[group_29888] -[group_29889] -[group_29890] -[group_29891] -[group_29892] -[group_29893] -[group_29894] -[group_29895] -[group_29896] -[group_29897] -[group_29898] -[group_29899] -[group_29900] -[group_29901] -[group_29902] -[group_29903] -[group_29904] -[group_29905] -[group_29906] -[group_29907] -[group_29908] -[group_29909] -[group_29910] -[group_29911] -[group_29912] -[group_29913] -[group_29914] -[group_29915] -[group_29916] -[group_29917] -[group_29918] -[group_29919] -[group_29920] -[group_29921] -[group_29922] -[group_29923] -[group_29924] -[group_29925] -[group_29926] -[group_29927] -[group_29928] -[group_29929] -[group_29930] -[group_29931] -[group_29932] -[group_29933] -[group_29934] -[group_29935] -[group_29936] -[group_29937] -[group_29938] -[group_29939] -[group_29940] -[group_29941] -[group_29942] -[group_29943] -[group_29944] -[group_29945] -[group_29946] -[group_29947] -[group_29948] -[group_29949] -[group_29950] -[group_29951] -[group_29952] -[group_29953] -[group_29954] -[group_29955] -[group_29956] -[group_29957] -[group_29958] -[group_29959] -[group_29960] -[group_29961] -[group_29962] -[group_29963] -[group_29964] -[group_29965] -[group_29966] -[group_29967] -[group_29968] -[group_29969] -[group_29970] -[group_29971] -[group_29972] -[group_29973] -[group_29974] -[group_29975] -[group_29976] -[group_29977] -[group_29978] -[group_29979] -[group_29980] -[group_29981] -[group_29982] -[group_29983] -[group_29984] -[group_29985] -[group_29986] -[group_29987] -[group_29988] -[group_29989] -[group_29990] -[group_29991] -[group_29992] -[group_29993] -[group_29994] -[group_29995] -[group_29996] -[group_29997] -[group_29998] -[group_29999] -[group_30000] -[group_30001] -[group_30002] -[group_30003] -[group_30004] -[group_30005] -[group_30006] -[group_30007] -[group_30008] -[group_30009] -[group_30010] -[group_30011] -[group_30012] -[group_30013] -[group_30014] -[group_30015] -[group_30016] -[group_30017] -[group_30018] -[group_30019] -[group_30020] -[group_30021] -[group_30022] -[group_30023] -[group_30024] -[group_30025] -[group_30026] -[group_30027] -[group_30028] -[group_30029] -[group_30030] -[group_30031] -[group_30032] -[group_30033] -[group_30034] -[group_30035] -[group_30036] -[group_30037] -[group_30038] -[group_30039] -[group_30040] -[group_30041] -[group_30042] -[group_30043] -[group_30044] -[group_30045] -[group_30046] -[group_30047] -[group_30048] -[group_30049] -[group_30050] -[group_30051] -[group_30052] -[group_30053] -[group_30054] -[group_30055] -[group_30056] -[group_30057] -[group_30058] -[group_30059] -[group_30060] -[group_30061] -[group_30062] -[group_30063] -[group_30064] -[group_30065] -[group_30066] -[group_30067] -[group_30068] -[group_30069] -[group_30070] -[group_30071] -[group_30072] -[group_30073] -[group_30074] -[group_30075] -[group_30076] -[group_30077] -[group_30078] -[group_30079] -[group_30080] -[group_30081] -[group_30082] -[group_30083] -[group_30084] -[group_30085] -[group_30086] -[group_30087] -[group_30088] -[group_30089] -[group_30090] -[group_30091] -[group_30092] -[group_30093] -[group_30094] -[group_30095] -[group_30096] -[group_30097] -[group_30098] -[group_30099] -[group_30100] -[group_30101] -[group_30102] -[group_30103] -[group_30104] -[group_30105] -[group_30106] -[group_30107] -[group_30108] -[group_30109] -[group_30110] -[group_30111] -[group_30112] -[group_30113] -[group_30114] -[group_30115] -[group_30116] -[group_30117] -[group_30118] -[group_30119] -[group_30120] -[group_30121] -[group_30122] -[group_30123] -[group_30124] -[group_30125] -[group_30126] -[group_30127] -[group_30128] -[group_30129] -[group_30130] -[group_30131] -[group_30132] -[group_30133] -[group_30134] -[group_30135] -[group_30136] -[group_30137] -[group_30138] -[group_30139] -[group_30140] -[group_30141] -[group_30142] -[group_30143] -[group_30144] -[group_30145] -[group_30146] -[group_30147] -[group_30148] -[group_30149] -[group_30150] -[group_30151] -[group_30152] -[group_30153] -[group_30154] -[group_30155] -[group_30156] -[group_30157] -[group_30158] -[group_30159] -[group_30160] -[group_30161] -[group_30162] -[group_30163] -[group_30164] -[group_30165] -[group_30166] -[group_30167] -[group_30168] -[group_30169] -[group_30170] -[group_30171] -[group_30172] -[group_30173] -[group_30174] -[group_30175] -[group_30176] -[group_30177] -[group_30178] -[group_30179] -[group_30180] -[group_30181] -[group_30182] -[group_30183] -[group_30184] -[group_30185] -[group_30186] -[group_30187] -[group_30188] -[group_30189] -[group_30190] -[group_30191] -[group_30192] -[group_30193] -[group_30194] -[group_30195] -[group_30196] -[group_30197] -[group_30198] -[group_30199] -[group_30200] -[group_30201] -[group_30202] -[group_30203] -[group_30204] -[group_30205] -[group_30206] -[group_30207] -[group_30208] -[group_30209] -[group_30210] -[group_30211] -[group_30212] -[group_30213] -[group_30214] -[group_30215] -[group_30216] -[group_30217] -[group_30218] -[group_30219] -[group_30220] -[group_30221] -[group_30222] -[group_30223] -[group_30224] -[group_30225] -[group_30226] -[group_30227] -[group_30228] -[group_30229] -[group_30230] -[group_30231] -[group_30232] -[group_30233] -[group_30234] -[group_30235] -[group_30236] -[group_30237] -[group_30238] -[group_30239] -[group_30240] -[group_30241] -[group_30242] -[group_30243] -[group_30244] -[group_30245] -[group_30246] -[group_30247] -[group_30248] -[group_30249] -[group_30250] -[group_30251] -[group_30252] -[group_30253] -[group_30254] -[group_30255] -[group_30256] -[group_30257] -[group_30258] -[group_30259] -[group_30260] -[group_30261] -[group_30262] -[group_30263] -[group_30264] -[group_30265] -[group_30266] -[group_30267] -[group_30268] -[group_30269] -[group_30270] -[group_30271] -[group_30272] -[group_30273] -[group_30274] -[group_30275] -[group_30276] -[group_30277] -[group_30278] -[group_30279] -[group_30280] -[group_30281] -[group_30282] -[group_30283] -[group_30284] -[group_30285] -[group_30286] -[group_30287] -[group_30288] -[group_30289] -[group_30290] -[group_30291] -[group_30292] -[group_30293] -[group_30294] -[group_30295] -[group_30296] -[group_30297] -[group_30298] -[group_30299] -[group_30300] -[group_30301] -[group_30302] -[group_30303] -[group_30304] -[group_30305] -[group_30306] -[group_30307] -[group_30308] -[group_30309] -[group_30310] -[group_30311] -[group_30312] -[group_30313] -[group_30314] -[group_30315] -[group_30316] -[group_30317] -[group_30318] -[group_30319] -[group_30320] -[group_30321] -[group_30322] -[group_30323] -[group_30324] -[group_30325] -[group_30326] -[group_30327] -[group_30328] -[group_30329] -[group_30330] -[group_30331] -[group_30332] -[group_30333] -[group_30334] -[group_30335] -[group_30336] -[group_30337] -[group_30338] -[group_30339] -[group_30340] -[group_30341] -[group_30342] -[group_30343] -[group_30344] -[group_30345] -[group_30346] -[group_30347] -[group_30348] -[group_30349] -[group_30350] -[group_30351] -[group_30352] -[group_30353] -[group_30354] -[group_30355] -[group_30356] -[group_30357] -[group_30358] -[group_30359] -[group_30360] -[group_30361] -[group_30362] -[group_30363] -[group_30364] -[group_30365] -[group_30366] -[group_30367] -[group_30368] -[group_30369] -[group_30370] -[group_30371] -[group_30372] -[group_30373] -[group_30374] -[group_30375] -[group_30376] -[group_30377] -[group_30378] -[group_30379] -[group_30380] -[group_30381] -[group_30382] -[group_30383] -[group_30384] -[group_30385] -[group_30386] -[group_30387] -[group_30388] -[group_30389] -[group_30390] -[group_30391] -[group_30392] -[group_30393] -[group_30394] -[group_30395] -[group_30396] -[group_30397] -[group_30398] -[group_30399] -[group_30400] -[group_30401] -[group_30402] -[group_30403] -[group_30404] -[group_30405] -[group_30406] -[group_30407] -[group_30408] -[group_30409] -[group_30410] -[group_30411] -[group_30412] -[group_30413] -[group_30414] -[group_30415] -[group_30416] -[group_30417] -[group_30418] -[group_30419] -[group_30420] -[group_30421] -[group_30422] -[group_30423] -[group_30424] -[group_30425] -[group_30426] -[group_30427] -[group_30428] -[group_30429] -[group_30430] -[group_30431] -[group_30432] -[group_30433] -[group_30434] -[group_30435] -[group_30436] -[group_30437] -[group_30438] -[group_30439] -[group_30440] -[group_30441] -[group_30442] -[group_30443] -[group_30444] -[group_30445] -[group_30446] -[group_30447] -[group_30448] -[group_30449] -[group_30450] -[group_30451] -[group_30452] -[group_30453] -[group_30454] -[group_30455] -[group_30456] -[group_30457] -[group_30458] -[group_30459] -[group_30460] -[group_30461] -[group_30462] -[group_30463] -[group_30464] -[group_30465] -[group_30466] -[group_30467] -[group_30468] -[group_30469] -[group_30470] -[group_30471] -[group_30472] -[group_30473] -[group_30474] -[group_30475] -[group_30476] -[group_30477] -[group_30478] -[group_30479] -[group_30480] -[group_30481] -[group_30482] -[group_30483] -[group_30484] -[group_30485] -[group_30486] -[group_30487] -[group_30488] -[group_30489] -[group_30490] -[group_30491] -[group_30492] -[group_30493] -[group_30494] -[group_30495] -[group_30496] -[group_30497] -[group_30498] -[group_30499] -[group_30500] -[group_30501] -[group_30502] -[group_30503] -[group_30504] -[group_30505] -[group_30506] -[group_30507] -[group_30508] -[group_30509] -[group_30510] -[group_30511] -[group_30512] -[group_30513] -[group_30514] -[group_30515] -[group_30516] -[group_30517] -[group_30518] -[group_30519] -[group_30520] -[group_30521] -[group_30522] -[group_30523] -[group_30524] -[group_30525] -[group_30526] -[group_30527] -[group_30528] -[group_30529] -[group_30530] -[group_30531] -[group_30532] -[group_30533] -[group_30534] -[group_30535] -[group_30536] -[group_30537] -[group_30538] -[group_30539] -[group_30540] -[group_30541] -[group_30542] -[group_30543] -[group_30544] -[group_30545] -[group_30546] -[group_30547] -[group_30548] -[group_30549] -[group_30550] -[group_30551] -[group_30552] -[group_30553] -[group_30554] -[group_30555] -[group_30556] -[group_30557] -[group_30558] -[group_30559] -[group_30560] -[group_30561] -[group_30562] -[group_30563] -[group_30564] -[group_30565] -[group_30566] -[group_30567] -[group_30568] -[group_30569] -[group_30570] -[group_30571] -[group_30572] -[group_30573] -[group_30574] -[group_30575] -[group_30576] -[group_30577] -[group_30578] -[group_30579] -[group_30580] -[group_30581] -[group_30582] -[group_30583] -[group_30584] -[group_30585] -[group_30586] -[group_30587] -[group_30588] -[group_30589] -[group_30590] -[group_30591] -[group_30592] -[group_30593] -[group_30594] -[group_30595] -[group_30596] -[group_30597] -[group_30598] -[group_30599] -[group_30600] -[group_30601] -[group_30602] -[group_30603] -[group_30604] -[group_30605] -[group_30606] -[group_30607] -[group_30608] -[group_30609] -[group_30610] -[group_30611] -[group_30612] -[group_30613] -[group_30614] -[group_30615] -[group_30616] -[group_30617] -[group_30618] -[group_30619] -[group_30620] -[group_30621] -[group_30622] -[group_30623] -[group_30624] -[group_30625] -[group_30626] -[group_30627] -[group_30628] -[group_30629] -[group_30630] -[group_30631] -[group_30632] -[group_30633] -[group_30634] -[group_30635] -[group_30636] -[group_30637] -[group_30638] -[group_30639] -[group_30640] -[group_30641] -[group_30642] -[group_30643] -[group_30644] -[group_30645] -[group_30646] -[group_30647] -[group_30648] -[group_30649] -[group_30650] -[group_30651] -[group_30652] -[group_30653] -[group_30654] -[group_30655] -[group_30656] -[group_30657] -[group_30658] -[group_30659] -[group_30660] -[group_30661] -[group_30662] -[group_30663] -[group_30664] -[group_30665] -[group_30666] -[group_30667] -[group_30668] -[group_30669] -[group_30670] -[group_30671] -[group_30672] -[group_30673] -[group_30674] -[group_30675] -[group_30676] -[group_30677] -[group_30678] -[group_30679] -[group_30680] -[group_30681] -[group_30682] -[group_30683] -[group_30684] -[group_30685] -[group_30686] -[group_30687] -[group_30688] -[group_30689] -[group_30690] -[group_30691] -[group_30692] -[group_30693] -[group_30694] -[group_30695] -[group_30696] -[group_30697] -[group_30698] -[group_30699] -[group_30700] -[group_30701] -[group_30702] -[group_30703] -[group_30704] -[group_30705] -[group_30706] -[group_30707] -[group_30708] -[group_30709] -[group_30710] -[group_30711] -[group_30712] -[group_30713] -[group_30714] -[group_30715] -[group_30716] -[group_30717] -[group_30718] -[group_30719] -[group_30720] -[group_30721] -[group_30722] -[group_30723] -[group_30724] -[group_30725] -[group_30726] -[group_30727] -[group_30728] -[group_30729] -[group_30730] -[group_30731] -[group_30732] -[group_30733] -[group_30734] -[group_30735] -[group_30736] -[group_30737] -[group_30738] -[group_30739] -[group_30740] -[group_30741] -[group_30742] -[group_30743] -[group_30744] -[group_30745] -[group_30746] -[group_30747] -[group_30748] -[group_30749] -[group_30750] -[group_30751] -[group_30752] -[group_30753] -[group_30754] -[group_30755] -[group_30756] -[group_30757] -[group_30758] -[group_30759] -[group_30760] -[group_30761] -[group_30762] -[group_30763] -[group_30764] -[group_30765] -[group_30766] -[group_30767] -[group_30768] -[group_30769] -[group_30770] -[group_30771] -[group_30772] -[group_30773] -[group_30774] -[group_30775] -[group_30776] -[group_30777] -[group_30778] -[group_30779] -[group_30780] -[group_30781] -[group_30782] -[group_30783] -[group_30784] -[group_30785] -[group_30786] -[group_30787] -[group_30788] -[group_30789] -[group_30790] -[group_30791] -[group_30792] -[group_30793] -[group_30794] -[group_30795] -[group_30796] -[group_30797] -[group_30798] -[group_30799] -[group_30800] -[group_30801] -[group_30802] -[group_30803] -[group_30804] -[group_30805] -[group_30806] -[group_30807] -[group_30808] -[group_30809] -[group_30810] -[group_30811] -[group_30812] -[group_30813] -[group_30814] -[group_30815] -[group_30816] -[group_30817] -[group_30818] -[group_30819] -[group_30820] -[group_30821] -[group_30822] -[group_30823] -[group_30824] -[group_30825] -[group_30826] -[group_30827] -[group_30828] -[group_30829] -[group_30830] -[group_30831] -[group_30832] -[group_30833] -[group_30834] -[group_30835] -[group_30836] -[group_30837] -[group_30838] -[group_30839] -[group_30840] -[group_30841] -[group_30842] -[group_30843] -[group_30844] -[group_30845] -[group_30846] -[group_30847] -[group_30848] -[group_30849] -[group_30850] -[group_30851] -[group_30852] -[group_30853] -[group_30854] -[group_30855] -[group_30856] -[group_30857] -[group_30858] -[group_30859] -[group_30860] -[group_30861] -[group_30862] -[group_30863] -[group_30864] -[group_30865] -[group_30866] -[group_30867] -[group_30868] -[group_30869] -[group_30870] -[group_30871] -[group_30872] -[group_30873] -[group_30874] -[group_30875] -[group_30876] -[group_30877] -[group_30878] -[group_30879] -[group_30880] -[group_30881] -[group_30882] -[group_30883] -[group_30884] -[group_30885] -[group_30886] -[group_30887] -[group_30888] -[group_30889] -[group_30890] -[group_30891] -[group_30892] -[group_30893] -[group_30894] -[group_30895] -[group_30896] -[group_30897] -[group_30898] -[group_30899] -[group_30900] -[group_30901] -[group_30902] -[group_30903] -[group_30904] -[group_30905] -[group_30906] -[group_30907] -[group_30908] -[group_30909] -[group_30910] -[group_30911] -[group_30912] -[group_30913] -[group_30914] -[group_30915] -[group_30916] -[group_30917] -[group_30918] -[group_30919] -[group_30920] -[group_30921] -[group_30922] -[group_30923] -[group_30924] -[group_30925] -[group_30926] -[group_30927] -[group_30928] -[group_30929] -[group_30930] -[group_30931] -[group_30932] -[group_30933] -[group_30934] -[group_30935] -[group_30936] -[group_30937] -[group_30938] -[group_30939] -[group_30940] -[group_30941] -[group_30942] -[group_30943] -[group_30944] -[group_30945] -[group_30946] -[group_30947] -[group_30948] -[group_30949] -[group_30950] -[group_30951] -[group_30952] -[group_30953] -[group_30954] -[group_30955] -[group_30956] -[group_30957] -[group_30958] -[group_30959] -[group_30960] -[group_30961] -[group_30962] -[group_30963] -[group_30964] -[group_30965] -[group_30966] -[group_30967] -[group_30968] -[group_30969] -[group_30970] -[group_30971] -[group_30972] -[group_30973] -[group_30974] -[group_30975] -[group_30976] -[group_30977] -[group_30978] -[group_30979] -[group_30980] -[group_30981] -[group_30982] -[group_30983] -[group_30984] -[group_30985] -[group_30986] -[group_30987] -[group_30988] -[group_30989] -[group_30990] -[group_30991] -[group_30992] -[group_30993] -[group_30994] -[group_30995] -[group_30996] -[group_30997] -[group_30998] -[group_30999] -[group_31000] -[group_31001] -[group_31002] -[group_31003] -[group_31004] -[group_31005] -[group_31006] -[group_31007] -[group_31008] -[group_31009] -[group_31010] -[group_31011] -[group_31012] -[group_31013] -[group_31014] -[group_31015] -[group_31016] -[group_31017] -[group_31018] -[group_31019] -[group_31020] -[group_31021] -[group_31022] -[group_31023] -[group_31024] -[group_31025] -[group_31026] -[group_31027] -[group_31028] -[group_31029] -[group_31030] -[group_31031] -[group_31032] -[group_31033] -[group_31034] -[group_31035] -[group_31036] -[group_31037] -[group_31038] -[group_31039] -[group_31040] -[group_31041] -[group_31042] -[group_31043] -[group_31044] -[group_31045] -[group_31046] -[group_31047] -[group_31048] -[group_31049] -[group_31050] -[group_31051] -[group_31052] -[group_31053] -[group_31054] -[group_31055] -[group_31056] -[group_31057] -[group_31058] -[group_31059] -[group_31060] -[group_31061] -[group_31062] -[group_31063] -[group_31064] -[group_31065] -[group_31066] -[group_31067] -[group_31068] -[group_31069] -[group_31070] -[group_31071] -[group_31072] -[group_31073] -[group_31074] -[group_31075] -[group_31076] -[group_31077] -[group_31078] -[group_31079] -[group_31080] -[group_31081] -[group_31082] -[group_31083] -[group_31084] -[group_31085] -[group_31086] -[group_31087] -[group_31088] -[group_31089] -[group_31090] -[group_31091] -[group_31092] -[group_31093] -[group_31094] -[group_31095] -[group_31096] -[group_31097] -[group_31098] -[group_31099] -[group_31100] -[group_31101] -[group_31102] -[group_31103] -[group_31104] -[group_31105] -[group_31106] -[group_31107] -[group_31108] -[group_31109] -[group_31110] -[group_31111] -[group_31112] -[group_31113] -[group_31114] -[group_31115] -[group_31116] -[group_31117] -[group_31118] -[group_31119] -[group_31120] -[group_31121] -[group_31122] -[group_31123] -[group_31124] -[group_31125] -[group_31126] -[group_31127] -[group_31128] -[group_31129] -[group_31130] -[group_31131] -[group_31132] -[group_31133] -[group_31134] -[group_31135] -[group_31136] -[group_31137] -[group_31138] -[group_31139] -[group_31140] -[group_31141] -[group_31142] -[group_31143] -[group_31144] -[group_31145] -[group_31146] -[group_31147] -[group_31148] -[group_31149] -[group_31150] -[group_31151] -[group_31152] -[group_31153] -[group_31154] -[group_31155] -[group_31156] -[group_31157] -[group_31158] -[group_31159] -[group_31160] -[group_31161] -[group_31162] -[group_31163] -[group_31164] -[group_31165] -[group_31166] -[group_31167] -[group_31168] -[group_31169] -[group_31170] -[group_31171] -[group_31172] -[group_31173] -[group_31174] -[group_31175] -[group_31176] -[group_31177] -[group_31178] -[group_31179] -[group_31180] -[group_31181] -[group_31182] -[group_31183] -[group_31184] -[group_31185] -[group_31186] -[group_31187] -[group_31188] -[group_31189] -[group_31190] -[group_31191] -[group_31192] -[group_31193] -[group_31194] -[group_31195] -[group_31196] -[group_31197] -[group_31198] -[group_31199] -[group_31200] -[group_31201] -[group_31202] -[group_31203] -[group_31204] -[group_31205] -[group_31206] -[group_31207] -[group_31208] -[group_31209] -[group_31210] -[group_31211] -[group_31212] -[group_31213] -[group_31214] -[group_31215] -[group_31216] -[group_31217] -[group_31218] -[group_31219] -[group_31220] -[group_31221] -[group_31222] -[group_31223] -[group_31224] -[group_31225] -[group_31226] -[group_31227] -[group_31228] -[group_31229] -[group_31230] -[group_31231] -[group_31232] -[group_31233] -[group_31234] -[group_31235] -[group_31236] -[group_31237] -[group_31238] -[group_31239] -[group_31240] -[group_31241] -[group_31242] -[group_31243] -[group_31244] -[group_31245] -[group_31246] -[group_31247] -[group_31248] -[group_31249] -[group_31250] -[group_31251] -[group_31252] -[group_31253] -[group_31254] -[group_31255] -[group_31256] -[group_31257] -[group_31258] -[group_31259] -[group_31260] -[group_31261] -[group_31262] -[group_31263] -[group_31264] -[group_31265] -[group_31266] -[group_31267] -[group_31268] -[group_31269] -[group_31270] -[group_31271] -[group_31272] -[group_31273] -[group_31274] -[group_31275] -[group_31276] -[group_31277] -[group_31278] -[group_31279] -[group_31280] -[group_31281] -[group_31282] -[group_31283] -[group_31284] -[group_31285] -[group_31286] -[group_31287] -[group_31288] -[group_31289] -[group_31290] -[group_31291] -[group_31292] -[group_31293] -[group_31294] -[group_31295] -[group_31296] -[group_31297] -[group_31298] -[group_31299] -[group_31300] -[group_31301] -[group_31302] -[group_31303] -[group_31304] -[group_31305] -[group_31306] -[group_31307] -[group_31308] -[group_31309] -[group_31310] -[group_31311] -[group_31312] -[group_31313] -[group_31314] -[group_31315] -[group_31316] -[group_31317] -[group_31318] -[group_31319] -[group_31320] -[group_31321] -[group_31322] -[group_31323] -[group_31324] -[group_31325] -[group_31326] -[group_31327] -[group_31328] -[group_31329] -[group_31330] -[group_31331] -[group_31332] -[group_31333] -[group_31334] -[group_31335] -[group_31336] -[group_31337] -[group_31338] -[group_31339] -[group_31340] -[group_31341] -[group_31342] -[group_31343] -[group_31344] -[group_31345] -[group_31346] -[group_31347] -[group_31348] -[group_31349] -[group_31350] -[group_31351] -[group_31352] -[group_31353] -[group_31354] -[group_31355] -[group_31356] -[group_31357] -[group_31358] -[group_31359] -[group_31360] -[group_31361] -[group_31362] -[group_31363] -[group_31364] -[group_31365] -[group_31366] -[group_31367] -[group_31368] -[group_31369] -[group_31370] -[group_31371] -[group_31372] -[group_31373] -[group_31374] -[group_31375] -[group_31376] -[group_31377] -[group_31378] -[group_31379] -[group_31380] -[group_31381] -[group_31382] -[group_31383] -[group_31384] -[group_31385] -[group_31386] -[group_31387] -[group_31388] -[group_31389] -[group_31390] -[group_31391] -[group_31392] -[group_31393] -[group_31394] -[group_31395] -[group_31396] -[group_31397] -[group_31398] -[group_31399] -[group_31400] -[group_31401] -[group_31402] -[group_31403] -[group_31404] -[group_31405] -[group_31406] -[group_31407] -[group_31408] -[group_31409] -[group_31410] -[group_31411] -[group_31412] -[group_31413] -[group_31414] -[group_31415] -[group_31416] -[group_31417] -[group_31418] -[group_31419] -[group_31420] -[group_31421] -[group_31422] -[group_31423] -[group_31424] -[group_31425] -[group_31426] -[group_31427] -[group_31428] -[group_31429] -[group_31430] -[group_31431] -[group_31432] -[group_31433] -[group_31434] -[group_31435] -[group_31436] -[group_31437] -[group_31438] -[group_31439] -[group_31440] -[group_31441] -[group_31442] -[group_31443] -[group_31444] -[group_31445] -[group_31446] -[group_31447] -[group_31448] -[group_31449] -[group_31450] -[group_31451] -[group_31452] -[group_31453] -[group_31454] -[group_31455] -[group_31456] -[group_31457] -[group_31458] -[group_31459] -[group_31460] -[group_31461] -[group_31462] -[group_31463] -[group_31464] -[group_31465] -[group_31466] -[group_31467] -[group_31468] -[group_31469] -[group_31470] -[group_31471] -[group_31472] -[group_31473] -[group_31474] -[group_31475] -[group_31476] -[group_31477] -[group_31478] -[group_31479] -[group_31480] -[group_31481] -[group_31482] -[group_31483] -[group_31484] -[group_31485] -[group_31486] -[group_31487] -[group_31488] -[group_31489] -[group_31490] -[group_31491] -[group_31492] -[group_31493] -[group_31494] -[group_31495] -[group_31496] -[group_31497] -[group_31498] -[group_31499] -[group_31500] -[group_31501] -[group_31502] -[group_31503] -[group_31504] -[group_31505] -[group_31506] -[group_31507] -[group_31508] -[group_31509] -[group_31510] -[group_31511] -[group_31512] -[group_31513] -[group_31514] -[group_31515] -[group_31516] -[group_31517] -[group_31518] -[group_31519] -[group_31520] -[group_31521] -[group_31522] -[group_31523] -[group_31524] -[group_31525] -[group_31526] -[group_31527] -[group_31528] -[group_31529] -[group_31530] -[group_31531] -[group_31532] -[group_31533] -[group_31534] -[group_31535] -[group_31536] -[group_31537] -[group_31538] -[group_31539] -[group_31540] -[group_31541] -[group_31542] -[group_31543] -[group_31544] -[group_31545] -[group_31546] -[group_31547] -[group_31548] -[group_31549] -[group_31550] -[group_31551] -[group_31552] -[group_31553] -[group_31554] -[group_31555] -[group_31556] -[group_31557] -[group_31558] -[group_31559] -[group_31560] -[group_31561] -[group_31562] -[group_31563] -[group_31564] -[group_31565] -[group_31566] -[group_31567] -[group_31568] -[group_31569] -[group_31570] -[group_31571] -[group_31572] -[group_31573] -[group_31574] -[group_31575] -[group_31576] -[group_31577] -[group_31578] -[group_31579] -[group_31580] -[group_31581] -[group_31582] -[group_31583] -[group_31584] -[group_31585] -[group_31586] -[group_31587] -[group_31588] -[group_31589] -[group_31590] -[group_31591] -[group_31592] -[group_31593] -[group_31594] -[group_31595] -[group_31596] -[group_31597] -[group_31598] -[group_31599] -[group_31600] -[group_31601] -[group_31602] -[group_31603] -[group_31604] -[group_31605] -[group_31606] -[group_31607] -[group_31608] -[group_31609] -[group_31610] -[group_31611] -[group_31612] -[group_31613] -[group_31614] -[group_31615] -[group_31616] -[group_31617] -[group_31618] -[group_31619] -[group_31620] -[group_31621] -[group_31622] -[group_31623] -[group_31624] -[group_31625] -[group_31626] -[group_31627] -[group_31628] -[group_31629] -[group_31630] -[group_31631] -[group_31632] -[group_31633] -[group_31634] -[group_31635] -[group_31636] -[group_31637] -[group_31638] -[group_31639] -[group_31640] -[group_31641] -[group_31642] -[group_31643] -[group_31644] -[group_31645] -[group_31646] -[group_31647] -[group_31648] -[group_31649] -[group_31650] -[group_31651] -[group_31652] -[group_31653] -[group_31654] -[group_31655] -[group_31656] -[group_31657] -[group_31658] -[group_31659] -[group_31660] -[group_31661] -[group_31662] -[group_31663] -[group_31664] -[group_31665] -[group_31666] -[group_31667] -[group_31668] -[group_31669] -[group_31670] -[group_31671] -[group_31672] -[group_31673] -[group_31674] -[group_31675] -[group_31676] -[group_31677] -[group_31678] -[group_31679] -[group_31680] -[group_31681] -[group_31682] -[group_31683] -[group_31684] -[group_31685] -[group_31686] -[group_31687] -[group_31688] -[group_31689] -[group_31690] -[group_31691] -[group_31692] -[group_31693] -[group_31694] -[group_31695] -[group_31696] -[group_31697] -[group_31698] -[group_31699] -[group_31700] -[group_31701] -[group_31702] -[group_31703] -[group_31704] -[group_31705] -[group_31706] -[group_31707] -[group_31708] -[group_31709] -[group_31710] -[group_31711] -[group_31712] -[group_31713] -[group_31714] -[group_31715] -[group_31716] -[group_31717] -[group_31718] -[group_31719] -[group_31720] -[group_31721] -[group_31722] -[group_31723] -[group_31724] -[group_31725] -[group_31726] -[group_31727] -[group_31728] -[group_31729] -[group_31730] -[group_31731] -[group_31732] -[group_31733] -[group_31734] -[group_31735] -[group_31736] -[group_31737] -[group_31738] -[group_31739] -[group_31740] -[group_31741] -[group_31742] -[group_31743] -[group_31744] -[group_31745] -[group_31746] -[group_31747] -[group_31748] -[group_31749] -[group_31750] -[group_31751] -[group_31752] -[group_31753] -[group_31754] -[group_31755] -[group_31756] -[group_31757] -[group_31758] -[group_31759] -[group_31760] -[group_31761] -[group_31762] -[group_31763] -[group_31764] -[group_31765] -[group_31766] -[group_31767] -[group_31768] -[group_31769] -[group_31770] -[group_31771] -[group_31772] -[group_31773] -[group_31774] -[group_31775] -[group_31776] -[group_31777] -[group_31778] -[group_31779] -[group_31780] -[group_31781] -[group_31782] -[group_31783] -[group_31784] -[group_31785] -[group_31786] -[group_31787] -[group_31788] -[group_31789] -[group_31790] -[group_31791] -[group_31792] -[group_31793] -[group_31794] -[group_31795] -[group_31796] -[group_31797] -[group_31798] -[group_31799] -[group_31800] -[group_31801] -[group_31802] -[group_31803] -[group_31804] -[group_31805] -[group_31806] -[group_31807] -[group_31808] -[group_31809] -[group_31810] -[group_31811] -[group_31812] -[group_31813] -[group_31814] -[group_31815] -[group_31816] -[group_31817] -[group_31818] -[group_31819] -[group_31820] -[group_31821] -[group_31822] -[group_31823] -[group_31824] -[group_31825] -[group_31826] -[group_31827] -[group_31828] -[group_31829] -[group_31830] -[group_31831] -[group_31832] -[group_31833] -[group_31834] -[group_31835] -[group_31836] -[group_31837] -[group_31838] -[group_31839] -[group_31840] -[group_31841] -[group_31842] -[group_31843] -[group_31844] -[group_31845] -[group_31846] -[group_31847] -[group_31848] -[group_31849] -[group_31850] -[group_31851] -[group_31852] -[group_31853] -[group_31854] -[group_31855] -[group_31856] -[group_31857] -[group_31858] -[group_31859] -[group_31860] -[group_31861] -[group_31862] -[group_31863] -[group_31864] -[group_31865] -[group_31866] -[group_31867] -[group_31868] -[group_31869] -[group_31870] -[group_31871] -[group_31872] -[group_31873] -[group_31874] -[group_31875] -[group_31876] -[group_31877] -[group_31878] -[group_31879] -[group_31880] -[group_31881] -[group_31882] -[group_31883] -[group_31884] -[group_31885] -[group_31886] -[group_31887] -[group_31888] -[group_31889] -[group_31890] -[group_31891] -[group_31892] -[group_31893] -[group_31894] -[group_31895] -[group_31896] -[group_31897] -[group_31898] -[group_31899] -[group_31900] -[group_31901] -[group_31902] -[group_31903] -[group_31904] -[group_31905] -[group_31906] -[group_31907] -[group_31908] -[group_31909] -[group_31910] -[group_31911] -[group_31912] -[group_31913] -[group_31914] -[group_31915] -[group_31916] -[group_31917] -[group_31918] -[group_31919] -[group_31920] -[group_31921] -[group_31922] -[group_31923] -[group_31924] -[group_31925] -[group_31926] -[group_31927] -[group_31928] -[group_31929] -[group_31930] -[group_31931] -[group_31932] -[group_31933] -[group_31934] -[group_31935] -[group_31936] -[group_31937] -[group_31938] -[group_31939] -[group_31940] -[group_31941] -[group_31942] -[group_31943] -[group_31944] -[group_31945] -[group_31946] -[group_31947] -[group_31948] -[group_31949] -[group_31950] -[group_31951] -[group_31952] -[group_31953] -[group_31954] -[group_31955] -[group_31956] -[group_31957] -[group_31958] -[group_31959] -[group_31960] -[group_31961] -[group_31962] -[group_31963] -[group_31964] -[group_31965] -[group_31966] -[group_31967] -[group_31968] -[group_31969] -[group_31970] -[group_31971] -[group_31972] -[group_31973] -[group_31974] -[group_31975] -[group_31976] -[group_31977] -[group_31978] -[group_31979] -[group_31980] -[group_31981] -[group_31982] -[group_31983] -[group_31984] -[group_31985] -[group_31986] -[group_31987] -[group_31988] -[group_31989] -[group_31990] -[group_31991] -[group_31992] -[group_31993] -[group_31994] -[group_31995] -[group_31996] -[group_31997] -[group_31998] -[group_31999] -[group_32000] -[group_32001] -[group_32002] -[group_32003] -[group_32004] -[group_32005] -[group_32006] -[group_32007] -[group_32008] -[group_32009] -[group_32010] -[group_32011] -[group_32012] -[group_32013] -[group_32014] -[group_32015] -[group_32016] -[group_32017] -[group_32018] -[group_32019] -[group_32020] -[group_32021] -[group_32022] -[group_32023] -[group_32024] -[group_32025] -[group_32026] -[group_32027] -[group_32028] -[group_32029] -[group_32030] -[group_32031] -[group_32032] -[group_32033] -[group_32034] -[group_32035] -[group_32036] -[group_32037] -[group_32038] -[group_32039] -[group_32040] -[group_32041] -[group_32042] -[group_32043] -[group_32044] -[group_32045] -[group_32046] -[group_32047] -[group_32048] -[group_32049] -[group_32050] -[group_32051] -[group_32052] -[group_32053] -[group_32054] -[group_32055] -[group_32056] -[group_32057] -[group_32058] -[group_32059] -[group_32060] -[group_32061] -[group_32062] -[group_32063] -[group_32064] -[group_32065] -[group_32066] -[group_32067] -[group_32068] -[group_32069] -[group_32070] -[group_32071] -[group_32072] -[group_32073] -[group_32074] -[group_32075] -[group_32076] -[group_32077] -[group_32078] -[group_32079] -[group_32080] -[group_32081] -[group_32082] -[group_32083] -[group_32084] -[group_32085] -[group_32086] -[group_32087] -[group_32088] -[group_32089] -[group_32090] -[group_32091] -[group_32092] -[group_32093] -[group_32094] -[group_32095] -[group_32096] -[group_32097] -[group_32098] -[group_32099] -[group_32100] -[group_32101] -[group_32102] -[group_32103] -[group_32104] -[group_32105] -[group_32106] -[group_32107] -[group_32108] -[group_32109] -[group_32110] -[group_32111] -[group_32112] -[group_32113] -[group_32114] -[group_32115] -[group_32116] -[group_32117] -[group_32118] -[group_32119] -[group_32120] -[group_32121] -[group_32122] -[group_32123] -[group_32124] -[group_32125] -[group_32126] -[group_32127] -[group_32128] -[group_32129] -[group_32130] -[group_32131] -[group_32132] -[group_32133] -[group_32134] -[group_32135] -[group_32136] -[group_32137] -[group_32138] -[group_32139] -[group_32140] -[group_32141] -[group_32142] -[group_32143] -[group_32144] -[group_32145] -[group_32146] -[group_32147] -[group_32148] -[group_32149] -[group_32150] -[group_32151] -[group_32152] -[group_32153] -[group_32154] -[group_32155] -[group_32156] -[group_32157] -[group_32158] -[group_32159] -[group_32160] -[group_32161] -[group_32162] -[group_32163] -[group_32164] -[group_32165] -[group_32166] -[group_32167] -[group_32168] -[group_32169] -[group_32170] -[group_32171] -[group_32172] -[group_32173] -[group_32174] -[group_32175] -[group_32176] -[group_32177] -[group_32178] -[group_32179] -[group_32180] -[group_32181] -[group_32182] -[group_32183] -[group_32184] -[group_32185] -[group_32186] -[group_32187] -[group_32188] -[group_32189] -[group_32190] -[group_32191] -[group_32192] -[group_32193] -[group_32194] -[group_32195] -[group_32196] -[group_32197] -[group_32198] -[group_32199] -[group_32200] -[group_32201] -[group_32202] -[group_32203] -[group_32204] -[group_32205] -[group_32206] -[group_32207] -[group_32208] -[group_32209] -[group_32210] -[group_32211] -[group_32212] -[group_32213] -[group_32214] -[group_32215] -[group_32216] -[group_32217] -[group_32218] -[group_32219] -[group_32220] -[group_32221] -[group_32222] -[group_32223] -[group_32224] -[group_32225] -[group_32226] -[group_32227] -[group_32228] -[group_32229] -[group_32230] -[group_32231] -[group_32232] -[group_32233] -[group_32234] -[group_32235] -[group_32236] -[group_32237] -[group_32238] -[group_32239] -[group_32240] -[group_32241] -[group_32242] -[group_32243] -[group_32244] -[group_32245] -[group_32246] -[group_32247] -[group_32248] -[group_32249] -[group_32250] -[group_32251] -[group_32252] -[group_32253] -[group_32254] -[group_32255] -[group_32256] -[group_32257] -[group_32258] -[group_32259] -[group_32260] -[group_32261] -[group_32262] -[group_32263] -[group_32264] -[group_32265] -[group_32266] -[group_32267] -[group_32268] -[group_32269] -[group_32270] -[group_32271] -[group_32272] -[group_32273] -[group_32274] -[group_32275] -[group_32276] -[group_32277] -[group_32278] -[group_32279] -[group_32280] -[group_32281] -[group_32282] -[group_32283] -[group_32284] -[group_32285] -[group_32286] -[group_32287] -[group_32288] -[group_32289] -[group_32290] -[group_32291] -[group_32292] -[group_32293] -[group_32294] -[group_32295] -[group_32296] -[group_32297] -[group_32298] -[group_32299] -[group_32300] -[group_32301] -[group_32302] -[group_32303] -[group_32304] -[group_32305] -[group_32306] -[group_32307] -[group_32308] -[group_32309] -[group_32310] -[group_32311] -[group_32312] -[group_32313] -[group_32314] -[group_32315] -[group_32316] -[group_32317] -[group_32318] -[group_32319] -[group_32320] -[group_32321] -[group_32322] -[group_32323] -[group_32324] -[group_32325] -[group_32326] -[group_32327] -[group_32328] -[group_32329] -[group_32330] -[group_32331] -[group_32332] -[group_32333] -[group_32334] -[group_32335] -[group_32336] -[group_32337] -[group_32338] -[group_32339] -[group_32340] -[group_32341] -[group_32342] -[group_32343] -[group_32344] -[group_32345] -[group_32346] -[group_32347] -[group_32348] -[group_32349] -[group_32350] -[group_32351] -[group_32352] -[group_32353] -[group_32354] -[group_32355] -[group_32356] -[group_32357] -[group_32358] -[group_32359] -[group_32360] -[group_32361] -[group_32362] -[group_32363] -[group_32364] -[group_32365] -[group_32366] -[group_32367] -[group_32368] -[group_32369] -[group_32370] -[group_32371] -[group_32372] -[group_32373] -[group_32374] -[group_32375] -[group_32376] -[group_32377] -[group_32378] -[group_32379] -[group_32380] -[group_32381] -[group_32382] -[group_32383] -[group_32384] -[group_32385] -[group_32386] -[group_32387] -[group_32388] -[group_32389] -[group_32390] -[group_32391] -[group_32392] -[group_32393] -[group_32394] -[group_32395] -[group_32396] -[group_32397] -[group_32398] -[group_32399] -[group_32400] -[group_32401] -[group_32402] -[group_32403] -[group_32404] -[group_32405] -[group_32406] -[group_32407] -[group_32408] -[group_32409] -[group_32410] -[group_32411] -[group_32412] -[group_32413] -[group_32414] -[group_32415] -[group_32416] -[group_32417] -[group_32418] -[group_32419] -[group_32420] -[group_32421] -[group_32422] -[group_32423] -[group_32424] -[group_32425] -[group_32426] -[group_32427] -[group_32428] -[group_32429] -[group_32430] -[group_32431] -[group_32432] -[group_32433] -[group_32434] -[group_32435] -[group_32436] -[group_32437] -[group_32438] -[group_32439] -[group_32440] -[group_32441] -[group_32442] -[group_32443] -[group_32444] -[group_32445] -[group_32446] -[group_32447] -[group_32448] -[group_32449] -[group_32450] -[group_32451] -[group_32452] -[group_32453] -[group_32454] -[group_32455] -[group_32456] -[group_32457] -[group_32458] -[group_32459] -[group_32460] -[group_32461] -[group_32462] -[group_32463] -[group_32464] -[group_32465] -[group_32466] -[group_32467] -[group_32468] -[group_32469] -[group_32470] -[group_32471] -[group_32472] -[group_32473] -[group_32474] -[group_32475] -[group_32476] -[group_32477] -[group_32478] -[group_32479] -[group_32480] -[group_32481] -[group_32482] -[group_32483] -[group_32484] -[group_32485] -[group_32486] -[group_32487] -[group_32488] -[group_32489] -[group_32490] -[group_32491] -[group_32492] -[group_32493] -[group_32494] -[group_32495] -[group_32496] -[group_32497] -[group_32498] -[group_32499] -[group_32500] -[group_32501] -[group_32502] -[group_32503] -[group_32504] -[group_32505] -[group_32506] -[group_32507] -[group_32508] -[group_32509] -[group_32510] -[group_32511] -[group_32512] -[group_32513] -[group_32514] -[group_32515] -[group_32516] -[group_32517] -[group_32518] -[group_32519] -[group_32520] -[group_32521] -[group_32522] -[group_32523] -[group_32524] -[group_32525] -[group_32526] -[group_32527] -[group_32528] -[group_32529] -[group_32530] -[group_32531] -[group_32532] -[group_32533] -[group_32534] -[group_32535] -[group_32536] -[group_32537] -[group_32538] -[group_32539] -[group_32540] -[group_32541] -[group_32542] -[group_32543] -[group_32544] -[group_32545] -[group_32546] -[group_32547] -[group_32548] -[group_32549] -[group_32550] -[group_32551] -[group_32552] -[group_32553] -[group_32554] -[group_32555] -[group_32556] -[group_32557] -[group_32558] -[group_32559] -[group_32560] -[group_32561] -[group_32562] -[group_32563] -[group_32564] -[group_32565] -[group_32566] -[group_32567] -[group_32568] -[group_32569] -[group_32570] -[group_32571] -[group_32572] -[group_32573] -[group_32574] -[group_32575] -[group_32576] -[group_32577] -[group_32578] -[group_32579] -[group_32580] -[group_32581] -[group_32582] -[group_32583] -[group_32584] -[group_32585] -[group_32586] -[group_32587] -[group_32588] -[group_32589] -[group_32590] -[group_32591] -[group_32592] -[group_32593] -[group_32594] -[group_32595] -[group_32596] -[group_32597] -[group_32598] -[group_32599] -[group_32600] -[group_32601] -[group_32602] -[group_32603] -[group_32604] -[group_32605] -[group_32606] -[group_32607] -[group_32608] -[group_32609] -[group_32610] -[group_32611] -[group_32612] -[group_32613] -[group_32614] -[group_32615] -[group_32616] -[group_32617] -[group_32618] -[group_32619] -[group_32620] -[group_32621] -[group_32622] -[group_32623] -[group_32624] -[group_32625] -[group_32626] -[group_32627] -[group_32628] -[group_32629] -[group_32630] -[group_32631] -[group_32632] -[group_32633] -[group_32634] -[group_32635] -[group_32636] -[group_32637] -[group_32638] -[group_32639] -[group_32640] -[group_32641] -[group_32642] -[group_32643] -[group_32644] -[group_32645] -[group_32646] -[group_32647] -[group_32648] -[group_32649] -[group_32650] -[group_32651] -[group_32652] -[group_32653] -[group_32654] -[group_32655] -[group_32656] -[group_32657] -[group_32658] -[group_32659] -[group_32660] -[group_32661] -[group_32662] -[group_32663] -[group_32664] -[group_32665] -[group_32666] -[group_32667] -[group_32668] -[group_32669] -[group_32670] -[group_32671] -[group_32672] -[group_32673] -[group_32674] -[group_32675] -[group_32676] -[group_32677] -[group_32678] -[group_32679] -[group_32680] -[group_32681] -[group_32682] -[group_32683] -[group_32684] -[group_32685] -[group_32686] -[group_32687] -[group_32688] -[group_32689] -[group_32690] -[group_32691] -[group_32692] -[group_32693] -[group_32694] -[group_32695] -[group_32696] -[group_32697] -[group_32698] -[group_32699] -[group_32700] -[group_32701] -[group_32702] -[group_32703] -[group_32704] -[group_32705] -[group_32706] -[group_32707] -[group_32708] -[group_32709] -[group_32710] -[group_32711] -[group_32712] -[group_32713] -[group_32714] -[group_32715] -[group_32716] -[group_32717] -[group_32718] -[group_32719] -[group_32720] -[group_32721] -[group_32722] -[group_32723] -[group_32724] -[group_32725] -[group_32726] -[group_32727] -[group_32728] -[group_32729] -[group_32730] -[group_32731] -[group_32732] -[group_32733] -[group_32734] -[group_32735] -[group_32736] -[group_32737] -[group_32738] -[group_32739] -[group_32740] -[group_32741] -[group_32742] -[group_32743] -[group_32744] -[group_32745] -[group_32746] -[group_32747] -[group_32748] -[group_32749] -[group_32750] -[group_32751] -[group_32752] -[group_32753] -[group_32754] -[group_32755] -[group_32756] -[group_32757] -[group_32758] -[group_32759] -[group_32760] -[group_32761] -[group_32762] -[group_32763] -[group_32764] -[group_32765] -[group_32766] -[group_32767] -[group_32768] -[group_32769] -[group_32770] -[group_32771] -[group_32772] -[group_32773] -[group_32774] -[group_32775] -[group_32776] -[group_32777] -[group_32778] -[group_32779] -[group_32780] -[group_32781] -[group_32782] -[group_32783] -[group_32784] -[group_32785] -[group_32786] -[group_32787] -[group_32788] -[group_32789] -[group_32790] -[group_32791] -[group_32792] -[group_32793] -[group_32794] -[group_32795] -[group_32796] -[group_32797] -[group_32798] -[group_32799] -[group_32800] -[group_32801] -[group_32802] -[group_32803] -[group_32804] -[group_32805] -[group_32806] -[group_32807] -[group_32808] -[group_32809] -[group_32810] -[group_32811] -[group_32812] -[group_32813] -[group_32814] -[group_32815] -[group_32816] -[group_32817] -[group_32818] -[group_32819] -[group_32820] -[group_32821] -[group_32822] -[group_32823] -[group_32824] -[group_32825] -[group_32826] -[group_32827] -[group_32828] -[group_32829] -[group_32830] -[group_32831] -[group_32832] -[group_32833] -[group_32834] -[group_32835] -[group_32836] -[group_32837] -[group_32838] -[group_32839] -[group_32840] -[group_32841] -[group_32842] -[group_32843] -[group_32844] -[group_32845] -[group_32846] -[group_32847] -[group_32848] -[group_32849] -[group_32850] -[group_32851] -[group_32852] -[group_32853] -[group_32854] -[group_32855] -[group_32856] -[group_32857] -[group_32858] -[group_32859] -[group_32860] -[group_32861] -[group_32862] -[group_32863] -[group_32864] -[group_32865] -[group_32866] -[group_32867] -[group_32868] -[group_32869] -[group_32870] -[group_32871] -[group_32872] -[group_32873] -[group_32874] -[group_32875] -[group_32876] -[group_32877] -[group_32878] -[group_32879] -[group_32880] -[group_32881] -[group_32882] -[group_32883] -[group_32884] -[group_32885] -[group_32886] -[group_32887] -[group_32888] -[group_32889] -[group_32890] -[group_32891] -[group_32892] -[group_32893] -[group_32894] -[group_32895] -[group_32896] -[group_32897] -[group_32898] -[group_32899] -[group_32900] -[group_32901] -[group_32902] -[group_32903] -[group_32904] -[group_32905] -[group_32906] -[group_32907] -[group_32908] -[group_32909] -[group_32910] -[group_32911] -[group_32912] -[group_32913] -[group_32914] -[group_32915] -[group_32916] -[group_32917] -[group_32918] -[group_32919] -[group_32920] -[group_32921] -[group_32922] -[group_32923] -[group_32924] -[group_32925] -[group_32926] -[group_32927] -[group_32928] -[group_32929] -[group_32930] -[group_32931] -[group_32932] -[group_32933] -[group_32934] -[group_32935] -[group_32936] -[group_32937] -[group_32938] -[group_32939] -[group_32940] -[group_32941] -[group_32942] -[group_32943] -[group_32944] -[group_32945] -[group_32946] -[group_32947] -[group_32948] -[group_32949] -[group_32950] -[group_32951] -[group_32952] -[group_32953] -[group_32954] -[group_32955] -[group_32956] -[group_32957] -[group_32958] -[group_32959] -[group_32960] -[group_32961] -[group_32962] -[group_32963] -[group_32964] -[group_32965] -[group_32966] -[group_32967] -[group_32968] -[group_32969] -[group_32970] -[group_32971] -[group_32972] -[group_32973] -[group_32974] -[group_32975] -[group_32976] -[group_32977] -[group_32978] -[group_32979] -[group_32980] -[group_32981] -[group_32982] -[group_32983] -[group_32984] -[group_32985] -[group_32986] -[group_32987] -[group_32988] -[group_32989] -[group_32990] -[group_32991] -[group_32992] -[group_32993] -[group_32994] -[group_32995] -[group_32996] -[group_32997] -[group_32998] -[group_32999] -[group_33000] -[group_33001] -[group_33002] -[group_33003] -[group_33004] -[group_33005] -[group_33006] -[group_33007] -[group_33008] -[group_33009] -[group_33010] -[group_33011] -[group_33012] -[group_33013] -[group_33014] -[group_33015] -[group_33016] -[group_33017] -[group_33018] -[group_33019] -[group_33020] -[group_33021] -[group_33022] -[group_33023] -[group_33024] -[group_33025] -[group_33026] -[group_33027] -[group_33028] -[group_33029] -[group_33030] -[group_33031] -[group_33032] -[group_33033] -[group_33034] -[group_33035] -[group_33036] -[group_33037] -[group_33038] -[group_33039] -[group_33040] -[group_33041] -[group_33042] -[group_33043] -[group_33044] -[group_33045] -[group_33046] -[group_33047] -[group_33048] -[group_33049] -[group_33050] -[group_33051] -[group_33052] -[group_33053] -[group_33054] -[group_33055] -[group_33056] -[group_33057] -[group_33058] -[group_33059] -[group_33060] -[group_33061] -[group_33062] -[group_33063] -[group_33064] -[group_33065] -[group_33066] -[group_33067] -[group_33068] -[group_33069] -[group_33070] -[group_33071] -[group_33072] -[group_33073] -[group_33074] -[group_33075] -[group_33076] -[group_33077] -[group_33078] -[group_33079] -[group_33080] -[group_33081] -[group_33082] -[group_33083] -[group_33084] -[group_33085] -[group_33086] -[group_33087] -[group_33088] -[group_33089] -[group_33090] -[group_33091] -[group_33092] -[group_33093] -[group_33094] -[group_33095] -[group_33096] -[group_33097] -[group_33098] -[group_33099] -[group_33100] -[group_33101] -[group_33102] -[group_33103] -[group_33104] -[group_33105] -[group_33106] -[group_33107] -[group_33108] -[group_33109] -[group_33110] -[group_33111] -[group_33112] -[group_33113] -[group_33114] -[group_33115] -[group_33116] -[group_33117] -[group_33118] -[group_33119] -[group_33120] -[group_33121] -[group_33122] -[group_33123] -[group_33124] -[group_33125] -[group_33126] -[group_33127] -[group_33128] -[group_33129] -[group_33130] -[group_33131] -[group_33132] -[group_33133] -[group_33134] -[group_33135] -[group_33136] -[group_33137] -[group_33138] -[group_33139] -[group_33140] -[group_33141] -[group_33142] -[group_33143] -[group_33144] -[group_33145] -[group_33146] -[group_33147] -[group_33148] -[group_33149] -[group_33150] -[group_33151] -[group_33152] -[group_33153] -[group_33154] -[group_33155] -[group_33156] -[group_33157] -[group_33158] -[group_33159] -[group_33160] -[group_33161] -[group_33162] -[group_33163] -[group_33164] -[group_33165] -[group_33166] -[group_33167] -[group_33168] -[group_33169] -[group_33170] -[group_33171] -[group_33172] -[group_33173] -[group_33174] -[group_33175] -[group_33176] -[group_33177] -[group_33178] -[group_33179] -[group_33180] -[group_33181] -[group_33182] -[group_33183] -[group_33184] -[group_33185] -[group_33186] -[group_33187] -[group_33188] -[group_33189] -[group_33190] -[group_33191] -[group_33192] -[group_33193] -[group_33194] -[group_33195] -[group_33196] -[group_33197] -[group_33198] -[group_33199] -[group_33200] -[group_33201] -[group_33202] -[group_33203] -[group_33204] -[group_33205] -[group_33206] -[group_33207] -[group_33208] -[group_33209] -[group_33210] -[group_33211] -[group_33212] -[group_33213] -[group_33214] -[group_33215] -[group_33216] -[group_33217] -[group_33218] -[group_33219] -[group_33220] -[group_33221] -[group_33222] -[group_33223] -[group_33224] -[group_33225] -[group_33226] -[group_33227] -[group_33228] -[group_33229] -[group_33230] -[group_33231] -[group_33232] -[group_33233] -[group_33234] -[group_33235] -[group_33236] -[group_33237] -[group_33238] -[group_33239] -[group_33240] -[group_33241] -[group_33242] -[group_33243] -[group_33244] -[group_33245] -[group_33246] -[group_33247] -[group_33248] -[group_33249] -[group_33250] -[group_33251] -[group_33252] -[group_33253] -[group_33254] -[group_33255] -[group_33256] -[group_33257] -[group_33258] -[group_33259] -[group_33260] -[group_33261] -[group_33262] -[group_33263] -[group_33264] -[group_33265] -[group_33266] -[group_33267] -[group_33268] -[group_33269] -[group_33270] -[group_33271] -[group_33272] -[group_33273] -[group_33274] -[group_33275] -[group_33276] -[group_33277] -[group_33278] -[group_33279] -[group_33280] -[group_33281] -[group_33282] -[group_33283] -[group_33284] -[group_33285] -[group_33286] -[group_33287] -[group_33288] -[group_33289] -[group_33290] -[group_33291] -[group_33292] -[group_33293] -[group_33294] -[group_33295] -[group_33296] -[group_33297] -[group_33298] -[group_33299] -[group_33300] -[group_33301] -[group_33302] -[group_33303] -[group_33304] -[group_33305] -[group_33306] -[group_33307] -[group_33308] -[group_33309] -[group_33310] -[group_33311] -[group_33312] -[group_33313] -[group_33314] -[group_33315] -[group_33316] -[group_33317] -[group_33318] -[group_33319] -[group_33320] -[group_33321] -[group_33322] -[group_33323] -[group_33324] -[group_33325] -[group_33326] -[group_33327] -[group_33328] -[group_33329] -[group_33330] -[group_33331] -[group_33332] -[group_33333] -[group_33334] -[group_33335] -[group_33336] -[group_33337] -[group_33338] -[group_33339] -[group_33340] -[group_33341] -[group_33342] -[group_33343] -[group_33344] -[group_33345] -[group_33346] -[group_33347] -[group_33348] -[group_33349] -[group_33350] -[group_33351] -[group_33352] -[group_33353] -[group_33354] -[group_33355] -[group_33356] -[group_33357] -[group_33358] -[group_33359] -[group_33360] -[group_33361] -[group_33362] -[group_33363] -[group_33364] -[group_33365] -[group_33366] -[group_33367] -[group_33368] -[group_33369] -[group_33370] -[group_33371] -[group_33372] -[group_33373] -[group_33374] -[group_33375] -[group_33376] -[group_33377] -[group_33378] -[group_33379] -[group_33380] -[group_33381] -[group_33382] -[group_33383] -[group_33384] -[group_33385] -[group_33386] -[group_33387] -[group_33388] -[group_33389] -[group_33390] -[group_33391] -[group_33392] -[group_33393] -[group_33394] -[group_33395] -[group_33396] -[group_33397] -[group_33398] -[group_33399] -[group_33400] -[group_33401] -[group_33402] -[group_33403] -[group_33404] -[group_33405] -[group_33406] -[group_33407] -[group_33408] -[group_33409] -[group_33410] -[group_33411] -[group_33412] -[group_33413] -[group_33414] -[group_33415] -[group_33416] -[group_33417] -[group_33418] -[group_33419] -[group_33420] -[group_33421] -[group_33422] -[group_33423] -[group_33424] -[group_33425] -[group_33426] -[group_33427] -[group_33428] -[group_33429] -[group_33430] -[group_33431] -[group_33432] -[group_33433] -[group_33434] -[group_33435] -[group_33436] -[group_33437] -[group_33438] -[group_33439] -[group_33440] -[group_33441] -[group_33442] -[group_33443] -[group_33444] -[group_33445] -[group_33446] -[group_33447] -[group_33448] -[group_33449] -[group_33450] -[group_33451] -[group_33452] -[group_33453] -[group_33454] -[group_33455] -[group_33456] -[group_33457] -[group_33458] -[group_33459] -[group_33460] -[group_33461] -[group_33462] -[group_33463] -[group_33464] -[group_33465] -[group_33466] -[group_33467] -[group_33468] -[group_33469] -[group_33470] -[group_33471] -[group_33472] -[group_33473] -[group_33474] -[group_33475] -[group_33476] -[group_33477] -[group_33478] -[group_33479] -[group_33480] -[group_33481] -[group_33482] -[group_33483] -[group_33484] -[group_33485] -[group_33486] -[group_33487] -[group_33488] -[group_33489] -[group_33490] -[group_33491] -[group_33492] -[group_33493] -[group_33494] -[group_33495] -[group_33496] -[group_33497] -[group_33498] -[group_33499] -[group_33500] -[group_33501] -[group_33502] -[group_33503] -[group_33504] -[group_33505] -[group_33506] -[group_33507] -[group_33508] -[group_33509] -[group_33510] -[group_33511] -[group_33512] -[group_33513] -[group_33514] -[group_33515] -[group_33516] -[group_33517] -[group_33518] -[group_33519] -[group_33520] -[group_33521] -[group_33522] -[group_33523] -[group_33524] -[group_33525] -[group_33526] -[group_33527] -[group_33528] -[group_33529] -[group_33530] -[group_33531] -[group_33532] -[group_33533] -[group_33534] -[group_33535] -[group_33536] -[group_33537] -[group_33538] -[group_33539] -[group_33540] -[group_33541] -[group_33542] -[group_33543] -[group_33544] -[group_33545] -[group_33546] -[group_33547] -[group_33548] -[group_33549] -[group_33550] -[group_33551] -[group_33552] -[group_33553] -[group_33554] -[group_33555] -[group_33556] -[group_33557] -[group_33558] -[group_33559] -[group_33560] -[group_33561] -[group_33562] -[group_33563] -[group_33564] -[group_33565] -[group_33566] -[group_33567] -[group_33568] -[group_33569] -[group_33570] -[group_33571] -[group_33572] -[group_33573] -[group_33574] -[group_33575] -[group_33576] -[group_33577] -[group_33578] -[group_33579] -[group_33580] -[group_33581] -[group_33582] -[group_33583] -[group_33584] -[group_33585] -[group_33586] -[group_33587] -[group_33588] -[group_33589] -[group_33590] -[group_33591] -[group_33592] -[group_33593] -[group_33594] -[group_33595] -[group_33596] -[group_33597] -[group_33598] -[group_33599] -[group_33600] -[group_33601] -[group_33602] -[group_33603] -[group_33604] -[group_33605] -[group_33606] -[group_33607] -[group_33608] -[group_33609] -[group_33610] -[group_33611] -[group_33612] -[group_33613] -[group_33614] -[group_33615] -[group_33616] -[group_33617] -[group_33618] -[group_33619] -[group_33620] -[group_33621] -[group_33622] -[group_33623] -[group_33624] -[group_33625] -[group_33626] -[group_33627] -[group_33628] -[group_33629] -[group_33630] -[group_33631] -[group_33632] -[group_33633] -[group_33634] -[group_33635] -[group_33636] -[group_33637] -[group_33638] -[group_33639] -[group_33640] -[group_33641] -[group_33642] -[group_33643] -[group_33644] -[group_33645] -[group_33646] -[group_33647] -[group_33648] -[group_33649] -[group_33650] -[group_33651] -[group_33652] -[group_33653] -[group_33654] -[group_33655] -[group_33656] -[group_33657] -[group_33658] -[group_33659] -[group_33660] -[group_33661] -[group_33662] -[group_33663] -[group_33664] -[group_33665] -[group_33666] -[group_33667] -[group_33668] -[group_33669] -[group_33670] -[group_33671] -[group_33672] -[group_33673] -[group_33674] -[group_33675] -[group_33676] -[group_33677] -[group_33678] -[group_33679] -[group_33680] -[group_33681] -[group_33682] -[group_33683] -[group_33684] -[group_33685] -[group_33686] -[group_33687] -[group_33688] -[group_33689] -[group_33690] -[group_33691] -[group_33692] -[group_33693] -[group_33694] -[group_33695] -[group_33696] -[group_33697] -[group_33698] -[group_33699] -[group_33700] -[group_33701] -[group_33702] -[group_33703] -[group_33704] -[group_33705] -[group_33706] -[group_33707] -[group_33708] -[group_33709] -[group_33710] -[group_33711] -[group_33712] -[group_33713] -[group_33714] -[group_33715] -[group_33716] -[group_33717] -[group_33718] -[group_33719] -[group_33720] -[group_33721] -[group_33722] -[group_33723] -[group_33724] -[group_33725] -[group_33726] -[group_33727] -[group_33728] -[group_33729] -[group_33730] -[group_33731] -[group_33732] -[group_33733] -[group_33734] -[group_33735] -[group_33736] -[group_33737] -[group_33738] -[group_33739] -[group_33740] -[group_33741] -[group_33742] -[group_33743] -[group_33744] -[group_33745] -[group_33746] -[group_33747] -[group_33748] -[group_33749] -[group_33750] -[group_33751] -[group_33752] -[group_33753] -[group_33754] -[group_33755] -[group_33756] -[group_33757] -[group_33758] -[group_33759] -[group_33760] -[group_33761] -[group_33762] -[group_33763] -[group_33764] -[group_33765] -[group_33766] -[group_33767] -[group_33768] -[group_33769] -[group_33770] -[group_33771] -[group_33772] -[group_33773] -[group_33774] -[group_33775] -[group_33776] -[group_33777] -[group_33778] -[group_33779] -[group_33780] -[group_33781] -[group_33782] -[group_33783] -[group_33784] -[group_33785] -[group_33786] -[group_33787] -[group_33788] -[group_33789] -[group_33790] -[group_33791] -[group_33792] -[group_33793] -[group_33794] -[group_33795] -[group_33796] -[group_33797] -[group_33798] -[group_33799] -[group_33800] -[group_33801] -[group_33802] -[group_33803] -[group_33804] -[group_33805] -[group_33806] -[group_33807] -[group_33808] -[group_33809] -[group_33810] -[group_33811] -[group_33812] -[group_33813] -[group_33814] -[group_33815] -[group_33816] -[group_33817] -[group_33818] -[group_33819] -[group_33820] -[group_33821] -[group_33822] -[group_33823] -[group_33824] -[group_33825] -[group_33826] -[group_33827] -[group_33828] -[group_33829] -[group_33830] -[group_33831] -[group_33832] -[group_33833] -[group_33834] -[group_33835] -[group_33836] -[group_33837] -[group_33838] -[group_33839] -[group_33840] -[group_33841] -[group_33842] -[group_33843] -[group_33844] -[group_33845] -[group_33846] -[group_33847] -[group_33848] -[group_33849] -[group_33850] -[group_33851] -[group_33852] -[group_33853] -[group_33854] -[group_33855] -[group_33856] -[group_33857] -[group_33858] -[group_33859] -[group_33860] -[group_33861] -[group_33862] -[group_33863] -[group_33864] -[group_33865] -[group_33866] -[group_33867] -[group_33868] -[group_33869] -[group_33870] -[group_33871] -[group_33872] -[group_33873] -[group_33874] -[group_33875] -[group_33876] -[group_33877] -[group_33878] -[group_33879] -[group_33880] -[group_33881] -[group_33882] -[group_33883] -[group_33884] -[group_33885] -[group_33886] -[group_33887] -[group_33888] -[group_33889] -[group_33890] -[group_33891] -[group_33892] -[group_33893] -[group_33894] -[group_33895] -[group_33896] -[group_33897] -[group_33898] -[group_33899] -[group_33900] -[group_33901] -[group_33902] -[group_33903] -[group_33904] -[group_33905] -[group_33906] -[group_33907] -[group_33908] -[group_33909] -[group_33910] -[group_33911] -[group_33912] -[group_33913] -[group_33914] -[group_33915] -[group_33916] -[group_33917] -[group_33918] -[group_33919] -[group_33920] -[group_33921] -[group_33922] -[group_33923] -[group_33924] -[group_33925] -[group_33926] -[group_33927] -[group_33928] -[group_33929] -[group_33930] -[group_33931] -[group_33932] -[group_33933] -[group_33934] -[group_33935] -[group_33936] -[group_33937] -[group_33938] -[group_33939] -[group_33940] -[group_33941] -[group_33942] -[group_33943] -[group_33944] -[group_33945] -[group_33946] -[group_33947] -[group_33948] -[group_33949] -[group_33950] -[group_33951] -[group_33952] -[group_33953] -[group_33954] -[group_33955] -[group_33956] -[group_33957] -[group_33958] -[group_33959] -[group_33960] -[group_33961] -[group_33962] -[group_33963] -[group_33964] -[group_33965] -[group_33966] -[group_33967] -[group_33968] -[group_33969] -[group_33970] -[group_33971] -[group_33972] -[group_33973] -[group_33974] -[group_33975] -[group_33976] -[group_33977] -[group_33978] -[group_33979] -[group_33980] -[group_33981] -[group_33982] -[group_33983] -[group_33984] -[group_33985] -[group_33986] -[group_33987] -[group_33988] -[group_33989] -[group_33990] -[group_33991] -[group_33992] -[group_33993] -[group_33994] -[group_33995] -[group_33996] -[group_33997] -[group_33998] -[group_33999] -[group_34000] -[group_34001] -[group_34002] -[group_34003] -[group_34004] -[group_34005] -[group_34006] -[group_34007] -[group_34008] -[group_34009] -[group_34010] -[group_34011] -[group_34012] -[group_34013] -[group_34014] -[group_34015] -[group_34016] -[group_34017] -[group_34018] -[group_34019] -[group_34020] -[group_34021] -[group_34022] -[group_34023] -[group_34024] -[group_34025] -[group_34026] -[group_34027] -[group_34028] -[group_34029] -[group_34030] -[group_34031] -[group_34032] -[group_34033] -[group_34034] -[group_34035] -[group_34036] -[group_34037] -[group_34038] -[group_34039] -[group_34040] -[group_34041] -[group_34042] -[group_34043] -[group_34044] -[group_34045] -[group_34046] -[group_34047] -[group_34048] -[group_34049] -[group_34050] -[group_34051] -[group_34052] -[group_34053] -[group_34054] -[group_34055] -[group_34056] -[group_34057] -[group_34058] -[group_34059] -[group_34060] -[group_34061] -[group_34062] -[group_34063] -[group_34064] -[group_34065] -[group_34066] -[group_34067] -[group_34068] -[group_34069] -[group_34070] -[group_34071] -[group_34072] -[group_34073] -[group_34074] -[group_34075] -[group_34076] -[group_34077] -[group_34078] -[group_34079] -[group_34080] -[group_34081] -[group_34082] -[group_34083] -[group_34084] -[group_34085] -[group_34086] -[group_34087] -[group_34088] -[group_34089] -[group_34090] -[group_34091] -[group_34092] -[group_34093] -[group_34094] -[group_34095] -[group_34096] -[group_34097] -[group_34098] -[group_34099] -[group_34100] -[group_34101] -[group_34102] -[group_34103] -[group_34104] -[group_34105] -[group_34106] -[group_34107] -[group_34108] -[group_34109] -[group_34110] -[group_34111] -[group_34112] -[group_34113] -[group_34114] -[group_34115] -[group_34116] -[group_34117] -[group_34118] -[group_34119] -[group_34120] -[group_34121] -[group_34122] -[group_34123] -[group_34124] -[group_34125] -[group_34126] -[group_34127] -[group_34128] -[group_34129] -[group_34130] -[group_34131] -[group_34132] -[group_34133] -[group_34134] -[group_34135] -[group_34136] -[group_34137] -[group_34138] -[group_34139] -[group_34140] -[group_34141] -[group_34142] -[group_34143] -[group_34144] -[group_34145] -[group_34146] -[group_34147] -[group_34148] -[group_34149] -[group_34150] -[group_34151] -[group_34152] -[group_34153] -[group_34154] -[group_34155] -[group_34156] -[group_34157] -[group_34158] -[group_34159] -[group_34160] -[group_34161] -[group_34162] -[group_34163] -[group_34164] -[group_34165] -[group_34166] -[group_34167] -[group_34168] -[group_34169] -[group_34170] -[group_34171] -[group_34172] -[group_34173] -[group_34174] -[group_34175] -[group_34176] -[group_34177] -[group_34178] -[group_34179] -[group_34180] -[group_34181] -[group_34182] -[group_34183] -[group_34184] -[group_34185] -[group_34186] -[group_34187] -[group_34188] -[group_34189] -[group_34190] -[group_34191] -[group_34192] -[group_34193] -[group_34194] -[group_34195] -[group_34196] -[group_34197] -[group_34198] -[group_34199] -[group_34200] -[group_34201] -[group_34202] -[group_34203] -[group_34204] -[group_34205] -[group_34206] -[group_34207] -[group_34208] -[group_34209] -[group_34210] -[group_34211] -[group_34212] -[group_34213] -[group_34214] -[group_34215] -[group_34216] -[group_34217] -[group_34218] -[group_34219] -[group_34220] -[group_34221] -[group_34222] -[group_34223] -[group_34224] -[group_34225] -[group_34226] -[group_34227] -[group_34228] -[group_34229] -[group_34230] -[group_34231] -[group_34232] -[group_34233] -[group_34234] -[group_34235] -[group_34236] -[group_34237] -[group_34238] -[group_34239] -[group_34240] -[group_34241] -[group_34242] -[group_34243] -[group_34244] -[group_34245] -[group_34246] -[group_34247] -[group_34248] -[group_34249] -[group_34250] -[group_34251] -[group_34252] -[group_34253] -[group_34254] -[group_34255] -[group_34256] -[group_34257] -[group_34258] -[group_34259] -[group_34260] -[group_34261] -[group_34262] -[group_34263] -[group_34264] -[group_34265] -[group_34266] -[group_34267] -[group_34268] -[group_34269] -[group_34270] -[group_34271] -[group_34272] -[group_34273] -[group_34274] -[group_34275] -[group_34276] -[group_34277] -[group_34278] -[group_34279] -[group_34280] -[group_34281] -[group_34282] -[group_34283] -[group_34284] -[group_34285] -[group_34286] -[group_34287] -[group_34288] -[group_34289] -[group_34290] -[group_34291] -[group_34292] -[group_34293] -[group_34294] -[group_34295] -[group_34296] -[group_34297] -[group_34298] -[group_34299] -[group_34300] -[group_34301] -[group_34302] -[group_34303] -[group_34304] -[group_34305] -[group_34306] -[group_34307] -[group_34308] -[group_34309] -[group_34310] -[group_34311] -[group_34312] -[group_34313] -[group_34314] -[group_34315] -[group_34316] -[group_34317] -[group_34318] -[group_34319] -[group_34320] -[group_34321] -[group_34322] -[group_34323] -[group_34324] -[group_34325] -[group_34326] -[group_34327] -[group_34328] -[group_34329] -[group_34330] -[group_34331] -[group_34332] -[group_34333] -[group_34334] -[group_34335] -[group_34336] -[group_34337] -[group_34338] -[group_34339] -[group_34340] -[group_34341] -[group_34342] -[group_34343] -[group_34344] -[group_34345] -[group_34346] -[group_34347] -[group_34348] -[group_34349] -[group_34350] -[group_34351] -[group_34352] -[group_34353] -[group_34354] -[group_34355] -[group_34356] -[group_34357] -[group_34358] -[group_34359] -[group_34360] -[group_34361] -[group_34362] -[group_34363] -[group_34364] -[group_34365] -[group_34366] -[group_34367] -[group_34368] -[group_34369] -[group_34370] -[group_34371] -[group_34372] -[group_34373] -[group_34374] -[group_34375] -[group_34376] -[group_34377] -[group_34378] -[group_34379] -[group_34380] -[group_34381] -[group_34382] -[group_34383] -[group_34384] -[group_34385] -[group_34386] -[group_34387] -[group_34388] -[group_34389] -[group_34390] -[group_34391] -[group_34392] -[group_34393] -[group_34394] -[group_34395] -[group_34396] -[group_34397] -[group_34398] -[group_34399] -[group_34400] -[group_34401] -[group_34402] -[group_34403] -[group_34404] -[group_34405] -[group_34406] -[group_34407] -[group_34408] -[group_34409] -[group_34410] -[group_34411] -[group_34412] -[group_34413] -[group_34414] -[group_34415] -[group_34416] -[group_34417] -[group_34418] -[group_34419] -[group_34420] -[group_34421] -[group_34422] -[group_34423] -[group_34424] -[group_34425] -[group_34426] -[group_34427] -[group_34428] -[group_34429] -[group_34430] -[group_34431] -[group_34432] -[group_34433] -[group_34434] -[group_34435] -[group_34436] -[group_34437] -[group_34438] -[group_34439] -[group_34440] -[group_34441] -[group_34442] -[group_34443] -[group_34444] -[group_34445] -[group_34446] -[group_34447] -[group_34448] -[group_34449] -[group_34450] -[group_34451] -[group_34452] -[group_34453] -[group_34454] -[group_34455] -[group_34456] -[group_34457] -[group_34458] -[group_34459] -[group_34460] -[group_34461] -[group_34462] -[group_34463] -[group_34464] -[group_34465] -[group_34466] -[group_34467] -[group_34468] -[group_34469] -[group_34470] -[group_34471] -[group_34472] -[group_34473] -[group_34474] -[group_34475] -[group_34476] -[group_34477] -[group_34478] -[group_34479] -[group_34480] -[group_34481] -[group_34482] -[group_34483] -[group_34484] -[group_34485] -[group_34486] -[group_34487] -[group_34488] -[group_34489] -[group_34490] -[group_34491] -[group_34492] -[group_34493] -[group_34494] -[group_34495] -[group_34496] -[group_34497] -[group_34498] -[group_34499] -[group_34500] -[group_34501] -[group_34502] -[group_34503] -[group_34504] -[group_34505] -[group_34506] -[group_34507] -[group_34508] -[group_34509] -[group_34510] -[group_34511] -[group_34512] -[group_34513] -[group_34514] -[group_34515] -[group_34516] -[group_34517] -[group_34518] -[group_34519] -[group_34520] -[group_34521] -[group_34522] -[group_34523] -[group_34524] -[group_34525] -[group_34526] -[group_34527] -[group_34528] -[group_34529] -[group_34530] -[group_34531] -[group_34532] -[group_34533] -[group_34534] -[group_34535] -[group_34536] -[group_34537] -[group_34538] -[group_34539] -[group_34540] -[group_34541] -[group_34542] -[group_34543] -[group_34544] -[group_34545] -[group_34546] -[group_34547] -[group_34548] -[group_34549] -[group_34550] -[group_34551] -[group_34552] -[group_34553] -[group_34554] -[group_34555] -[group_34556] -[group_34557] -[group_34558] -[group_34559] -[group_34560] -[group_34561] -[group_34562] -[group_34563] -[group_34564] -[group_34565] -[group_34566] -[group_34567] -[group_34568] -[group_34569] -[group_34570] -[group_34571] -[group_34572] -[group_34573] -[group_34574] -[group_34575] -[group_34576] -[group_34577] -[group_34578] -[group_34579] -[group_34580] -[group_34581] -[group_34582] -[group_34583] -[group_34584] -[group_34585] -[group_34586] -[group_34587] -[group_34588] -[group_34589] -[group_34590] -[group_34591] -[group_34592] -[group_34593] -[group_34594] -[group_34595] -[group_34596] -[group_34597] -[group_34598] -[group_34599] -[group_34600] -[group_34601] -[group_34602] -[group_34603] -[group_34604] -[group_34605] -[group_34606] -[group_34607] -[group_34608] -[group_34609] -[group_34610] -[group_34611] -[group_34612] -[group_34613] -[group_34614] -[group_34615] -[group_34616] -[group_34617] -[group_34618] -[group_34619] -[group_34620] -[group_34621] -[group_34622] -[group_34623] -[group_34624] -[group_34625] -[group_34626] -[group_34627] -[group_34628] -[group_34629] -[group_34630] -[group_34631] -[group_34632] -[group_34633] -[group_34634] -[group_34635] -[group_34636] -[group_34637] -[group_34638] -[group_34639] -[group_34640] -[group_34641] -[group_34642] -[group_34643] -[group_34644] -[group_34645] -[group_34646] -[group_34647] -[group_34648] -[group_34649] -[group_34650] -[group_34651] -[group_34652] -[group_34653] -[group_34654] -[group_34655] -[group_34656] -[group_34657] -[group_34658] -[group_34659] -[group_34660] -[group_34661] -[group_34662] -[group_34663] -[group_34664] -[group_34665] -[group_34666] -[group_34667] -[group_34668] -[group_34669] -[group_34670] -[group_34671] -[group_34672] -[group_34673] -[group_34674] -[group_34675] -[group_34676] -[group_34677] -[group_34678] -[group_34679] -[group_34680] -[group_34681] -[group_34682] -[group_34683] -[group_34684] -[group_34685] -[group_34686] -[group_34687] -[group_34688] -[group_34689] -[group_34690] -[group_34691] -[group_34692] -[group_34693] -[group_34694] -[group_34695] -[group_34696] -[group_34697] -[group_34698] -[group_34699] -[group_34700] -[group_34701] -[group_34702] -[group_34703] -[group_34704] -[group_34705] -[group_34706] -[group_34707] -[group_34708] -[group_34709] -[group_34710] -[group_34711] -[group_34712] -[group_34713] -[group_34714] -[group_34715] -[group_34716] -[group_34717] -[group_34718] -[group_34719] -[group_34720] -[group_34721] -[group_34722] -[group_34723] -[group_34724] -[group_34725] -[group_34726] -[group_34727] -[group_34728] -[group_34729] -[group_34730] -[group_34731] -[group_34732] -[group_34733] -[group_34734] -[group_34735] -[group_34736] -[group_34737] -[group_34738] -[group_34739] -[group_34740] -[group_34741] -[group_34742] -[group_34743] -[group_34744] -[group_34745] -[group_34746] -[group_34747] -[group_34748] -[group_34749] -[group_34750] -[group_34751] -[group_34752] -[group_34753] -[group_34754] -[group_34755] -[group_34756] -[group_34757] -[group_34758] -[group_34759] -[group_34760] -[group_34761] -[group_34762] -[group_34763] -[group_34764] -[group_34765] -[group_34766] -[group_34767] -[group_34768] -[group_34769] -[group_34770] -[group_34771] -[group_34772] -[group_34773] -[group_34774] -[group_34775] -[group_34776] -[group_34777] -[group_34778] -[group_34779] -[group_34780] -[group_34781] -[group_34782] -[group_34783] -[group_34784] -[group_34785] -[group_34786] -[group_34787] -[group_34788] -[group_34789] -[group_34790] -[group_34791] -[group_34792] -[group_34793] -[group_34794] -[group_34795] -[group_34796] -[group_34797] -[group_34798] -[group_34799] -[group_34800] -[group_34801] -[group_34802] -[group_34803] -[group_34804] -[group_34805] -[group_34806] -[group_34807] -[group_34808] -[group_34809] -[group_34810] -[group_34811] -[group_34812] -[group_34813] -[group_34814] -[group_34815] -[group_34816] -[group_34817] -[group_34818] -[group_34819] -[group_34820] -[group_34821] -[group_34822] -[group_34823] -[group_34824] -[group_34825] -[group_34826] -[group_34827] -[group_34828] -[group_34829] -[group_34830] -[group_34831] -[group_34832] -[group_34833] -[group_34834] -[group_34835] -[group_34836] -[group_34837] -[group_34838] -[group_34839] -[group_34840] -[group_34841] -[group_34842] -[group_34843] -[group_34844] -[group_34845] -[group_34846] -[group_34847] -[group_34848] -[group_34849] -[group_34850] -[group_34851] -[group_34852] -[group_34853] -[group_34854] -[group_34855] -[group_34856] -[group_34857] -[group_34858] -[group_34859] -[group_34860] -[group_34861] -[group_34862] -[group_34863] -[group_34864] -[group_34865] -[group_34866] -[group_34867] -[group_34868] -[group_34869] -[group_34870] -[group_34871] -[group_34872] -[group_34873] -[group_34874] -[group_34875] -[group_34876] -[group_34877] -[group_34878] -[group_34879] -[group_34880] -[group_34881] -[group_34882] -[group_34883] -[group_34884] -[group_34885] -[group_34886] -[group_34887] -[group_34888] -[group_34889] -[group_34890] -[group_34891] -[group_34892] -[group_34893] -[group_34894] -[group_34895] -[group_34896] -[group_34897] -[group_34898] -[group_34899] -[group_34900] -[group_34901] -[group_34902] -[group_34903] -[group_34904] -[group_34905] -[group_34906] -[group_34907] -[group_34908] -[group_34909] -[group_34910] -[group_34911] -[group_34912] -[group_34913] -[group_34914] -[group_34915] -[group_34916] -[group_34917] -[group_34918] -[group_34919] -[group_34920] -[group_34921] -[group_34922] -[group_34923] -[group_34924] -[group_34925] -[group_34926] -[group_34927] -[group_34928] -[group_34929] -[group_34930] -[group_34931] -[group_34932] -[group_34933] -[group_34934] -[group_34935] -[group_34936] -[group_34937] -[group_34938] -[group_34939] -[group_34940] -[group_34941] -[group_34942] -[group_34943] -[group_34944] -[group_34945] -[group_34946] -[group_34947] -[group_34948] -[group_34949] -[group_34950] -[group_34951] -[group_34952] -[group_34953] -[group_34954] -[group_34955] -[group_34956] -[group_34957] -[group_34958] -[group_34959] -[group_34960] -[group_34961] -[group_34962] -[group_34963] -[group_34964] -[group_34965] -[group_34966] -[group_34967] -[group_34968] -[group_34969] -[group_34970] -[group_34971] -[group_34972] -[group_34973] -[group_34974] -[group_34975] -[group_34976] -[group_34977] -[group_34978] -[group_34979] -[group_34980] -[group_34981] -[group_34982] -[group_34983] -[group_34984] -[group_34985] -[group_34986] -[group_34987] -[group_34988] -[group_34989] -[group_34990] -[group_34991] -[group_34992] -[group_34993] -[group_34994] -[group_34995] -[group_34996] -[group_34997] -[group_34998] -[group_34999] -[group_35000] -[group_35001] -[group_35002] -[group_35003] -[group_35004] -[group_35005] -[group_35006] -[group_35007] -[group_35008] -[group_35009] -[group_35010] -[group_35011] -[group_35012] -[group_35013] -[group_35014] -[group_35015] -[group_35016] -[group_35017] -[group_35018] -[group_35019] -[group_35020] -[group_35021] -[group_35022] -[group_35023] -[group_35024] -[group_35025] -[group_35026] -[group_35027] -[group_35028] -[group_35029] -[group_35030] -[group_35031] -[group_35032] -[group_35033] -[group_35034] -[group_35035] -[group_35036] -[group_35037] -[group_35038] -[group_35039] -[group_35040] -[group_35041] -[group_35042] -[group_35043] -[group_35044] -[group_35045] -[group_35046] -[group_35047] -[group_35048] -[group_35049] -[group_35050] -[group_35051] -[group_35052] -[group_35053] -[group_35054] -[group_35055] -[group_35056] -[group_35057] -[group_35058] -[group_35059] -[group_35060] -[group_35061] -[group_35062] -[group_35063] -[group_35064] -[group_35065] -[group_35066] -[group_35067] -[group_35068] -[group_35069] -[group_35070] -[group_35071] -[group_35072] -[group_35073] -[group_35074] -[group_35075] -[group_35076] -[group_35077] -[group_35078] -[group_35079] -[group_35080] -[group_35081] -[group_35082] -[group_35083] -[group_35084] -[group_35085] -[group_35086] -[group_35087] -[group_35088] -[group_35089] -[group_35090] -[group_35091] -[group_35092] -[group_35093] -[group_35094] -[group_35095] -[group_35096] -[group_35097] -[group_35098] -[group_35099] -[group_35100] -[group_35101] -[group_35102] -[group_35103] -[group_35104] -[group_35105] -[group_35106] -[group_35107] -[group_35108] -[group_35109] -[group_35110] -[group_35111] -[group_35112] -[group_35113] -[group_35114] -[group_35115] -[group_35116] -[group_35117] -[group_35118] -[group_35119] -[group_35120] -[group_35121] -[group_35122] -[group_35123] -[group_35124] -[group_35125] -[group_35126] -[group_35127] -[group_35128] -[group_35129] -[group_35130] -[group_35131] -[group_35132] -[group_35133] -[group_35134] -[group_35135] -[group_35136] -[group_35137] -[group_35138] -[group_35139] -[group_35140] -[group_35141] -[group_35142] -[group_35143] -[group_35144] -[group_35145] -[group_35146] -[group_35147] -[group_35148] -[group_35149] -[group_35150] -[group_35151] -[group_35152] -[group_35153] -[group_35154] -[group_35155] -[group_35156] -[group_35157] -[group_35158] -[group_35159] -[group_35160] -[group_35161] -[group_35162] -[group_35163] -[group_35164] -[group_35165] -[group_35166] -[group_35167] -[group_35168] -[group_35169] -[group_35170] -[group_35171] -[group_35172] -[group_35173] -[group_35174] -[group_35175] -[group_35176] -[group_35177] -[group_35178] -[group_35179] -[group_35180] -[group_35181] -[group_35182] -[group_35183] -[group_35184] -[group_35185] -[group_35186] -[group_35187] -[group_35188] -[group_35189] -[group_35190] -[group_35191] -[group_35192] -[group_35193] -[group_35194] -[group_35195] -[group_35196] -[group_35197] -[group_35198] -[group_35199] -[group_35200] -[group_35201] -[group_35202] -[group_35203] -[group_35204] -[group_35205] -[group_35206] -[group_35207] -[group_35208] -[group_35209] -[group_35210] -[group_35211] -[group_35212] -[group_35213] -[group_35214] -[group_35215] -[group_35216] -[group_35217] -[group_35218] -[group_35219] -[group_35220] -[group_35221] -[group_35222] -[group_35223] -[group_35224] -[group_35225] -[group_35226] -[group_35227] -[group_35228] -[group_35229] -[group_35230] -[group_35231] -[group_35232] -[group_35233] -[group_35234] -[group_35235] -[group_35236] -[group_35237] -[group_35238] -[group_35239] -[group_35240] -[group_35241] -[group_35242] -[group_35243] -[group_35244] -[group_35245] -[group_35246] -[group_35247] -[group_35248] -[group_35249] -[group_35250] -[group_35251] -[group_35252] -[group_35253] -[group_35254] -[group_35255] -[group_35256] -[group_35257] -[group_35258] -[group_35259] -[group_35260] -[group_35261] -[group_35262] -[group_35263] -[group_35264] -[group_35265] -[group_35266] -[group_35267] -[group_35268] -[group_35269] -[group_35270] -[group_35271] -[group_35272] -[group_35273] -[group_35274] -[group_35275] -[group_35276] -[group_35277] -[group_35278] -[group_35279] -[group_35280] -[group_35281] -[group_35282] -[group_35283] -[group_35284] -[group_35285] -[group_35286] -[group_35287] -[group_35288] -[group_35289] -[group_35290] -[group_35291] -[group_35292] -[group_35293] -[group_35294] -[group_35295] -[group_35296] -[group_35297] -[group_35298] -[group_35299] -[group_35300] -[group_35301] -[group_35302] -[group_35303] -[group_35304] -[group_35305] -[group_35306] -[group_35307] -[group_35308] -[group_35309] -[group_35310] -[group_35311] -[group_35312] -[group_35313] -[group_35314] -[group_35315] -[group_35316] -[group_35317] -[group_35318] -[group_35319] -[group_35320] -[group_35321] -[group_35322] -[group_35323] -[group_35324] -[group_35325] -[group_35326] -[group_35327] -[group_35328] -[group_35329] -[group_35330] -[group_35331] -[group_35332] -[group_35333] -[group_35334] -[group_35335] -[group_35336] -[group_35337] -[group_35338] -[group_35339] -[group_35340] -[group_35341] -[group_35342] -[group_35343] -[group_35344] -[group_35345] -[group_35346] -[group_35347] -[group_35348] -[group_35349] -[group_35350] -[group_35351] -[group_35352] -[group_35353] -[group_35354] -[group_35355] -[group_35356] -[group_35357] -[group_35358] -[group_35359] -[group_35360] -[group_35361] -[group_35362] -[group_35363] -[group_35364] -[group_35365] -[group_35366] -[group_35367] -[group_35368] -[group_35369] -[group_35370] -[group_35371] -[group_35372] -[group_35373] -[group_35374] -[group_35375] -[group_35376] -[group_35377] -[group_35378] -[group_35379] -[group_35380] -[group_35381] -[group_35382] -[group_35383] -[group_35384] -[group_35385] -[group_35386] -[group_35387] -[group_35388] -[group_35389] -[group_35390] -[group_35391] -[group_35392] -[group_35393] -[group_35394] -[group_35395] -[group_35396] -[group_35397] -[group_35398] -[group_35399] -[group_35400] -[group_35401] -[group_35402] -[group_35403] -[group_35404] -[group_35405] -[group_35406] -[group_35407] -[group_35408] -[group_35409] -[group_35410] -[group_35411] -[group_35412] -[group_35413] -[group_35414] -[group_35415] -[group_35416] -[group_35417] -[group_35418] -[group_35419] -[group_35420] -[group_35421] -[group_35422] -[group_35423] -[group_35424] -[group_35425] -[group_35426] -[group_35427] -[group_35428] -[group_35429] -[group_35430] -[group_35431] -[group_35432] -[group_35433] -[group_35434] -[group_35435] -[group_35436] -[group_35437] -[group_35438] -[group_35439] -[group_35440] -[group_35441] -[group_35442] -[group_35443] -[group_35444] -[group_35445] -[group_35446] -[group_35447] -[group_35448] -[group_35449] -[group_35450] -[group_35451] -[group_35452] -[group_35453] -[group_35454] -[group_35455] -[group_35456] -[group_35457] -[group_35458] -[group_35459] -[group_35460] -[group_35461] -[group_35462] -[group_35463] -[group_35464] -[group_35465] -[group_35466] -[group_35467] -[group_35468] -[group_35469] -[group_35470] -[group_35471] -[group_35472] -[group_35473] -[group_35474] -[group_35475] -[group_35476] -[group_35477] -[group_35478] -[group_35479] -[group_35480] -[group_35481] -[group_35482] -[group_35483] -[group_35484] -[group_35485] -[group_35486] -[group_35487] -[group_35488] -[group_35489] -[group_35490] -[group_35491] -[group_35492] -[group_35493] -[group_35494] -[group_35495] -[group_35496] -[group_35497] -[group_35498] -[group_35499] -[group_35500] -[group_35501] -[group_35502] -[group_35503] -[group_35504] -[group_35505] -[group_35506] -[group_35507] -[group_35508] -[group_35509] -[group_35510] -[group_35511] -[group_35512] -[group_35513] -[group_35514] -[group_35515] -[group_35516] -[group_35517] -[group_35518] -[group_35519] -[group_35520] -[group_35521] -[group_35522] -[group_35523] -[group_35524] -[group_35525] -[group_35526] -[group_35527] -[group_35528] -[group_35529] -[group_35530] -[group_35531] -[group_35532] -[group_35533] -[group_35534] -[group_35535] -[group_35536] -[group_35537] -[group_35538] -[group_35539] -[group_35540] -[group_35541] -[group_35542] -[group_35543] -[group_35544] -[group_35545] -[group_35546] -[group_35547] -[group_35548] -[group_35549] -[group_35550] -[group_35551] -[group_35552] -[group_35553] -[group_35554] -[group_35555] -[group_35556] -[group_35557] -[group_35558] -[group_35559] -[group_35560] -[group_35561] -[group_35562] -[group_35563] -[group_35564] -[group_35565] -[group_35566] -[group_35567] -[group_35568] -[group_35569] -[group_35570] -[group_35571] -[group_35572] -[group_35573] -[group_35574] -[group_35575] -[group_35576] -[group_35577] -[group_35578] -[group_35579] -[group_35580] -[group_35581] -[group_35582] -[group_35583] -[group_35584] -[group_35585] -[group_35586] -[group_35587] -[group_35588] -[group_35589] -[group_35590] -[group_35591] -[group_35592] -[group_35593] -[group_35594] -[group_35595] -[group_35596] -[group_35597] -[group_35598] -[group_35599] -[group_35600] -[group_35601] -[group_35602] -[group_35603] -[group_35604] -[group_35605] -[group_35606] -[group_35607] -[group_35608] -[group_35609] -[group_35610] -[group_35611] -[group_35612] -[group_35613] -[group_35614] -[group_35615] -[group_35616] -[group_35617] -[group_35618] -[group_35619] -[group_35620] -[group_35621] -[group_35622] -[group_35623] -[group_35624] -[group_35625] -[group_35626] -[group_35627] -[group_35628] -[group_35629] -[group_35630] -[group_35631] -[group_35632] -[group_35633] -[group_35634] -[group_35635] -[group_35636] -[group_35637] -[group_35638] -[group_35639] -[group_35640] -[group_35641] -[group_35642] -[group_35643] -[group_35644] -[group_35645] -[group_35646] -[group_35647] -[group_35648] -[group_35649] -[group_35650] -[group_35651] -[group_35652] -[group_35653] -[group_35654] -[group_35655] -[group_35656] -[group_35657] -[group_35658] -[group_35659] -[group_35660] -[group_35661] -[group_35662] -[group_35663] -[group_35664] -[group_35665] -[group_35666] -[group_35667] -[group_35668] -[group_35669] -[group_35670] -[group_35671] -[group_35672] -[group_35673] -[group_35674] -[group_35675] -[group_35676] -[group_35677] -[group_35678] -[group_35679] -[group_35680] -[group_35681] -[group_35682] -[group_35683] -[group_35684] -[group_35685] -[group_35686] -[group_35687] -[group_35688] -[group_35689] -[group_35690] -[group_35691] -[group_35692] -[group_35693] -[group_35694] -[group_35695] -[group_35696] -[group_35697] -[group_35698] -[group_35699] -[group_35700] -[group_35701] -[group_35702] -[group_35703] -[group_35704] -[group_35705] -[group_35706] -[group_35707] -[group_35708] -[group_35709] -[group_35710] -[group_35711] -[group_35712] -[group_35713] -[group_35714] -[group_35715] -[group_35716] -[group_35717] -[group_35718] -[group_35719] -[group_35720] -[group_35721] -[group_35722] -[group_35723] -[group_35724] -[group_35725] -[group_35726] -[group_35727] -[group_35728] -[group_35729] -[group_35730] -[group_35731] -[group_35732] -[group_35733] -[group_35734] -[group_35735] -[group_35736] -[group_35737] -[group_35738] -[group_35739] -[group_35740] -[group_35741] -[group_35742] -[group_35743] -[group_35744] -[group_35745] -[group_35746] -[group_35747] -[group_35748] -[group_35749] -[group_35750] -[group_35751] -[group_35752] -[group_35753] -[group_35754] -[group_35755] -[group_35756] -[group_35757] -[group_35758] -[group_35759] -[group_35760] -[group_35761] -[group_35762] -[group_35763] -[group_35764] -[group_35765] -[group_35766] -[group_35767] -[group_35768] -[group_35769] -[group_35770] -[group_35771] -[group_35772] -[group_35773] -[group_35774] -[group_35775] -[group_35776] -[group_35777] -[group_35778] -[group_35779] -[group_35780] -[group_35781] -[group_35782] -[group_35783] -[group_35784] -[group_35785] -[group_35786] -[group_35787] -[group_35788] -[group_35789] -[group_35790] -[group_35791] -[group_35792] -[group_35793] -[group_35794] -[group_35795] -[group_35796] -[group_35797] -[group_35798] -[group_35799] -[group_35800] -[group_35801] -[group_35802] -[group_35803] -[group_35804] -[group_35805] -[group_35806] -[group_35807] -[group_35808] -[group_35809] -[group_35810] -[group_35811] -[group_35812] -[group_35813] -[group_35814] -[group_35815] -[group_35816] -[group_35817] -[group_35818] -[group_35819] -[group_35820] -[group_35821] -[group_35822] -[group_35823] -[group_35824] -[group_35825] -[group_35826] -[group_35827] -[group_35828] -[group_35829] -[group_35830] -[group_35831] -[group_35832] -[group_35833] -[group_35834] -[group_35835] -[group_35836] -[group_35837] -[group_35838] -[group_35839] -[group_35840] -[group_35841] -[group_35842] -[group_35843] -[group_35844] -[group_35845] -[group_35846] -[group_35847] -[group_35848] -[group_35849] -[group_35850] -[group_35851] -[group_35852] -[group_35853] -[group_35854] -[group_35855] -[group_35856] -[group_35857] -[group_35858] -[group_35859] -[group_35860] -[group_35861] -[group_35862] -[group_35863] -[group_35864] -[group_35865] -[group_35866] -[group_35867] -[group_35868] -[group_35869] -[group_35870] -[group_35871] -[group_35872] -[group_35873] -[group_35874] -[group_35875] -[group_35876] -[group_35877] -[group_35878] -[group_35879] -[group_35880] -[group_35881] -[group_35882] -[group_35883] -[group_35884] -[group_35885] -[group_35886] -[group_35887] -[group_35888] -[group_35889] -[group_35890] -[group_35891] -[group_35892] -[group_35893] -[group_35894] -[group_35895] -[group_35896] -[group_35897] -[group_35898] -[group_35899] -[group_35900] -[group_35901] -[group_35902] -[group_35903] -[group_35904] -[group_35905] -[group_35906] -[group_35907] -[group_35908] -[group_35909] -[group_35910] -[group_35911] -[group_35912] -[group_35913] -[group_35914] -[group_35915] -[group_35916] -[group_35917] -[group_35918] -[group_35919] -[group_35920] -[group_35921] -[group_35922] -[group_35923] -[group_35924] -[group_35925] -[group_35926] -[group_35927] -[group_35928] -[group_35929] -[group_35930] -[group_35931] -[group_35932] -[group_35933] -[group_35934] -[group_35935] -[group_35936] -[group_35937] -[group_35938] -[group_35939] -[group_35940] -[group_35941] -[group_35942] -[group_35943] -[group_35944] -[group_35945] -[group_35946] -[group_35947] -[group_35948] -[group_35949] -[group_35950] -[group_35951] -[group_35952] -[group_35953] -[group_35954] -[group_35955] -[group_35956] -[group_35957] -[group_35958] -[group_35959] -[group_35960] -[group_35961] -[group_35962] -[group_35963] -[group_35964] -[group_35965] -[group_35966] -[group_35967] -[group_35968] -[group_35969] -[group_35970] -[group_35971] -[group_35972] -[group_35973] -[group_35974] -[group_35975] -[group_35976] -[group_35977] -[group_35978] -[group_35979] -[group_35980] -[group_35981] -[group_35982] -[group_35983] -[group_35984] -[group_35985] -[group_35986] -[group_35987] -[group_35988] -[group_35989] -[group_35990] -[group_35991] -[group_35992] -[group_35993] -[group_35994] -[group_35995] -[group_35996] -[group_35997] -[group_35998] -[group_35999] -[group_36000] -[group_36001] -[group_36002] -[group_36003] -[group_36004] -[group_36005] -[group_36006] -[group_36007] -[group_36008] -[group_36009] -[group_36010] -[group_36011] -[group_36012] -[group_36013] -[group_36014] -[group_36015] -[group_36016] -[group_36017] -[group_36018] -[group_36019] -[group_36020] -[group_36021] -[group_36022] -[group_36023] -[group_36024] -[group_36025] -[group_36026] -[group_36027] -[group_36028] -[group_36029] -[group_36030] -[group_36031] -[group_36032] -[group_36033] -[group_36034] -[group_36035] -[group_36036] -[group_36037] -[group_36038] -[group_36039] -[group_36040] -[group_36041] -[group_36042] -[group_36043] -[group_36044] -[group_36045] -[group_36046] -[group_36047] -[group_36048] -[group_36049] -[group_36050] -[group_36051] -[group_36052] -[group_36053] -[group_36054] -[group_36055] -[group_36056] -[group_36057] -[group_36058] -[group_36059] -[group_36060] -[group_36061] -[group_36062] -[group_36063] -[group_36064] -[group_36065] -[group_36066] -[group_36067] -[group_36068] -[group_36069] -[group_36070] -[group_36071] -[group_36072] -[group_36073] -[group_36074] -[group_36075] -[group_36076] -[group_36077] -[group_36078] -[group_36079] -[group_36080] -[group_36081] -[group_36082] -[group_36083] -[group_36084] -[group_36085] -[group_36086] -[group_36087] -[group_36088] -[group_36089] -[group_36090] -[group_36091] -[group_36092] -[group_36093] -[group_36094] -[group_36095] -[group_36096] -[group_36097] -[group_36098] -[group_36099] -[group_36100] -[group_36101] -[group_36102] -[group_36103] -[group_36104] -[group_36105] -[group_36106] -[group_36107] -[group_36108] -[group_36109] -[group_36110] -[group_36111] -[group_36112] -[group_36113] -[group_36114] -[group_36115] -[group_36116] -[group_36117] -[group_36118] -[group_36119] -[group_36120] -[group_36121] -[group_36122] -[group_36123] -[group_36124] -[group_36125] -[group_36126] -[group_36127] -[group_36128] -[group_36129] -[group_36130] -[group_36131] -[group_36132] -[group_36133] -[group_36134] -[group_36135] -[group_36136] -[group_36137] -[group_36138] -[group_36139] -[group_36140] -[group_36141] -[group_36142] -[group_36143] -[group_36144] -[group_36145] -[group_36146] -[group_36147] -[group_36148] -[group_36149] -[group_36150] -[group_36151] -[group_36152] -[group_36153] -[group_36154] -[group_36155] -[group_36156] -[group_36157] -[group_36158] -[group_36159] -[group_36160] -[group_36161] -[group_36162] -[group_36163] -[group_36164] -[group_36165] -[group_36166] -[group_36167] -[group_36168] -[group_36169] -[group_36170] -[group_36171] -[group_36172] -[group_36173] -[group_36174] -[group_36175] -[group_36176] -[group_36177] -[group_36178] -[group_36179] -[group_36180] -[group_36181] -[group_36182] -[group_36183] -[group_36184] -[group_36185] -[group_36186] -[group_36187] -[group_36188] -[group_36189] -[group_36190] -[group_36191] -[group_36192] -[group_36193] -[group_36194] -[group_36195] -[group_36196] -[group_36197] -[group_36198] -[group_36199] -[group_36200] -[group_36201] -[group_36202] -[group_36203] -[group_36204] -[group_36205] -[group_36206] -[group_36207] -[group_36208] -[group_36209] -[group_36210] -[group_36211] -[group_36212] -[group_36213] -[group_36214] -[group_36215] -[group_36216] -[group_36217] -[group_36218] -[group_36219] -[group_36220] -[group_36221] -[group_36222] -[group_36223] -[group_36224] -[group_36225] -[group_36226] -[group_36227] -[group_36228] -[group_36229] -[group_36230] -[group_36231] -[group_36232] -[group_36233] -[group_36234] -[group_36235] -[group_36236] -[group_36237] -[group_36238] -[group_36239] -[group_36240] -[group_36241] -[group_36242] -[group_36243] -[group_36244] -[group_36245] -[group_36246] -[group_36247] -[group_36248] -[group_36249] -[group_36250] -[group_36251] -[group_36252] -[group_36253] -[group_36254] -[group_36255] -[group_36256] -[group_36257] -[group_36258] -[group_36259] -[group_36260] -[group_36261] -[group_36262] -[group_36263] -[group_36264] -[group_36265] -[group_36266] -[group_36267] -[group_36268] -[group_36269] -[group_36270] -[group_36271] -[group_36272] -[group_36273] -[group_36274] -[group_36275] -[group_36276] -[group_36277] -[group_36278] -[group_36279] -[group_36280] -[group_36281] -[group_36282] -[group_36283] -[group_36284] -[group_36285] -[group_36286] -[group_36287] -[group_36288] -[group_36289] -[group_36290] -[group_36291] -[group_36292] -[group_36293] -[group_36294] -[group_36295] -[group_36296] -[group_36297] -[group_36298] -[group_36299] -[group_36300] -[group_36301] -[group_36302] -[group_36303] -[group_36304] -[group_36305] -[group_36306] -[group_36307] -[group_36308] -[group_36309] -[group_36310] -[group_36311] -[group_36312] -[group_36313] -[group_36314] -[group_36315] -[group_36316] -[group_36317] -[group_36318] -[group_36319] -[group_36320] -[group_36321] -[group_36322] -[group_36323] -[group_36324] -[group_36325] -[group_36326] -[group_36327] -[group_36328] -[group_36329] -[group_36330] -[group_36331] -[group_36332] -[group_36333] -[group_36334] -[group_36335] -[group_36336] -[group_36337] -[group_36338] -[group_36339] -[group_36340] -[group_36341] -[group_36342] -[group_36343] -[group_36344] -[group_36345] -[group_36346] -[group_36347] -[group_36348] -[group_36349] -[group_36350] -[group_36351] -[group_36352] -[group_36353] -[group_36354] -[group_36355] -[group_36356] -[group_36357] -[group_36358] -[group_36359] -[group_36360] -[group_36361] -[group_36362] -[group_36363] -[group_36364] -[group_36365] -[group_36366] -[group_36367] -[group_36368] -[group_36369] -[group_36370] -[group_36371] -[group_36372] -[group_36373] -[group_36374] -[group_36375] -[group_36376] -[group_36377] -[group_36378] -[group_36379] -[group_36380] -[group_36381] -[group_36382] -[group_36383] -[group_36384] -[group_36385] -[group_36386] -[group_36387] -[group_36388] -[group_36389] -[group_36390] -[group_36391] -[group_36392] -[group_36393] -[group_36394] -[group_36395] -[group_36396] -[group_36397] -[group_36398] -[group_36399] -[group_36400] -[group_36401] -[group_36402] -[group_36403] -[group_36404] -[group_36405] -[group_36406] -[group_36407] -[group_36408] -[group_36409] -[group_36410] -[group_36411] -[group_36412] -[group_36413] -[group_36414] -[group_36415] -[group_36416] -[group_36417] -[group_36418] -[group_36419] -[group_36420] -[group_36421] -[group_36422] -[group_36423] -[group_36424] -[group_36425] -[group_36426] -[group_36427] -[group_36428] -[group_36429] -[group_36430] -[group_36431] -[group_36432] -[group_36433] -[group_36434] -[group_36435] -[group_36436] -[group_36437] -[group_36438] -[group_36439] -[group_36440] -[group_36441] -[group_36442] -[group_36443] -[group_36444] -[group_36445] -[group_36446] -[group_36447] -[group_36448] -[group_36449] -[group_36450] -[group_36451] -[group_36452] -[group_36453] -[group_36454] -[group_36455] -[group_36456] -[group_36457] -[group_36458] -[group_36459] -[group_36460] -[group_36461] -[group_36462] -[group_36463] -[group_36464] -[group_36465] -[group_36466] -[group_36467] -[group_36468] -[group_36469] -[group_36470] -[group_36471] -[group_36472] -[group_36473] -[group_36474] -[group_36475] -[group_36476] -[group_36477] -[group_36478] -[group_36479] -[group_36480] -[group_36481] -[group_36482] -[group_36483] -[group_36484] -[group_36485] -[group_36486] -[group_36487] -[group_36488] -[group_36489] -[group_36490] -[group_36491] -[group_36492] -[group_36493] -[group_36494] -[group_36495] -[group_36496] -[group_36497] -[group_36498] -[group_36499] -[group_36500] -[group_36501] -[group_36502] -[group_36503] -[group_36504] -[group_36505] -[group_36506] -[group_36507] -[group_36508] -[group_36509] -[group_36510] -[group_36511] -[group_36512] -[group_36513] -[group_36514] -[group_36515] -[group_36516] -[group_36517] -[group_36518] -[group_36519] -[group_36520] -[group_36521] -[group_36522] -[group_36523] -[group_36524] -[group_36525] -[group_36526] -[group_36527] -[group_36528] -[group_36529] -[group_36530] -[group_36531] -[group_36532] -[group_36533] -[group_36534] -[group_36535] -[group_36536] -[group_36537] -[group_36538] -[group_36539] -[group_36540] -[group_36541] -[group_36542] -[group_36543] -[group_36544] -[group_36545] -[group_36546] -[group_36547] -[group_36548] -[group_36549] -[group_36550] -[group_36551] -[group_36552] -[group_36553] -[group_36554] -[group_36555] -[group_36556] -[group_36557] -[group_36558] -[group_36559] -[group_36560] -[group_36561] -[group_36562] -[group_36563] -[group_36564] -[group_36565] -[group_36566] -[group_36567] -[group_36568] -[group_36569] -[group_36570] -[group_36571] -[group_36572] -[group_36573] -[group_36574] -[group_36575] -[group_36576] -[group_36577] -[group_36578] -[group_36579] -[group_36580] -[group_36581] -[group_36582] -[group_36583] -[group_36584] -[group_36585] -[group_36586] -[group_36587] -[group_36588] -[group_36589] -[group_36590] -[group_36591] -[group_36592] -[group_36593] -[group_36594] -[group_36595] -[group_36596] -[group_36597] -[group_36598] -[group_36599] -[group_36600] -[group_36601] -[group_36602] -[group_36603] -[group_36604] -[group_36605] -[group_36606] -[group_36607] -[group_36608] -[group_36609] -[group_36610] -[group_36611] -[group_36612] -[group_36613] -[group_36614] -[group_36615] -[group_36616] -[group_36617] -[group_36618] -[group_36619] -[group_36620] -[group_36621] -[group_36622] -[group_36623] -[group_36624] -[group_36625] -[group_36626] -[group_36627] -[group_36628] -[group_36629] -[group_36630] -[group_36631] -[group_36632] -[group_36633] -[group_36634] -[group_36635] -[group_36636] -[group_36637] -[group_36638] -[group_36639] -[group_36640] -[group_36641] -[group_36642] -[group_36643] -[group_36644] -[group_36645] -[group_36646] -[group_36647] -[group_36648] -[group_36649] -[group_36650] -[group_36651] -[group_36652] -[group_36653] -[group_36654] -[group_36655] -[group_36656] -[group_36657] -[group_36658] -[group_36659] -[group_36660] -[group_36661] -[group_36662] -[group_36663] -[group_36664] -[group_36665] -[group_36666] -[group_36667] -[group_36668] -[group_36669] -[group_36670] -[group_36671] -[group_36672] -[group_36673] -[group_36674] -[group_36675] -[group_36676] -[group_36677] -[group_36678] -[group_36679] -[group_36680] -[group_36681] -[group_36682] -[group_36683] -[group_36684] -[group_36685] -[group_36686] -[group_36687] -[group_36688] -[group_36689] -[group_36690] -[group_36691] -[group_36692] -[group_36693] -[group_36694] -[group_36695] -[group_36696] -[group_36697] -[group_36698] -[group_36699] -[group_36700] -[group_36701] -[group_36702] -[group_36703] -[group_36704] -[group_36705] -[group_36706] -[group_36707] -[group_36708] -[group_36709] -[group_36710] -[group_36711] -[group_36712] -[group_36713] -[group_36714] -[group_36715] -[group_36716] -[group_36717] -[group_36718] -[group_36719] -[group_36720] -[group_36721] -[group_36722] -[group_36723] -[group_36724] -[group_36725] -[group_36726] -[group_36727] -[group_36728] -[group_36729] -[group_36730] -[group_36731] -[group_36732] -[group_36733] -[group_36734] -[group_36735] -[group_36736] -[group_36737] -[group_36738] -[group_36739] -[group_36740] -[group_36741] -[group_36742] -[group_36743] -[group_36744] -[group_36745] -[group_36746] -[group_36747] -[group_36748] -[group_36749] -[group_36750] -[group_36751] -[group_36752] -[group_36753] -[group_36754] -[group_36755] -[group_36756] -[group_36757] -[group_36758] -[group_36759] -[group_36760] -[group_36761] -[group_36762] -[group_36763] -[group_36764] -[group_36765] -[group_36766] -[group_36767] -[group_36768] -[group_36769] -[group_36770] -[group_36771] -[group_36772] -[group_36773] -[group_36774] -[group_36775] -[group_36776] -[group_36777] -[group_36778] -[group_36779] -[group_36780] -[group_36781] -[group_36782] -[group_36783] -[group_36784] -[group_36785] -[group_36786] -[group_36787] -[group_36788] -[group_36789] -[group_36790] -[group_36791] -[group_36792] -[group_36793] -[group_36794] -[group_36795] -[group_36796] -[group_36797] -[group_36798] -[group_36799] -[group_36800] -[group_36801] -[group_36802] -[group_36803] -[group_36804] -[group_36805] -[group_36806] -[group_36807] -[group_36808] -[group_36809] -[group_36810] -[group_36811] -[group_36812] -[group_36813] -[group_36814] -[group_36815] -[group_36816] -[group_36817] -[group_36818] -[group_36819] -[group_36820] -[group_36821] -[group_36822] -[group_36823] -[group_36824] -[group_36825] -[group_36826] -[group_36827] -[group_36828] -[group_36829] -[group_36830] -[group_36831] -[group_36832] -[group_36833] -[group_36834] -[group_36835] -[group_36836] -[group_36837] -[group_36838] -[group_36839] -[group_36840] -[group_36841] -[group_36842] -[group_36843] -[group_36844] -[group_36845] -[group_36846] -[group_36847] -[group_36848] -[group_36849] -[group_36850] -[group_36851] -[group_36852] -[group_36853] -[group_36854] -[group_36855] -[group_36856] -[group_36857] -[group_36858] -[group_36859] -[group_36860] -[group_36861] -[group_36862] -[group_36863] -[group_36864] -[group_36865] -[group_36866] -[group_36867] -[group_36868] -[group_36869] -[group_36870] -[group_36871] -[group_36872] -[group_36873] -[group_36874] -[group_36875] -[group_36876] -[group_36877] -[group_36878] -[group_36879] -[group_36880] -[group_36881] -[group_36882] -[group_36883] -[group_36884] -[group_36885] -[group_36886] -[group_36887] -[group_36888] -[group_36889] -[group_36890] -[group_36891] -[group_36892] -[group_36893] -[group_36894] -[group_36895] -[group_36896] -[group_36897] -[group_36898] -[group_36899] -[group_36900] -[group_36901] -[group_36902] -[group_36903] -[group_36904] -[group_36905] -[group_36906] -[group_36907] -[group_36908] -[group_36909] -[group_36910] -[group_36911] -[group_36912] -[group_36913] -[group_36914] -[group_36915] -[group_36916] -[group_36917] -[group_36918] -[group_36919] -[group_36920] -[group_36921] -[group_36922] -[group_36923] -[group_36924] -[group_36925] -[group_36926] -[group_36927] -[group_36928] -[group_36929] -[group_36930] -[group_36931] -[group_36932] -[group_36933] -[group_36934] -[group_36935] -[group_36936] -[group_36937] -[group_36938] -[group_36939] -[group_36940] -[group_36941] -[group_36942] -[group_36943] -[group_36944] -[group_36945] -[group_36946] -[group_36947] -[group_36948] -[group_36949] -[group_36950] -[group_36951] -[group_36952] -[group_36953] -[group_36954] -[group_36955] -[group_36956] -[group_36957] -[group_36958] -[group_36959] -[group_36960] -[group_36961] -[group_36962] -[group_36963] -[group_36964] -[group_36965] -[group_36966] -[group_36967] -[group_36968] -[group_36969] -[group_36970] -[group_36971] -[group_36972] -[group_36973] -[group_36974] -[group_36975] -[group_36976] -[group_36977] -[group_36978] -[group_36979] -[group_36980] -[group_36981] -[group_36982] -[group_36983] -[group_36984] -[group_36985] -[group_36986] -[group_36987] -[group_36988] -[group_36989] -[group_36990] -[group_36991] -[group_36992] -[group_36993] -[group_36994] -[group_36995] -[group_36996] -[group_36997] -[group_36998] -[group_36999] -[group_37000] -[group_37001] -[group_37002] -[group_37003] -[group_37004] -[group_37005] -[group_37006] -[group_37007] -[group_37008] -[group_37009] -[group_37010] -[group_37011] -[group_37012] -[group_37013] -[group_37014] -[group_37015] -[group_37016] -[group_37017] -[group_37018] -[group_37019] -[group_37020] -[group_37021] -[group_37022] -[group_37023] -[group_37024] -[group_37025] -[group_37026] -[group_37027] -[group_37028] -[group_37029] -[group_37030] -[group_37031] -[group_37032] -[group_37033] -[group_37034] -[group_37035] -[group_37036] -[group_37037] -[group_37038] -[group_37039] -[group_37040] -[group_37041] -[group_37042] -[group_37043] -[group_37044] -[group_37045] -[group_37046] -[group_37047] -[group_37048] -[group_37049] -[group_37050] -[group_37051] -[group_37052] -[group_37053] -[group_37054] -[group_37055] -[group_37056] -[group_37057] -[group_37058] -[group_37059] -[group_37060] -[group_37061] -[group_37062] -[group_37063] -[group_37064] -[group_37065] -[group_37066] -[group_37067] -[group_37068] -[group_37069] -[group_37070] -[group_37071] -[group_37072] -[group_37073] -[group_37074] -[group_37075] -[group_37076] -[group_37077] -[group_37078] -[group_37079] -[group_37080] -[group_37081] -[group_37082] -[group_37083] -[group_37084] -[group_37085] -[group_37086] -[group_37087] -[group_37088] -[group_37089] -[group_37090] -[group_37091] -[group_37092] -[group_37093] -[group_37094] -[group_37095] -[group_37096] -[group_37097] -[group_37098] -[group_37099] -[group_37100] -[group_37101] -[group_37102] -[group_37103] -[group_37104] -[group_37105] -[group_37106] -[group_37107] -[group_37108] -[group_37109] -[group_37110] -[group_37111] -[group_37112] -[group_37113] -[group_37114] -[group_37115] -[group_37116] -[group_37117] -[group_37118] -[group_37119] -[group_37120] -[group_37121] -[group_37122] -[group_37123] -[group_37124] -[group_37125] -[group_37126] -[group_37127] -[group_37128] -[group_37129] -[group_37130] -[group_37131] -[group_37132] -[group_37133] -[group_37134] -[group_37135] -[group_37136] -[group_37137] -[group_37138] -[group_37139] -[group_37140] -[group_37141] -[group_37142] -[group_37143] -[group_37144] -[group_37145] -[group_37146] -[group_37147] -[group_37148] -[group_37149] -[group_37150] -[group_37151] -[group_37152] -[group_37153] -[group_37154] -[group_37155] -[group_37156] -[group_37157] -[group_37158] -[group_37159] -[group_37160] -[group_37161] -[group_37162] -[group_37163] -[group_37164] -[group_37165] -[group_37166] -[group_37167] -[group_37168] -[group_37169] -[group_37170] -[group_37171] -[group_37172] -[group_37173] -[group_37174] -[group_37175] -[group_37176] -[group_37177] -[group_37178] -[group_37179] -[group_37180] -[group_37181] -[group_37182] -[group_37183] -[group_37184] -[group_37185] -[group_37186] -[group_37187] -[group_37188] -[group_37189] -[group_37190] -[group_37191] -[group_37192] -[group_37193] -[group_37194] -[group_37195] -[group_37196] -[group_37197] -[group_37198] -[group_37199] -[group_37200] -[group_37201] -[group_37202] -[group_37203] -[group_37204] -[group_37205] -[group_37206] -[group_37207] -[group_37208] -[group_37209] -[group_37210] -[group_37211] -[group_37212] -[group_37213] -[group_37214] -[group_37215] -[group_37216] -[group_37217] -[group_37218] -[group_37219] -[group_37220] -[group_37221] -[group_37222] -[group_37223] -[group_37224] -[group_37225] -[group_37226] -[group_37227] -[group_37228] -[group_37229] -[group_37230] -[group_37231] -[group_37232] -[group_37233] -[group_37234] -[group_37235] -[group_37236] -[group_37237] -[group_37238] -[group_37239] -[group_37240] -[group_37241] -[group_37242] -[group_37243] -[group_37244] -[group_37245] -[group_37246] -[group_37247] -[group_37248] -[group_37249] -[group_37250] -[group_37251] -[group_37252] -[group_37253] -[group_37254] -[group_37255] -[group_37256] -[group_37257] -[group_37258] -[group_37259] -[group_37260] -[group_37261] -[group_37262] -[group_37263] -[group_37264] -[group_37265] -[group_37266] -[group_37267] -[group_37268] -[group_37269] -[group_37270] -[group_37271] -[group_37272] -[group_37273] -[group_37274] -[group_37275] -[group_37276] -[group_37277] -[group_37278] -[group_37279] -[group_37280] -[group_37281] -[group_37282] -[group_37283] -[group_37284] -[group_37285] -[group_37286] -[group_37287] -[group_37288] -[group_37289] -[group_37290] -[group_37291] -[group_37292] -[group_37293] -[group_37294] -[group_37295] -[group_37296] -[group_37297] -[group_37298] -[group_37299] -[group_37300] -[group_37301] -[group_37302] -[group_37303] -[group_37304] -[group_37305] -[group_37306] -[group_37307] -[group_37308] -[group_37309] -[group_37310] -[group_37311] -[group_37312] -[group_37313] -[group_37314] -[group_37315] -[group_37316] -[group_37317] -[group_37318] -[group_37319] -[group_37320] -[group_37321] -[group_37322] -[group_37323] -[group_37324] -[group_37325] -[group_37326] -[group_37327] -[group_37328] -[group_37329] -[group_37330] -[group_37331] -[group_37332] -[group_37333] -[group_37334] -[group_37335] -[group_37336] -[group_37337] -[group_37338] -[group_37339] -[group_37340] -[group_37341] -[group_37342] -[group_37343] -[group_37344] -[group_37345] -[group_37346] -[group_37347] -[group_37348] -[group_37349] -[group_37350] -[group_37351] -[group_37352] -[group_37353] -[group_37354] -[group_37355] -[group_37356] -[group_37357] -[group_37358] -[group_37359] -[group_37360] -[group_37361] -[group_37362] -[group_37363] -[group_37364] -[group_37365] -[group_37366] -[group_37367] -[group_37368] -[group_37369] -[group_37370] -[group_37371] -[group_37372] -[group_37373] -[group_37374] -[group_37375] -[group_37376] -[group_37377] -[group_37378] -[group_37379] -[group_37380] -[group_37381] -[group_37382] -[group_37383] -[group_37384] -[group_37385] -[group_37386] -[group_37387] -[group_37388] -[group_37389] -[group_37390] -[group_37391] -[group_37392] -[group_37393] -[group_37394] -[group_37395] -[group_37396] -[group_37397] -[group_37398] -[group_37399] -[group_37400] -[group_37401] -[group_37402] -[group_37403] -[group_37404] -[group_37405] -[group_37406] -[group_37407] -[group_37408] -[group_37409] -[group_37410] -[group_37411] -[group_37412] -[group_37413] -[group_37414] -[group_37415] -[group_37416] -[group_37417] -[group_37418] -[group_37419] -[group_37420] -[group_37421] -[group_37422] -[group_37423] -[group_37424] -[group_37425] -[group_37426] -[group_37427] -[group_37428] -[group_37429] -[group_37430] -[group_37431] -[group_37432] -[group_37433] -[group_37434] -[group_37435] -[group_37436] -[group_37437] -[group_37438] -[group_37439] -[group_37440] -[group_37441] -[group_37442] -[group_37443] -[group_37444] -[group_37445] -[group_37446] -[group_37447] -[group_37448] -[group_37449] -[group_37450] -[group_37451] -[group_37452] -[group_37453] -[group_37454] -[group_37455] -[group_37456] -[group_37457] -[group_37458] -[group_37459] -[group_37460] -[group_37461] -[group_37462] -[group_37463] -[group_37464] -[group_37465] -[group_37466] -[group_37467] -[group_37468] -[group_37469] -[group_37470] -[group_37471] -[group_37472] -[group_37473] -[group_37474] -[group_37475] -[group_37476] -[group_37477] -[group_37478] -[group_37479] -[group_37480] -[group_37481] -[group_37482] -[group_37483] -[group_37484] -[group_37485] -[group_37486] -[group_37487] -[group_37488] -[group_37489] -[group_37490] -[group_37491] -[group_37492] -[group_37493] -[group_37494] -[group_37495] -[group_37496] -[group_37497] -[group_37498] -[group_37499] -[group_37500] -[group_37501] -[group_37502] -[group_37503] -[group_37504] -[group_37505] -[group_37506] -[group_37507] -[group_37508] -[group_37509] -[group_37510] -[group_37511] -[group_37512] -[group_37513] -[group_37514] -[group_37515] -[group_37516] -[group_37517] -[group_37518] -[group_37519] -[group_37520] -[group_37521] -[group_37522] -[group_37523] -[group_37524] -[group_37525] -[group_37526] -[group_37527] -[group_37528] -[group_37529] -[group_37530] -[group_37531] -[group_37532] -[group_37533] -[group_37534] -[group_37535] -[group_37536] -[group_37537] -[group_37538] -[group_37539] -[group_37540] -[group_37541] -[group_37542] -[group_37543] -[group_37544] -[group_37545] -[group_37546] -[group_37547] -[group_37548] -[group_37549] -[group_37550] -[group_37551] -[group_37552] -[group_37553] -[group_37554] -[group_37555] -[group_37556] -[group_37557] -[group_37558] -[group_37559] -[group_37560] -[group_37561] -[group_37562] -[group_37563] -[group_37564] -[group_37565] -[group_37566] -[group_37567] -[group_37568] -[group_37569] -[group_37570] -[group_37571] -[group_37572] -[group_37573] -[group_37574] -[group_37575] -[group_37576] -[group_37577] -[group_37578] -[group_37579] -[group_37580] -[group_37581] -[group_37582] -[group_37583] -[group_37584] -[group_37585] -[group_37586] -[group_37587] -[group_37588] -[group_37589] -[group_37590] -[group_37591] -[group_37592] -[group_37593] -[group_37594] -[group_37595] -[group_37596] -[group_37597] -[group_37598] -[group_37599] -[group_37600] -[group_37601] -[group_37602] -[group_37603] -[group_37604] -[group_37605] -[group_37606] -[group_37607] -[group_37608] -[group_37609] -[group_37610] -[group_37611] -[group_37612] -[group_37613] -[group_37614] -[group_37615] -[group_37616] -[group_37617] -[group_37618] -[group_37619] -[group_37620] -[group_37621] -[group_37622] -[group_37623] -[group_37624] -[group_37625] -[group_37626] -[group_37627] -[group_37628] -[group_37629] -[group_37630] -[group_37631] -[group_37632] -[group_37633] -[group_37634] -[group_37635] -[group_37636] -[group_37637] -[group_37638] -[group_37639] -[group_37640] -[group_37641] -[group_37642] -[group_37643] -[group_37644] -[group_37645] -[group_37646] -[group_37647] -[group_37648] -[group_37649] -[group_37650] -[group_37651] -[group_37652] -[group_37653] -[group_37654] -[group_37655] -[group_37656] -[group_37657] -[group_37658] -[group_37659] -[group_37660] -[group_37661] -[group_37662] -[group_37663] -[group_37664] -[group_37665] -[group_37666] -[group_37667] -[group_37668] -[group_37669] -[group_37670] -[group_37671] -[group_37672] -[group_37673] -[group_37674] -[group_37675] -[group_37676] -[group_37677] -[group_37678] -[group_37679] -[group_37680] -[group_37681] -[group_37682] -[group_37683] -[group_37684] -[group_37685] -[group_37686] -[group_37687] -[group_37688] -[group_37689] -[group_37690] -[group_37691] -[group_37692] -[group_37693] -[group_37694] -[group_37695] -[group_37696] -[group_37697] -[group_37698] -[group_37699] -[group_37700] -[group_37701] -[group_37702] -[group_37703] -[group_37704] -[group_37705] -[group_37706] -[group_37707] -[group_37708] -[group_37709] -[group_37710] -[group_37711] -[group_37712] -[group_37713] -[group_37714] -[group_37715] -[group_37716] -[group_37717] -[group_37718] -[group_37719] -[group_37720] -[group_37721] -[group_37722] -[group_37723] -[group_37724] -[group_37725] -[group_37726] -[group_37727] -[group_37728] -[group_37729] -[group_37730] -[group_37731] -[group_37732] -[group_37733] -[group_37734] -[group_37735] -[group_37736] -[group_37737] -[group_37738] -[group_37739] -[group_37740] -[group_37741] -[group_37742] -[group_37743] -[group_37744] -[group_37745] -[group_37746] -[group_37747] -[group_37748] -[group_37749] -[group_37750] -[group_37751] -[group_37752] -[group_37753] -[group_37754] -[group_37755] -[group_37756] -[group_37757] -[group_37758] -[group_37759] -[group_37760] -[group_37761] -[group_37762] -[group_37763] -[group_37764] -[group_37765] -[group_37766] -[group_37767] -[group_37768] -[group_37769] -[group_37770] -[group_37771] -[group_37772] -[group_37773] -[group_37774] -[group_37775] -[group_37776] -[group_37777] -[group_37778] -[group_37779] -[group_37780] -[group_37781] -[group_37782] -[group_37783] -[group_37784] -[group_37785] -[group_37786] -[group_37787] -[group_37788] -[group_37789] -[group_37790] -[group_37791] -[group_37792] -[group_37793] -[group_37794] -[group_37795] -[group_37796] -[group_37797] -[group_37798] -[group_37799] -[group_37800] -[group_37801] -[group_37802] -[group_37803] -[group_37804] -[group_37805] -[group_37806] -[group_37807] -[group_37808] -[group_37809] -[group_37810] -[group_37811] -[group_37812] -[group_37813] -[group_37814] -[group_37815] -[group_37816] -[group_37817] -[group_37818] -[group_37819] -[group_37820] -[group_37821] -[group_37822] -[group_37823] -[group_37824] -[group_37825] -[group_37826] -[group_37827] -[group_37828] -[group_37829] -[group_37830] -[group_37831] -[group_37832] -[group_37833] -[group_37834] -[group_37835] -[group_37836] -[group_37837] -[group_37838] -[group_37839] -[group_37840] -[group_37841] -[group_37842] -[group_37843] -[group_37844] -[group_37845] -[group_37846] -[group_37847] -[group_37848] -[group_37849] -[group_37850] -[group_37851] -[group_37852] -[group_37853] -[group_37854] -[group_37855] -[group_37856] -[group_37857] -[group_37858] -[group_37859] -[group_37860] -[group_37861] -[group_37862] -[group_37863] -[group_37864] -[group_37865] -[group_37866] -[group_37867] -[group_37868] -[group_37869] -[group_37870] -[group_37871] -[group_37872] -[group_37873] -[group_37874] -[group_37875] -[group_37876] -[group_37877] -[group_37878] -[group_37879] -[group_37880] -[group_37881] -[group_37882] -[group_37883] -[group_37884] -[group_37885] -[group_37886] -[group_37887] -[group_37888] -[group_37889] -[group_37890] -[group_37891] -[group_37892] -[group_37893] -[group_37894] -[group_37895] -[group_37896] -[group_37897] -[group_37898] -[group_37899] -[group_37900] -[group_37901] -[group_37902] -[group_37903] -[group_37904] -[group_37905] -[group_37906] -[group_37907] -[group_37908] -[group_37909] -[group_37910] -[group_37911] -[group_37912] -[group_37913] -[group_37914] -[group_37915] -[group_37916] -[group_37917] -[group_37918] -[group_37919] -[group_37920] -[group_37921] -[group_37922] -[group_37923] -[group_37924] -[group_37925] -[group_37926] -[group_37927] -[group_37928] -[group_37929] -[group_37930] -[group_37931] -[group_37932] -[group_37933] -[group_37934] -[group_37935] -[group_37936] -[group_37937] -[group_37938] -[group_37939] -[group_37940] -[group_37941] -[group_37942] -[group_37943] -[group_37944] -[group_37945] -[group_37946] -[group_37947] -[group_37948] -[group_37949] -[group_37950] -[group_37951] -[group_37952] -[group_37953] -[group_37954] -[group_37955] -[group_37956] -[group_37957] -[group_37958] -[group_37959] -[group_37960] -[group_37961] -[group_37962] -[group_37963] -[group_37964] -[group_37965] -[group_37966] -[group_37967] -[group_37968] -[group_37969] -[group_37970] -[group_37971] -[group_37972] -[group_37973] -[group_37974] -[group_37975] -[group_37976] -[group_37977] -[group_37978] -[group_37979] -[group_37980] -[group_37981] -[group_37982] -[group_37983] -[group_37984] -[group_37985] -[group_37986] -[group_37987] -[group_37988] -[group_37989] -[group_37990] -[group_37991] -[group_37992] -[group_37993] -[group_37994] -[group_37995] -[group_37996] -[group_37997] -[group_37998] -[group_37999] -[group_38000] -[group_38001] -[group_38002] -[group_38003] -[group_38004] -[group_38005] -[group_38006] -[group_38007] -[group_38008] -[group_38009] -[group_38010] -[group_38011] -[group_38012] -[group_38013] -[group_38014] -[group_38015] -[group_38016] -[group_38017] -[group_38018] -[group_38019] -[group_38020] -[group_38021] -[group_38022] -[group_38023] -[group_38024] -[group_38025] -[group_38026] -[group_38027] -[group_38028] -[group_38029] -[group_38030] -[group_38031] -[group_38032] -[group_38033] -[group_38034] -[group_38035] -[group_38036] -[group_38037] -[group_38038] -[group_38039] -[group_38040] -[group_38041] -[group_38042] -[group_38043] -[group_38044] -[group_38045] -[group_38046] -[group_38047] -[group_38048] -[group_38049] -[group_38050] -[group_38051] -[group_38052] -[group_38053] -[group_38054] -[group_38055] -[group_38056] -[group_38057] -[group_38058] -[group_38059] -[group_38060] -[group_38061] -[group_38062] -[group_38063] -[group_38064] -[group_38065] -[group_38066] -[group_38067] -[group_38068] -[group_38069] -[group_38070] -[group_38071] -[group_38072] -[group_38073] -[group_38074] -[group_38075] -[group_38076] -[group_38077] -[group_38078] -[group_38079] -[group_38080] -[group_38081] -[group_38082] -[group_38083] -[group_38084] -[group_38085] -[group_38086] -[group_38087] -[group_38088] -[group_38089] -[group_38090] -[group_38091] -[group_38092] -[group_38093] -[group_38094] -[group_38095] -[group_38096] -[group_38097] -[group_38098] -[group_38099] -[group_38100] -[group_38101] -[group_38102] -[group_38103] -[group_38104] -[group_38105] -[group_38106] -[group_38107] -[group_38108] -[group_38109] -[group_38110] -[group_38111] -[group_38112] -[group_38113] -[group_38114] -[group_38115] -[group_38116] -[group_38117] -[group_38118] -[group_38119] -[group_38120] -[group_38121] -[group_38122] -[group_38123] -[group_38124] -[group_38125] -[group_38126] -[group_38127] -[group_38128] -[group_38129] -[group_38130] -[group_38131] -[group_38132] -[group_38133] -[group_38134] -[group_38135] -[group_38136] -[group_38137] -[group_38138] -[group_38139] -[group_38140] -[group_38141] -[group_38142] -[group_38143] -[group_38144] -[group_38145] -[group_38146] -[group_38147] -[group_38148] -[group_38149] -[group_38150] -[group_38151] -[group_38152] -[group_38153] -[group_38154] -[group_38155] -[group_38156] -[group_38157] -[group_38158] -[group_38159] -[group_38160] -[group_38161] -[group_38162] -[group_38163] -[group_38164] -[group_38165] -[group_38166] -[group_38167] -[group_38168] -[group_38169] -[group_38170] -[group_38171] -[group_38172] -[group_38173] -[group_38174] -[group_38175] -[group_38176] -[group_38177] -[group_38178] -[group_38179] -[group_38180] -[group_38181] -[group_38182] -[group_38183] -[group_38184] -[group_38185] -[group_38186] -[group_38187] -[group_38188] -[group_38189] -[group_38190] -[group_38191] -[group_38192] -[group_38193] -[group_38194] -[group_38195] -[group_38196] -[group_38197] -[group_38198] -[group_38199] -[group_38200] -[group_38201] -[group_38202] -[group_38203] -[group_38204] -[group_38205] -[group_38206] -[group_38207] -[group_38208] -[group_38209] -[group_38210] -[group_38211] -[group_38212] -[group_38213] -[group_38214] -[group_38215] -[group_38216] -[group_38217] -[group_38218] -[group_38219] -[group_38220] -[group_38221] -[group_38222] -[group_38223] -[group_38224] -[group_38225] -[group_38226] -[group_38227] -[group_38228] -[group_38229] -[group_38230] -[group_38231] -[group_38232] -[group_38233] -[group_38234] -[group_38235] -[group_38236] -[group_38237] -[group_38238] -[group_38239] -[group_38240] -[group_38241] -[group_38242] -[group_38243] -[group_38244] -[group_38245] -[group_38246] -[group_38247] -[group_38248] -[group_38249] -[group_38250] -[group_38251] -[group_38252] -[group_38253] -[group_38254] -[group_38255] -[group_38256] -[group_38257] -[group_38258] -[group_38259] -[group_38260] -[group_38261] -[group_38262] -[group_38263] -[group_38264] -[group_38265] -[group_38266] -[group_38267] -[group_38268] -[group_38269] -[group_38270] -[group_38271] -[group_38272] -[group_38273] -[group_38274] -[group_38275] -[group_38276] -[group_38277] -[group_38278] -[group_38279] -[group_38280] -[group_38281] -[group_38282] -[group_38283] -[group_38284] -[group_38285] -[group_38286] -[group_38287] -[group_38288] -[group_38289] -[group_38290] -[group_38291] -[group_38292] -[group_38293] -[group_38294] -[group_38295] -[group_38296] -[group_38297] -[group_38298] -[group_38299] -[group_38300] -[group_38301] -[group_38302] -[group_38303] -[group_38304] -[group_38305] -[group_38306] -[group_38307] -[group_38308] -[group_38309] -[group_38310] -[group_38311] -[group_38312] -[group_38313] -[group_38314] -[group_38315] -[group_38316] -[group_38317] -[group_38318] -[group_38319] -[group_38320] -[group_38321] -[group_38322] -[group_38323] -[group_38324] -[group_38325] -[group_38326] -[group_38327] -[group_38328] -[group_38329] -[group_38330] -[group_38331] -[group_38332] -[group_38333] -[group_38334] -[group_38335] -[group_38336] -[group_38337] -[group_38338] -[group_38339] -[group_38340] -[group_38341] -[group_38342] -[group_38343] -[group_38344] -[group_38345] -[group_38346] -[group_38347] -[group_38348] -[group_38349] -[group_38350] -[group_38351] -[group_38352] -[group_38353] -[group_38354] -[group_38355] -[group_38356] -[group_38357] -[group_38358] -[group_38359] -[group_38360] -[group_38361] -[group_38362] -[group_38363] -[group_38364] -[group_38365] -[group_38366] -[group_38367] -[group_38368] -[group_38369] -[group_38370] -[group_38371] -[group_38372] -[group_38373] -[group_38374] -[group_38375] -[group_38376] -[group_38377] -[group_38378] -[group_38379] -[group_38380] -[group_38381] -[group_38382] -[group_38383] -[group_38384] -[group_38385] -[group_38386] -[group_38387] -[group_38388] -[group_38389] -[group_38390] -[group_38391] -[group_38392] -[group_38393] -[group_38394] -[group_38395] -[group_38396] -[group_38397] -[group_38398] -[group_38399] -[group_38400] -[group_38401] -[group_38402] -[group_38403] -[group_38404] -[group_38405] -[group_38406] -[group_38407] -[group_38408] -[group_38409] -[group_38410] -[group_38411] -[group_38412] -[group_38413] -[group_38414] -[group_38415] -[group_38416] -[group_38417] -[group_38418] -[group_38419] -[group_38420] -[group_38421] -[group_38422] -[group_38423] -[group_38424] -[group_38425] -[group_38426] -[group_38427] -[group_38428] -[group_38429] -[group_38430] -[group_38431] -[group_38432] -[group_38433] -[group_38434] -[group_38435] -[group_38436] -[group_38437] -[group_38438] -[group_38439] -[group_38440] -[group_38441] -[group_38442] -[group_38443] -[group_38444] -[group_38445] -[group_38446] -[group_38447] -[group_38448] -[group_38449] -[group_38450] -[group_38451] -[group_38452] -[group_38453] -[group_38454] -[group_38455] -[group_38456] -[group_38457] -[group_38458] -[group_38459] -[group_38460] -[group_38461] -[group_38462] -[group_38463] -[group_38464] -[group_38465] -[group_38466] -[group_38467] -[group_38468] -[group_38469] -[group_38470] -[group_38471] -[group_38472] -[group_38473] -[group_38474] -[group_38475] -[group_38476] -[group_38477] -[group_38478] -[group_38479] -[group_38480] -[group_38481] -[group_38482] -[group_38483] -[group_38484] -[group_38485] -[group_38486] -[group_38487] -[group_38488] -[group_38489] -[group_38490] -[group_38491] -[group_38492] -[group_38493] -[group_38494] -[group_38495] -[group_38496] -[group_38497] -[group_38498] -[group_38499] -[group_38500] -[group_38501] -[group_38502] -[group_38503] -[group_38504] -[group_38505] -[group_38506] -[group_38507] -[group_38508] -[group_38509] -[group_38510] -[group_38511] -[group_38512] -[group_38513] -[group_38514] -[group_38515] -[group_38516] -[group_38517] -[group_38518] -[group_38519] -[group_38520] -[group_38521] -[group_38522] -[group_38523] -[group_38524] -[group_38525] -[group_38526] -[group_38527] -[group_38528] -[group_38529] -[group_38530] -[group_38531] -[group_38532] -[group_38533] -[group_38534] -[group_38535] -[group_38536] -[group_38537] -[group_38538] -[group_38539] -[group_38540] -[group_38541] -[group_38542] -[group_38543] -[group_38544] -[group_38545] -[group_38546] -[group_38547] -[group_38548] -[group_38549] -[group_38550] -[group_38551] -[group_38552] -[group_38553] -[group_38554] -[group_38555] -[group_38556] -[group_38557] -[group_38558] -[group_38559] -[group_38560] -[group_38561] -[group_38562] -[group_38563] -[group_38564] -[group_38565] -[group_38566] -[group_38567] -[group_38568] -[group_38569] -[group_38570] -[group_38571] -[group_38572] -[group_38573] -[group_38574] -[group_38575] -[group_38576] -[group_38577] -[group_38578] -[group_38579] -[group_38580] -[group_38581] -[group_38582] -[group_38583] -[group_38584] -[group_38585] -[group_38586] -[group_38587] -[group_38588] -[group_38589] -[group_38590] -[group_38591] -[group_38592] -[group_38593] -[group_38594] -[group_38595] -[group_38596] -[group_38597] -[group_38598] -[group_38599] -[group_38600] -[group_38601] -[group_38602] -[group_38603] -[group_38604] -[group_38605] -[group_38606] -[group_38607] -[group_38608] -[group_38609] -[group_38610] -[group_38611] -[group_38612] -[group_38613] -[group_38614] -[group_38615] -[group_38616] -[group_38617] -[group_38618] -[group_38619] -[group_38620] -[group_38621] -[group_38622] -[group_38623] -[group_38624] -[group_38625] -[group_38626] -[group_38627] -[group_38628] -[group_38629] -[group_38630] -[group_38631] -[group_38632] -[group_38633] -[group_38634] -[group_38635] -[group_38636] -[group_38637] -[group_38638] -[group_38639] -[group_38640] -[group_38641] -[group_38642] -[group_38643] -[group_38644] -[group_38645] -[group_38646] -[group_38647] -[group_38648] -[group_38649] -[group_38650] -[group_38651] -[group_38652] -[group_38653] -[group_38654] -[group_38655] -[group_38656] -[group_38657] -[group_38658] -[group_38659] -[group_38660] -[group_38661] -[group_38662] -[group_38663] -[group_38664] -[group_38665] -[group_38666] -[group_38667] -[group_38668] -[group_38669] -[group_38670] -[group_38671] -[group_38672] -[group_38673] -[group_38674] -[group_38675] -[group_38676] -[group_38677] -[group_38678] -[group_38679] -[group_38680] -[group_38681] -[group_38682] -[group_38683] -[group_38684] -[group_38685] -[group_38686] -[group_38687] -[group_38688] -[group_38689] -[group_38690] -[group_38691] -[group_38692] -[group_38693] -[group_38694] -[group_38695] -[group_38696] -[group_38697] -[group_38698] -[group_38699] -[group_38700] -[group_38701] -[group_38702] -[group_38703] -[group_38704] -[group_38705] -[group_38706] -[group_38707] -[group_38708] -[group_38709] -[group_38710] -[group_38711] -[group_38712] -[group_38713] -[group_38714] -[group_38715] -[group_38716] -[group_38717] -[group_38718] -[group_38719] -[group_38720] -[group_38721] -[group_38722] -[group_38723] -[group_38724] -[group_38725] -[group_38726] -[group_38727] -[group_38728] -[group_38729] -[group_38730] -[group_38731] -[group_38732] -[group_38733] -[group_38734] -[group_38735] -[group_38736] -[group_38737] -[group_38738] -[group_38739] -[group_38740] -[group_38741] -[group_38742] -[group_38743] -[group_38744] -[group_38745] -[group_38746] -[group_38747] -[group_38748] -[group_38749] -[group_38750] -[group_38751] -[group_38752] -[group_38753] -[group_38754] -[group_38755] -[group_38756] -[group_38757] -[group_38758] -[group_38759] -[group_38760] -[group_38761] -[group_38762] -[group_38763] -[group_38764] -[group_38765] -[group_38766] -[group_38767] -[group_38768] -[group_38769] -[group_38770] -[group_38771] -[group_38772] -[group_38773] -[group_38774] -[group_38775] -[group_38776] -[group_38777] -[group_38778] -[group_38779] -[group_38780] -[group_38781] -[group_38782] -[group_38783] -[group_38784] -[group_38785] -[group_38786] -[group_38787] -[group_38788] -[group_38789] -[group_38790] -[group_38791] -[group_38792] -[group_38793] -[group_38794] -[group_38795] -[group_38796] -[group_38797] -[group_38798] -[group_38799] -[group_38800] -[group_38801] -[group_38802] -[group_38803] -[group_38804] -[group_38805] -[group_38806] -[group_38807] -[group_38808] -[group_38809] -[group_38810] -[group_38811] -[group_38812] -[group_38813] -[group_38814] -[group_38815] -[group_38816] -[group_38817] -[group_38818] -[group_38819] -[group_38820] -[group_38821] -[group_38822] -[group_38823] -[group_38824] -[group_38825] -[group_38826] -[group_38827] -[group_38828] -[group_38829] -[group_38830] -[group_38831] -[group_38832] -[group_38833] -[group_38834] -[group_38835] -[group_38836] -[group_38837] -[group_38838] -[group_38839] -[group_38840] -[group_38841] -[group_38842] -[group_38843] -[group_38844] -[group_38845] -[group_38846] -[group_38847] -[group_38848] -[group_38849] -[group_38850] -[group_38851] -[group_38852] -[group_38853] -[group_38854] -[group_38855] -[group_38856] -[group_38857] -[group_38858] -[group_38859] -[group_38860] -[group_38861] -[group_38862] -[group_38863] -[group_38864] -[group_38865] -[group_38866] -[group_38867] -[group_38868] -[group_38869] -[group_38870] -[group_38871] -[group_38872] -[group_38873] -[group_38874] -[group_38875] -[group_38876] -[group_38877] -[group_38878] -[group_38879] -[group_38880] -[group_38881] -[group_38882] -[group_38883] -[group_38884] -[group_38885] -[group_38886] -[group_38887] -[group_38888] -[group_38889] -[group_38890] -[group_38891] -[group_38892] -[group_38893] -[group_38894] -[group_38895] -[group_38896] -[group_38897] -[group_38898] -[group_38899] -[group_38900] -[group_38901] -[group_38902] -[group_38903] -[group_38904] -[group_38905] -[group_38906] -[group_38907] -[group_38908] -[group_38909] -[group_38910] -[group_38911] -[group_38912] -[group_38913] -[group_38914] -[group_38915] -[group_38916] -[group_38917] -[group_38918] -[group_38919] -[group_38920] -[group_38921] -[group_38922] -[group_38923] -[group_38924] -[group_38925] -[group_38926] -[group_38927] -[group_38928] -[group_38929] -[group_38930] -[group_38931] -[group_38932] -[group_38933] -[group_38934] -[group_38935] -[group_38936] -[group_38937] -[group_38938] -[group_38939] -[group_38940] -[group_38941] -[group_38942] -[group_38943] -[group_38944] -[group_38945] -[group_38946] -[group_38947] -[group_38948] -[group_38949] -[group_38950] -[group_38951] -[group_38952] -[group_38953] -[group_38954] -[group_38955] -[group_38956] -[group_38957] -[group_38958] -[group_38959] -[group_38960] -[group_38961] -[group_38962] -[group_38963] -[group_38964] -[group_38965] -[group_38966] -[group_38967] -[group_38968] -[group_38969] -[group_38970] -[group_38971] -[group_38972] -[group_38973] -[group_38974] -[group_38975] -[group_38976] -[group_38977] -[group_38978] -[group_38979] -[group_38980] -[group_38981] -[group_38982] -[group_38983] -[group_38984] -[group_38985] -[group_38986] -[group_38987] -[group_38988] -[group_38989] -[group_38990] -[group_38991] -[group_38992] -[group_38993] -[group_38994] -[group_38995] -[group_38996] -[group_38997] -[group_38998] -[group_38999] -[group_39000] -[group_39001] -[group_39002] -[group_39003] -[group_39004] -[group_39005] -[group_39006] -[group_39007] -[group_39008] -[group_39009] -[group_39010] -[group_39011] -[group_39012] -[group_39013] -[group_39014] -[group_39015] -[group_39016] -[group_39017] -[group_39018] -[group_39019] -[group_39020] -[group_39021] -[group_39022] -[group_39023] -[group_39024] -[group_39025] -[group_39026] -[group_39027] -[group_39028] -[group_39029] -[group_39030] -[group_39031] -[group_39032] -[group_39033] -[group_39034] -[group_39035] -[group_39036] -[group_39037] -[group_39038] -[group_39039] -[group_39040] -[group_39041] -[group_39042] -[group_39043] -[group_39044] -[group_39045] -[group_39046] -[group_39047] -[group_39048] -[group_39049] -[group_39050] -[group_39051] -[group_39052] -[group_39053] -[group_39054] -[group_39055] -[group_39056] -[group_39057] -[group_39058] -[group_39059] -[group_39060] -[group_39061] -[group_39062] -[group_39063] -[group_39064] -[group_39065] -[group_39066] -[group_39067] -[group_39068] -[group_39069] -[group_39070] -[group_39071] -[group_39072] -[group_39073] -[group_39074] -[group_39075] -[group_39076] -[group_39077] -[group_39078] -[group_39079] -[group_39080] -[group_39081] -[group_39082] -[group_39083] -[group_39084] -[group_39085] -[group_39086] -[group_39087] -[group_39088] -[group_39089] -[group_39090] -[group_39091] -[group_39092] -[group_39093] -[group_39094] -[group_39095] -[group_39096] -[group_39097] -[group_39098] -[group_39099] -[group_39100] -[group_39101] -[group_39102] -[group_39103] -[group_39104] -[group_39105] -[group_39106] -[group_39107] -[group_39108] -[group_39109] -[group_39110] -[group_39111] -[group_39112] -[group_39113] -[group_39114] -[group_39115] -[group_39116] -[group_39117] -[group_39118] -[group_39119] -[group_39120] -[group_39121] -[group_39122] -[group_39123] -[group_39124] -[group_39125] -[group_39126] -[group_39127] -[group_39128] -[group_39129] -[group_39130] -[group_39131] -[group_39132] -[group_39133] -[group_39134] -[group_39135] -[group_39136] -[group_39137] -[group_39138] -[group_39139] -[group_39140] -[group_39141] -[group_39142] -[group_39143] -[group_39144] -[group_39145] -[group_39146] -[group_39147] -[group_39148] -[group_39149] -[group_39150] -[group_39151] -[group_39152] -[group_39153] -[group_39154] -[group_39155] -[group_39156] -[group_39157] -[group_39158] -[group_39159] -[group_39160] -[group_39161] -[group_39162] -[group_39163] -[group_39164] -[group_39165] -[group_39166] -[group_39167] -[group_39168] -[group_39169] -[group_39170] -[group_39171] -[group_39172] -[group_39173] -[group_39174] -[group_39175] -[group_39176] -[group_39177] -[group_39178] -[group_39179] -[group_39180] -[group_39181] -[group_39182] -[group_39183] -[group_39184] -[group_39185] -[group_39186] -[group_39187] -[group_39188] -[group_39189] -[group_39190] -[group_39191] -[group_39192] -[group_39193] -[group_39194] -[group_39195] -[group_39196] -[group_39197] -[group_39198] -[group_39199] -[group_39200] -[group_39201] -[group_39202] -[group_39203] -[group_39204] -[group_39205] -[group_39206] -[group_39207] -[group_39208] -[group_39209] -[group_39210] -[group_39211] -[group_39212] -[group_39213] -[group_39214] -[group_39215] -[group_39216] -[group_39217] -[group_39218] -[group_39219] -[group_39220] -[group_39221] -[group_39222] -[group_39223] -[group_39224] -[group_39225] -[group_39226] -[group_39227] -[group_39228] -[group_39229] -[group_39230] -[group_39231] -[group_39232] -[group_39233] -[group_39234] -[group_39235] -[group_39236] -[group_39237] -[group_39238] -[group_39239] -[group_39240] -[group_39241] -[group_39242] -[group_39243] -[group_39244] -[group_39245] -[group_39246] -[group_39247] -[group_39248] -[group_39249] -[group_39250] -[group_39251] -[group_39252] -[group_39253] -[group_39254] -[group_39255] -[group_39256] -[group_39257] -[group_39258] -[group_39259] -[group_39260] -[group_39261] -[group_39262] -[group_39263] -[group_39264] -[group_39265] -[group_39266] -[group_39267] -[group_39268] -[group_39269] -[group_39270] -[group_39271] -[group_39272] -[group_39273] -[group_39274] -[group_39275] -[group_39276] -[group_39277] -[group_39278] -[group_39279] -[group_39280] -[group_39281] -[group_39282] -[group_39283] -[group_39284] -[group_39285] -[group_39286] -[group_39287] -[group_39288] -[group_39289] -[group_39290] -[group_39291] -[group_39292] -[group_39293] -[group_39294] -[group_39295] -[group_39296] -[group_39297] -[group_39298] -[group_39299] -[group_39300] -[group_39301] -[group_39302] -[group_39303] -[group_39304] -[group_39305] -[group_39306] -[group_39307] -[group_39308] -[group_39309] -[group_39310] -[group_39311] -[group_39312] -[group_39313] -[group_39314] -[group_39315] -[group_39316] -[group_39317] -[group_39318] -[group_39319] -[group_39320] -[group_39321] -[group_39322] -[group_39323] -[group_39324] -[group_39325] -[group_39326] -[group_39327] -[group_39328] -[group_39329] -[group_39330] -[group_39331] -[group_39332] -[group_39333] -[group_39334] -[group_39335] -[group_39336] -[group_39337] -[group_39338] -[group_39339] -[group_39340] -[group_39341] -[group_39342] -[group_39343] -[group_39344] -[group_39345] -[group_39346] -[group_39347] -[group_39348] -[group_39349] -[group_39350] -[group_39351] -[group_39352] -[group_39353] -[group_39354] -[group_39355] -[group_39356] -[group_39357] -[group_39358] -[group_39359] -[group_39360] -[group_39361] -[group_39362] -[group_39363] -[group_39364] -[group_39365] -[group_39366] -[group_39367] -[group_39368] -[group_39369] -[group_39370] -[group_39371] -[group_39372] -[group_39373] -[group_39374] -[group_39375] -[group_39376] -[group_39377] -[group_39378] -[group_39379] -[group_39380] -[group_39381] -[group_39382] -[group_39383] -[group_39384] -[group_39385] -[group_39386] -[group_39387] -[group_39388] -[group_39389] -[group_39390] -[group_39391] -[group_39392] -[group_39393] -[group_39394] -[group_39395] -[group_39396] -[group_39397] -[group_39398] -[group_39399] -[group_39400] -[group_39401] -[group_39402] -[group_39403] -[group_39404] -[group_39405] -[group_39406] -[group_39407] -[group_39408] -[group_39409] -[group_39410] -[group_39411] -[group_39412] -[group_39413] -[group_39414] -[group_39415] -[group_39416] -[group_39417] -[group_39418] -[group_39419] -[group_39420] -[group_39421] -[group_39422] -[group_39423] -[group_39424] -[group_39425] -[group_39426] -[group_39427] -[group_39428] -[group_39429] -[group_39430] -[group_39431] -[group_39432] -[group_39433] -[group_39434] -[group_39435] -[group_39436] -[group_39437] -[group_39438] -[group_39439] -[group_39440] -[group_39441] -[group_39442] -[group_39443] -[group_39444] -[group_39445] -[group_39446] -[group_39447] -[group_39448] -[group_39449] -[group_39450] -[group_39451] -[group_39452] -[group_39453] -[group_39454] -[group_39455] -[group_39456] -[group_39457] -[group_39458] -[group_39459] -[group_39460] -[group_39461] -[group_39462] -[group_39463] -[group_39464] -[group_39465] -[group_39466] -[group_39467] -[group_39468] -[group_39469] -[group_39470] -[group_39471] -[group_39472] -[group_39473] -[group_39474] -[group_39475] -[group_39476] -[group_39477] -[group_39478] -[group_39479] -[group_39480] -[group_39481] -[group_39482] -[group_39483] -[group_39484] -[group_39485] -[group_39486] -[group_39487] -[group_39488] -[group_39489] -[group_39490] -[group_39491] -[group_39492] -[group_39493] -[group_39494] -[group_39495] -[group_39496] -[group_39497] -[group_39498] -[group_39499] -[group_39500] -[group_39501] -[group_39502] -[group_39503] -[group_39504] -[group_39505] -[group_39506] -[group_39507] -[group_39508] -[group_39509] -[group_39510] -[group_39511] -[group_39512] -[group_39513] -[group_39514] -[group_39515] -[group_39516] -[group_39517] -[group_39518] -[group_39519] -[group_39520] -[group_39521] -[group_39522] -[group_39523] -[group_39524] -[group_39525] -[group_39526] -[group_39527] -[group_39528] -[group_39529] -[group_39530] -[group_39531] -[group_39532] -[group_39533] -[group_39534] -[group_39535] -[group_39536] -[group_39537] -[group_39538] -[group_39539] -[group_39540] -[group_39541] -[group_39542] -[group_39543] -[group_39544] -[group_39545] -[group_39546] -[group_39547] -[group_39548] -[group_39549] -[group_39550] -[group_39551] -[group_39552] -[group_39553] -[group_39554] -[group_39555] -[group_39556] -[group_39557] -[group_39558] -[group_39559] -[group_39560] -[group_39561] -[group_39562] -[group_39563] -[group_39564] -[group_39565] -[group_39566] -[group_39567] -[group_39568] -[group_39569] -[group_39570] -[group_39571] -[group_39572] -[group_39573] -[group_39574] -[group_39575] -[group_39576] -[group_39577] -[group_39578] -[group_39579] -[group_39580] -[group_39581] -[group_39582] -[group_39583] -[group_39584] -[group_39585] -[group_39586] -[group_39587] -[group_39588] -[group_39589] -[group_39590] -[group_39591] -[group_39592] -[group_39593] -[group_39594] -[group_39595] -[group_39596] -[group_39597] -[group_39598] -[group_39599] -[group_39600] -[group_39601] -[group_39602] -[group_39603] -[group_39604] -[group_39605] -[group_39606] -[group_39607] -[group_39608] -[group_39609] -[group_39610] -[group_39611] -[group_39612] -[group_39613] -[group_39614] -[group_39615] -[group_39616] -[group_39617] -[group_39618] -[group_39619] -[group_39620] -[group_39621] -[group_39622] -[group_39623] -[group_39624] -[group_39625] -[group_39626] -[group_39627] -[group_39628] -[group_39629] -[group_39630] -[group_39631] -[group_39632] -[group_39633] -[group_39634] -[group_39635] -[group_39636] -[group_39637] -[group_39638] -[group_39639] -[group_39640] -[group_39641] -[group_39642] -[group_39643] -[group_39644] -[group_39645] -[group_39646] -[group_39647] -[group_39648] -[group_39649] -[group_39650] -[group_39651] -[group_39652] -[group_39653] -[group_39654] -[group_39655] -[group_39656] -[group_39657] -[group_39658] -[group_39659] -[group_39660] -[group_39661] -[group_39662] -[group_39663] -[group_39664] -[group_39665] -[group_39666] -[group_39667] -[group_39668] -[group_39669] -[group_39670] -[group_39671] -[group_39672] -[group_39673] -[group_39674] -[group_39675] -[group_39676] -[group_39677] -[group_39678] -[group_39679] -[group_39680] -[group_39681] -[group_39682] -[group_39683] -[group_39684] -[group_39685] -[group_39686] -[group_39687] -[group_39688] -[group_39689] -[group_39690] -[group_39691] -[group_39692] -[group_39693] -[group_39694] -[group_39695] -[group_39696] -[group_39697] -[group_39698] -[group_39699] -[group_39700] -[group_39701] -[group_39702] -[group_39703] -[group_39704] -[group_39705] -[group_39706] -[group_39707] -[group_39708] -[group_39709] -[group_39710] -[group_39711] -[group_39712] -[group_39713] -[group_39714] -[group_39715] -[group_39716] -[group_39717] -[group_39718] -[group_39719] -[group_39720] -[group_39721] -[group_39722] -[group_39723] -[group_39724] -[group_39725] -[group_39726] -[group_39727] -[group_39728] -[group_39729] -[group_39730] -[group_39731] -[group_39732] -[group_39733] -[group_39734] -[group_39735] -[group_39736] -[group_39737] -[group_39738] -[group_39739] -[group_39740] -[group_39741] -[group_39742] -[group_39743] -[group_39744] -[group_39745] -[group_39746] -[group_39747] -[group_39748] -[group_39749] -[group_39750] -[group_39751] -[group_39752] -[group_39753] -[group_39754] -[group_39755] -[group_39756] -[group_39757] -[group_39758] -[group_39759] -[group_39760] -[group_39761] -[group_39762] -[group_39763] -[group_39764] -[group_39765] -[group_39766] -[group_39767] -[group_39768] -[group_39769] -[group_39770] -[group_39771] -[group_39772] -[group_39773] -[group_39774] -[group_39775] -[group_39776] -[group_39777] -[group_39778] -[group_39779] -[group_39780] -[group_39781] -[group_39782] -[group_39783] -[group_39784] -[group_39785] -[group_39786] -[group_39787] -[group_39788] -[group_39789] -[group_39790] -[group_39791] -[group_39792] -[group_39793] -[group_39794] -[group_39795] -[group_39796] -[group_39797] -[group_39798] -[group_39799] -[group_39800] -[group_39801] -[group_39802] -[group_39803] -[group_39804] -[group_39805] -[group_39806] -[group_39807] -[group_39808] -[group_39809] -[group_39810] -[group_39811] -[group_39812] -[group_39813] -[group_39814] -[group_39815] -[group_39816] -[group_39817] -[group_39818] -[group_39819] -[group_39820] -[group_39821] -[group_39822] -[group_39823] -[group_39824] -[group_39825] -[group_39826] -[group_39827] -[group_39828] -[group_39829] -[group_39830] -[group_39831] -[group_39832] -[group_39833] -[group_39834] -[group_39835] -[group_39836] -[group_39837] -[group_39838] -[group_39839] -[group_39840] -[group_39841] -[group_39842] -[group_39843] -[group_39844] -[group_39845] -[group_39846] -[group_39847] -[group_39848] -[group_39849] -[group_39850] -[group_39851] -[group_39852] -[group_39853] -[group_39854] -[group_39855] -[group_39856] -[group_39857] -[group_39858] -[group_39859] -[group_39860] -[group_39861] -[group_39862] -[group_39863] -[group_39864] -[group_39865] -[group_39866] -[group_39867] -[group_39868] -[group_39869] -[group_39870] -[group_39871] -[group_39872] -[group_39873] -[group_39874] -[group_39875] -[group_39876] -[group_39877] -[group_39878] -[group_39879] -[group_39880] -[group_39881] -[group_39882] -[group_39883] -[group_39884] -[group_39885] -[group_39886] -[group_39887] -[group_39888] -[group_39889] -[group_39890] -[group_39891] -[group_39892] -[group_39893] -[group_39894] -[group_39895] -[group_39896] -[group_39897] -[group_39898] -[group_39899] -[group_39900] -[group_39901] -[group_39902] -[group_39903] -[group_39904] -[group_39905] -[group_39906] -[group_39907] -[group_39908] -[group_39909] -[group_39910] -[group_39911] -[group_39912] -[group_39913] -[group_39914] -[group_39915] -[group_39916] -[group_39917] -[group_39918] -[group_39919] -[group_39920] -[group_39921] -[group_39922] -[group_39923] -[group_39924] -[group_39925] -[group_39926] -[group_39927] -[group_39928] -[group_39929] -[group_39930] -[group_39931] -[group_39932] -[group_39933] -[group_39934] -[group_39935] -[group_39936] -[group_39937] -[group_39938] -[group_39939] -[group_39940] -[group_39941] -[group_39942] -[group_39943] -[group_39944] -[group_39945] -[group_39946] -[group_39947] -[group_39948] -[group_39949] -[group_39950] -[group_39951] -[group_39952] -[group_39953] -[group_39954] -[group_39955] -[group_39956] -[group_39957] -[group_39958] -[group_39959] -[group_39960] -[group_39961] -[group_39962] -[group_39963] -[group_39964] -[group_39965] -[group_39966] -[group_39967] -[group_39968] -[group_39969] -[group_39970] -[group_39971] -[group_39972] -[group_39973] -[group_39974] -[group_39975] -[group_39976] -[group_39977] -[group_39978] -[group_39979] -[group_39980] -[group_39981] -[group_39982] -[group_39983] -[group_39984] -[group_39985] -[group_39986] -[group_39987] -[group_39988] -[group_39989] -[group_39990] -[group_39991] -[group_39992] -[group_39993] -[group_39994] -[group_39995] -[group_39996] -[group_39997] -[group_39998] -[group_39999] -[group_40000] -[group_40001] -[group_40002] -[group_40003] -[group_40004] -[group_40005] -[group_40006] -[group_40007] -[group_40008] -[group_40009] -[group_40010] -[group_40011] -[group_40012] -[group_40013] -[group_40014] -[group_40015] -[group_40016] -[group_40017] -[group_40018] -[group_40019] -[group_40020] -[group_40021] -[group_40022] -[group_40023] -[group_40024] -[group_40025] -[group_40026] -[group_40027] -[group_40028] -[group_40029] -[group_40030] -[group_40031] -[group_40032] -[group_40033] -[group_40034] -[group_40035] -[group_40036] -[group_40037] -[group_40038] -[group_40039] -[group_40040] -[group_40041] -[group_40042] -[group_40043] -[group_40044] -[group_40045] -[group_40046] -[group_40047] -[group_40048] -[group_40049] -[group_40050] -[group_40051] -[group_40052] -[group_40053] -[group_40054] -[group_40055] -[group_40056] -[group_40057] -[group_40058] -[group_40059] -[group_40060] -[group_40061] -[group_40062] -[group_40063] -[group_40064] -[group_40065] -[group_40066] -[group_40067] -[group_40068] -[group_40069] -[group_40070] -[group_40071] -[group_40072] -[group_40073] -[group_40074] -[group_40075] -[group_40076] -[group_40077] -[group_40078] -[group_40079] -[group_40080] -[group_40081] -[group_40082] -[group_40083] -[group_40084] -[group_40085] -[group_40086] -[group_40087] -[group_40088] -[group_40089] -[group_40090] -[group_40091] -[group_40092] -[group_40093] -[group_40094] -[group_40095] -[group_40096] -[group_40097] -[group_40098] -[group_40099] -[group_40100] -[group_40101] -[group_40102] -[group_40103] -[group_40104] -[group_40105] -[group_40106] -[group_40107] -[group_40108] -[group_40109] -[group_40110] -[group_40111] -[group_40112] -[group_40113] -[group_40114] -[group_40115] -[group_40116] -[group_40117] -[group_40118] -[group_40119] -[group_40120] -[group_40121] -[group_40122] -[group_40123] -[group_40124] -[group_40125] -[group_40126] -[group_40127] -[group_40128] -[group_40129] -[group_40130] -[group_40131] -[group_40132] -[group_40133] -[group_40134] -[group_40135] -[group_40136] -[group_40137] -[group_40138] -[group_40139] -[group_40140] -[group_40141] -[group_40142] -[group_40143] -[group_40144] -[group_40145] -[group_40146] -[group_40147] -[group_40148] -[group_40149] -[group_40150] -[group_40151] -[group_40152] -[group_40153] -[group_40154] -[group_40155] -[group_40156] -[group_40157] -[group_40158] -[group_40159] -[group_40160] -[group_40161] -[group_40162] -[group_40163] -[group_40164] -[group_40165] -[group_40166] -[group_40167] -[group_40168] -[group_40169] -[group_40170] -[group_40171] -[group_40172] -[group_40173] -[group_40174] -[group_40175] -[group_40176] -[group_40177] -[group_40178] -[group_40179] -[group_40180] -[group_40181] -[group_40182] -[group_40183] -[group_40184] -[group_40185] -[group_40186] -[group_40187] -[group_40188] -[group_40189] -[group_40190] -[group_40191] -[group_40192] -[group_40193] -[group_40194] -[group_40195] -[group_40196] -[group_40197] -[group_40198] -[group_40199] -[group_40200] -[group_40201] -[group_40202] -[group_40203] -[group_40204] -[group_40205] -[group_40206] -[group_40207] -[group_40208] -[group_40209] -[group_40210] -[group_40211] -[group_40212] -[group_40213] -[group_40214] -[group_40215] -[group_40216] -[group_40217] -[group_40218] -[group_40219] -[group_40220] -[group_40221] -[group_40222] -[group_40223] -[group_40224] -[group_40225] -[group_40226] -[group_40227] -[group_40228] -[group_40229] -[group_40230] -[group_40231] -[group_40232] -[group_40233] -[group_40234] -[group_40235] -[group_40236] -[group_40237] -[group_40238] -[group_40239] -[group_40240] -[group_40241] -[group_40242] -[group_40243] -[group_40244] -[group_40245] -[group_40246] -[group_40247] -[group_40248] -[group_40249] -[group_40250] -[group_40251] -[group_40252] -[group_40253] -[group_40254] -[group_40255] -[group_40256] -[group_40257] -[group_40258] -[group_40259] -[group_40260] -[group_40261] -[group_40262] -[group_40263] -[group_40264] -[group_40265] -[group_40266] -[group_40267] -[group_40268] -[group_40269] -[group_40270] -[group_40271] -[group_40272] -[group_40273] -[group_40274] -[group_40275] -[group_40276] -[group_40277] -[group_40278] -[group_40279] -[group_40280] -[group_40281] -[group_40282] -[group_40283] -[group_40284] -[group_40285] -[group_40286] -[group_40287] -[group_40288] -[group_40289] -[group_40290] -[group_40291] -[group_40292] -[group_40293] -[group_40294] -[group_40295] -[group_40296] -[group_40297] -[group_40298] -[group_40299] -[group_40300] -[group_40301] -[group_40302] -[group_40303] -[group_40304] -[group_40305] -[group_40306] -[group_40307] -[group_40308] -[group_40309] -[group_40310] -[group_40311] -[group_40312] -[group_40313] -[group_40314] -[group_40315] -[group_40316] -[group_40317] -[group_40318] -[group_40319] -[group_40320] -[group_40321] -[group_40322] -[group_40323] -[group_40324] -[group_40325] -[group_40326] -[group_40327] -[group_40328] -[group_40329] -[group_40330] -[group_40331] -[group_40332] -[group_40333] -[group_40334] -[group_40335] -[group_40336] -[group_40337] -[group_40338] -[group_40339] -[group_40340] -[group_40341] -[group_40342] -[group_40343] -[group_40344] -[group_40345] -[group_40346] -[group_40347] -[group_40348] -[group_40349] -[group_40350] -[group_40351] -[group_40352] -[group_40353] -[group_40354] -[group_40355] -[group_40356] -[group_40357] -[group_40358] -[group_40359] -[group_40360] -[group_40361] -[group_40362] -[group_40363] -[group_40364] -[group_40365] -[group_40366] -[group_40367] -[group_40368] -[group_40369] -[group_40370] -[group_40371] -[group_40372] -[group_40373] -[group_40374] -[group_40375] -[group_40376] -[group_40377] -[group_40378] -[group_40379] -[group_40380] -[group_40381] -[group_40382] -[group_40383] -[group_40384] -[group_40385] -[group_40386] -[group_40387] -[group_40388] -[group_40389] -[group_40390] -[group_40391] -[group_40392] -[group_40393] -[group_40394] -[group_40395] -[group_40396] -[group_40397] -[group_40398] -[group_40399] -[group_40400] -[group_40401] -[group_40402] -[group_40403] -[group_40404] -[group_40405] -[group_40406] -[group_40407] -[group_40408] -[group_40409] -[group_40410] -[group_40411] -[group_40412] -[group_40413] -[group_40414] -[group_40415] -[group_40416] -[group_40417] -[group_40418] -[group_40419] -[group_40420] -[group_40421] -[group_40422] -[group_40423] -[group_40424] -[group_40425] -[group_40426] -[group_40427] -[group_40428] -[group_40429] -[group_40430] -[group_40431] -[group_40432] -[group_40433] -[group_40434] -[group_40435] -[group_40436] -[group_40437] -[group_40438] -[group_40439] -[group_40440] -[group_40441] -[group_40442] -[group_40443] -[group_40444] -[group_40445] -[group_40446] -[group_40447] -[group_40448] -[group_40449] -[group_40450] -[group_40451] -[group_40452] -[group_40453] -[group_40454] -[group_40455] -[group_40456] -[group_40457] -[group_40458] -[group_40459] -[group_40460] -[group_40461] -[group_40462] -[group_40463] -[group_40464] -[group_40465] -[group_40466] -[group_40467] -[group_40468] -[group_40469] -[group_40470] -[group_40471] -[group_40472] -[group_40473] -[group_40474] -[group_40475] -[group_40476] -[group_40477] -[group_40478] -[group_40479] -[group_40480] -[group_40481] -[group_40482] -[group_40483] -[group_40484] -[group_40485] -[group_40486] -[group_40487] -[group_40488] -[group_40489] -[group_40490] -[group_40491] -[group_40492] -[group_40493] -[group_40494] -[group_40495] -[group_40496] -[group_40497] -[group_40498] -[group_40499] -[group_40500] -[group_40501] -[group_40502] -[group_40503] -[group_40504] -[group_40505] -[group_40506] -[group_40507] -[group_40508] -[group_40509] -[group_40510] -[group_40511] -[group_40512] -[group_40513] -[group_40514] -[group_40515] -[group_40516] -[group_40517] -[group_40518] -[group_40519] -[group_40520] -[group_40521] -[group_40522] -[group_40523] -[group_40524] -[group_40525] -[group_40526] -[group_40527] -[group_40528] -[group_40529] -[group_40530] -[group_40531] -[group_40532] -[group_40533] -[group_40534] -[group_40535] -[group_40536] -[group_40537] -[group_40538] -[group_40539] -[group_40540] -[group_40541] -[group_40542] -[group_40543] -[group_40544] -[group_40545] -[group_40546] -[group_40547] -[group_40548] -[group_40549] -[group_40550] -[group_40551] -[group_40552] -[group_40553] -[group_40554] -[group_40555] -[group_40556] -[group_40557] -[group_40558] -[group_40559] -[group_40560] -[group_40561] -[group_40562] -[group_40563] -[group_40564] -[group_40565] -[group_40566] -[group_40567] -[group_40568] -[group_40569] -[group_40570] -[group_40571] -[group_40572] -[group_40573] -[group_40574] -[group_40575] -[group_40576] -[group_40577] -[group_40578] -[group_40579] -[group_40580] -[group_40581] -[group_40582] -[group_40583] -[group_40584] -[group_40585] -[group_40586] -[group_40587] -[group_40588] -[group_40589] -[group_40590] -[group_40591] -[group_40592] -[group_40593] -[group_40594] -[group_40595] -[group_40596] -[group_40597] -[group_40598] -[group_40599] -[group_40600] -[group_40601] -[group_40602] -[group_40603] -[group_40604] -[group_40605] -[group_40606] -[group_40607] -[group_40608] -[group_40609] -[group_40610] -[group_40611] -[group_40612] -[group_40613] -[group_40614] -[group_40615] -[group_40616] -[group_40617] -[group_40618] -[group_40619] -[group_40620] -[group_40621] -[group_40622] -[group_40623] -[group_40624] -[group_40625] -[group_40626] -[group_40627] -[group_40628] -[group_40629] -[group_40630] -[group_40631] -[group_40632] -[group_40633] -[group_40634] -[group_40635] -[group_40636] -[group_40637] -[group_40638] -[group_40639] -[group_40640] -[group_40641] -[group_40642] -[group_40643] -[group_40644] -[group_40645] -[group_40646] -[group_40647] -[group_40648] -[group_40649] -[group_40650] -[group_40651] -[group_40652] -[group_40653] -[group_40654] -[group_40655] -[group_40656] -[group_40657] -[group_40658] -[group_40659] -[group_40660] -[group_40661] -[group_40662] -[group_40663] -[group_40664] -[group_40665] -[group_40666] -[group_40667] -[group_40668] -[group_40669] -[group_40670] -[group_40671] -[group_40672] -[group_40673] -[group_40674] -[group_40675] -[group_40676] -[group_40677] -[group_40678] -[group_40679] -[group_40680] -[group_40681] -[group_40682] -[group_40683] -[group_40684] -[group_40685] -[group_40686] -[group_40687] -[group_40688] -[group_40689] -[group_40690] -[group_40691] -[group_40692] -[group_40693] -[group_40694] -[group_40695] -[group_40696] -[group_40697] -[group_40698] -[group_40699] -[group_40700] -[group_40701] -[group_40702] -[group_40703] -[group_40704] -[group_40705] -[group_40706] -[group_40707] -[group_40708] -[group_40709] -[group_40710] -[group_40711] -[group_40712] -[group_40713] -[group_40714] -[group_40715] -[group_40716] -[group_40717] -[group_40718] -[group_40719] -[group_40720] -[group_40721] -[group_40722] -[group_40723] -[group_40724] -[group_40725] -[group_40726] -[group_40727] -[group_40728] -[group_40729] -[group_40730] -[group_40731] -[group_40732] -[group_40733] -[group_40734] -[group_40735] -[group_40736] -[group_40737] -[group_40738] -[group_40739] -[group_40740] -[group_40741] -[group_40742] -[group_40743] -[group_40744] -[group_40745] -[group_40746] -[group_40747] -[group_40748] -[group_40749] -[group_40750] -[group_40751] -[group_40752] -[group_40753] -[group_40754] -[group_40755] -[group_40756] -[group_40757] -[group_40758] -[group_40759] -[group_40760] -[group_40761] -[group_40762] -[group_40763] -[group_40764] -[group_40765] -[group_40766] -[group_40767] -[group_40768] -[group_40769] -[group_40770] -[group_40771] -[group_40772] -[group_40773] -[group_40774] -[group_40775] -[group_40776] -[group_40777] -[group_40778] -[group_40779] -[group_40780] -[group_40781] -[group_40782] -[group_40783] -[group_40784] -[group_40785] -[group_40786] -[group_40787] -[group_40788] -[group_40789] -[group_40790] -[group_40791] -[group_40792] -[group_40793] -[group_40794] -[group_40795] -[group_40796] -[group_40797] -[group_40798] -[group_40799] -[group_40800] -[group_40801] -[group_40802] -[group_40803] -[group_40804] -[group_40805] -[group_40806] -[group_40807] -[group_40808] -[group_40809] -[group_40810] -[group_40811] -[group_40812] -[group_40813] -[group_40814] -[group_40815] -[group_40816] -[group_40817] -[group_40818] -[group_40819] -[group_40820] -[group_40821] -[group_40822] -[group_40823] -[group_40824] -[group_40825] -[group_40826] -[group_40827] -[group_40828] -[group_40829] -[group_40830] -[group_40831] -[group_40832] -[group_40833] -[group_40834] -[group_40835] -[group_40836] -[group_40837] -[group_40838] -[group_40839] -[group_40840] -[group_40841] -[group_40842] -[group_40843] -[group_40844] -[group_40845] -[group_40846] -[group_40847] -[group_40848] -[group_40849] -[group_40850] -[group_40851] -[group_40852] -[group_40853] -[group_40854] -[group_40855] -[group_40856] -[group_40857] -[group_40858] -[group_40859] -[group_40860] -[group_40861] -[group_40862] -[group_40863] -[group_40864] -[group_40865] -[group_40866] -[group_40867] -[group_40868] -[group_40869] -[group_40870] -[group_40871] -[group_40872] -[group_40873] -[group_40874] -[group_40875] -[group_40876] -[group_40877] -[group_40878] -[group_40879] -[group_40880] -[group_40881] -[group_40882] -[group_40883] -[group_40884] -[group_40885] -[group_40886] -[group_40887] -[group_40888] -[group_40889] -[group_40890] -[group_40891] -[group_40892] -[group_40893] -[group_40894] -[group_40895] -[group_40896] -[group_40897] -[group_40898] -[group_40899] -[group_40900] -[group_40901] -[group_40902] -[group_40903] -[group_40904] -[group_40905] -[group_40906] -[group_40907] -[group_40908] -[group_40909] -[group_40910] -[group_40911] -[group_40912] -[group_40913] -[group_40914] -[group_40915] -[group_40916] -[group_40917] -[group_40918] -[group_40919] -[group_40920] -[group_40921] -[group_40922] -[group_40923] -[group_40924] -[group_40925] -[group_40926] -[group_40927] -[group_40928] -[group_40929] -[group_40930] -[group_40931] -[group_40932] -[group_40933] -[group_40934] -[group_40935] -[group_40936] -[group_40937] -[group_40938] -[group_40939] -[group_40940] -[group_40941] -[group_40942] -[group_40943] -[group_40944] -[group_40945] -[group_40946] -[group_40947] -[group_40948] -[group_40949] -[group_40950] -[group_40951] -[group_40952] -[group_40953] -[group_40954] -[group_40955] -[group_40956] -[group_40957] -[group_40958] -[group_40959] -[group_40960] -[group_40961] -[group_40962] -[group_40963] -[group_40964] -[group_40965] -[group_40966] -[group_40967] -[group_40968] -[group_40969] -[group_40970] -[group_40971] -[group_40972] -[group_40973] -[group_40974] -[group_40975] -[group_40976] -[group_40977] -[group_40978] -[group_40979] -[group_40980] -[group_40981] -[group_40982] -[group_40983] -[group_40984] -[group_40985] -[group_40986] -[group_40987] -[group_40988] -[group_40989] -[group_40990] -[group_40991] -[group_40992] -[group_40993] -[group_40994] -[group_40995] -[group_40996] -[group_40997] -[group_40998] -[group_40999] -[group_41000] -[group_41001] -[group_41002] -[group_41003] -[group_41004] -[group_41005] -[group_41006] -[group_41007] -[group_41008] -[group_41009] -[group_41010] -[group_41011] -[group_41012] -[group_41013] -[group_41014] -[group_41015] -[group_41016] -[group_41017] -[group_41018] -[group_41019] -[group_41020] -[group_41021] -[group_41022] -[group_41023] -[group_41024] -[group_41025] -[group_41026] -[group_41027] -[group_41028] -[group_41029] -[group_41030] -[group_41031] -[group_41032] -[group_41033] -[group_41034] -[group_41035] -[group_41036] -[group_41037] -[group_41038] -[group_41039] -[group_41040] -[group_41041] -[group_41042] -[group_41043] -[group_41044] -[group_41045] -[group_41046] -[group_41047] -[group_41048] -[group_41049] -[group_41050] -[group_41051] -[group_41052] -[group_41053] -[group_41054] -[group_41055] -[group_41056] -[group_41057] -[group_41058] -[group_41059] -[group_41060] -[group_41061] -[group_41062] -[group_41063] -[group_41064] -[group_41065] -[group_41066] -[group_41067] -[group_41068] -[group_41069] -[group_41070] -[group_41071] -[group_41072] -[group_41073] -[group_41074] -[group_41075] -[group_41076] -[group_41077] -[group_41078] -[group_41079] -[group_41080] -[group_41081] -[group_41082] -[group_41083] -[group_41084] -[group_41085] -[group_41086] -[group_41087] -[group_41088] -[group_41089] -[group_41090] -[group_41091] -[group_41092] -[group_41093] -[group_41094] -[group_41095] -[group_41096] -[group_41097] -[group_41098] -[group_41099] -[group_41100] -[group_41101] -[group_41102] -[group_41103] -[group_41104] -[group_41105] -[group_41106] -[group_41107] -[group_41108] -[group_41109] -[group_41110] -[group_41111] -[group_41112] -[group_41113] -[group_41114] -[group_41115] -[group_41116] -[group_41117] -[group_41118] -[group_41119] -[group_41120] -[group_41121] -[group_41122] -[group_41123] -[group_41124] -[group_41125] -[group_41126] -[group_41127] -[group_41128] -[group_41129] -[group_41130] -[group_41131] -[group_41132] -[group_41133] -[group_41134] -[group_41135] -[group_41136] -[group_41137] -[group_41138] -[group_41139] -[group_41140] -[group_41141] -[group_41142] -[group_41143] -[group_41144] -[group_41145] -[group_41146] -[group_41147] -[group_41148] -[group_41149] -[group_41150] -[group_41151] -[group_41152] -[group_41153] -[group_41154] -[group_41155] -[group_41156] -[group_41157] -[group_41158] -[group_41159] -[group_41160] -[group_41161] -[group_41162] -[group_41163] -[group_41164] -[group_41165] -[group_41166] -[group_41167] -[group_41168] -[group_41169] -[group_41170] -[group_41171] -[group_41172] -[group_41173] -[group_41174] -[group_41175] -[group_41176] -[group_41177] -[group_41178] -[group_41179] -[group_41180] -[group_41181] -[group_41182] -[group_41183] -[group_41184] -[group_41185] -[group_41186] -[group_41187] -[group_41188] -[group_41189] -[group_41190] -[group_41191] -[group_41192] -[group_41193] -[group_41194] -[group_41195] -[group_41196] -[group_41197] -[group_41198] -[group_41199] -[group_41200] -[group_41201] -[group_41202] -[group_41203] -[group_41204] -[group_41205] -[group_41206] -[group_41207] -[group_41208] -[group_41209] -[group_41210] -[group_41211] -[group_41212] -[group_41213] -[group_41214] -[group_41215] -[group_41216] -[group_41217] -[group_41218] -[group_41219] -[group_41220] -[group_41221] -[group_41222] -[group_41223] -[group_41224] -[group_41225] -[group_41226] -[group_41227] -[group_41228] -[group_41229] -[group_41230] -[group_41231] -[group_41232] -[group_41233] -[group_41234] -[group_41235] -[group_41236] -[group_41237] -[group_41238] -[group_41239] -[group_41240] -[group_41241] -[group_41242] -[group_41243] -[group_41244] -[group_41245] -[group_41246] -[group_41247] -[group_41248] -[group_41249] -[group_41250] -[group_41251] -[group_41252] -[group_41253] -[group_41254] -[group_41255] -[group_41256] -[group_41257] -[group_41258] -[group_41259] -[group_41260] -[group_41261] -[group_41262] -[group_41263] -[group_41264] -[group_41265] -[group_41266] -[group_41267] -[group_41268] -[group_41269] -[group_41270] -[group_41271] -[group_41272] -[group_41273] -[group_41274] -[group_41275] -[group_41276] -[group_41277] -[group_41278] -[group_41279] -[group_41280] -[group_41281] -[group_41282] -[group_41283] -[group_41284] -[group_41285] -[group_41286] -[group_41287] -[group_41288] -[group_41289] -[group_41290] -[group_41291] -[group_41292] -[group_41293] -[group_41294] -[group_41295] -[group_41296] -[group_41297] -[group_41298] -[group_41299] -[group_41300] -[group_41301] -[group_41302] -[group_41303] -[group_41304] -[group_41305] -[group_41306] -[group_41307] -[group_41308] -[group_41309] -[group_41310] -[group_41311] -[group_41312] -[group_41313] -[group_41314] -[group_41315] -[group_41316] -[group_41317] -[group_41318] -[group_41319] -[group_41320] -[group_41321] -[group_41322] -[group_41323] -[group_41324] -[group_41325] -[group_41326] -[group_41327] -[group_41328] -[group_41329] -[group_41330] -[group_41331] -[group_41332] -[group_41333] -[group_41334] -[group_41335] -[group_41336] -[group_41337] -[group_41338] -[group_41339] -[group_41340] -[group_41341] -[group_41342] -[group_41343] -[group_41344] -[group_41345] -[group_41346] -[group_41347] -[group_41348] -[group_41349] -[group_41350] -[group_41351] -[group_41352] -[group_41353] -[group_41354] -[group_41355] -[group_41356] -[group_41357] -[group_41358] -[group_41359] -[group_41360] -[group_41361] -[group_41362] -[group_41363] -[group_41364] -[group_41365] -[group_41366] -[group_41367] -[group_41368] -[group_41369] -[group_41370] -[group_41371] -[group_41372] -[group_41373] -[group_41374] -[group_41375] -[group_41376] -[group_41377] -[group_41378] -[group_41379] -[group_41380] -[group_41381] -[group_41382] -[group_41383] -[group_41384] -[group_41385] -[group_41386] -[group_41387] -[group_41388] -[group_41389] -[group_41390] -[group_41391] -[group_41392] -[group_41393] -[group_41394] -[group_41395] -[group_41396] -[group_41397] -[group_41398] -[group_41399] -[group_41400] -[group_41401] -[group_41402] -[group_41403] -[group_41404] -[group_41405] -[group_41406] -[group_41407] -[group_41408] -[group_41409] -[group_41410] -[group_41411] -[group_41412] -[group_41413] -[group_41414] -[group_41415] -[group_41416] -[group_41417] -[group_41418] -[group_41419] -[group_41420] -[group_41421] -[group_41422] -[group_41423] -[group_41424] -[group_41425] -[group_41426] -[group_41427] -[group_41428] -[group_41429] -[group_41430] -[group_41431] -[group_41432] -[group_41433] -[group_41434] -[group_41435] -[group_41436] -[group_41437] -[group_41438] -[group_41439] -[group_41440] -[group_41441] -[group_41442] -[group_41443] -[group_41444] -[group_41445] -[group_41446] -[group_41447] -[group_41448] -[group_41449] -[group_41450] -[group_41451] -[group_41452] -[group_41453] -[group_41454] -[group_41455] -[group_41456] -[group_41457] -[group_41458] -[group_41459] -[group_41460] -[group_41461] -[group_41462] -[group_41463] -[group_41464] -[group_41465] -[group_41466] -[group_41467] -[group_41468] -[group_41469] -[group_41470] -[group_41471] -[group_41472] -[group_41473] -[group_41474] -[group_41475] -[group_41476] -[group_41477] -[group_41478] -[group_41479] -[group_41480] -[group_41481] -[group_41482] -[group_41483] -[group_41484] -[group_41485] -[group_41486] -[group_41487] -[group_41488] -[group_41489] -[group_41490] -[group_41491] -[group_41492] -[group_41493] -[group_41494] -[group_41495] -[group_41496] -[group_41497] -[group_41498] -[group_41499] -[group_41500] -[group_41501] -[group_41502] -[group_41503] -[group_41504] -[group_41505] -[group_41506] -[group_41507] -[group_41508] -[group_41509] -[group_41510] -[group_41511] -[group_41512] -[group_41513] -[group_41514] -[group_41515] -[group_41516] -[group_41517] -[group_41518] -[group_41519] -[group_41520] -[group_41521] -[group_41522] -[group_41523] -[group_41524] -[group_41525] -[group_41526] -[group_41527] -[group_41528] -[group_41529] -[group_41530] -[group_41531] -[group_41532] -[group_41533] -[group_41534] -[group_41535] -[group_41536] -[group_41537] -[group_41538] -[group_41539] -[group_41540] -[group_41541] -[group_41542] -[group_41543] -[group_41544] -[group_41545] -[group_41546] -[group_41547] -[group_41548] -[group_41549] -[group_41550] -[group_41551] -[group_41552] -[group_41553] -[group_41554] -[group_41555] -[group_41556] -[group_41557] -[group_41558] -[group_41559] -[group_41560] -[group_41561] -[group_41562] -[group_41563] -[group_41564] -[group_41565] -[group_41566] -[group_41567] -[group_41568] -[group_41569] -[group_41570] -[group_41571] -[group_41572] -[group_41573] -[group_41574] -[group_41575] -[group_41576] -[group_41577] -[group_41578] -[group_41579] -[group_41580] -[group_41581] -[group_41582] -[group_41583] -[group_41584] -[group_41585] -[group_41586] -[group_41587] -[group_41588] -[group_41589] -[group_41590] -[group_41591] -[group_41592] -[group_41593] -[group_41594] -[group_41595] -[group_41596] -[group_41597] -[group_41598] -[group_41599] -[group_41600] -[group_41601] -[group_41602] -[group_41603] -[group_41604] -[group_41605] -[group_41606] -[group_41607] -[group_41608] -[group_41609] -[group_41610] -[group_41611] -[group_41612] -[group_41613] -[group_41614] -[group_41615] -[group_41616] -[group_41617] -[group_41618] -[group_41619] -[group_41620] -[group_41621] -[group_41622] -[group_41623] -[group_41624] -[group_41625] -[group_41626] -[group_41627] -[group_41628] -[group_41629] -[group_41630] -[group_41631] -[group_41632] -[group_41633] -[group_41634] -[group_41635] -[group_41636] -[group_41637] -[group_41638] -[group_41639] -[group_41640] -[group_41641] -[group_41642] -[group_41643] -[group_41644] -[group_41645] -[group_41646] -[group_41647] -[group_41648] -[group_41649] -[group_41650] -[group_41651] -[group_41652] -[group_41653] -[group_41654] -[group_41655] -[group_41656] -[group_41657] -[group_41658] -[group_41659] -[group_41660] -[group_41661] -[group_41662] -[group_41663] -[group_41664] -[group_41665] -[group_41666] -[group_41667] -[group_41668] -[group_41669] -[group_41670] -[group_41671] -[group_41672] -[group_41673] -[group_41674] -[group_41675] -[group_41676] -[group_41677] -[group_41678] -[group_41679] -[group_41680] -[group_41681] -[group_41682] -[group_41683] -[group_41684] -[group_41685] -[group_41686] -[group_41687] -[group_41688] -[group_41689] -[group_41690] -[group_41691] -[group_41692] -[group_41693] -[group_41694] -[group_41695] -[group_41696] -[group_41697] -[group_41698] -[group_41699] -[group_41700] -[group_41701] -[group_41702] -[group_41703] -[group_41704] -[group_41705] -[group_41706] -[group_41707] -[group_41708] -[group_41709] -[group_41710] -[group_41711] -[group_41712] -[group_41713] -[group_41714] -[group_41715] -[group_41716] -[group_41717] -[group_41718] -[group_41719] -[group_41720] -[group_41721] -[group_41722] -[group_41723] -[group_41724] -[group_41725] -[group_41726] -[group_41727] -[group_41728] -[group_41729] -[group_41730] -[group_41731] -[group_41732] -[group_41733] -[group_41734] -[group_41735] -[group_41736] -[group_41737] -[group_41738] -[group_41739] -[group_41740] -[group_41741] -[group_41742] -[group_41743] -[group_41744] -[group_41745] -[group_41746] -[group_41747] -[group_41748] -[group_41749] -[group_41750] -[group_41751] -[group_41752] -[group_41753] -[group_41754] -[group_41755] -[group_41756] -[group_41757] -[group_41758] -[group_41759] -[group_41760] -[group_41761] -[group_41762] -[group_41763] -[group_41764] -[group_41765] -[group_41766] -[group_41767] -[group_41768] -[group_41769] -[group_41770] -[group_41771] -[group_41772] -[group_41773] -[group_41774] -[group_41775] -[group_41776] -[group_41777] -[group_41778] -[group_41779] -[group_41780] -[group_41781] -[group_41782] -[group_41783] -[group_41784] -[group_41785] -[group_41786] -[group_41787] -[group_41788] -[group_41789] -[group_41790] -[group_41791] -[group_41792] -[group_41793] -[group_41794] -[group_41795] -[group_41796] -[group_41797] -[group_41798] -[group_41799] -[group_41800] -[group_41801] -[group_41802] -[group_41803] -[group_41804] -[group_41805] -[group_41806] -[group_41807] -[group_41808] -[group_41809] -[group_41810] -[group_41811] -[group_41812] -[group_41813] -[group_41814] -[group_41815] -[group_41816] -[group_41817] -[group_41818] -[group_41819] -[group_41820] -[group_41821] -[group_41822] -[group_41823] -[group_41824] -[group_41825] -[group_41826] -[group_41827] -[group_41828] -[group_41829] -[group_41830] -[group_41831] -[group_41832] -[group_41833] -[group_41834] -[group_41835] -[group_41836] -[group_41837] -[group_41838] -[group_41839] -[group_41840] -[group_41841] -[group_41842] -[group_41843] -[group_41844] -[group_41845] -[group_41846] -[group_41847] -[group_41848] -[group_41849] -[group_41850] -[group_41851] -[group_41852] -[group_41853] -[group_41854] -[group_41855] -[group_41856] -[group_41857] -[group_41858] -[group_41859] -[group_41860] -[group_41861] -[group_41862] -[group_41863] -[group_41864] -[group_41865] -[group_41866] -[group_41867] -[group_41868] -[group_41869] -[group_41870] -[group_41871] -[group_41872] -[group_41873] -[group_41874] -[group_41875] -[group_41876] -[group_41877] -[group_41878] -[group_41879] -[group_41880] -[group_41881] -[group_41882] -[group_41883] -[group_41884] -[group_41885] -[group_41886] -[group_41887] -[group_41888] -[group_41889] -[group_41890] -[group_41891] -[group_41892] -[group_41893] -[group_41894] -[group_41895] -[group_41896] -[group_41897] -[group_41898] -[group_41899] -[group_41900] -[group_41901] -[group_41902] -[group_41903] -[group_41904] -[group_41905] -[group_41906] -[group_41907] -[group_41908] -[group_41909] -[group_41910] -[group_41911] -[group_41912] -[group_41913] -[group_41914] -[group_41915] -[group_41916] -[group_41917] -[group_41918] -[group_41919] -[group_41920] -[group_41921] -[group_41922] -[group_41923] -[group_41924] -[group_41925] -[group_41926] -[group_41927] -[group_41928] -[group_41929] -[group_41930] -[group_41931] -[group_41932] -[group_41933] -[group_41934] -[group_41935] -[group_41936] -[group_41937] -[group_41938] -[group_41939] -[group_41940] -[group_41941] -[group_41942] -[group_41943] -[group_41944] -[group_41945] -[group_41946] -[group_41947] -[group_41948] -[group_41949] -[group_41950] -[group_41951] -[group_41952] -[group_41953] -[group_41954] -[group_41955] -[group_41956] -[group_41957] -[group_41958] -[group_41959] -[group_41960] -[group_41961] -[group_41962] -[group_41963] -[group_41964] -[group_41965] -[group_41966] -[group_41967] -[group_41968] -[group_41969] -[group_41970] -[group_41971] -[group_41972] -[group_41973] -[group_41974] -[group_41975] -[group_41976] -[group_41977] -[group_41978] -[group_41979] -[group_41980] -[group_41981] -[group_41982] -[group_41983] -[group_41984] -[group_41985] -[group_41986] -[group_41987] -[group_41988] -[group_41989] -[group_41990] -[group_41991] -[group_41992] -[group_41993] -[group_41994] -[group_41995] -[group_41996] -[group_41997] -[group_41998] -[group_41999] -[group_42000] -[group_42001] -[group_42002] -[group_42003] -[group_42004] -[group_42005] -[group_42006] -[group_42007] -[group_42008] -[group_42009] -[group_42010] -[group_42011] -[group_42012] -[group_42013] -[group_42014] -[group_42015] -[group_42016] -[group_42017] -[group_42018] -[group_42019] -[group_42020] -[group_42021] -[group_42022] -[group_42023] -[group_42024] -[group_42025] -[group_42026] -[group_42027] -[group_42028] -[group_42029] -[group_42030] -[group_42031] -[group_42032] -[group_42033] -[group_42034] -[group_42035] -[group_42036] -[group_42037] -[group_42038] -[group_42039] -[group_42040] -[group_42041] -[group_42042] -[group_42043] -[group_42044] -[group_42045] -[group_42046] -[group_42047] -[group_42048] -[group_42049] -[group_42050] -[group_42051] -[group_42052] -[group_42053] -[group_42054] -[group_42055] -[group_42056] -[group_42057] -[group_42058] -[group_42059] -[group_42060] -[group_42061] -[group_42062] -[group_42063] -[group_42064] -[group_42065] -[group_42066] -[group_42067] -[group_42068] -[group_42069] -[group_42070] -[group_42071] -[group_42072] -[group_42073] -[group_42074] -[group_42075] -[group_42076] -[group_42077] -[group_42078] -[group_42079] -[group_42080] -[group_42081] -[group_42082] -[group_42083] -[group_42084] -[group_42085] -[group_42086] -[group_42087] -[group_42088] -[group_42089] -[group_42090] -[group_42091] -[group_42092] -[group_42093] -[group_42094] -[group_42095] -[group_42096] -[group_42097] -[group_42098] -[group_42099] -[group_42100] -[group_42101] -[group_42102] -[group_42103] -[group_42104] -[group_42105] -[group_42106] -[group_42107] -[group_42108] -[group_42109] -[group_42110] -[group_42111] -[group_42112] -[group_42113] -[group_42114] -[group_42115] -[group_42116] -[group_42117] -[group_42118] -[group_42119] -[group_42120] -[group_42121] -[group_42122] -[group_42123] -[group_42124] -[group_42125] -[group_42126] -[group_42127] -[group_42128] -[group_42129] -[group_42130] -[group_42131] -[group_42132] -[group_42133] -[group_42134] -[group_42135] -[group_42136] -[group_42137] -[group_42138] -[group_42139] -[group_42140] -[group_42141] -[group_42142] -[group_42143] -[group_42144] -[group_42145] -[group_42146] -[group_42147] -[group_42148] -[group_42149] -[group_42150] -[group_42151] -[group_42152] -[group_42153] -[group_42154] -[group_42155] -[group_42156] -[group_42157] -[group_42158] -[group_42159] -[group_42160] -[group_42161] -[group_42162] -[group_42163] -[group_42164] -[group_42165] -[group_42166] -[group_42167] -[group_42168] -[group_42169] -[group_42170] -[group_42171] -[group_42172] -[group_42173] -[group_42174] -[group_42175] -[group_42176] -[group_42177] -[group_42178] -[group_42179] -[group_42180] -[group_42181] -[group_42182] -[group_42183] -[group_42184] -[group_42185] -[group_42186] -[group_42187] -[group_42188] -[group_42189] -[group_42190] -[group_42191] -[group_42192] -[group_42193] -[group_42194] -[group_42195] -[group_42196] -[group_42197] -[group_42198] -[group_42199] -[group_42200] -[group_42201] -[group_42202] -[group_42203] -[group_42204] -[group_42205] -[group_42206] -[group_42207] -[group_42208] -[group_42209] -[group_42210] -[group_42211] -[group_42212] -[group_42213] -[group_42214] -[group_42215] -[group_42216] -[group_42217] -[group_42218] -[group_42219] -[group_42220] -[group_42221] -[group_42222] -[group_42223] -[group_42224] -[group_42225] -[group_42226] -[group_42227] -[group_42228] -[group_42229] -[group_42230] -[group_42231] -[group_42232] -[group_42233] -[group_42234] -[group_42235] -[group_42236] -[group_42237] -[group_42238] -[group_42239] -[group_42240] -[group_42241] -[group_42242] -[group_42243] -[group_42244] -[group_42245] -[group_42246] -[group_42247] -[group_42248] -[group_42249] -[group_42250] -[group_42251] -[group_42252] -[group_42253] -[group_42254] -[group_42255] -[group_42256] -[group_42257] -[group_42258] -[group_42259] -[group_42260] -[group_42261] -[group_42262] -[group_42263] -[group_42264] -[group_42265] -[group_42266] -[group_42267] -[group_42268] -[group_42269] -[group_42270] -[group_42271] -[group_42272] -[group_42273] -[group_42274] -[group_42275] -[group_42276] -[group_42277] -[group_42278] -[group_42279] -[group_42280] -[group_42281] -[group_42282] -[group_42283] -[group_42284] -[group_42285] -[group_42286] -[group_42287] -[group_42288] -[group_42289] -[group_42290] -[group_42291] -[group_42292] -[group_42293] -[group_42294] -[group_42295] -[group_42296] -[group_42297] -[group_42298] -[group_42299] -[group_42300] -[group_42301] -[group_42302] -[group_42303] -[group_42304] -[group_42305] -[group_42306] -[group_42307] -[group_42308] -[group_42309] -[group_42310] -[group_42311] -[group_42312] -[group_42313] -[group_42314] -[group_42315] -[group_42316] -[group_42317] -[group_42318] -[group_42319] -[group_42320] -[group_42321] -[group_42322] -[group_42323] -[group_42324] -[group_42325] -[group_42326] -[group_42327] -[group_42328] -[group_42329] -[group_42330] -[group_42331] -[group_42332] -[group_42333] -[group_42334] -[group_42335] -[group_42336] -[group_42337] -[group_42338] -[group_42339] -[group_42340] -[group_42341] -[group_42342] -[group_42343] -[group_42344] -[group_42345] -[group_42346] -[group_42347] -[group_42348] -[group_42349] -[group_42350] -[group_42351] -[group_42352] -[group_42353] -[group_42354] -[group_42355] -[group_42356] -[group_42357] -[group_42358] -[group_42359] -[group_42360] -[group_42361] -[group_42362] -[group_42363] -[group_42364] -[group_42365] -[group_42366] -[group_42367] -[group_42368] -[group_42369] -[group_42370] -[group_42371] -[group_42372] -[group_42373] -[group_42374] -[group_42375] -[group_42376] -[group_42377] -[group_42378] -[group_42379] -[group_42380] -[group_42381] -[group_42382] -[group_42383] -[group_42384] -[group_42385] -[group_42386] -[group_42387] -[group_42388] -[group_42389] -[group_42390] -[group_42391] -[group_42392] -[group_42393] -[group_42394] -[group_42395] -[group_42396] -[group_42397] -[group_42398] -[group_42399] -[group_42400] -[group_42401] -[group_42402] -[group_42403] -[group_42404] -[group_42405] -[group_42406] -[group_42407] -[group_42408] -[group_42409] -[group_42410] -[group_42411] -[group_42412] -[group_42413] -[group_42414] -[group_42415] -[group_42416] -[group_42417] -[group_42418] -[group_42419] -[group_42420] -[group_42421] -[group_42422] -[group_42423] -[group_42424] -[group_42425] -[group_42426] -[group_42427] -[group_42428] -[group_42429] -[group_42430] -[group_42431] -[group_42432] -[group_42433] -[group_42434] -[group_42435] -[group_42436] -[group_42437] -[group_42438] -[group_42439] -[group_42440] -[group_42441] -[group_42442] -[group_42443] -[group_42444] -[group_42445] -[group_42446] -[group_42447] -[group_42448] -[group_42449] -[group_42450] -[group_42451] -[group_42452] -[group_42453] -[group_42454] -[group_42455] -[group_42456] -[group_42457] -[group_42458] -[group_42459] -[group_42460] -[group_42461] -[group_42462] -[group_42463] -[group_42464] -[group_42465] -[group_42466] -[group_42467] -[group_42468] -[group_42469] -[group_42470] -[group_42471] -[group_42472] -[group_42473] -[group_42474] -[group_42475] -[group_42476] -[group_42477] -[group_42478] -[group_42479] -[group_42480] -[group_42481] -[group_42482] -[group_42483] -[group_42484] -[group_42485] -[group_42486] -[group_42487] -[group_42488] -[group_42489] -[group_42490] -[group_42491] -[group_42492] -[group_42493] -[group_42494] -[group_42495] -[group_42496] -[group_42497] -[group_42498] -[group_42499] -[group_42500] -[group_42501] -[group_42502] -[group_42503] -[group_42504] -[group_42505] -[group_42506] -[group_42507] -[group_42508] -[group_42509] -[group_42510] -[group_42511] -[group_42512] -[group_42513] -[group_42514] -[group_42515] -[group_42516] -[group_42517] -[group_42518] -[group_42519] -[group_42520] -[group_42521] -[group_42522] -[group_42523] -[group_42524] -[group_42525] -[group_42526] -[group_42527] -[group_42528] -[group_42529] -[group_42530] -[group_42531] -[group_42532] -[group_42533] -[group_42534] -[group_42535] -[group_42536] -[group_42537] -[group_42538] -[group_42539] -[group_42540] -[group_42541] -[group_42542] -[group_42543] -[group_42544] -[group_42545] -[group_42546] -[group_42547] -[group_42548] -[group_42549] -[group_42550] -[group_42551] -[group_42552] -[group_42553] -[group_42554] -[group_42555] -[group_42556] -[group_42557] -[group_42558] -[group_42559] -[group_42560] -[group_42561] -[group_42562] -[group_42563] -[group_42564] -[group_42565] -[group_42566] -[group_42567] -[group_42568] -[group_42569] -[group_42570] -[group_42571] -[group_42572] -[group_42573] -[group_42574] -[group_42575] -[group_42576] -[group_42577] -[group_42578] -[group_42579] -[group_42580] -[group_42581] -[group_42582] -[group_42583] -[group_42584] -[group_42585] -[group_42586] -[group_42587] -[group_42588] -[group_42589] -[group_42590] -[group_42591] -[group_42592] -[group_42593] -[group_42594] -[group_42595] -[group_42596] -[group_42597] -[group_42598] -[group_42599] -[group_42600] -[group_42601] -[group_42602] -[group_42603] -[group_42604] -[group_42605] -[group_42606] -[group_42607] -[group_42608] -[group_42609] -[group_42610] -[group_42611] -[group_42612] -[group_42613] -[group_42614] -[group_42615] -[group_42616] -[group_42617] -[group_42618] -[group_42619] -[group_42620] -[group_42621] -[group_42622] -[group_42623] -[group_42624] -[group_42625] -[group_42626] -[group_42627] -[group_42628] -[group_42629] -[group_42630] -[group_42631] -[group_42632] -[group_42633] -[group_42634] -[group_42635] -[group_42636] -[group_42637] -[group_42638] -[group_42639] -[group_42640] -[group_42641] -[group_42642] -[group_42643] -[group_42644] -[group_42645] -[group_42646] -[group_42647] -[group_42648] -[group_42649] -[group_42650] -[group_42651] -[group_42652] -[group_42653] -[group_42654] -[group_42655] -[group_42656] -[group_42657] -[group_42658] -[group_42659] -[group_42660] -[group_42661] -[group_42662] -[group_42663] -[group_42664] -[group_42665] -[group_42666] -[group_42667] -[group_42668] -[group_42669] -[group_42670] -[group_42671] -[group_42672] -[group_42673] -[group_42674] -[group_42675] -[group_42676] -[group_42677] -[group_42678] -[group_42679] -[group_42680] -[group_42681] -[group_42682] -[group_42683] -[group_42684] -[group_42685] -[group_42686] -[group_42687] -[group_42688] -[group_42689] -[group_42690] -[group_42691] -[group_42692] -[group_42693] -[group_42694] -[group_42695] -[group_42696] -[group_42697] -[group_42698] -[group_42699] -[group_42700] -[group_42701] -[group_42702] -[group_42703] -[group_42704] -[group_42705] -[group_42706] -[group_42707] -[group_42708] -[group_42709] -[group_42710] -[group_42711] -[group_42712] -[group_42713] -[group_42714] -[group_42715] -[group_42716] -[group_42717] -[group_42718] -[group_42719] -[group_42720] -[group_42721] -[group_42722] -[group_42723] -[group_42724] -[group_42725] -[group_42726] -[group_42727] -[group_42728] -[group_42729] -[group_42730] -[group_42731] -[group_42732] -[group_42733] -[group_42734] -[group_42735] -[group_42736] -[group_42737] -[group_42738] -[group_42739] -[group_42740] -[group_42741] -[group_42742] -[group_42743] -[group_42744] -[group_42745] -[group_42746] -[group_42747] -[group_42748] -[group_42749] -[group_42750] -[group_42751] -[group_42752] -[group_42753] -[group_42754] -[group_42755] -[group_42756] -[group_42757] -[group_42758] -[group_42759] -[group_42760] -[group_42761] -[group_42762] -[group_42763] -[group_42764] -[group_42765] -[group_42766] -[group_42767] -[group_42768] -[group_42769] -[group_42770] -[group_42771] -[group_42772] -[group_42773] -[group_42774] -[group_42775] -[group_42776] -[group_42777] -[group_42778] -[group_42779] -[group_42780] -[group_42781] -[group_42782] -[group_42783] -[group_42784] -[group_42785] -[group_42786] -[group_42787] -[group_42788] -[group_42789] -[group_42790] -[group_42791] -[group_42792] -[group_42793] -[group_42794] -[group_42795] -[group_42796] -[group_42797] -[group_42798] -[group_42799] -[group_42800] -[group_42801] -[group_42802] -[group_42803] -[group_42804] -[group_42805] -[group_42806] -[group_42807] -[group_42808] -[group_42809] -[group_42810] -[group_42811] -[group_42812] -[group_42813] -[group_42814] -[group_42815] -[group_42816] -[group_42817] -[group_42818] -[group_42819] -[group_42820] -[group_42821] -[group_42822] -[group_42823] -[group_42824] -[group_42825] -[group_42826] -[group_42827] -[group_42828] -[group_42829] -[group_42830] -[group_42831] -[group_42832] -[group_42833] -[group_42834] -[group_42835] -[group_42836] -[group_42837] -[group_42838] -[group_42839] -[group_42840] -[group_42841] -[group_42842] -[group_42843] -[group_42844] -[group_42845] -[group_42846] -[group_42847] -[group_42848] -[group_42849] -[group_42850] -[group_42851] -[group_42852] -[group_42853] -[group_42854] -[group_42855] -[group_42856] -[group_42857] -[group_42858] -[group_42859] -[group_42860] -[group_42861] -[group_42862] -[group_42863] -[group_42864] -[group_42865] -[group_42866] -[group_42867] -[group_42868] -[group_42869] -[group_42870] -[group_42871] -[group_42872] -[group_42873] -[group_42874] -[group_42875] -[group_42876] -[group_42877] -[group_42878] -[group_42879] -[group_42880] -[group_42881] -[group_42882] -[group_42883] -[group_42884] -[group_42885] -[group_42886] -[group_42887] -[group_42888] -[group_42889] -[group_42890] -[group_42891] -[group_42892] -[group_42893] -[group_42894] -[group_42895] -[group_42896] -[group_42897] -[group_42898] -[group_42899] -[group_42900] -[group_42901] -[group_42902] -[group_42903] -[group_42904] -[group_42905] -[group_42906] -[group_42907] -[group_42908] -[group_42909] -[group_42910] -[group_42911] -[group_42912] -[group_42913] -[group_42914] -[group_42915] -[group_42916] -[group_42917] -[group_42918] -[group_42919] -[group_42920] -[group_42921] -[group_42922] -[group_42923] -[group_42924] -[group_42925] -[group_42926] -[group_42927] -[group_42928] -[group_42929] -[group_42930] -[group_42931] -[group_42932] -[group_42933] -[group_42934] -[group_42935] -[group_42936] -[group_42937] -[group_42938] -[group_42939] -[group_42940] -[group_42941] -[group_42942] -[group_42943] -[group_42944] -[group_42945] -[group_42946] -[group_42947] -[group_42948] -[group_42949] -[group_42950] -[group_42951] -[group_42952] -[group_42953] -[group_42954] -[group_42955] -[group_42956] -[group_42957] -[group_42958] -[group_42959] -[group_42960] -[group_42961] -[group_42962] -[group_42963] -[group_42964] -[group_42965] -[group_42966] -[group_42967] -[group_42968] -[group_42969] -[group_42970] -[group_42971] -[group_42972] -[group_42973] -[group_42974] -[group_42975] -[group_42976] -[group_42977] -[group_42978] -[group_42979] -[group_42980] -[group_42981] -[group_42982] -[group_42983] -[group_42984] -[group_42985] -[group_42986] -[group_42987] -[group_42988] -[group_42989] -[group_42990] -[group_42991] -[group_42992] -[group_42993] -[group_42994] -[group_42995] -[group_42996] -[group_42997] -[group_42998] -[group_42999] -[group_43000] -[group_43001] -[group_43002] -[group_43003] -[group_43004] -[group_43005] -[group_43006] -[group_43007] -[group_43008] -[group_43009] -[group_43010] -[group_43011] -[group_43012] -[group_43013] -[group_43014] -[group_43015] -[group_43016] -[group_43017] -[group_43018] -[group_43019] -[group_43020] -[group_43021] -[group_43022] -[group_43023] -[group_43024] -[group_43025] -[group_43026] -[group_43027] -[group_43028] -[group_43029] -[group_43030] -[group_43031] -[group_43032] -[group_43033] -[group_43034] -[group_43035] -[group_43036] -[group_43037] -[group_43038] -[group_43039] -[group_43040] -[group_43041] -[group_43042] -[group_43043] -[group_43044] -[group_43045] -[group_43046] -[group_43047] -[group_43048] -[group_43049] -[group_43050] -[group_43051] -[group_43052] -[group_43053] -[group_43054] -[group_43055] -[group_43056] -[group_43057] -[group_43058] -[group_43059] -[group_43060] -[group_43061] -[group_43062] -[group_43063] -[group_43064] -[group_43065] -[group_43066] -[group_43067] -[group_43068] -[group_43069] -[group_43070] -[group_43071] -[group_43072] -[group_43073] -[group_43074] -[group_43075] -[group_43076] -[group_43077] -[group_43078] -[group_43079] -[group_43080] -[group_43081] -[group_43082] -[group_43083] -[group_43084] -[group_43085] -[group_43086] -[group_43087] -[group_43088] -[group_43089] -[group_43090] -[group_43091] -[group_43092] -[group_43093] -[group_43094] -[group_43095] -[group_43096] -[group_43097] -[group_43098] -[group_43099] -[group_43100] -[group_43101] -[group_43102] -[group_43103] -[group_43104] -[group_43105] -[group_43106] -[group_43107] -[group_43108] -[group_43109] -[group_43110] -[group_43111] -[group_43112] -[group_43113] -[group_43114] -[group_43115] -[group_43116] -[group_43117] -[group_43118] -[group_43119] -[group_43120] -[group_43121] -[group_43122] -[group_43123] -[group_43124] -[group_43125] -[group_43126] -[group_43127] -[group_43128] -[group_43129] -[group_43130] -[group_43131] -[group_43132] -[group_43133] -[group_43134] -[group_43135] -[group_43136] -[group_43137] -[group_43138] -[group_43139] -[group_43140] -[group_43141] -[group_43142] -[group_43143] -[group_43144] -[group_43145] -[group_43146] -[group_43147] -[group_43148] -[group_43149] -[group_43150] -[group_43151] -[group_43152] -[group_43153] -[group_43154] -[group_43155] -[group_43156] -[group_43157] -[group_43158] -[group_43159] -[group_43160] -[group_43161] -[group_43162] -[group_43163] -[group_43164] -[group_43165] -[group_43166] -[group_43167] -[group_43168] -[group_43169] -[group_43170] -[group_43171] -[group_43172] -[group_43173] -[group_43174] -[group_43175] -[group_43176] -[group_43177] -[group_43178] -[group_43179] -[group_43180] -[group_43181] -[group_43182] -[group_43183] -[group_43184] -[group_43185] -[group_43186] -[group_43187] -[group_43188] -[group_43189] -[group_43190] -[group_43191] -[group_43192] -[group_43193] -[group_43194] -[group_43195] -[group_43196] -[group_43197] -[group_43198] -[group_43199] -[group_43200] -[group_43201] -[group_43202] -[group_43203] -[group_43204] -[group_43205] -[group_43206] -[group_43207] -[group_43208] -[group_43209] -[group_43210] -[group_43211] -[group_43212] -[group_43213] -[group_43214] -[group_43215] -[group_43216] -[group_43217] -[group_43218] -[group_43219] -[group_43220] -[group_43221] -[group_43222] -[group_43223] -[group_43224] -[group_43225] -[group_43226] -[group_43227] -[group_43228] -[group_43229] -[group_43230] -[group_43231] -[group_43232] -[group_43233] -[group_43234] -[group_43235] -[group_43236] -[group_43237] -[group_43238] -[group_43239] -[group_43240] -[group_43241] -[group_43242] -[group_43243] -[group_43244] -[group_43245] -[group_43246] -[group_43247] -[group_43248] -[group_43249] -[group_43250] -[group_43251] -[group_43252] -[group_43253] -[group_43254] -[group_43255] -[group_43256] -[group_43257] -[group_43258] -[group_43259] -[group_43260] -[group_43261] -[group_43262] -[group_43263] -[group_43264] -[group_43265] -[group_43266] -[group_43267] -[group_43268] -[group_43269] -[group_43270] -[group_43271] -[group_43272] -[group_43273] -[group_43274] -[group_43275] -[group_43276] -[group_43277] -[group_43278] -[group_43279] -[group_43280] -[group_43281] -[group_43282] -[group_43283] -[group_43284] -[group_43285] -[group_43286] -[group_43287] -[group_43288] -[group_43289] -[group_43290] -[group_43291] -[group_43292] -[group_43293] -[group_43294] -[group_43295] -[group_43296] -[group_43297] -[group_43298] -[group_43299] -[group_43300] -[group_43301] -[group_43302] -[group_43303] -[group_43304] -[group_43305] -[group_43306] -[group_43307] -[group_43308] -[group_43309] -[group_43310] -[group_43311] -[group_43312] -[group_43313] -[group_43314] -[group_43315] -[group_43316] -[group_43317] -[group_43318] -[group_43319] -[group_43320] -[group_43321] -[group_43322] -[group_43323] -[group_43324] -[group_43325] -[group_43326] -[group_43327] -[group_43328] -[group_43329] -[group_43330] -[group_43331] -[group_43332] -[group_43333] -[group_43334] -[group_43335] -[group_43336] -[group_43337] -[group_43338] -[group_43339] -[group_43340] -[group_43341] -[group_43342] -[group_43343] -[group_43344] -[group_43345] -[group_43346] -[group_43347] -[group_43348] -[group_43349] -[group_43350] -[group_43351] -[group_43352] -[group_43353] -[group_43354] -[group_43355] -[group_43356] -[group_43357] -[group_43358] -[group_43359] -[group_43360] -[group_43361] -[group_43362] -[group_43363] -[group_43364] -[group_43365] -[group_43366] -[group_43367] -[group_43368] -[group_43369] -[group_43370] -[group_43371] -[group_43372] -[group_43373] -[group_43374] -[group_43375] -[group_43376] -[group_43377] -[group_43378] -[group_43379] -[group_43380] -[group_43381] -[group_43382] -[group_43383] -[group_43384] -[group_43385] -[group_43386] -[group_43387] -[group_43388] -[group_43389] -[group_43390] -[group_43391] -[group_43392] -[group_43393] -[group_43394] -[group_43395] -[group_43396] -[group_43397] -[group_43398] -[group_43399] -[group_43400] -[group_43401] -[group_43402] -[group_43403] -[group_43404] -[group_43405] -[group_43406] -[group_43407] -[group_43408] -[group_43409] -[group_43410] -[group_43411] -[group_43412] -[group_43413] -[group_43414] -[group_43415] -[group_43416] -[group_43417] -[group_43418] -[group_43419] -[group_43420] -[group_43421] -[group_43422] -[group_43423] -[group_43424] -[group_43425] -[group_43426] -[group_43427] -[group_43428] -[group_43429] -[group_43430] -[group_43431] -[group_43432] -[group_43433] -[group_43434] -[group_43435] -[group_43436] -[group_43437] -[group_43438] -[group_43439] -[group_43440] -[group_43441] -[group_43442] -[group_43443] -[group_43444] -[group_43445] -[group_43446] -[group_43447] -[group_43448] -[group_43449] -[group_43450] -[group_43451] -[group_43452] -[group_43453] -[group_43454] -[group_43455] -[group_43456] -[group_43457] -[group_43458] -[group_43459] -[group_43460] -[group_43461] -[group_43462] -[group_43463] -[group_43464] -[group_43465] -[group_43466] -[group_43467] -[group_43468] -[group_43469] -[group_43470] -[group_43471] -[group_43472] -[group_43473] -[group_43474] -[group_43475] -[group_43476] -[group_43477] -[group_43478] -[group_43479] -[group_43480] -[group_43481] -[group_43482] -[group_43483] -[group_43484] -[group_43485] -[group_43486] -[group_43487] -[group_43488] -[group_43489] -[group_43490] -[group_43491] -[group_43492] -[group_43493] -[group_43494] -[group_43495] -[group_43496] -[group_43497] -[group_43498] -[group_43499] -[group_43500] -[group_43501] -[group_43502] -[group_43503] -[group_43504] -[group_43505] -[group_43506] -[group_43507] -[group_43508] -[group_43509] -[group_43510] -[group_43511] -[group_43512] -[group_43513] -[group_43514] -[group_43515] -[group_43516] -[group_43517] -[group_43518] -[group_43519] -[group_43520] -[group_43521] -[group_43522] -[group_43523] -[group_43524] -[group_43525] -[group_43526] -[group_43527] -[group_43528] -[group_43529] -[group_43530] -[group_43531] -[group_43532] -[group_43533] -[group_43534] -[group_43535] -[group_43536] -[group_43537] -[group_43538] -[group_43539] -[group_43540] -[group_43541] -[group_43542] -[group_43543] -[group_43544] -[group_43545] -[group_43546] -[group_43547] -[group_43548] -[group_43549] -[group_43550] -[group_43551] -[group_43552] -[group_43553] -[group_43554] -[group_43555] -[group_43556] -[group_43557] -[group_43558] -[group_43559] -[group_43560] -[group_43561] -[group_43562] -[group_43563] -[group_43564] -[group_43565] -[group_43566] -[group_43567] -[group_43568] -[group_43569] -[group_43570] -[group_43571] -[group_43572] -[group_43573] -[group_43574] -[group_43575] -[group_43576] -[group_43577] -[group_43578] -[group_43579] -[group_43580] -[group_43581] -[group_43582] -[group_43583] -[group_43584] -[group_43585] -[group_43586] -[group_43587] -[group_43588] -[group_43589] -[group_43590] -[group_43591] -[group_43592] -[group_43593] -[group_43594] -[group_43595] -[group_43596] -[group_43597] -[group_43598] -[group_43599] -[group_43600] -[group_43601] -[group_43602] -[group_43603] -[group_43604] -[group_43605] -[group_43606] -[group_43607] -[group_43608] -[group_43609] -[group_43610] -[group_43611] -[group_43612] -[group_43613] -[group_43614] -[group_43615] -[group_43616] -[group_43617] -[group_43618] -[group_43619] -[group_43620] -[group_43621] -[group_43622] -[group_43623] -[group_43624] -[group_43625] -[group_43626] -[group_43627] -[group_43628] -[group_43629] -[group_43630] -[group_43631] -[group_43632] -[group_43633] -[group_43634] -[group_43635] -[group_43636] -[group_43637] -[group_43638] -[group_43639] -[group_43640] -[group_43641] -[group_43642] -[group_43643] -[group_43644] -[group_43645] -[group_43646] -[group_43647] -[group_43648] -[group_43649] -[group_43650] -[group_43651] -[group_43652] -[group_43653] -[group_43654] -[group_43655] -[group_43656] -[group_43657] -[group_43658] -[group_43659] -[group_43660] -[group_43661] -[group_43662] -[group_43663] -[group_43664] -[group_43665] -[group_43666] -[group_43667] -[group_43668] -[group_43669] -[group_43670] -[group_43671] -[group_43672] -[group_43673] -[group_43674] -[group_43675] -[group_43676] -[group_43677] -[group_43678] -[group_43679] -[group_43680] -[group_43681] -[group_43682] -[group_43683] -[group_43684] -[group_43685] -[group_43686] -[group_43687] -[group_43688] -[group_43689] -[group_43690] -[group_43691] -[group_43692] -[group_43693] -[group_43694] -[group_43695] -[group_43696] -[group_43697] -[group_43698] -[group_43699] -[group_43700] -[group_43701] -[group_43702] -[group_43703] -[group_43704] -[group_43705] -[group_43706] -[group_43707] -[group_43708] -[group_43709] -[group_43710] -[group_43711] -[group_43712] -[group_43713] -[group_43714] -[group_43715] -[group_43716] -[group_43717] -[group_43718] -[group_43719] -[group_43720] -[group_43721] -[group_43722] -[group_43723] -[group_43724] -[group_43725] -[group_43726] -[group_43727] -[group_43728] -[group_43729] -[group_43730] -[group_43731] -[group_43732] -[group_43733] -[group_43734] -[group_43735] -[group_43736] -[group_43737] -[group_43738] -[group_43739] -[group_43740] -[group_43741] -[group_43742] -[group_43743] -[group_43744] -[group_43745] -[group_43746] -[group_43747] -[group_43748] -[group_43749] -[group_43750] -[group_43751] -[group_43752] -[group_43753] -[group_43754] -[group_43755] -[group_43756] -[group_43757] -[group_43758] -[group_43759] -[group_43760] -[group_43761] -[group_43762] -[group_43763] -[group_43764] -[group_43765] -[group_43766] -[group_43767] -[group_43768] -[group_43769] -[group_43770] -[group_43771] -[group_43772] -[group_43773] -[group_43774] -[group_43775] -[group_43776] -[group_43777] -[group_43778] -[group_43779] -[group_43780] -[group_43781] -[group_43782] -[group_43783] -[group_43784] -[group_43785] -[group_43786] -[group_43787] -[group_43788] -[group_43789] -[group_43790] -[group_43791] -[group_43792] -[group_43793] -[group_43794] -[group_43795] -[group_43796] -[group_43797] -[group_43798] -[group_43799] -[group_43800] -[group_43801] -[group_43802] -[group_43803] -[group_43804] -[group_43805] -[group_43806] -[group_43807] -[group_43808] -[group_43809] -[group_43810] -[group_43811] -[group_43812] -[group_43813] -[group_43814] -[group_43815] -[group_43816] -[group_43817] -[group_43818] -[group_43819] -[group_43820] -[group_43821] -[group_43822] -[group_43823] -[group_43824] -[group_43825] -[group_43826] -[group_43827] -[group_43828] -[group_43829] -[group_43830] -[group_43831] -[group_43832] -[group_43833] -[group_43834] -[group_43835] -[group_43836] -[group_43837] -[group_43838] -[group_43839] -[group_43840] -[group_43841] -[group_43842] -[group_43843] -[group_43844] -[group_43845] -[group_43846] -[group_43847] -[group_43848] -[group_43849] -[group_43850] -[group_43851] -[group_43852] -[group_43853] -[group_43854] -[group_43855] -[group_43856] -[group_43857] -[group_43858] -[group_43859] -[group_43860] -[group_43861] -[group_43862] -[group_43863] -[group_43864] -[group_43865] -[group_43866] -[group_43867] -[group_43868] -[group_43869] -[group_43870] -[group_43871] -[group_43872] -[group_43873] -[group_43874] -[group_43875] -[group_43876] -[group_43877] -[group_43878] -[group_43879] -[group_43880] -[group_43881] -[group_43882] -[group_43883] -[group_43884] -[group_43885] -[group_43886] -[group_43887] -[group_43888] -[group_43889] -[group_43890] -[group_43891] -[group_43892] -[group_43893] -[group_43894] -[group_43895] -[group_43896] -[group_43897] -[group_43898] -[group_43899] -[group_43900] -[group_43901] -[group_43902] -[group_43903] -[group_43904] -[group_43905] -[group_43906] -[group_43907] -[group_43908] -[group_43909] -[group_43910] -[group_43911] -[group_43912] -[group_43913] -[group_43914] -[group_43915] -[group_43916] -[group_43917] -[group_43918] -[group_43919] -[group_43920] -[group_43921] -[group_43922] -[group_43923] -[group_43924] -[group_43925] -[group_43926] -[group_43927] -[group_43928] -[group_43929] -[group_43930] -[group_43931] -[group_43932] -[group_43933] -[group_43934] -[group_43935] -[group_43936] -[group_43937] -[group_43938] -[group_43939] -[group_43940] -[group_43941] -[group_43942] -[group_43943] -[group_43944] -[group_43945] -[group_43946] -[group_43947] -[group_43948] -[group_43949] -[group_43950] -[group_43951] -[group_43952] -[group_43953] -[group_43954] -[group_43955] -[group_43956] -[group_43957] -[group_43958] -[group_43959] -[group_43960] -[group_43961] -[group_43962] -[group_43963] -[group_43964] -[group_43965] -[group_43966] -[group_43967] -[group_43968] -[group_43969] -[group_43970] -[group_43971] -[group_43972] -[group_43973] -[group_43974] -[group_43975] -[group_43976] -[group_43977] -[group_43978] -[group_43979] -[group_43980] -[group_43981] -[group_43982] -[group_43983] -[group_43984] -[group_43985] -[group_43986] -[group_43987] -[group_43988] -[group_43989] -[group_43990] -[group_43991] -[group_43992] -[group_43993] -[group_43994] -[group_43995] -[group_43996] -[group_43997] -[group_43998] -[group_43999] -[group_44000] -[group_44001] -[group_44002] -[group_44003] -[group_44004] -[group_44005] -[group_44006] -[group_44007] -[group_44008] -[group_44009] -[group_44010] -[group_44011] -[group_44012] -[group_44013] -[group_44014] -[group_44015] -[group_44016] -[group_44017] -[group_44018] -[group_44019] -[group_44020] -[group_44021] -[group_44022] -[group_44023] -[group_44024] -[group_44025] -[group_44026] -[group_44027] -[group_44028] -[group_44029] -[group_44030] -[group_44031] -[group_44032] -[group_44033] -[group_44034] -[group_44035] -[group_44036] -[group_44037] -[group_44038] -[group_44039] -[group_44040] -[group_44041] -[group_44042] -[group_44043] -[group_44044] -[group_44045] -[group_44046] -[group_44047] -[group_44048] -[group_44049] -[group_44050] -[group_44051] -[group_44052] -[group_44053] -[group_44054] -[group_44055] -[group_44056] -[group_44057] -[group_44058] -[group_44059] -[group_44060] -[group_44061] -[group_44062] -[group_44063] -[group_44064] -[group_44065] -[group_44066] -[group_44067] -[group_44068] -[group_44069] -[group_44070] -[group_44071] -[group_44072] -[group_44073] -[group_44074] -[group_44075] -[group_44076] -[group_44077] -[group_44078] -[group_44079] -[group_44080] -[group_44081] -[group_44082] -[group_44083] -[group_44084] -[group_44085] -[group_44086] -[group_44087] -[group_44088] -[group_44089] -[group_44090] -[group_44091] -[group_44092] -[group_44093] -[group_44094] -[group_44095] -[group_44096] -[group_44097] -[group_44098] -[group_44099] -[group_44100] -[group_44101] -[group_44102] -[group_44103] -[group_44104] -[group_44105] -[group_44106] -[group_44107] -[group_44108] -[group_44109] -[group_44110] -[group_44111] -[group_44112] -[group_44113] -[group_44114] -[group_44115] -[group_44116] -[group_44117] -[group_44118] -[group_44119] -[group_44120] -[group_44121] -[group_44122] -[group_44123] -[group_44124] -[group_44125] -[group_44126] -[group_44127] -[group_44128] -[group_44129] -[group_44130] -[group_44131] -[group_44132] -[group_44133] -[group_44134] -[group_44135] -[group_44136] -[group_44137] -[group_44138] -[group_44139] -[group_44140] -[group_44141] -[group_44142] -[group_44143] -[group_44144] -[group_44145] -[group_44146] -[group_44147] -[group_44148] -[group_44149] -[group_44150] -[group_44151] -[group_44152] -[group_44153] -[group_44154] -[group_44155] -[group_44156] -[group_44157] -[group_44158] -[group_44159] -[group_44160] -[group_44161] -[group_44162] -[group_44163] -[group_44164] -[group_44165] -[group_44166] -[group_44167] -[group_44168] -[group_44169] -[group_44170] -[group_44171] -[group_44172] -[group_44173] -[group_44174] -[group_44175] -[group_44176] -[group_44177] -[group_44178] -[group_44179] -[group_44180] -[group_44181] -[group_44182] -[group_44183] -[group_44184] -[group_44185] -[group_44186] -[group_44187] -[group_44188] -[group_44189] -[group_44190] -[group_44191] -[group_44192] -[group_44193] -[group_44194] -[group_44195] -[group_44196] -[group_44197] -[group_44198] -[group_44199] -[group_44200] -[group_44201] -[group_44202] -[group_44203] -[group_44204] -[group_44205] -[group_44206] -[group_44207] -[group_44208] -[group_44209] -[group_44210] -[group_44211] -[group_44212] -[group_44213] -[group_44214] -[group_44215] -[group_44216] -[group_44217] -[group_44218] -[group_44219] -[group_44220] -[group_44221] -[group_44222] -[group_44223] -[group_44224] -[group_44225] -[group_44226] -[group_44227] -[group_44228] -[group_44229] -[group_44230] -[group_44231] -[group_44232] -[group_44233] -[group_44234] -[group_44235] -[group_44236] -[group_44237] -[group_44238] -[group_44239] -[group_44240] -[group_44241] -[group_44242] -[group_44243] -[group_44244] -[group_44245] -[group_44246] -[group_44247] -[group_44248] -[group_44249] -[group_44250] -[group_44251] -[group_44252] -[group_44253] -[group_44254] -[group_44255] -[group_44256] -[group_44257] -[group_44258] -[group_44259] -[group_44260] -[group_44261] -[group_44262] -[group_44263] -[group_44264] -[group_44265] -[group_44266] -[group_44267] -[group_44268] -[group_44269] -[group_44270] -[group_44271] -[group_44272] -[group_44273] -[group_44274] -[group_44275] -[group_44276] -[group_44277] -[group_44278] -[group_44279] -[group_44280] -[group_44281] -[group_44282] -[group_44283] -[group_44284] -[group_44285] -[group_44286] -[group_44287] -[group_44288] -[group_44289] -[group_44290] -[group_44291] -[group_44292] -[group_44293] -[group_44294] -[group_44295] -[group_44296] -[group_44297] -[group_44298] -[group_44299] -[group_44300] -[group_44301] -[group_44302] -[group_44303] -[group_44304] -[group_44305] -[group_44306] -[group_44307] -[group_44308] -[group_44309] -[group_44310] -[group_44311] -[group_44312] -[group_44313] -[group_44314] -[group_44315] -[group_44316] -[group_44317] -[group_44318] -[group_44319] -[group_44320] -[group_44321] -[group_44322] -[group_44323] -[group_44324] -[group_44325] -[group_44326] -[group_44327] -[group_44328] -[group_44329] -[group_44330] -[group_44331] -[group_44332] -[group_44333] -[group_44334] -[group_44335] -[group_44336] -[group_44337] -[group_44338] -[group_44339] -[group_44340] -[group_44341] -[group_44342] -[group_44343] -[group_44344] -[group_44345] -[group_44346] -[group_44347] -[group_44348] -[group_44349] -[group_44350] -[group_44351] -[group_44352] -[group_44353] -[group_44354] -[group_44355] -[group_44356] -[group_44357] -[group_44358] -[group_44359] -[group_44360] -[group_44361] -[group_44362] -[group_44363] -[group_44364] -[group_44365] -[group_44366] -[group_44367] -[group_44368] -[group_44369] -[group_44370] -[group_44371] -[group_44372] -[group_44373] -[group_44374] -[group_44375] -[group_44376] -[group_44377] -[group_44378] -[group_44379] -[group_44380] -[group_44381] -[group_44382] -[group_44383] -[group_44384] -[group_44385] -[group_44386] -[group_44387] -[group_44388] -[group_44389] -[group_44390] -[group_44391] -[group_44392] -[group_44393] -[group_44394] -[group_44395] -[group_44396] -[group_44397] -[group_44398] -[group_44399] -[group_44400] -[group_44401] -[group_44402] -[group_44403] -[group_44404] -[group_44405] -[group_44406] -[group_44407] -[group_44408] -[group_44409] -[group_44410] -[group_44411] -[group_44412] -[group_44413] -[group_44414] -[group_44415] -[group_44416] -[group_44417] -[group_44418] -[group_44419] -[group_44420] -[group_44421] -[group_44422] -[group_44423] -[group_44424] -[group_44425] -[group_44426] -[group_44427] -[group_44428] -[group_44429] -[group_44430] -[group_44431] -[group_44432] -[group_44433] -[group_44434] -[group_44435] -[group_44436] -[group_44437] -[group_44438] -[group_44439] -[group_44440] -[group_44441] -[group_44442] -[group_44443] -[group_44444] -[group_44445] -[group_44446] -[group_44447] -[group_44448] -[group_44449] -[group_44450] -[group_44451] -[group_44452] -[group_44453] -[group_44454] -[group_44455] -[group_44456] -[group_44457] -[group_44458] -[group_44459] -[group_44460] -[group_44461] -[group_44462] -[group_44463] -[group_44464] -[group_44465] -[group_44466] -[group_44467] -[group_44468] -[group_44469] -[group_44470] -[group_44471] -[group_44472] -[group_44473] -[group_44474] -[group_44475] -[group_44476] -[group_44477] -[group_44478] -[group_44479] -[group_44480] -[group_44481] -[group_44482] -[group_44483] -[group_44484] -[group_44485] -[group_44486] -[group_44487] -[group_44488] -[group_44489] -[group_44490] -[group_44491] -[group_44492] -[group_44493] -[group_44494] -[group_44495] -[group_44496] -[group_44497] -[group_44498] -[group_44499] -[group_44500] -[group_44501] -[group_44502] -[group_44503] -[group_44504] -[group_44505] -[group_44506] -[group_44507] -[group_44508] -[group_44509] -[group_44510] -[group_44511] -[group_44512] -[group_44513] -[group_44514] -[group_44515] -[group_44516] -[group_44517] -[group_44518] -[group_44519] -[group_44520] -[group_44521] -[group_44522] -[group_44523] -[group_44524] -[group_44525] -[group_44526] -[group_44527] -[group_44528] -[group_44529] -[group_44530] -[group_44531] -[group_44532] -[group_44533] -[group_44534] -[group_44535] -[group_44536] -[group_44537] -[group_44538] -[group_44539] -[group_44540] -[group_44541] -[group_44542] -[group_44543] -[group_44544] -[group_44545] -[group_44546] -[group_44547] -[group_44548] -[group_44549] -[group_44550] -[group_44551] -[group_44552] -[group_44553] -[group_44554] -[group_44555] -[group_44556] -[group_44557] -[group_44558] -[group_44559] -[group_44560] -[group_44561] -[group_44562] -[group_44563] -[group_44564] -[group_44565] -[group_44566] -[group_44567] -[group_44568] -[group_44569] -[group_44570] -[group_44571] -[group_44572] -[group_44573] -[group_44574] -[group_44575] -[group_44576] -[group_44577] -[group_44578] -[group_44579] -[group_44580] -[group_44581] -[group_44582] -[group_44583] -[group_44584] -[group_44585] -[group_44586] -[group_44587] -[group_44588] -[group_44589] -[group_44590] -[group_44591] -[group_44592] -[group_44593] -[group_44594] -[group_44595] -[group_44596] -[group_44597] -[group_44598] -[group_44599] -[group_44600] -[group_44601] -[group_44602] -[group_44603] -[group_44604] -[group_44605] -[group_44606] -[group_44607] -[group_44608] -[group_44609] -[group_44610] -[group_44611] -[group_44612] -[group_44613] -[group_44614] -[group_44615] -[group_44616] -[group_44617] -[group_44618] -[group_44619] -[group_44620] -[group_44621] -[group_44622] -[group_44623] -[group_44624] -[group_44625] -[group_44626] -[group_44627] -[group_44628] -[group_44629] -[group_44630] -[group_44631] -[group_44632] -[group_44633] -[group_44634] -[group_44635] -[group_44636] -[group_44637] -[group_44638] -[group_44639] -[group_44640] -[group_44641] -[group_44642] -[group_44643] -[group_44644] -[group_44645] -[group_44646] -[group_44647] -[group_44648] -[group_44649] -[group_44650] -[group_44651] -[group_44652] -[group_44653] -[group_44654] -[group_44655] -[group_44656] -[group_44657] -[group_44658] -[group_44659] -[group_44660] -[group_44661] -[group_44662] -[group_44663] -[group_44664] -[group_44665] -[group_44666] -[group_44667] -[group_44668] -[group_44669] -[group_44670] -[group_44671] -[group_44672] -[group_44673] -[group_44674] -[group_44675] -[group_44676] -[group_44677] -[group_44678] -[group_44679] -[group_44680] -[group_44681] -[group_44682] -[group_44683] -[group_44684] -[group_44685] -[group_44686] -[group_44687] -[group_44688] -[group_44689] -[group_44690] -[group_44691] -[group_44692] -[group_44693] -[group_44694] -[group_44695] -[group_44696] -[group_44697] -[group_44698] -[group_44699] -[group_44700] -[group_44701] -[group_44702] -[group_44703] -[group_44704] -[group_44705] -[group_44706] -[group_44707] -[group_44708] -[group_44709] -[group_44710] -[group_44711] -[group_44712] -[group_44713] -[group_44714] -[group_44715] -[group_44716] -[group_44717] -[group_44718] -[group_44719] -[group_44720] -[group_44721] -[group_44722] -[group_44723] -[group_44724] -[group_44725] -[group_44726] -[group_44727] -[group_44728] -[group_44729] -[group_44730] -[group_44731] -[group_44732] -[group_44733] -[group_44734] -[group_44735] -[group_44736] -[group_44737] -[group_44738] -[group_44739] -[group_44740] -[group_44741] -[group_44742] -[group_44743] -[group_44744] -[group_44745] -[group_44746] -[group_44747] -[group_44748] -[group_44749] -[group_44750] -[group_44751] -[group_44752] -[group_44753] -[group_44754] -[group_44755] -[group_44756] -[group_44757] -[group_44758] -[group_44759] -[group_44760] -[group_44761] -[group_44762] -[group_44763] -[group_44764] -[group_44765] -[group_44766] -[group_44767] -[group_44768] -[group_44769] -[group_44770] -[group_44771] -[group_44772] -[group_44773] -[group_44774] -[group_44775] -[group_44776] -[group_44777] -[group_44778] -[group_44779] -[group_44780] -[group_44781] -[group_44782] -[group_44783] -[group_44784] -[group_44785] -[group_44786] -[group_44787] -[group_44788] -[group_44789] -[group_44790] -[group_44791] -[group_44792] -[group_44793] -[group_44794] -[group_44795] -[group_44796] -[group_44797] -[group_44798] -[group_44799] -[group_44800] -[group_44801] -[group_44802] -[group_44803] -[group_44804] -[group_44805] -[group_44806] -[group_44807] -[group_44808] -[group_44809] -[group_44810] -[group_44811] -[group_44812] -[group_44813] -[group_44814] -[group_44815] -[group_44816] -[group_44817] -[group_44818] -[group_44819] -[group_44820] -[group_44821] -[group_44822] -[group_44823] -[group_44824] -[group_44825] -[group_44826] -[group_44827] -[group_44828] -[group_44829] -[group_44830] -[group_44831] -[group_44832] -[group_44833] -[group_44834] -[group_44835] -[group_44836] -[group_44837] -[group_44838] -[group_44839] -[group_44840] -[group_44841] -[group_44842] -[group_44843] -[group_44844] -[group_44845] -[group_44846] -[group_44847] -[group_44848] -[group_44849] -[group_44850] -[group_44851] -[group_44852] -[group_44853] -[group_44854] -[group_44855] -[group_44856] -[group_44857] -[group_44858] -[group_44859] -[group_44860] -[group_44861] -[group_44862] -[group_44863] -[group_44864] -[group_44865] -[group_44866] -[group_44867] -[group_44868] -[group_44869] -[group_44870] -[group_44871] -[group_44872] -[group_44873] -[group_44874] -[group_44875] -[group_44876] -[group_44877] -[group_44878] -[group_44879] -[group_44880] -[group_44881] -[group_44882] -[group_44883] -[group_44884] -[group_44885] -[group_44886] -[group_44887] -[group_44888] -[group_44889] -[group_44890] -[group_44891] -[group_44892] -[group_44893] -[group_44894] -[group_44895] -[group_44896] -[group_44897] -[group_44898] -[group_44899] -[group_44900] -[group_44901] -[group_44902] -[group_44903] -[group_44904] -[group_44905] -[group_44906] -[group_44907] -[group_44908] -[group_44909] -[group_44910] -[group_44911] -[group_44912] -[group_44913] -[group_44914] -[group_44915] -[group_44916] -[group_44917] -[group_44918] -[group_44919] -[group_44920] -[group_44921] -[group_44922] -[group_44923] -[group_44924] -[group_44925] -[group_44926] -[group_44927] -[group_44928] -[group_44929] -[group_44930] -[group_44931] -[group_44932] -[group_44933] -[group_44934] -[group_44935] -[group_44936] -[group_44937] -[group_44938] -[group_44939] -[group_44940] -[group_44941] -[group_44942] -[group_44943] -[group_44944] -[group_44945] -[group_44946] -[group_44947] -[group_44948] -[group_44949] -[group_44950] -[group_44951] -[group_44952] -[group_44953] -[group_44954] -[group_44955] -[group_44956] -[group_44957] -[group_44958] -[group_44959] -[group_44960] -[group_44961] -[group_44962] -[group_44963] -[group_44964] -[group_44965] -[group_44966] -[group_44967] -[group_44968] -[group_44969] -[group_44970] -[group_44971] -[group_44972] -[group_44973] -[group_44974] -[group_44975] -[group_44976] -[group_44977] -[group_44978] -[group_44979] -[group_44980] -[group_44981] -[group_44982] -[group_44983] -[group_44984] -[group_44985] -[group_44986] -[group_44987] -[group_44988] -[group_44989] -[group_44990] -[group_44991] -[group_44992] -[group_44993] -[group_44994] -[group_44995] -[group_44996] -[group_44997] -[group_44998] -[group_44999] -[group_45000] -[group_45001] -[group_45002] -[group_45003] -[group_45004] -[group_45005] -[group_45006] -[group_45007] -[group_45008] -[group_45009] -[group_45010] -[group_45011] -[group_45012] -[group_45013] -[group_45014] -[group_45015] -[group_45016] -[group_45017] -[group_45018] -[group_45019] -[group_45020] -[group_45021] -[group_45022] -[group_45023] -[group_45024] -[group_45025] -[group_45026] -[group_45027] -[group_45028] -[group_45029] -[group_45030] -[group_45031] -[group_45032] -[group_45033] -[group_45034] -[group_45035] -[group_45036] -[group_45037] -[group_45038] -[group_45039] -[group_45040] -[group_45041] -[group_45042] -[group_45043] -[group_45044] -[group_45045] -[group_45046] -[group_45047] -[group_45048] -[group_45049] -[group_45050] -[group_45051] -[group_45052] -[group_45053] -[group_45054] -[group_45055] -[group_45056] -[group_45057] -[group_45058] -[group_45059] -[group_45060] -[group_45061] -[group_45062] -[group_45063] -[group_45064] -[group_45065] -[group_45066] -[group_45067] -[group_45068] -[group_45069] -[group_45070] -[group_45071] -[group_45072] -[group_45073] -[group_45074] -[group_45075] -[group_45076] -[group_45077] -[group_45078] -[group_45079] -[group_45080] -[group_45081] -[group_45082] -[group_45083] -[group_45084] -[group_45085] -[group_45086] -[group_45087] -[group_45088] -[group_45089] -[group_45090] -[group_45091] -[group_45092] -[group_45093] -[group_45094] -[group_45095] -[group_45096] -[group_45097] -[group_45098] -[group_45099] -[group_45100] -[group_45101] -[group_45102] -[group_45103] -[group_45104] -[group_45105] -[group_45106] -[group_45107] -[group_45108] -[group_45109] -[group_45110] -[group_45111] -[group_45112] -[group_45113] -[group_45114] -[group_45115] -[group_45116] -[group_45117] -[group_45118] -[group_45119] -[group_45120] -[group_45121] -[group_45122] -[group_45123] -[group_45124] -[group_45125] -[group_45126] -[group_45127] -[group_45128] -[group_45129] -[group_45130] -[group_45131] -[group_45132] -[group_45133] -[group_45134] -[group_45135] -[group_45136] -[group_45137] -[group_45138] -[group_45139] -[group_45140] -[group_45141] -[group_45142] -[group_45143] -[group_45144] -[group_45145] -[group_45146] -[group_45147] -[group_45148] -[group_45149] -[group_45150] -[group_45151] -[group_45152] -[group_45153] -[group_45154] -[group_45155] -[group_45156] -[group_45157] -[group_45158] -[group_45159] -[group_45160] -[group_45161] -[group_45162] -[group_45163] -[group_45164] -[group_45165] -[group_45166] -[group_45167] -[group_45168] -[group_45169] -[group_45170] -[group_45171] -[group_45172] -[group_45173] -[group_45174] -[group_45175] -[group_45176] -[group_45177] -[group_45178] -[group_45179] -[group_45180] -[group_45181] -[group_45182] -[group_45183] -[group_45184] -[group_45185] -[group_45186] -[group_45187] -[group_45188] -[group_45189] -[group_45190] -[group_45191] -[group_45192] -[group_45193] -[group_45194] -[group_45195] -[group_45196] -[group_45197] -[group_45198] -[group_45199] -[group_45200] -[group_45201] -[group_45202] -[group_45203] -[group_45204] -[group_45205] -[group_45206] -[group_45207] -[group_45208] -[group_45209] -[group_45210] -[group_45211] -[group_45212] -[group_45213] -[group_45214] -[group_45215] -[group_45216] -[group_45217] -[group_45218] -[group_45219] -[group_45220] -[group_45221] -[group_45222] -[group_45223] -[group_45224] -[group_45225] -[group_45226] -[group_45227] -[group_45228] -[group_45229] -[group_45230] -[group_45231] -[group_45232] -[group_45233] -[group_45234] -[group_45235] -[group_45236] -[group_45237] -[group_45238] -[group_45239] -[group_45240] -[group_45241] -[group_45242] -[group_45243] -[group_45244] -[group_45245] -[group_45246] -[group_45247] -[group_45248] -[group_45249] -[group_45250] -[group_45251] -[group_45252] -[group_45253] -[group_45254] -[group_45255] -[group_45256] -[group_45257] -[group_45258] -[group_45259] -[group_45260] -[group_45261] -[group_45262] -[group_45263] -[group_45264] -[group_45265] -[group_45266] -[group_45267] -[group_45268] -[group_45269] -[group_45270] -[group_45271] -[group_45272] -[group_45273] -[group_45274] -[group_45275] -[group_45276] -[group_45277] -[group_45278] -[group_45279] -[group_45280] -[group_45281] -[group_45282] -[group_45283] -[group_45284] -[group_45285] -[group_45286] -[group_45287] -[group_45288] -[group_45289] -[group_45290] -[group_45291] -[group_45292] -[group_45293] -[group_45294] -[group_45295] -[group_45296] -[group_45297] -[group_45298] -[group_45299] -[group_45300] -[group_45301] -[group_45302] -[group_45303] -[group_45304] -[group_45305] -[group_45306] -[group_45307] -[group_45308] -[group_45309] -[group_45310] -[group_45311] -[group_45312] -[group_45313] -[group_45314] -[group_45315] -[group_45316] -[group_45317] -[group_45318] -[group_45319] -[group_45320] -[group_45321] -[group_45322] -[group_45323] -[group_45324] -[group_45325] -[group_45326] -[group_45327] -[group_45328] -[group_45329] -[group_45330] -[group_45331] -[group_45332] -[group_45333] -[group_45334] -[group_45335] -[group_45336] -[group_45337] -[group_45338] -[group_45339] -[group_45340] -[group_45341] -[group_45342] -[group_45343] -[group_45344] -[group_45345] -[group_45346] -[group_45347] -[group_45348] -[group_45349] -[group_45350] -[group_45351] -[group_45352] -[group_45353] -[group_45354] -[group_45355] -[group_45356] -[group_45357] -[group_45358] -[group_45359] -[group_45360] -[group_45361] -[group_45362] -[group_45363] -[group_45364] -[group_45365] -[group_45366] -[group_45367] -[group_45368] -[group_45369] -[group_45370] -[group_45371] -[group_45372] -[group_45373] -[group_45374] -[group_45375] -[group_45376] -[group_45377] -[group_45378] -[group_45379] -[group_45380] -[group_45381] -[group_45382] -[group_45383] -[group_45384] -[group_45385] -[group_45386] -[group_45387] -[group_45388] -[group_45389] -[group_45390] -[group_45391] -[group_45392] -[group_45393] -[group_45394] -[group_45395] -[group_45396] -[group_45397] -[group_45398] -[group_45399] -[group_45400] -[group_45401] -[group_45402] -[group_45403] -[group_45404] -[group_45405] -[group_45406] -[group_45407] -[group_45408] -[group_45409] -[group_45410] -[group_45411] -[group_45412] -[group_45413] -[group_45414] -[group_45415] -[group_45416] -[group_45417] -[group_45418] -[group_45419] -[group_45420] -[group_45421] -[group_45422] -[group_45423] -[group_45424] -[group_45425] -[group_45426] -[group_45427] -[group_45428] -[group_45429] -[group_45430] -[group_45431] -[group_45432] -[group_45433] -[group_45434] -[group_45435] -[group_45436] -[group_45437] -[group_45438] -[group_45439] -[group_45440] -[group_45441] -[group_45442] -[group_45443] -[group_45444] -[group_45445] -[group_45446] -[group_45447] -[group_45448] -[group_45449] -[group_45450] -[group_45451] -[group_45452] -[group_45453] -[group_45454] -[group_45455] -[group_45456] -[group_45457] -[group_45458] -[group_45459] -[group_45460] -[group_45461] -[group_45462] -[group_45463] -[group_45464] -[group_45465] -[group_45466] -[group_45467] -[group_45468] -[group_45469] -[group_45470] -[group_45471] -[group_45472] -[group_45473] -[group_45474] -[group_45475] -[group_45476] -[group_45477] -[group_45478] -[group_45479] -[group_45480] -[group_45481] -[group_45482] -[group_45483] -[group_45484] -[group_45485] -[group_45486] -[group_45487] -[group_45488] -[group_45489] -[group_45490] -[group_45491] -[group_45492] -[group_45493] -[group_45494] -[group_45495] -[group_45496] -[group_45497] -[group_45498] -[group_45499] -[group_45500] -[group_45501] -[group_45502] -[group_45503] -[group_45504] -[group_45505] -[group_45506] -[group_45507] -[group_45508] -[group_45509] -[group_45510] -[group_45511] -[group_45512] -[group_45513] -[group_45514] -[group_45515] -[group_45516] -[group_45517] -[group_45518] -[group_45519] -[group_45520] -[group_45521] -[group_45522] -[group_45523] -[group_45524] -[group_45525] -[group_45526] -[group_45527] -[group_45528] -[group_45529] -[group_45530] -[group_45531] -[group_45532] -[group_45533] -[group_45534] -[group_45535] -[group_45536] -[group_45537] -[group_45538] -[group_45539] -[group_45540] -[group_45541] -[group_45542] -[group_45543] -[group_45544] -[group_45545] -[group_45546] -[group_45547] -[group_45548] -[group_45549] -[group_45550] -[group_45551] -[group_45552] -[group_45553] -[group_45554] -[group_45555] -[group_45556] -[group_45557] -[group_45558] -[group_45559] -[group_45560] -[group_45561] -[group_45562] -[group_45563] -[group_45564] -[group_45565] -[group_45566] -[group_45567] -[group_45568] -[group_45569] -[group_45570] -[group_45571] -[group_45572] -[group_45573] -[group_45574] -[group_45575] -[group_45576] -[group_45577] -[group_45578] -[group_45579] -[group_45580] -[group_45581] -[group_45582] -[group_45583] -[group_45584] -[group_45585] -[group_45586] -[group_45587] -[group_45588] -[group_45589] -[group_45590] -[group_45591] -[group_45592] -[group_45593] -[group_45594] -[group_45595] -[group_45596] -[group_45597] -[group_45598] -[group_45599] -[group_45600] -[group_45601] -[group_45602] -[group_45603] -[group_45604] -[group_45605] -[group_45606] -[group_45607] -[group_45608] -[group_45609] -[group_45610] -[group_45611] -[group_45612] -[group_45613] -[group_45614] -[group_45615] -[group_45616] -[group_45617] -[group_45618] -[group_45619] -[group_45620] -[group_45621] -[group_45622] -[group_45623] -[group_45624] -[group_45625] -[group_45626] -[group_45627] -[group_45628] -[group_45629] -[group_45630] -[group_45631] -[group_45632] -[group_45633] -[group_45634] -[group_45635] -[group_45636] -[group_45637] -[group_45638] -[group_45639] -[group_45640] -[group_45641] -[group_45642] -[group_45643] -[group_45644] -[group_45645] -[group_45646] -[group_45647] -[group_45648] -[group_45649] -[group_45650] -[group_45651] -[group_45652] -[group_45653] -[group_45654] -[group_45655] -[group_45656] -[group_45657] -[group_45658] -[group_45659] -[group_45660] -[group_45661] -[group_45662] -[group_45663] -[group_45664] -[group_45665] -[group_45666] -[group_45667] -[group_45668] -[group_45669] -[group_45670] -[group_45671] -[group_45672] -[group_45673] -[group_45674] -[group_45675] -[group_45676] -[group_45677] -[group_45678] -[group_45679] -[group_45680] -[group_45681] -[group_45682] -[group_45683] -[group_45684] -[group_45685] -[group_45686] -[group_45687] -[group_45688] -[group_45689] -[group_45690] -[group_45691] -[group_45692] -[group_45693] -[group_45694] -[group_45695] -[group_45696] -[group_45697] -[group_45698] -[group_45699] -[group_45700] -[group_45701] -[group_45702] -[group_45703] -[group_45704] -[group_45705] -[group_45706] -[group_45707] -[group_45708] -[group_45709] -[group_45710] -[group_45711] -[group_45712] -[group_45713] -[group_45714] -[group_45715] -[group_45716] -[group_45717] -[group_45718] -[group_45719] -[group_45720] -[group_45721] -[group_45722] -[group_45723] -[group_45724] -[group_45725] -[group_45726] -[group_45727] -[group_45728] -[group_45729] -[group_45730] -[group_45731] -[group_45732] -[group_45733] -[group_45734] -[group_45735] -[group_45736] -[group_45737] -[group_45738] -[group_45739] -[group_45740] -[group_45741] -[group_45742] -[group_45743] -[group_45744] -[group_45745] -[group_45746] -[group_45747] -[group_45748] -[group_45749] -[group_45750] -[group_45751] -[group_45752] -[group_45753] -[group_45754] -[group_45755] -[group_45756] -[group_45757] -[group_45758] -[group_45759] -[group_45760] -[group_45761] -[group_45762] -[group_45763] -[group_45764] -[group_45765] -[group_45766] -[group_45767] -[group_45768] -[group_45769] -[group_45770] -[group_45771] -[group_45772] -[group_45773] -[group_45774] -[group_45775] -[group_45776] -[group_45777] -[group_45778] -[group_45779] -[group_45780] -[group_45781] -[group_45782] -[group_45783] -[group_45784] -[group_45785] -[group_45786] -[group_45787] -[group_45788] -[group_45789] -[group_45790] -[group_45791] -[group_45792] -[group_45793] -[group_45794] -[group_45795] -[group_45796] -[group_45797] -[group_45798] -[group_45799] -[group_45800] -[group_45801] -[group_45802] -[group_45803] -[group_45804] -[group_45805] -[group_45806] -[group_45807] -[group_45808] -[group_45809] -[group_45810] -[group_45811] -[group_45812] -[group_45813] -[group_45814] -[group_45815] -[group_45816] -[group_45817] -[group_45818] -[group_45819] -[group_45820] -[group_45821] -[group_45822] -[group_45823] -[group_45824] -[group_45825] -[group_45826] -[group_45827] -[group_45828] -[group_45829] -[group_45830] -[group_45831] -[group_45832] -[group_45833] -[group_45834] -[group_45835] -[group_45836] -[group_45837] -[group_45838] -[group_45839] -[group_45840] -[group_45841] -[group_45842] -[group_45843] -[group_45844] -[group_45845] -[group_45846] -[group_45847] -[group_45848] -[group_45849] -[group_45850] -[group_45851] -[group_45852] -[group_45853] -[group_45854] -[group_45855] -[group_45856] -[group_45857] -[group_45858] -[group_45859] -[group_45860] -[group_45861] -[group_45862] -[group_45863] -[group_45864] -[group_45865] -[group_45866] -[group_45867] -[group_45868] -[group_45869] -[group_45870] -[group_45871] -[group_45872] -[group_45873] -[group_45874] -[group_45875] -[group_45876] -[group_45877] -[group_45878] -[group_45879] -[group_45880] -[group_45881] -[group_45882] -[group_45883] -[group_45884] -[group_45885] -[group_45886] -[group_45887] -[group_45888] -[group_45889] -[group_45890] -[group_45891] -[group_45892] -[group_45893] -[group_45894] -[group_45895] -[group_45896] -[group_45897] -[group_45898] -[group_45899] -[group_45900] -[group_45901] -[group_45902] -[group_45903] -[group_45904] -[group_45905] -[group_45906] -[group_45907] -[group_45908] -[group_45909] -[group_45910] -[group_45911] -[group_45912] -[group_45913] -[group_45914] -[group_45915] -[group_45916] -[group_45917] -[group_45918] -[group_45919] -[group_45920] -[group_45921] -[group_45922] -[group_45923] -[group_45924] -[group_45925] -[group_45926] -[group_45927] -[group_45928] -[group_45929] -[group_45930] -[group_45931] -[group_45932] -[group_45933] -[group_45934] -[group_45935] -[group_45936] -[group_45937] -[group_45938] -[group_45939] -[group_45940] -[group_45941] -[group_45942] -[group_45943] -[group_45944] -[group_45945] -[group_45946] -[group_45947] -[group_45948] -[group_45949] -[group_45950] -[group_45951] -[group_45952] -[group_45953] -[group_45954] -[group_45955] -[group_45956] -[group_45957] -[group_45958] -[group_45959] -[group_45960] -[group_45961] -[group_45962] -[group_45963] -[group_45964] -[group_45965] -[group_45966] -[group_45967] -[group_45968] -[group_45969] -[group_45970] -[group_45971] -[group_45972] -[group_45973] -[group_45974] -[group_45975] -[group_45976] -[group_45977] -[group_45978] -[group_45979] -[group_45980] -[group_45981] -[group_45982] -[group_45983] -[group_45984] -[group_45985] -[group_45986] -[group_45987] -[group_45988] -[group_45989] -[group_45990] -[group_45991] -[group_45992] -[group_45993] -[group_45994] -[group_45995] -[group_45996] -[group_45997] -[group_45998] -[group_45999] -[group_46000] -[group_46001] -[group_46002] -[group_46003] -[group_46004] -[group_46005] -[group_46006] -[group_46007] -[group_46008] -[group_46009] -[group_46010] -[group_46011] -[group_46012] -[group_46013] -[group_46014] -[group_46015] -[group_46016] -[group_46017] -[group_46018] -[group_46019] -[group_46020] -[group_46021] -[group_46022] -[group_46023] -[group_46024] -[group_46025] -[group_46026] -[group_46027] -[group_46028] -[group_46029] -[group_46030] -[group_46031] -[group_46032] -[group_46033] -[group_46034] -[group_46035] -[group_46036] -[group_46037] -[group_46038] -[group_46039] -[group_46040] -[group_46041] -[group_46042] -[group_46043] -[group_46044] -[group_46045] -[group_46046] -[group_46047] -[group_46048] -[group_46049] -[group_46050] -[group_46051] -[group_46052] -[group_46053] -[group_46054] -[group_46055] -[group_46056] -[group_46057] -[group_46058] -[group_46059] -[group_46060] -[group_46061] -[group_46062] -[group_46063] -[group_46064] -[group_46065] -[group_46066] -[group_46067] -[group_46068] -[group_46069] -[group_46070] -[group_46071] -[group_46072] -[group_46073] -[group_46074] -[group_46075] -[group_46076] -[group_46077] -[group_46078] -[group_46079] -[group_46080] -[group_46081] -[group_46082] -[group_46083] -[group_46084] -[group_46085] -[group_46086] -[group_46087] -[group_46088] -[group_46089] -[group_46090] -[group_46091] -[group_46092] -[group_46093] -[group_46094] -[group_46095] -[group_46096] -[group_46097] -[group_46098] -[group_46099] -[group_46100] -[group_46101] -[group_46102] -[group_46103] -[group_46104] -[group_46105] -[group_46106] -[group_46107] -[group_46108] -[group_46109] -[group_46110] -[group_46111] -[group_46112] -[group_46113] -[group_46114] -[group_46115] -[group_46116] -[group_46117] -[group_46118] -[group_46119] -[group_46120] -[group_46121] -[group_46122] -[group_46123] -[group_46124] -[group_46125] -[group_46126] -[group_46127] -[group_46128] -[group_46129] -[group_46130] -[group_46131] -[group_46132] -[group_46133] -[group_46134] -[group_46135] -[group_46136] -[group_46137] -[group_46138] -[group_46139] -[group_46140] -[group_46141] -[group_46142] -[group_46143] -[group_46144] -[group_46145] -[group_46146] -[group_46147] -[group_46148] -[group_46149] -[group_46150] -[group_46151] -[group_46152] -[group_46153] -[group_46154] -[group_46155] -[group_46156] -[group_46157] -[group_46158] -[group_46159] -[group_46160] -[group_46161] -[group_46162] -[group_46163] -[group_46164] -[group_46165] -[group_46166] -[group_46167] -[group_46168] -[group_46169] -[group_46170] -[group_46171] -[group_46172] -[group_46173] -[group_46174] -[group_46175] -[group_46176] -[group_46177] -[group_46178] -[group_46179] -[group_46180] -[group_46181] -[group_46182] -[group_46183] -[group_46184] -[group_46185] -[group_46186] -[group_46187] -[group_46188] -[group_46189] -[group_46190] -[group_46191] -[group_46192] -[group_46193] -[group_46194] -[group_46195] -[group_46196] -[group_46197] -[group_46198] -[group_46199] -[group_46200] -[group_46201] -[group_46202] -[group_46203] -[group_46204] -[group_46205] -[group_46206] -[group_46207] -[group_46208] -[group_46209] -[group_46210] -[group_46211] -[group_46212] -[group_46213] -[group_46214] -[group_46215] -[group_46216] -[group_46217] -[group_46218] -[group_46219] -[group_46220] -[group_46221] -[group_46222] -[group_46223] -[group_46224] -[group_46225] -[group_46226] -[group_46227] -[group_46228] -[group_46229] -[group_46230] -[group_46231] -[group_46232] -[group_46233] -[group_46234] -[group_46235] -[group_46236] -[group_46237] -[group_46238] -[group_46239] -[group_46240] -[group_46241] -[group_46242] -[group_46243] -[group_46244] -[group_46245] -[group_46246] -[group_46247] -[group_46248] -[group_46249] -[group_46250] -[group_46251] -[group_46252] -[group_46253] -[group_46254] -[group_46255] -[group_46256] -[group_46257] -[group_46258] -[group_46259] -[group_46260] -[group_46261] -[group_46262] -[group_46263] -[group_46264] -[group_46265] -[group_46266] -[group_46267] -[group_46268] -[group_46269] -[group_46270] -[group_46271] -[group_46272] -[group_46273] -[group_46274] -[group_46275] -[group_46276] -[group_46277] -[group_46278] -[group_46279] -[group_46280] -[group_46281] -[group_46282] -[group_46283] -[group_46284] -[group_46285] -[group_46286] -[group_46287] -[group_46288] -[group_46289] -[group_46290] -[group_46291] -[group_46292] -[group_46293] -[group_46294] -[group_46295] -[group_46296] -[group_46297] -[group_46298] -[group_46299] -[group_46300] -[group_46301] -[group_46302] -[group_46303] -[group_46304] -[group_46305] -[group_46306] -[group_46307] -[group_46308] -[group_46309] -[group_46310] -[group_46311] -[group_46312] -[group_46313] -[group_46314] -[group_46315] -[group_46316] -[group_46317] -[group_46318] -[group_46319] -[group_46320] -[group_46321] -[group_46322] -[group_46323] -[group_46324] -[group_46325] -[group_46326] -[group_46327] -[group_46328] -[group_46329] -[group_46330] -[group_46331] -[group_46332] -[group_46333] -[group_46334] -[group_46335] -[group_46336] -[group_46337] -[group_46338] -[group_46339] -[group_46340] -[group_46341] -[group_46342] -[group_46343] -[group_46344] -[group_46345] -[group_46346] -[group_46347] -[group_46348] -[group_46349] -[group_46350] -[group_46351] -[group_46352] -[group_46353] -[group_46354] -[group_46355] -[group_46356] -[group_46357] -[group_46358] -[group_46359] -[group_46360] -[group_46361] -[group_46362] -[group_46363] -[group_46364] -[group_46365] -[group_46366] -[group_46367] -[group_46368] -[group_46369] -[group_46370] -[group_46371] -[group_46372] -[group_46373] -[group_46374] -[group_46375] -[group_46376] -[group_46377] -[group_46378] -[group_46379] -[group_46380] -[group_46381] -[group_46382] -[group_46383] -[group_46384] -[group_46385] -[group_46386] -[group_46387] -[group_46388] -[group_46389] -[group_46390] -[group_46391] -[group_46392] -[group_46393] -[group_46394] -[group_46395] -[group_46396] -[group_46397] -[group_46398] -[group_46399] -[group_46400] -[group_46401] -[group_46402] -[group_46403] -[group_46404] -[group_46405] -[group_46406] -[group_46407] -[group_46408] -[group_46409] -[group_46410] -[group_46411] -[group_46412] -[group_46413] -[group_46414] -[group_46415] -[group_46416] -[group_46417] -[group_46418] -[group_46419] -[group_46420] -[group_46421] -[group_46422] -[group_46423] -[group_46424] -[group_46425] -[group_46426] -[group_46427] -[group_46428] -[group_46429] -[group_46430] -[group_46431] -[group_46432] -[group_46433] -[group_46434] -[group_46435] -[group_46436] -[group_46437] -[group_46438] -[group_46439] -[group_46440] -[group_46441] -[group_46442] -[group_46443] -[group_46444] -[group_46445] -[group_46446] -[group_46447] -[group_46448] -[group_46449] -[group_46450] -[group_46451] -[group_46452] -[group_46453] -[group_46454] -[group_46455] -[group_46456] -[group_46457] -[group_46458] -[group_46459] -[group_46460] -[group_46461] -[group_46462] -[group_46463] -[group_46464] -[group_46465] -[group_46466] -[group_46467] -[group_46468] -[group_46469] -[group_46470] -[group_46471] -[group_46472] -[group_46473] -[group_46474] -[group_46475] -[group_46476] -[group_46477] -[group_46478] -[group_46479] -[group_46480] -[group_46481] -[group_46482] -[group_46483] -[group_46484] -[group_46485] -[group_46486] -[group_46487] -[group_46488] -[group_46489] -[group_46490] -[group_46491] -[group_46492] -[group_46493] -[group_46494] -[group_46495] -[group_46496] -[group_46497] -[group_46498] -[group_46499] -[group_46500] -[group_46501] -[group_46502] -[group_46503] -[group_46504] -[group_46505] -[group_46506] -[group_46507] -[group_46508] -[group_46509] -[group_46510] -[group_46511] -[group_46512] -[group_46513] -[group_46514] -[group_46515] -[group_46516] -[group_46517] -[group_46518] -[group_46519] -[group_46520] -[group_46521] -[group_46522] -[group_46523] -[group_46524] -[group_46525] -[group_46526] -[group_46527] -[group_46528] -[group_46529] -[group_46530] -[group_46531] -[group_46532] -[group_46533] -[group_46534] -[group_46535] -[group_46536] -[group_46537] -[group_46538] -[group_46539] -[group_46540] -[group_46541] -[group_46542] -[group_46543] -[group_46544] -[group_46545] -[group_46546] -[group_46547] -[group_46548] -[group_46549] -[group_46550] -[group_46551] -[group_46552] -[group_46553] -[group_46554] -[group_46555] -[group_46556] -[group_46557] -[group_46558] -[group_46559] -[group_46560] -[group_46561] -[group_46562] -[group_46563] -[group_46564] -[group_46565] -[group_46566] -[group_46567] -[group_46568] -[group_46569] -[group_46570] -[group_46571] -[group_46572] -[group_46573] -[group_46574] -[group_46575] -[group_46576] -[group_46577] -[group_46578] -[group_46579] -[group_46580] -[group_46581] -[group_46582] -[group_46583] -[group_46584] -[group_46585] -[group_46586] -[group_46587] -[group_46588] -[group_46589] -[group_46590] -[group_46591] -[group_46592] -[group_46593] -[group_46594] -[group_46595] -[group_46596] -[group_46597] -[group_46598] -[group_46599] -[group_46600] -[group_46601] -[group_46602] -[group_46603] -[group_46604] -[group_46605] -[group_46606] -[group_46607] -[group_46608] -[group_46609] -[group_46610] -[group_46611] -[group_46612] -[group_46613] -[group_46614] -[group_46615] -[group_46616] -[group_46617] -[group_46618] -[group_46619] -[group_46620] -[group_46621] -[group_46622] -[group_46623] -[group_46624] -[group_46625] -[group_46626] -[group_46627] -[group_46628] -[group_46629] -[group_46630] -[group_46631] -[group_46632] -[group_46633] -[group_46634] -[group_46635] -[group_46636] -[group_46637] -[group_46638] -[group_46639] -[group_46640] -[group_46641] -[group_46642] -[group_46643] -[group_46644] -[group_46645] -[group_46646] -[group_46647] -[group_46648] -[group_46649] -[group_46650] -[group_46651] -[group_46652] -[group_46653] -[group_46654] -[group_46655] -[group_46656] -[group_46657] -[group_46658] -[group_46659] -[group_46660] -[group_46661] -[group_46662] -[group_46663] -[group_46664] -[group_46665] -[group_46666] -[group_46667] -[group_46668] -[group_46669] -[group_46670] -[group_46671] -[group_46672] -[group_46673] -[group_46674] -[group_46675] -[group_46676] -[group_46677] -[group_46678] -[group_46679] -[group_46680] -[group_46681] -[group_46682] -[group_46683] -[group_46684] -[group_46685] -[group_46686] -[group_46687] -[group_46688] -[group_46689] -[group_46690] -[group_46691] -[group_46692] -[group_46693] -[group_46694] -[group_46695] -[group_46696] -[group_46697] -[group_46698] -[group_46699] -[group_46700] -[group_46701] -[group_46702] -[group_46703] -[group_46704] -[group_46705] -[group_46706] -[group_46707] -[group_46708] -[group_46709] -[group_46710] -[group_46711] -[group_46712] -[group_46713] -[group_46714] -[group_46715] -[group_46716] -[group_46717] -[group_46718] -[group_46719] -[group_46720] -[group_46721] -[group_46722] -[group_46723] -[group_46724] -[group_46725] -[group_46726] -[group_46727] -[group_46728] -[group_46729] -[group_46730] -[group_46731] -[group_46732] -[group_46733] -[group_46734] -[group_46735] -[group_46736] -[group_46737] -[group_46738] -[group_46739] -[group_46740] -[group_46741] -[group_46742] -[group_46743] -[group_46744] -[group_46745] -[group_46746] -[group_46747] -[group_46748] -[group_46749] -[group_46750] -[group_46751] -[group_46752] -[group_46753] -[group_46754] -[group_46755] -[group_46756] -[group_46757] -[group_46758] -[group_46759] -[group_46760] -[group_46761] -[group_46762] -[group_46763] -[group_46764] -[group_46765] -[group_46766] -[group_46767] -[group_46768] -[group_46769] -[group_46770] -[group_46771] -[group_46772] -[group_46773] -[group_46774] -[group_46775] -[group_46776] -[group_46777] -[group_46778] -[group_46779] -[group_46780] -[group_46781] -[group_46782] -[group_46783] -[group_46784] -[group_46785] -[group_46786] -[group_46787] -[group_46788] -[group_46789] -[group_46790] -[group_46791] -[group_46792] -[group_46793] -[group_46794] -[group_46795] -[group_46796] -[group_46797] -[group_46798] -[group_46799] -[group_46800] -[group_46801] -[group_46802] -[group_46803] -[group_46804] -[group_46805] -[group_46806] -[group_46807] -[group_46808] -[group_46809] -[group_46810] -[group_46811] -[group_46812] -[group_46813] -[group_46814] -[group_46815] -[group_46816] -[group_46817] -[group_46818] -[group_46819] -[group_46820] -[group_46821] -[group_46822] -[group_46823] -[group_46824] -[group_46825] -[group_46826] -[group_46827] -[group_46828] -[group_46829] -[group_46830] -[group_46831] -[group_46832] -[group_46833] -[group_46834] -[group_46835] -[group_46836] -[group_46837] -[group_46838] -[group_46839] -[group_46840] -[group_46841] -[group_46842] -[group_46843] -[group_46844] -[group_46845] -[group_46846] -[group_46847] -[group_46848] -[group_46849] -[group_46850] -[group_46851] -[group_46852] -[group_46853] -[group_46854] -[group_46855] -[group_46856] -[group_46857] -[group_46858] -[group_46859] -[group_46860] -[group_46861] -[group_46862] -[group_46863] -[group_46864] -[group_46865] -[group_46866] -[group_46867] -[group_46868] -[group_46869] -[group_46870] -[group_46871] -[group_46872] -[group_46873] -[group_46874] -[group_46875] -[group_46876] -[group_46877] -[group_46878] -[group_46879] -[group_46880] -[group_46881] -[group_46882] -[group_46883] -[group_46884] -[group_46885] -[group_46886] -[group_46887] -[group_46888] -[group_46889] -[group_46890] -[group_46891] -[group_46892] -[group_46893] -[group_46894] -[group_46895] -[group_46896] -[group_46897] -[group_46898] -[group_46899] -[group_46900] -[group_46901] -[group_46902] -[group_46903] -[group_46904] -[group_46905] -[group_46906] -[group_46907] -[group_46908] -[group_46909] -[group_46910] -[group_46911] -[group_46912] -[group_46913] -[group_46914] -[group_46915] -[group_46916] -[group_46917] -[group_46918] -[group_46919] -[group_46920] -[group_46921] -[group_46922] -[group_46923] -[group_46924] -[group_46925] -[group_46926] -[group_46927] -[group_46928] -[group_46929] -[group_46930] -[group_46931] -[group_46932] -[group_46933] -[group_46934] -[group_46935] -[group_46936] -[group_46937] -[group_46938] -[group_46939] -[group_46940] -[group_46941] -[group_46942] -[group_46943] -[group_46944] -[group_46945] -[group_46946] -[group_46947] -[group_46948] -[group_46949] -[group_46950] -[group_46951] -[group_46952] -[group_46953] -[group_46954] -[group_46955] -[group_46956] -[group_46957] -[group_46958] -[group_46959] -[group_46960] -[group_46961] -[group_46962] -[group_46963] -[group_46964] -[group_46965] -[group_46966] -[group_46967] -[group_46968] -[group_46969] -[group_46970] -[group_46971] -[group_46972] -[group_46973] -[group_46974] -[group_46975] -[group_46976] -[group_46977] -[group_46978] -[group_46979] -[group_46980] -[group_46981] -[group_46982] -[group_46983] -[group_46984] -[group_46985] -[group_46986] -[group_46987] -[group_46988] -[group_46989] -[group_46990] -[group_46991] -[group_46992] -[group_46993] -[group_46994] -[group_46995] -[group_46996] -[group_46997] -[group_46998] -[group_46999] -[group_47000] -[group_47001] -[group_47002] -[group_47003] -[group_47004] -[group_47005] -[group_47006] -[group_47007] -[group_47008] -[group_47009] -[group_47010] -[group_47011] -[group_47012] -[group_47013] -[group_47014] -[group_47015] -[group_47016] -[group_47017] -[group_47018] -[group_47019] -[group_47020] -[group_47021] -[group_47022] -[group_47023] -[group_47024] -[group_47025] -[group_47026] -[group_47027] -[group_47028] -[group_47029] -[group_47030] -[group_47031] -[group_47032] -[group_47033] -[group_47034] -[group_47035] -[group_47036] -[group_47037] -[group_47038] -[group_47039] -[group_47040] -[group_47041] -[group_47042] -[group_47043] -[group_47044] -[group_47045] -[group_47046] -[group_47047] -[group_47048] -[group_47049] -[group_47050] -[group_47051] -[group_47052] -[group_47053] -[group_47054] -[group_47055] -[group_47056] -[group_47057] -[group_47058] -[group_47059] -[group_47060] -[group_47061] -[group_47062] -[group_47063] -[group_47064] -[group_47065] -[group_47066] -[group_47067] -[group_47068] -[group_47069] -[group_47070] -[group_47071] -[group_47072] -[group_47073] -[group_47074] -[group_47075] -[group_47076] -[group_47077] -[group_47078] -[group_47079] -[group_47080] -[group_47081] -[group_47082] -[group_47083] -[group_47084] -[group_47085] -[group_47086] -[group_47087] -[group_47088] -[group_47089] -[group_47090] -[group_47091] -[group_47092] -[group_47093] -[group_47094] -[group_47095] -[group_47096] -[group_47097] -[group_47098] -[group_47099] -[group_47100] -[group_47101] -[group_47102] -[group_47103] -[group_47104] -[group_47105] -[group_47106] -[group_47107] -[group_47108] -[group_47109] -[group_47110] -[group_47111] -[group_47112] -[group_47113] -[group_47114] -[group_47115] -[group_47116] -[group_47117] -[group_47118] -[group_47119] -[group_47120] -[group_47121] -[group_47122] -[group_47123] -[group_47124] -[group_47125] -[group_47126] -[group_47127] -[group_47128] -[group_47129] -[group_47130] -[group_47131] -[group_47132] -[group_47133] -[group_47134] -[group_47135] -[group_47136] -[group_47137] -[group_47138] -[group_47139] -[group_47140] -[group_47141] -[group_47142] -[group_47143] -[group_47144] -[group_47145] -[group_47146] -[group_47147] -[group_47148] -[group_47149] -[group_47150] -[group_47151] -[group_47152] -[group_47153] -[group_47154] -[group_47155] -[group_47156] -[group_47157] -[group_47158] -[group_47159] -[group_47160] -[group_47161] -[group_47162] -[group_47163] -[group_47164] -[group_47165] -[group_47166] -[group_47167] -[group_47168] -[group_47169] -[group_47170] -[group_47171] -[group_47172] -[group_47173] -[group_47174] -[group_47175] -[group_47176] -[group_47177] -[group_47178] -[group_47179] -[group_47180] -[group_47181] -[group_47182] -[group_47183] -[group_47184] -[group_47185] -[group_47186] -[group_47187] -[group_47188] -[group_47189] -[group_47190] -[group_47191] -[group_47192] -[group_47193] -[group_47194] -[group_47195] -[group_47196] -[group_47197] -[group_47198] -[group_47199] -[group_47200] -[group_47201] -[group_47202] -[group_47203] -[group_47204] -[group_47205] -[group_47206] -[group_47207] -[group_47208] -[group_47209] -[group_47210] -[group_47211] -[group_47212] -[group_47213] -[group_47214] -[group_47215] -[group_47216] -[group_47217] -[group_47218] -[group_47219] -[group_47220] -[group_47221] -[group_47222] -[group_47223] -[group_47224] -[group_47225] -[group_47226] -[group_47227] -[group_47228] -[group_47229] -[group_47230] -[group_47231] -[group_47232] -[group_47233] -[group_47234] -[group_47235] -[group_47236] -[group_47237] -[group_47238] -[group_47239] -[group_47240] -[group_47241] -[group_47242] -[group_47243] -[group_47244] -[group_47245] -[group_47246] -[group_47247] -[group_47248] -[group_47249] -[group_47250] -[group_47251] -[group_47252] -[group_47253] -[group_47254] -[group_47255] -[group_47256] -[group_47257] -[group_47258] -[group_47259] -[group_47260] -[group_47261] -[group_47262] -[group_47263] -[group_47264] -[group_47265] -[group_47266] -[group_47267] -[group_47268] -[group_47269] -[group_47270] -[group_47271] -[group_47272] -[group_47273] -[group_47274] -[group_47275] -[group_47276] -[group_47277] -[group_47278] -[group_47279] -[group_47280] -[group_47281] -[group_47282] -[group_47283] -[group_47284] -[group_47285] -[group_47286] -[group_47287] -[group_47288] -[group_47289] -[group_47290] -[group_47291] -[group_47292] -[group_47293] -[group_47294] -[group_47295] -[group_47296] -[group_47297] -[group_47298] -[group_47299] -[group_47300] -[group_47301] -[group_47302] -[group_47303] -[group_47304] -[group_47305] -[group_47306] -[group_47307] -[group_47308] -[group_47309] -[group_47310] -[group_47311] -[group_47312] -[group_47313] -[group_47314] -[group_47315] -[group_47316] -[group_47317] -[group_47318] -[group_47319] -[group_47320] -[group_47321] -[group_47322] -[group_47323] -[group_47324] -[group_47325] -[group_47326] -[group_47327] -[group_47328] -[group_47329] -[group_47330] -[group_47331] -[group_47332] -[group_47333] -[group_47334] -[group_47335] -[group_47336] -[group_47337] -[group_47338] -[group_47339] -[group_47340] -[group_47341] -[group_47342] -[group_47343] -[group_47344] -[group_47345] -[group_47346] -[group_47347] -[group_47348] -[group_47349] -[group_47350] -[group_47351] -[group_47352] -[group_47353] -[group_47354] -[group_47355] -[group_47356] -[group_47357] -[group_47358] -[group_47359] -[group_47360] -[group_47361] -[group_47362] -[group_47363] -[group_47364] -[group_47365] -[group_47366] -[group_47367] -[group_47368] -[group_47369] -[group_47370] -[group_47371] -[group_47372] -[group_47373] -[group_47374] -[group_47375] -[group_47376] -[group_47377] -[group_47378] -[group_47379] -[group_47380] -[group_47381] -[group_47382] -[group_47383] -[group_47384] -[group_47385] -[group_47386] -[group_47387] -[group_47388] -[group_47389] -[group_47390] -[group_47391] -[group_47392] -[group_47393] -[group_47394] -[group_47395] -[group_47396] -[group_47397] -[group_47398] -[group_47399] -[group_47400] -[group_47401] -[group_47402] -[group_47403] -[group_47404] -[group_47405] -[group_47406] -[group_47407] -[group_47408] -[group_47409] -[group_47410] -[group_47411] -[group_47412] -[group_47413] -[group_47414] -[group_47415] -[group_47416] -[group_47417] -[group_47418] -[group_47419] -[group_47420] -[group_47421] -[group_47422] -[group_47423] -[group_47424] -[group_47425] -[group_47426] -[group_47427] -[group_47428] -[group_47429] -[group_47430] -[group_47431] -[group_47432] -[group_47433] -[group_47434] -[group_47435] -[group_47436] -[group_47437] -[group_47438] -[group_47439] -[group_47440] -[group_47441] -[group_47442] -[group_47443] -[group_47444] -[group_47445] -[group_47446] -[group_47447] -[group_47448] -[group_47449] -[group_47450] -[group_47451] -[group_47452] -[group_47453] -[group_47454] -[group_47455] -[group_47456] -[group_47457] -[group_47458] -[group_47459] -[group_47460] -[group_47461] -[group_47462] -[group_47463] -[group_47464] -[group_47465] -[group_47466] -[group_47467] -[group_47468] -[group_47469] -[group_47470] -[group_47471] -[group_47472] -[group_47473] -[group_47474] -[group_47475] -[group_47476] -[group_47477] -[group_47478] -[group_47479] -[group_47480] -[group_47481] -[group_47482] -[group_47483] -[group_47484] -[group_47485] -[group_47486] -[group_47487] -[group_47488] -[group_47489] -[group_47490] -[group_47491] -[group_47492] -[group_47493] -[group_47494] -[group_47495] -[group_47496] -[group_47497] -[group_47498] -[group_47499] -[group_47500] -[group_47501] -[group_47502] -[group_47503] -[group_47504] -[group_47505] -[group_47506] -[group_47507] -[group_47508] -[group_47509] -[group_47510] -[group_47511] -[group_47512] -[group_47513] -[group_47514] -[group_47515] -[group_47516] -[group_47517] -[group_47518] -[group_47519] -[group_47520] -[group_47521] -[group_47522] -[group_47523] -[group_47524] -[group_47525] -[group_47526] -[group_47527] -[group_47528] -[group_47529] -[group_47530] -[group_47531] -[group_47532] -[group_47533] -[group_47534] -[group_47535] -[group_47536] -[group_47537] -[group_47538] -[group_47539] -[group_47540] -[group_47541] -[group_47542] -[group_47543] -[group_47544] -[group_47545] -[group_47546] -[group_47547] -[group_47548] -[group_47549] -[group_47550] -[group_47551] -[group_47552] -[group_47553] -[group_47554] -[group_47555] -[group_47556] -[group_47557] -[group_47558] -[group_47559] -[group_47560] -[group_47561] -[group_47562] -[group_47563] -[group_47564] -[group_47565] -[group_47566] -[group_47567] -[group_47568] -[group_47569] -[group_47570] -[group_47571] -[group_47572] -[group_47573] -[group_47574] -[group_47575] -[group_47576] -[group_47577] -[group_47578] -[group_47579] -[group_47580] -[group_47581] -[group_47582] -[group_47583] -[group_47584] -[group_47585] -[group_47586] -[group_47587] -[group_47588] -[group_47589] -[group_47590] -[group_47591] -[group_47592] -[group_47593] -[group_47594] -[group_47595] -[group_47596] -[group_47597] -[group_47598] -[group_47599] -[group_47600] -[group_47601] -[group_47602] -[group_47603] -[group_47604] -[group_47605] -[group_47606] -[group_47607] -[group_47608] -[group_47609] -[group_47610] -[group_47611] -[group_47612] -[group_47613] -[group_47614] -[group_47615] -[group_47616] -[group_47617] -[group_47618] -[group_47619] -[group_47620] -[group_47621] -[group_47622] -[group_47623] -[group_47624] -[group_47625] -[group_47626] -[group_47627] -[group_47628] -[group_47629] -[group_47630] -[group_47631] -[group_47632] -[group_47633] -[group_47634] -[group_47635] -[group_47636] -[group_47637] -[group_47638] -[group_47639] -[group_47640] -[group_47641] -[group_47642] -[group_47643] -[group_47644] -[group_47645] -[group_47646] -[group_47647] -[group_47648] -[group_47649] -[group_47650] -[group_47651] -[group_47652] -[group_47653] -[group_47654] -[group_47655] -[group_47656] -[group_47657] -[group_47658] -[group_47659] -[group_47660] -[group_47661] -[group_47662] -[group_47663] -[group_47664] -[group_47665] -[group_47666] -[group_47667] -[group_47668] -[group_47669] -[group_47670] -[group_47671] -[group_47672] -[group_47673] -[group_47674] -[group_47675] -[group_47676] -[group_47677] -[group_47678] -[group_47679] -[group_47680] -[group_47681] -[group_47682] -[group_47683] -[group_47684] -[group_47685] -[group_47686] -[group_47687] -[group_47688] -[group_47689] -[group_47690] -[group_47691] -[group_47692] -[group_47693] -[group_47694] -[group_47695] -[group_47696] -[group_47697] -[group_47698] -[group_47699] -[group_47700] -[group_47701] -[group_47702] -[group_47703] -[group_47704] -[group_47705] -[group_47706] -[group_47707] -[group_47708] -[group_47709] -[group_47710] -[group_47711] -[group_47712] -[group_47713] -[group_47714] -[group_47715] -[group_47716] -[group_47717] -[group_47718] -[group_47719] -[group_47720] -[group_47721] -[group_47722] -[group_47723] -[group_47724] -[group_47725] -[group_47726] -[group_47727] -[group_47728] -[group_47729] -[group_47730] -[group_47731] -[group_47732] -[group_47733] -[group_47734] -[group_47735] -[group_47736] -[group_47737] -[group_47738] -[group_47739] -[group_47740] -[group_47741] -[group_47742] -[group_47743] -[group_47744] -[group_47745] -[group_47746] -[group_47747] -[group_47748] -[group_47749] -[group_47750] -[group_47751] -[group_47752] -[group_47753] -[group_47754] -[group_47755] -[group_47756] -[group_47757] -[group_47758] -[group_47759] -[group_47760] -[group_47761] -[group_47762] -[group_47763] -[group_47764] -[group_47765] -[group_47766] -[group_47767] -[group_47768] -[group_47769] -[group_47770] -[group_47771] -[group_47772] -[group_47773] -[group_47774] -[group_47775] -[group_47776] -[group_47777] -[group_47778] -[group_47779] -[group_47780] -[group_47781] -[group_47782] -[group_47783] -[group_47784] -[group_47785] -[group_47786] -[group_47787] -[group_47788] -[group_47789] -[group_47790] -[group_47791] -[group_47792] -[group_47793] -[group_47794] -[group_47795] -[group_47796] -[group_47797] -[group_47798] -[group_47799] -[group_47800] -[group_47801] -[group_47802] -[group_47803] -[group_47804] -[group_47805] -[group_47806] -[group_47807] -[group_47808] -[group_47809] -[group_47810] -[group_47811] -[group_47812] -[group_47813] -[group_47814] -[group_47815] -[group_47816] -[group_47817] -[group_47818] -[group_47819] -[group_47820] -[group_47821] -[group_47822] -[group_47823] -[group_47824] -[group_47825] -[group_47826] -[group_47827] -[group_47828] -[group_47829] -[group_47830] -[group_47831] -[group_47832] -[group_47833] -[group_47834] -[group_47835] -[group_47836] -[group_47837] -[group_47838] -[group_47839] -[group_47840] -[group_47841] -[group_47842] -[group_47843] -[group_47844] -[group_47845] -[group_47846] -[group_47847] -[group_47848] -[group_47849] -[group_47850] -[group_47851] -[group_47852] -[group_47853] -[group_47854] -[group_47855] -[group_47856] -[group_47857] -[group_47858] -[group_47859] -[group_47860] -[group_47861] -[group_47862] -[group_47863] -[group_47864] -[group_47865] -[group_47866] -[group_47867] -[group_47868] -[group_47869] -[group_47870] -[group_47871] -[group_47872] -[group_47873] -[group_47874] -[group_47875] -[group_47876] -[group_47877] -[group_47878] -[group_47879] -[group_47880] -[group_47881] -[group_47882] -[group_47883] -[group_47884] -[group_47885] -[group_47886] -[group_47887] -[group_47888] -[group_47889] -[group_47890] -[group_47891] -[group_47892] -[group_47893] -[group_47894] -[group_47895] -[group_47896] -[group_47897] -[group_47898] -[group_47899] -[group_47900] -[group_47901] -[group_47902] -[group_47903] -[group_47904] -[group_47905] -[group_47906] -[group_47907] -[group_47908] -[group_47909] -[group_47910] -[group_47911] -[group_47912] -[group_47913] -[group_47914] -[group_47915] -[group_47916] -[group_47917] -[group_47918] -[group_47919] -[group_47920] -[group_47921] -[group_47922] -[group_47923] -[group_47924] -[group_47925] -[group_47926] -[group_47927] -[group_47928] -[group_47929] -[group_47930] -[group_47931] -[group_47932] -[group_47933] -[group_47934] -[group_47935] -[group_47936] -[group_47937] -[group_47938] -[group_47939] -[group_47940] -[group_47941] -[group_47942] -[group_47943] -[group_47944] -[group_47945] -[group_47946] -[group_47947] -[group_47948] -[group_47949] -[group_47950] -[group_47951] -[group_47952] -[group_47953] -[group_47954] -[group_47955] -[group_47956] -[group_47957] -[group_47958] -[group_47959] -[group_47960] -[group_47961] -[group_47962] -[group_47963] -[group_47964] -[group_47965] -[group_47966] -[group_47967] -[group_47968] -[group_47969] -[group_47970] -[group_47971] -[group_47972] -[group_47973] -[group_47974] -[group_47975] -[group_47976] -[group_47977] -[group_47978] -[group_47979] -[group_47980] -[group_47981] -[group_47982] -[group_47983] -[group_47984] -[group_47985] -[group_47986] -[group_47987] -[group_47988] -[group_47989] -[group_47990] -[group_47991] -[group_47992] -[group_47993] -[group_47994] -[group_47995] -[group_47996] -[group_47997] -[group_47998] -[group_47999] -[group_48000] -[group_48001] -[group_48002] -[group_48003] -[group_48004] -[group_48005] -[group_48006] -[group_48007] -[group_48008] -[group_48009] -[group_48010] -[group_48011] -[group_48012] -[group_48013] -[group_48014] -[group_48015] -[group_48016] -[group_48017] -[group_48018] -[group_48019] -[group_48020] -[group_48021] -[group_48022] -[group_48023] -[group_48024] -[group_48025] -[group_48026] -[group_48027] -[group_48028] -[group_48029] -[group_48030] -[group_48031] -[group_48032] -[group_48033] -[group_48034] -[group_48035] -[group_48036] -[group_48037] -[group_48038] -[group_48039] -[group_48040] -[group_48041] -[group_48042] -[group_48043] -[group_48044] -[group_48045] -[group_48046] -[group_48047] -[group_48048] -[group_48049] -[group_48050] -[group_48051] -[group_48052] -[group_48053] -[group_48054] -[group_48055] -[group_48056] -[group_48057] -[group_48058] -[group_48059] -[group_48060] -[group_48061] -[group_48062] -[group_48063] -[group_48064] -[group_48065] -[group_48066] -[group_48067] -[group_48068] -[group_48069] -[group_48070] -[group_48071] -[group_48072] -[group_48073] -[group_48074] -[group_48075] -[group_48076] -[group_48077] -[group_48078] -[group_48079] -[group_48080] -[group_48081] -[group_48082] -[group_48083] -[group_48084] -[group_48085] -[group_48086] -[group_48087] -[group_48088] -[group_48089] -[group_48090] -[group_48091] -[group_48092] -[group_48093] -[group_48094] -[group_48095] -[group_48096] -[group_48097] -[group_48098] -[group_48099] -[group_48100] -[group_48101] -[group_48102] -[group_48103] -[group_48104] -[group_48105] -[group_48106] -[group_48107] -[group_48108] -[group_48109] -[group_48110] -[group_48111] -[group_48112] -[group_48113] -[group_48114] -[group_48115] -[group_48116] -[group_48117] -[group_48118] -[group_48119] -[group_48120] -[group_48121] -[group_48122] -[group_48123] -[group_48124] -[group_48125] -[group_48126] -[group_48127] -[group_48128] -[group_48129] -[group_48130] -[group_48131] -[group_48132] -[group_48133] -[group_48134] -[group_48135] -[group_48136] -[group_48137] -[group_48138] -[group_48139] -[group_48140] -[group_48141] -[group_48142] -[group_48143] -[group_48144] -[group_48145] -[group_48146] -[group_48147] -[group_48148] -[group_48149] -[group_48150] -[group_48151] -[group_48152] -[group_48153] -[group_48154] -[group_48155] -[group_48156] -[group_48157] -[group_48158] -[group_48159] -[group_48160] -[group_48161] -[group_48162] -[group_48163] -[group_48164] -[group_48165] -[group_48166] -[group_48167] -[group_48168] -[group_48169] -[group_48170] -[group_48171] -[group_48172] -[group_48173] -[group_48174] -[group_48175] -[group_48176] -[group_48177] -[group_48178] -[group_48179] -[group_48180] -[group_48181] -[group_48182] -[group_48183] -[group_48184] -[group_48185] -[group_48186] -[group_48187] -[group_48188] -[group_48189] -[group_48190] -[group_48191] -[group_48192] -[group_48193] -[group_48194] -[group_48195] -[group_48196] -[group_48197] -[group_48198] -[group_48199] -[group_48200] -[group_48201] -[group_48202] -[group_48203] -[group_48204] -[group_48205] -[group_48206] -[group_48207] -[group_48208] -[group_48209] -[group_48210] -[group_48211] -[group_48212] -[group_48213] -[group_48214] -[group_48215] -[group_48216] -[group_48217] -[group_48218] -[group_48219] -[group_48220] -[group_48221] -[group_48222] -[group_48223] -[group_48224] -[group_48225] -[group_48226] -[group_48227] -[group_48228] -[group_48229] -[group_48230] -[group_48231] -[group_48232] -[group_48233] -[group_48234] -[group_48235] -[group_48236] -[group_48237] -[group_48238] -[group_48239] -[group_48240] -[group_48241] -[group_48242] -[group_48243] -[group_48244] -[group_48245] -[group_48246] -[group_48247] -[group_48248] -[group_48249] -[group_48250] -[group_48251] -[group_48252] -[group_48253] -[group_48254] -[group_48255] -[group_48256] -[group_48257] -[group_48258] -[group_48259] -[group_48260] -[group_48261] -[group_48262] -[group_48263] -[group_48264] -[group_48265] -[group_48266] -[group_48267] -[group_48268] -[group_48269] -[group_48270] -[group_48271] -[group_48272] -[group_48273] -[group_48274] -[group_48275] -[group_48276] -[group_48277] -[group_48278] -[group_48279] -[group_48280] -[group_48281] -[group_48282] -[group_48283] -[group_48284] -[group_48285] -[group_48286] -[group_48287] -[group_48288] -[group_48289] -[group_48290] -[group_48291] -[group_48292] -[group_48293] -[group_48294] -[group_48295] -[group_48296] -[group_48297] -[group_48298] -[group_48299] -[group_48300] -[group_48301] -[group_48302] -[group_48303] -[group_48304] -[group_48305] -[group_48306] -[group_48307] -[group_48308] -[group_48309] -[group_48310] -[group_48311] -[group_48312] -[group_48313] -[group_48314] -[group_48315] -[group_48316] -[group_48317] -[group_48318] -[group_48319] -[group_48320] -[group_48321] -[group_48322] -[group_48323] -[group_48324] -[group_48325] -[group_48326] -[group_48327] -[group_48328] -[group_48329] -[group_48330] -[group_48331] -[group_48332] -[group_48333] -[group_48334] -[group_48335] -[group_48336] -[group_48337] -[group_48338] -[group_48339] -[group_48340] -[group_48341] -[group_48342] -[group_48343] -[group_48344] -[group_48345] -[group_48346] -[group_48347] -[group_48348] -[group_48349] -[group_48350] -[group_48351] -[group_48352] -[group_48353] -[group_48354] -[group_48355] -[group_48356] -[group_48357] -[group_48358] -[group_48359] -[group_48360] -[group_48361] -[group_48362] -[group_48363] -[group_48364] -[group_48365] -[group_48366] -[group_48367] -[group_48368] -[group_48369] -[group_48370] -[group_48371] -[group_48372] -[group_48373] -[group_48374] -[group_48375] -[group_48376] -[group_48377] -[group_48378] -[group_48379] -[group_48380] -[group_48381] -[group_48382] -[group_48383] -[group_48384] -[group_48385] -[group_48386] -[group_48387] -[group_48388] -[group_48389] -[group_48390] -[group_48391] -[group_48392] -[group_48393] -[group_48394] -[group_48395] -[group_48396] -[group_48397] -[group_48398] -[group_48399] -[group_48400] -[group_48401] -[group_48402] -[group_48403] -[group_48404] -[group_48405] -[group_48406] -[group_48407] -[group_48408] -[group_48409] -[group_48410] -[group_48411] -[group_48412] -[group_48413] -[group_48414] -[group_48415] -[group_48416] -[group_48417] -[group_48418] -[group_48419] -[group_48420] -[group_48421] -[group_48422] -[group_48423] -[group_48424] -[group_48425] -[group_48426] -[group_48427] -[group_48428] -[group_48429] -[group_48430] -[group_48431] -[group_48432] -[group_48433] -[group_48434] -[group_48435] -[group_48436] -[group_48437] -[group_48438] -[group_48439] -[group_48440] -[group_48441] -[group_48442] -[group_48443] -[group_48444] -[group_48445] -[group_48446] -[group_48447] -[group_48448] -[group_48449] -[group_48450] -[group_48451] -[group_48452] -[group_48453] -[group_48454] -[group_48455] -[group_48456] -[group_48457] -[group_48458] -[group_48459] -[group_48460] -[group_48461] -[group_48462] -[group_48463] -[group_48464] -[group_48465] -[group_48466] -[group_48467] -[group_48468] -[group_48469] -[group_48470] -[group_48471] -[group_48472] -[group_48473] -[group_48474] -[group_48475] -[group_48476] -[group_48477] -[group_48478] -[group_48479] -[group_48480] -[group_48481] -[group_48482] -[group_48483] -[group_48484] -[group_48485] -[group_48486] -[group_48487] -[group_48488] -[group_48489] -[group_48490] -[group_48491] -[group_48492] -[group_48493] -[group_48494] -[group_48495] -[group_48496] -[group_48497] -[group_48498] -[group_48499] -[group_48500] -[group_48501] -[group_48502] -[group_48503] -[group_48504] -[group_48505] -[group_48506] -[group_48507] -[group_48508] -[group_48509] -[group_48510] -[group_48511] -[group_48512] -[group_48513] -[group_48514] -[group_48515] -[group_48516] -[group_48517] -[group_48518] -[group_48519] -[group_48520] -[group_48521] -[group_48522] -[group_48523] -[group_48524] -[group_48525] -[group_48526] -[group_48527] -[group_48528] -[group_48529] -[group_48530] -[group_48531] -[group_48532] -[group_48533] -[group_48534] -[group_48535] -[group_48536] -[group_48537] -[group_48538] -[group_48539] -[group_48540] -[group_48541] -[group_48542] -[group_48543] -[group_48544] -[group_48545] -[group_48546] -[group_48547] -[group_48548] -[group_48549] -[group_48550] -[group_48551] -[group_48552] -[group_48553] -[group_48554] -[group_48555] -[group_48556] -[group_48557] -[group_48558] -[group_48559] -[group_48560] -[group_48561] -[group_48562] -[group_48563] -[group_48564] -[group_48565] -[group_48566] -[group_48567] -[group_48568] -[group_48569] -[group_48570] -[group_48571] -[group_48572] -[group_48573] -[group_48574] -[group_48575] -[group_48576] -[group_48577] -[group_48578] -[group_48579] -[group_48580] -[group_48581] -[group_48582] -[group_48583] -[group_48584] -[group_48585] -[group_48586] -[group_48587] -[group_48588] -[group_48589] -[group_48590] -[group_48591] -[group_48592] -[group_48593] -[group_48594] -[group_48595] -[group_48596] -[group_48597] -[group_48598] -[group_48599] -[group_48600] -[group_48601] -[group_48602] -[group_48603] -[group_48604] -[group_48605] -[group_48606] -[group_48607] -[group_48608] -[group_48609] -[group_48610] -[group_48611] -[group_48612] -[group_48613] -[group_48614] -[group_48615] -[group_48616] -[group_48617] -[group_48618] -[group_48619] -[group_48620] -[group_48621] -[group_48622] -[group_48623] -[group_48624] -[group_48625] -[group_48626] -[group_48627] -[group_48628] -[group_48629] -[group_48630] -[group_48631] -[group_48632] -[group_48633] -[group_48634] -[group_48635] -[group_48636] -[group_48637] -[group_48638] -[group_48639] -[group_48640] -[group_48641] -[group_48642] -[group_48643] -[group_48644] -[group_48645] -[group_48646] -[group_48647] -[group_48648] -[group_48649] -[group_48650] -[group_48651] -[group_48652] -[group_48653] -[group_48654] -[group_48655] -[group_48656] -[group_48657] -[group_48658] -[group_48659] -[group_48660] -[group_48661] -[group_48662] -[group_48663] -[group_48664] -[group_48665] -[group_48666] -[group_48667] -[group_48668] -[group_48669] -[group_48670] -[group_48671] -[group_48672] -[group_48673] -[group_48674] -[group_48675] -[group_48676] -[group_48677] -[group_48678] -[group_48679] -[group_48680] -[group_48681] -[group_48682] -[group_48683] -[group_48684] -[group_48685] -[group_48686] -[group_48687] -[group_48688] -[group_48689] -[group_48690] -[group_48691] -[group_48692] -[group_48693] -[group_48694] -[group_48695] -[group_48696] -[group_48697] -[group_48698] -[group_48699] -[group_48700] -[group_48701] -[group_48702] -[group_48703] -[group_48704] -[group_48705] -[group_48706] -[group_48707] -[group_48708] -[group_48709] -[group_48710] -[group_48711] -[group_48712] -[group_48713] -[group_48714] -[group_48715] -[group_48716] -[group_48717] -[group_48718] -[group_48719] -[group_48720] -[group_48721] -[group_48722] -[group_48723] -[group_48724] -[group_48725] -[group_48726] -[group_48727] -[group_48728] -[group_48729] -[group_48730] -[group_48731] -[group_48732] -[group_48733] -[group_48734] -[group_48735] -[group_48736] -[group_48737] -[group_48738] -[group_48739] -[group_48740] -[group_48741] -[group_48742] -[group_48743] -[group_48744] -[group_48745] -[group_48746] -[group_48747] -[group_48748] -[group_48749] -[group_48750] -[group_48751] -[group_48752] -[group_48753] -[group_48754] -[group_48755] -[group_48756] -[group_48757] -[group_48758] -[group_48759] -[group_48760] -[group_48761] -[group_48762] -[group_48763] -[group_48764] -[group_48765] -[group_48766] -[group_48767] -[group_48768] -[group_48769] -[group_48770] -[group_48771] -[group_48772] -[group_48773] -[group_48774] -[group_48775] -[group_48776] -[group_48777] -[group_48778] -[group_48779] -[group_48780] -[group_48781] -[group_48782] -[group_48783] -[group_48784] -[group_48785] -[group_48786] -[group_48787] -[group_48788] -[group_48789] -[group_48790] -[group_48791] -[group_48792] -[group_48793] -[group_48794] -[group_48795] -[group_48796] -[group_48797] -[group_48798] -[group_48799] -[group_48800] -[group_48801] -[group_48802] -[group_48803] -[group_48804] -[group_48805] -[group_48806] -[group_48807] -[group_48808] -[group_48809] -[group_48810] -[group_48811] -[group_48812] -[group_48813] -[group_48814] -[group_48815] -[group_48816] -[group_48817] -[group_48818] -[group_48819] -[group_48820] -[group_48821] -[group_48822] -[group_48823] -[group_48824] -[group_48825] -[group_48826] -[group_48827] -[group_48828] -[group_48829] -[group_48830] -[group_48831] -[group_48832] -[group_48833] -[group_48834] -[group_48835] -[group_48836] -[group_48837] -[group_48838] -[group_48839] -[group_48840] -[group_48841] -[group_48842] -[group_48843] -[group_48844] -[group_48845] -[group_48846] -[group_48847] -[group_48848] -[group_48849] -[group_48850] -[group_48851] -[group_48852] -[group_48853] -[group_48854] -[group_48855] -[group_48856] -[group_48857] -[group_48858] -[group_48859] -[group_48860] -[group_48861] -[group_48862] -[group_48863] -[group_48864] -[group_48865] -[group_48866] -[group_48867] -[group_48868] -[group_48869] -[group_48870] -[group_48871] -[group_48872] -[group_48873] -[group_48874] -[group_48875] -[group_48876] -[group_48877] -[group_48878] -[group_48879] -[group_48880] -[group_48881] -[group_48882] -[group_48883] -[group_48884] -[group_48885] -[group_48886] -[group_48887] -[group_48888] -[group_48889] -[group_48890] -[group_48891] -[group_48892] -[group_48893] -[group_48894] -[group_48895] -[group_48896] -[group_48897] -[group_48898] -[group_48899] -[group_48900] -[group_48901] -[group_48902] -[group_48903] -[group_48904] -[group_48905] -[group_48906] -[group_48907] -[group_48908] -[group_48909] -[group_48910] -[group_48911] -[group_48912] -[group_48913] -[group_48914] -[group_48915] -[group_48916] -[group_48917] -[group_48918] -[group_48919] -[group_48920] -[group_48921] -[group_48922] -[group_48923] -[group_48924] -[group_48925] -[group_48926] -[group_48927] -[group_48928] -[group_48929] -[group_48930] -[group_48931] -[group_48932] -[group_48933] -[group_48934] -[group_48935] -[group_48936] -[group_48937] -[group_48938] -[group_48939] -[group_48940] -[group_48941] -[group_48942] -[group_48943] -[group_48944] -[group_48945] -[group_48946] -[group_48947] -[group_48948] -[group_48949] -[group_48950] -[group_48951] -[group_48952] -[group_48953] -[group_48954] -[group_48955] -[group_48956] -[group_48957] -[group_48958] -[group_48959] -[group_48960] -[group_48961] -[group_48962] -[group_48963] -[group_48964] -[group_48965] -[group_48966] -[group_48967] -[group_48968] -[group_48969] -[group_48970] -[group_48971] -[group_48972] -[group_48973] -[group_48974] -[group_48975] -[group_48976] -[group_48977] -[group_48978] -[group_48979] -[group_48980] -[group_48981] -[group_48982] -[group_48983] -[group_48984] -[group_48985] -[group_48986] -[group_48987] -[group_48988] -[group_48989] -[group_48990] -[group_48991] -[group_48992] -[group_48993] -[group_48994] -[group_48995] -[group_48996] -[group_48997] -[group_48998] -[group_48999] -[group_49000] -[group_49001] -[group_49002] -[group_49003] -[group_49004] -[group_49005] -[group_49006] -[group_49007] -[group_49008] -[group_49009] -[group_49010] -[group_49011] -[group_49012] -[group_49013] -[group_49014] -[group_49015] -[group_49016] -[group_49017] -[group_49018] -[group_49019] -[group_49020] -[group_49021] -[group_49022] -[group_49023] -[group_49024] -[group_49025] -[group_49026] -[group_49027] -[group_49028] -[group_49029] -[group_49030] -[group_49031] -[group_49032] -[group_49033] -[group_49034] -[group_49035] -[group_49036] -[group_49037] -[group_49038] -[group_49039] -[group_49040] -[group_49041] -[group_49042] -[group_49043] -[group_49044] -[group_49045] -[group_49046] -[group_49047] -[group_49048] -[group_49049] -[group_49050] -[group_49051] -[group_49052] -[group_49053] -[group_49054] -[group_49055] -[group_49056] -[group_49057] -[group_49058] -[group_49059] -[group_49060] -[group_49061] -[group_49062] -[group_49063] -[group_49064] -[group_49065] -[group_49066] -[group_49067] -[group_49068] -[group_49069] -[group_49070] -[group_49071] -[group_49072] -[group_49073] -[group_49074] -[group_49075] -[group_49076] -[group_49077] -[group_49078] -[group_49079] -[group_49080] -[group_49081] -[group_49082] -[group_49083] -[group_49084] -[group_49085] -[group_49086] -[group_49087] -[group_49088] -[group_49089] -[group_49090] -[group_49091] -[group_49092] -[group_49093] -[group_49094] -[group_49095] -[group_49096] -[group_49097] -[group_49098] -[group_49099] -[group_49100] -[group_49101] -[group_49102] -[group_49103] -[group_49104] -[group_49105] -[group_49106] -[group_49107] -[group_49108] -[group_49109] -[group_49110] -[group_49111] -[group_49112] -[group_49113] -[group_49114] -[group_49115] -[group_49116] -[group_49117] -[group_49118] -[group_49119] -[group_49120] -[group_49121] -[group_49122] -[group_49123] -[group_49124] -[group_49125] -[group_49126] -[group_49127] -[group_49128] -[group_49129] -[group_49130] -[group_49131] -[group_49132] -[group_49133] -[group_49134] -[group_49135] -[group_49136] -[group_49137] -[group_49138] -[group_49139] -[group_49140] -[group_49141] -[group_49142] -[group_49143] -[group_49144] -[group_49145] -[group_49146] -[group_49147] -[group_49148] -[group_49149] -[group_49150] -[group_49151] -[group_49152] -[group_49153] -[group_49154] -[group_49155] -[group_49156] -[group_49157] -[group_49158] -[group_49159] -[group_49160] -[group_49161] -[group_49162] -[group_49163] -[group_49164] -[group_49165] -[group_49166] -[group_49167] -[group_49168] -[group_49169] -[group_49170] -[group_49171] -[group_49172] -[group_49173] -[group_49174] -[group_49175] -[group_49176] -[group_49177] -[group_49178] -[group_49179] -[group_49180] -[group_49181] -[group_49182] -[group_49183] -[group_49184] -[group_49185] -[group_49186] -[group_49187] -[group_49188] -[group_49189] -[group_49190] -[group_49191] -[group_49192] -[group_49193] -[group_49194] -[group_49195] -[group_49196] -[group_49197] -[group_49198] -[group_49199] -[group_49200] -[group_49201] -[group_49202] -[group_49203] -[group_49204] -[group_49205] -[group_49206] -[group_49207] -[group_49208] -[group_49209] -[group_49210] -[group_49211] -[group_49212] -[group_49213] -[group_49214] -[group_49215] -[group_49216] -[group_49217] -[group_49218] -[group_49219] -[group_49220] -[group_49221] -[group_49222] -[group_49223] -[group_49224] -[group_49225] -[group_49226] -[group_49227] -[group_49228] -[group_49229] -[group_49230] -[group_49231] -[group_49232] -[group_49233] -[group_49234] -[group_49235] -[group_49236] -[group_49237] -[group_49238] -[group_49239] -[group_49240] -[group_49241] -[group_49242] -[group_49243] -[group_49244] -[group_49245] -[group_49246] -[group_49247] -[group_49248] -[group_49249] -[group_49250] -[group_49251] -[group_49252] -[group_49253] -[group_49254] -[group_49255] -[group_49256] -[group_49257] -[group_49258] -[group_49259] -[group_49260] -[group_49261] -[group_49262] -[group_49263] -[group_49264] -[group_49265] -[group_49266] -[group_49267] -[group_49268] -[group_49269] -[group_49270] -[group_49271] -[group_49272] -[group_49273] -[group_49274] -[group_49275] -[group_49276] -[group_49277] -[group_49278] -[group_49279] -[group_49280] -[group_49281] -[group_49282] -[group_49283] -[group_49284] -[group_49285] -[group_49286] -[group_49287] -[group_49288] -[group_49289] -[group_49290] -[group_49291] -[group_49292] -[group_49293] -[group_49294] -[group_49295] -[group_49296] -[group_49297] -[group_49298] -[group_49299] -[group_49300] -[group_49301] -[group_49302] -[group_49303] -[group_49304] -[group_49305] -[group_49306] -[group_49307] -[group_49308] -[group_49309] -[group_49310] -[group_49311] -[group_49312] -[group_49313] -[group_49314] -[group_49315] -[group_49316] -[group_49317] -[group_49318] -[group_49319] -[group_49320] -[group_49321] -[group_49322] -[group_49323] -[group_49324] -[group_49325] -[group_49326] -[group_49327] -[group_49328] -[group_49329] -[group_49330] -[group_49331] -[group_49332] -[group_49333] -[group_49334] -[group_49335] -[group_49336] -[group_49337] -[group_49338] -[group_49339] -[group_49340] -[group_49341] -[group_49342] -[group_49343] -[group_49344] -[group_49345] -[group_49346] -[group_49347] -[group_49348] -[group_49349] -[group_49350] -[group_49351] -[group_49352] -[group_49353] -[group_49354] -[group_49355] -[group_49356] -[group_49357] -[group_49358] -[group_49359] -[group_49360] -[group_49361] -[group_49362] -[group_49363] -[group_49364] -[group_49365] -[group_49366] -[group_49367] -[group_49368] -[group_49369] -[group_49370] -[group_49371] -[group_49372] -[group_49373] -[group_49374] -[group_49375] -[group_49376] -[group_49377] -[group_49378] -[group_49379] -[group_49380] -[group_49381] -[group_49382] -[group_49383] -[group_49384] -[group_49385] -[group_49386] -[group_49387] -[group_49388] -[group_49389] -[group_49390] -[group_49391] -[group_49392] -[group_49393] -[group_49394] -[group_49395] -[group_49396] -[group_49397] -[group_49398] -[group_49399] -[group_49400] -[group_49401] -[group_49402] -[group_49403] -[group_49404] -[group_49405] -[group_49406] -[group_49407] -[group_49408] -[group_49409] -[group_49410] -[group_49411] -[group_49412] -[group_49413] -[group_49414] -[group_49415] -[group_49416] -[group_49417] -[group_49418] -[group_49419] -[group_49420] -[group_49421] -[group_49422] -[group_49423] -[group_49424] -[group_49425] -[group_49426] -[group_49427] -[group_49428] -[group_49429] -[group_49430] -[group_49431] -[group_49432] -[group_49433] -[group_49434] -[group_49435] -[group_49436] -[group_49437] -[group_49438] -[group_49439] -[group_49440] -[group_49441] -[group_49442] -[group_49443] -[group_49444] -[group_49445] -[group_49446] -[group_49447] -[group_49448] -[group_49449] -[group_49450] -[group_49451] -[group_49452] -[group_49453] -[group_49454] -[group_49455] -[group_49456] -[group_49457] -[group_49458] -[group_49459] -[group_49460] -[group_49461] -[group_49462] -[group_49463] -[group_49464] -[group_49465] -[group_49466] -[group_49467] -[group_49468] -[group_49469] -[group_49470] -[group_49471] -[group_49472] -[group_49473] -[group_49474] -[group_49475] -[group_49476] -[group_49477] -[group_49478] -[group_49479] -[group_49480] -[group_49481] -[group_49482] -[group_49483] -[group_49484] -[group_49485] -[group_49486] -[group_49487] -[group_49488] -[group_49489] -[group_49490] -[group_49491] -[group_49492] -[group_49493] -[group_49494] -[group_49495] -[group_49496] -[group_49497] -[group_49498] -[group_49499] -[group_49500] -[group_49501] -[group_49502] -[group_49503] -[group_49504] -[group_49505] -[group_49506] -[group_49507] -[group_49508] -[group_49509] -[group_49510] -[group_49511] -[group_49512] -[group_49513] -[group_49514] -[group_49515] -[group_49516] -[group_49517] -[group_49518] -[group_49519] -[group_49520] -[group_49521] -[group_49522] -[group_49523] -[group_49524] -[group_49525] -[group_49526] -[group_49527] -[group_49528] -[group_49529] -[group_49530] -[group_49531] -[group_49532] -[group_49533] -[group_49534] -[group_49535] -[group_49536] -[group_49537] -[group_49538] -[group_49539] -[group_49540] -[group_49541] -[group_49542] -[group_49543] -[group_49544] -[group_49545] -[group_49546] -[group_49547] -[group_49548] -[group_49549] -[group_49550] -[group_49551] -[group_49552] -[group_49553] -[group_49554] -[group_49555] -[group_49556] -[group_49557] -[group_49558] -[group_49559] -[group_49560] -[group_49561] -[group_49562] -[group_49563] -[group_49564] -[group_49565] -[group_49566] -[group_49567] -[group_49568] -[group_49569] -[group_49570] -[group_49571] -[group_49572] -[group_49573] -[group_49574] -[group_49575] -[group_49576] -[group_49577] -[group_49578] -[group_49579] -[group_49580] -[group_49581] -[group_49582] -[group_49583] -[group_49584] -[group_49585] -[group_49586] -[group_49587] -[group_49588] -[group_49589] -[group_49590] -[group_49591] -[group_49592] -[group_49593] -[group_49594] -[group_49595] -[group_49596] -[group_49597] -[group_49598] -[group_49599] -[group_49600] -[group_49601] -[group_49602] -[group_49603] -[group_49604] -[group_49605] -[group_49606] -[group_49607] -[group_49608] -[group_49609] -[group_49610] -[group_49611] -[group_49612] -[group_49613] -[group_49614] -[group_49615] -[group_49616] -[group_49617] -[group_49618] -[group_49619] -[group_49620] -[group_49621] -[group_49622] -[group_49623] -[group_49624] -[group_49625] -[group_49626] -[group_49627] -[group_49628] -[group_49629] -[group_49630] -[group_49631] -[group_49632] -[group_49633] -[group_49634] -[group_49635] -[group_49636] -[group_49637] -[group_49638] -[group_49639] -[group_49640] -[group_49641] -[group_49642] -[group_49643] -[group_49644] -[group_49645] -[group_49646] -[group_49647] -[group_49648] -[group_49649] -[group_49650] -[group_49651] -[group_49652] -[group_49653] -[group_49654] -[group_49655] -[group_49656] -[group_49657] -[group_49658] -[group_49659] -[group_49660] -[group_49661] -[group_49662] -[group_49663] -[group_49664] -[group_49665] -[group_49666] -[group_49667] -[group_49668] -[group_49669] -[group_49670] -[group_49671] -[group_49672] -[group_49673] -[group_49674] -[group_49675] -[group_49676] -[group_49677] -[group_49678] -[group_49679] -[group_49680] -[group_49681] -[group_49682] -[group_49683] -[group_49684] -[group_49685] -[group_49686] -[group_49687] -[group_49688] -[group_49689] -[group_49690] -[group_49691] -[group_49692] -[group_49693] -[group_49694] -[group_49695] -[group_49696] -[group_49697] -[group_49698] -[group_49699] -[group_49700] -[group_49701] -[group_49702] -[group_49703] -[group_49704] -[group_49705] -[group_49706] -[group_49707] -[group_49708] -[group_49709] -[group_49710] -[group_49711] -[group_49712] -[group_49713] -[group_49714] -[group_49715] -[group_49716] -[group_49717] -[group_49718] -[group_49719] -[group_49720] -[group_49721] -[group_49722] -[group_49723] -[group_49724] -[group_49725] -[group_49726] -[group_49727] -[group_49728] -[group_49729] -[group_49730] -[group_49731] -[group_49732] -[group_49733] -[group_49734] -[group_49735] -[group_49736] -[group_49737] -[group_49738] -[group_49739] -[group_49740] -[group_49741] -[group_49742] -[group_49743] -[group_49744] -[group_49745] -[group_49746] -[group_49747] -[group_49748] -[group_49749] -[group_49750] -[group_49751] -[group_49752] -[group_49753] -[group_49754] -[group_49755] -[group_49756] -[group_49757] -[group_49758] -[group_49759] -[group_49760] -[group_49761] -[group_49762] -[group_49763] -[group_49764] -[group_49765] -[group_49766] -[group_49767] -[group_49768] -[group_49769] -[group_49770] -[group_49771] -[group_49772] -[group_49773] -[group_49774] -[group_49775] -[group_49776] -[group_49777] -[group_49778] -[group_49779] -[group_49780] -[group_49781] -[group_49782] -[group_49783] -[group_49784] -[group_49785] -[group_49786] -[group_49787] -[group_49788] -[group_49789] -[group_49790] -[group_49791] -[group_49792] -[group_49793] -[group_49794] -[group_49795] -[group_49796] -[group_49797] -[group_49798] -[group_49799] -[group_49800] -[group_49801] -[group_49802] -[group_49803] -[group_49804] -[group_49805] -[group_49806] -[group_49807] -[group_49808] -[group_49809] -[group_49810] -[group_49811] -[group_49812] -[group_49813] -[group_49814] -[group_49815] -[group_49816] -[group_49817] -[group_49818] -[group_49819] -[group_49820] -[group_49821] -[group_49822] -[group_49823] -[group_49824] -[group_49825] -[group_49826] -[group_49827] -[group_49828] -[group_49829] -[group_49830] -[group_49831] -[group_49832] -[group_49833] -[group_49834] -[group_49835] -[group_49836] -[group_49837] -[group_49838] -[group_49839] -[group_49840] -[group_49841] -[group_49842] -[group_49843] -[group_49844] -[group_49845] -[group_49846] -[group_49847] -[group_49848] -[group_49849] -[group_49850] -[group_49851] -[group_49852] -[group_49853] -[group_49854] -[group_49855] -[group_49856] -[group_49857] -[group_49858] -[group_49859] -[group_49860] -[group_49861] -[group_49862] -[group_49863] -[group_49864] -[group_49865] -[group_49866] -[group_49867] -[group_49868] -[group_49869] -[group_49870] -[group_49871] -[group_49872] -[group_49873] -[group_49874] -[group_49875] -[group_49876] -[group_49877] -[group_49878] -[group_49879] -[group_49880] -[group_49881] -[group_49882] -[group_49883] -[group_49884] -[group_49885] -[group_49886] -[group_49887] -[group_49888] -[group_49889] -[group_49890] -[group_49891] -[group_49892] -[group_49893] -[group_49894] -[group_49895] -[group_49896] -[group_49897] -[group_49898] -[group_49899] -[group_49900] -[group_49901] -[group_49902] -[group_49903] -[group_49904] -[group_49905] -[group_49906] -[group_49907] -[group_49908] -[group_49909] -[group_49910] -[group_49911] -[group_49912] -[group_49913] -[group_49914] -[group_49915] -[group_49916] -[group_49917] -[group_49918] -[group_49919] -[group_49920] -[group_49921] -[group_49922] -[group_49923] -[group_49924] -[group_49925] -[group_49926] -[group_49927] -[group_49928] -[group_49929] -[group_49930] -[group_49931] -[group_49932] -[group_49933] -[group_49934] -[group_49935] -[group_49936] -[group_49937] -[group_49938] -[group_49939] -[group_49940] -[group_49941] -[group_49942] -[group_49943] -[group_49944] -[group_49945] -[group_49946] -[group_49947] -[group_49948] -[group_49949] -[group_49950] -[group_49951] -[group_49952] -[group_49953] -[group_49954] -[group_49955] -[group_49956] -[group_49957] -[group_49958] -[group_49959] -[group_49960] -[group_49961] -[group_49962] -[group_49963] -[group_49964] -[group_49965] -[group_49966] -[group_49967] -[group_49968] -[group_49969] -[group_49970] -[group_49971] -[group_49972] -[group_49973] -[group_49974] -[group_49975] -[group_49976] -[group_49977] -[group_49978] -[group_49979] -[group_49980] -[group_49981] -[group_49982] -[group_49983] -[group_49984] -[group_49985] -[group_49986] -[group_49987] -[group_49988] -[group_49989] -[group_49990] -[group_49991] -[group_49992] -[group_49993] -[group_49994] -[group_49995] -[group_49996] -[group_49997] -[group_49998] -[group_49999] -[group_50000] -[group_50001] -[group_50002] -[group_50003] -[group_50004] -[group_50005] -[group_50006] -[group_50007] -[group_50008] -[group_50009] -[group_50010] -[group_50011] -[group_50012] -[group_50013] -[group_50014] -[group_50015] -[group_50016] -[group_50017] -[group_50018] -[group_50019] -[group_50020] -[group_50021] -[group_50022] -[group_50023] -[group_50024] -[group_50025] -[group_50026] -[group_50027] -[group_50028] -[group_50029] -[group_50030] -[group_50031] -[group_50032] -[group_50033] -[group_50034] -[group_50035] -[group_50036] -[group_50037] -[group_50038] -[group_50039] -[group_50040] -[group_50041] -[group_50042] -[group_50043] -[group_50044] -[group_50045] -[group_50046] -[group_50047] -[group_50048] -[group_50049] -[group_50050] -[group_50051] -[group_50052] -[group_50053] -[group_50054] -[group_50055] -[group_50056] -[group_50057] -[group_50058] -[group_50059] -[group_50060] -[group_50061] -[group_50062] -[group_50063] -[group_50064] -[group_50065] -[group_50066] -[group_50067] -[group_50068] -[group_50069] -[group_50070] -[group_50071] -[group_50072] -[group_50073] -[group_50074] -[group_50075] -[group_50076] -[group_50077] -[group_50078] -[group_50079] -[group_50080] -[group_50081] -[group_50082] -[group_50083] -[group_50084] -[group_50085] -[group_50086] -[group_50087] -[group_50088] -[group_50089] -[group_50090] -[group_50091] -[group_50092] -[group_50093] -[group_50094] -[group_50095] -[group_50096] -[group_50097] -[group_50098] -[group_50099] -[group_50100] -[group_50101] -[group_50102] -[group_50103] -[group_50104] -[group_50105] -[group_50106] -[group_50107] -[group_50108] -[group_50109] -[group_50110] -[group_50111] -[group_50112] -[group_50113] -[group_50114] -[group_50115] -[group_50116] -[group_50117] -[group_50118] -[group_50119] -[group_50120] -[group_50121] -[group_50122] -[group_50123] -[group_50124] -[group_50125] -[group_50126] -[group_50127] -[group_50128] -[group_50129] -[group_50130] -[group_50131] -[group_50132] -[group_50133] -[group_50134] -[group_50135] -[group_50136] -[group_50137] -[group_50138] -[group_50139] -[group_50140] -[group_50141] -[group_50142] -[group_50143] -[group_50144] -[group_50145] -[group_50146] -[group_50147] -[group_50148] -[group_50149] -[group_50150] -[group_50151] -[group_50152] -[group_50153] -[group_50154] -[group_50155] -[group_50156] -[group_50157] -[group_50158] -[group_50159] -[group_50160] -[group_50161] -[group_50162] -[group_50163] -[group_50164] -[group_50165] -[group_50166] -[group_50167] -[group_50168] -[group_50169] -[group_50170] -[group_50171] -[group_50172] -[group_50173] -[group_50174] -[group_50175] -[group_50176] -[group_50177] -[group_50178] -[group_50179] -[group_50180] -[group_50181] -[group_50182] -[group_50183] -[group_50184] -[group_50185] -[group_50186] -[group_50187] -[group_50188] -[group_50189] -[group_50190] -[group_50191] -[group_50192] -[group_50193] -[group_50194] -[group_50195] -[group_50196] -[group_50197] -[group_50198] -[group_50199] -[group_50200] -[group_50201] -[group_50202] -[group_50203] -[group_50204] -[group_50205] -[group_50206] -[group_50207] -[group_50208] -[group_50209] -[group_50210] -[group_50211] -[group_50212] -[group_50213] -[group_50214] -[group_50215] -[group_50216] -[group_50217] -[group_50218] -[group_50219] -[group_50220] -[group_50221] -[group_50222] -[group_50223] -[group_50224] -[group_50225] -[group_50226] -[group_50227] -[group_50228] -[group_50229] -[group_50230] -[group_50231] -[group_50232] -[group_50233] -[group_50234] -[group_50235] -[group_50236] -[group_50237] -[group_50238] -[group_50239] -[group_50240] -[group_50241] -[group_50242] -[group_50243] -[group_50244] -[group_50245] -[group_50246] -[group_50247] -[group_50248] -[group_50249] -[group_50250] -[group_50251] -[group_50252] -[group_50253] -[group_50254] -[group_50255] -[group_50256] -[group_50257] -[group_50258] -[group_50259] -[group_50260] -[group_50261] -[group_50262] -[group_50263] -[group_50264] -[group_50265] -[group_50266] -[group_50267] -[group_50268] -[group_50269] -[group_50270] -[group_50271] -[group_50272] -[group_50273] -[group_50274] -[group_50275] -[group_50276] -[group_50277] -[group_50278] -[group_50279] -[group_50280] -[group_50281] -[group_50282] -[group_50283] -[group_50284] -[group_50285] -[group_50286] -[group_50287] -[group_50288] -[group_50289] -[group_50290] -[group_50291] -[group_50292] -[group_50293] -[group_50294] -[group_50295] -[group_50296] -[group_50297] -[group_50298] -[group_50299] -[group_50300] -[group_50301] -[group_50302] -[group_50303] -[group_50304] -[group_50305] -[group_50306] -[group_50307] -[group_50308] -[group_50309] -[group_50310] -[group_50311] -[group_50312] -[group_50313] -[group_50314] -[group_50315] -[group_50316] -[group_50317] -[group_50318] -[group_50319] -[group_50320] -[group_50321] -[group_50322] -[group_50323] -[group_50324] -[group_50325] -[group_50326] -[group_50327] -[group_50328] -[group_50329] -[group_50330] -[group_50331] -[group_50332] -[group_50333] -[group_50334] -[group_50335] -[group_50336] -[group_50337] -[group_50338] -[group_50339] -[group_50340] -[group_50341] -[group_50342] -[group_50343] -[group_50344] -[group_50345] -[group_50346] -[group_50347] -[group_50348] -[group_50349] -[group_50350] -[group_50351] -[group_50352] -[group_50353] -[group_50354] -[group_50355] -[group_50356] -[group_50357] -[group_50358] -[group_50359] -[group_50360] -[group_50361] -[group_50362] -[group_50363] -[group_50364] -[group_50365] -[group_50366] -[group_50367] -[group_50368] -[group_50369] -[group_50370] -[group_50371] -[group_50372] -[group_50373] -[group_50374] -[group_50375] -[group_50376] -[group_50377] -[group_50378] -[group_50379] -[group_50380] -[group_50381] -[group_50382] -[group_50383] -[group_50384] -[group_50385] -[group_50386] -[group_50387] -[group_50388] -[group_50389] -[group_50390] -[group_50391] -[group_50392] -[group_50393] -[group_50394] -[group_50395] -[group_50396] -[group_50397] -[group_50398] -[group_50399] -[group_50400] -[group_50401] -[group_50402] -[group_50403] -[group_50404] -[group_50405] -[group_50406] -[group_50407] -[group_50408] -[group_50409] -[group_50410] -[group_50411] -[group_50412] -[group_50413] -[group_50414] -[group_50415] -[group_50416] -[group_50417] -[group_50418] -[group_50419] -[group_50420] -[group_50421] -[group_50422] -[group_50423] -[group_50424] -[group_50425] -[group_50426] -[group_50427] -[group_50428] -[group_50429] -[group_50430] -[group_50431] -[group_50432] -[group_50433] -[group_50434] -[group_50435] -[group_50436] -[group_50437] -[group_50438] -[group_50439] -[group_50440] -[group_50441] -[group_50442] -[group_50443] -[group_50444] -[group_50445] -[group_50446] -[group_50447] -[group_50448] -[group_50449] -[group_50450] -[group_50451] -[group_50452] -[group_50453] -[group_50454] -[group_50455] -[group_50456] -[group_50457] -[group_50458] -[group_50459] -[group_50460] -[group_50461] -[group_50462] -[group_50463] -[group_50464] -[group_50465] -[group_50466] -[group_50467] -[group_50468] -[group_50469] -[group_50470] -[group_50471] -[group_50472] -[group_50473] -[group_50474] -[group_50475] -[group_50476] -[group_50477] -[group_50478] -[group_50479] -[group_50480] -[group_50481] -[group_50482] -[group_50483] -[group_50484] -[group_50485] -[group_50486] -[group_50487] -[group_50488] -[group_50489] -[group_50490] -[group_50491] -[group_50492] -[group_50493] -[group_50494] -[group_50495] -[group_50496] -[group_50497] -[group_50498] -[group_50499] -[group_50500] -[group_50501] -[group_50502] -[group_50503] -[group_50504] -[group_50505] -[group_50506] -[group_50507] -[group_50508] -[group_50509] -[group_50510] -[group_50511] -[group_50512] -[group_50513] -[group_50514] -[group_50515] -[group_50516] -[group_50517] -[group_50518] -[group_50519] -[group_50520] -[group_50521] -[group_50522] -[group_50523] -[group_50524] -[group_50525] -[group_50526] -[group_50527] -[group_50528] -[group_50529] -[group_50530] -[group_50531] -[group_50532] -[group_50533] -[group_50534] -[group_50535] -[group_50536] -[group_50537] -[group_50538] -[group_50539] -[group_50540] -[group_50541] -[group_50542] -[group_50543] -[group_50544] -[group_50545] -[group_50546] -[group_50547] -[group_50548] -[group_50549] -[group_50550] -[group_50551] -[group_50552] -[group_50553] -[group_50554] -[group_50555] -[group_50556] -[group_50557] -[group_50558] -[group_50559] -[group_50560] -[group_50561] -[group_50562] -[group_50563] -[group_50564] -[group_50565] -[group_50566] -[group_50567] -[group_50568] -[group_50569] -[group_50570] -[group_50571] -[group_50572] -[group_50573] -[group_50574] -[group_50575] -[group_50576] -[group_50577] -[group_50578] -[group_50579] -[group_50580] -[group_50581] -[group_50582] -[group_50583] -[group_50584] -[group_50585] -[group_50586] -[group_50587] -[group_50588] -[group_50589] -[group_50590] -[group_50591] -[group_50592] -[group_50593] -[group_50594] -[group_50595] -[group_50596] -[group_50597] -[group_50598] -[group_50599] -[group_50600] -[group_50601] -[group_50602] -[group_50603] -[group_50604] -[group_50605] -[group_50606] -[group_50607] -[group_50608] -[group_50609] -[group_50610] -[group_50611] -[group_50612] -[group_50613] -[group_50614] -[group_50615] -[group_50616] -[group_50617] -[group_50618] -[group_50619] -[group_50620] -[group_50621] -[group_50622] -[group_50623] -[group_50624] -[group_50625] -[group_50626] -[group_50627] -[group_50628] -[group_50629] -[group_50630] -[group_50631] -[group_50632] -[group_50633] -[group_50634] -[group_50635] -[group_50636] -[group_50637] -[group_50638] -[group_50639] -[group_50640] -[group_50641] -[group_50642] -[group_50643] -[group_50644] -[group_50645] -[group_50646] -[group_50647] -[group_50648] -[group_50649] -[group_50650] -[group_50651] -[group_50652] -[group_50653] -[group_50654] -[group_50655] -[group_50656] -[group_50657] -[group_50658] -[group_50659] -[group_50660] -[group_50661] -[group_50662] -[group_50663] -[group_50664] -[group_50665] -[group_50666] -[group_50667] -[group_50668] -[group_50669] -[group_50670] -[group_50671] -[group_50672] -[group_50673] -[group_50674] -[group_50675] -[group_50676] -[group_50677] -[group_50678] -[group_50679] -[group_50680] -[group_50681] -[group_50682] -[group_50683] -[group_50684] -[group_50685] -[group_50686] -[group_50687] -[group_50688] -[group_50689] -[group_50690] -[group_50691] -[group_50692] -[group_50693] -[group_50694] -[group_50695] -[group_50696] -[group_50697] -[group_50698] -[group_50699] -[group_50700] -[group_50701] -[group_50702] -[group_50703] -[group_50704] -[group_50705] -[group_50706] -[group_50707] -[group_50708] -[group_50709] -[group_50710] -[group_50711] -[group_50712] -[group_50713] -[group_50714] -[group_50715] -[group_50716] -[group_50717] -[group_50718] -[group_50719] -[group_50720] -[group_50721] -[group_50722] -[group_50723] -[group_50724] -[group_50725] -[group_50726] -[group_50727] -[group_50728] -[group_50729] -[group_50730] -[group_50731] -[group_50732] -[group_50733] -[group_50734] -[group_50735] -[group_50736] -[group_50737] -[group_50738] -[group_50739] -[group_50740] -[group_50741] -[group_50742] -[group_50743] -[group_50744] -[group_50745] -[group_50746] -[group_50747] -[group_50748] -[group_50749] -[group_50750] -[group_50751] -[group_50752] -[group_50753] -[group_50754] -[group_50755] -[group_50756] -[group_50757] -[group_50758] -[group_50759] -[group_50760] -[group_50761] -[group_50762] -[group_50763] -[group_50764] -[group_50765] -[group_50766] -[group_50767] -[group_50768] -[group_50769] -[group_50770] -[group_50771] -[group_50772] -[group_50773] -[group_50774] -[group_50775] -[group_50776] -[group_50777] -[group_50778] -[group_50779] -[group_50780] -[group_50781] -[group_50782] -[group_50783] -[group_50784] -[group_50785] -[group_50786] -[group_50787] -[group_50788] -[group_50789] -[group_50790] -[group_50791] -[group_50792] -[group_50793] -[group_50794] -[group_50795] -[group_50796] -[group_50797] -[group_50798] -[group_50799] -[group_50800] -[group_50801] -[group_50802] -[group_50803] -[group_50804] -[group_50805] -[group_50806] -[group_50807] -[group_50808] -[group_50809] -[group_50810] -[group_50811] -[group_50812] -[group_50813] -[group_50814] -[group_50815] -[group_50816] -[group_50817] -[group_50818] -[group_50819] -[group_50820] -[group_50821] -[group_50822] -[group_50823] -[group_50824] -[group_50825] -[group_50826] -[group_50827] -[group_50828] -[group_50829] -[group_50830] -[group_50831] -[group_50832] -[group_50833] -[group_50834] -[group_50835] -[group_50836] -[group_50837] -[group_50838] -[group_50839] -[group_50840] -[group_50841] -[group_50842] -[group_50843] -[group_50844] -[group_50845] -[group_50846] -[group_50847] -[group_50848] -[group_50849] -[group_50850] -[group_50851] -[group_50852] -[group_50853] -[group_50854] -[group_50855] -[group_50856] -[group_50857] -[group_50858] -[group_50859] -[group_50860] -[group_50861] -[group_50862] -[group_50863] -[group_50864] -[group_50865] -[group_50866] -[group_50867] -[group_50868] -[group_50869] -[group_50870] -[group_50871] -[group_50872] -[group_50873] -[group_50874] -[group_50875] -[group_50876] -[group_50877] -[group_50878] -[group_50879] -[group_50880] -[group_50881] -[group_50882] -[group_50883] -[group_50884] -[group_50885] -[group_50886] -[group_50887] -[group_50888] -[group_50889] -[group_50890] -[group_50891] -[group_50892] -[group_50893] -[group_50894] -[group_50895] -[group_50896] -[group_50897] -[group_50898] -[group_50899] -[group_50900] -[group_50901] -[group_50902] -[group_50903] -[group_50904] -[group_50905] -[group_50906] -[group_50907] -[group_50908] -[group_50909] -[group_50910] -[group_50911] -[group_50912] -[group_50913] -[group_50914] -[group_50915] -[group_50916] -[group_50917] -[group_50918] -[group_50919] -[group_50920] -[group_50921] -[group_50922] -[group_50923] -[group_50924] -[group_50925] -[group_50926] -[group_50927] -[group_50928] -[group_50929] -[group_50930] -[group_50931] -[group_50932] -[group_50933] -[group_50934] -[group_50935] -[group_50936] -[group_50937] -[group_50938] -[group_50939] -[group_50940] -[group_50941] -[group_50942] -[group_50943] -[group_50944] -[group_50945] -[group_50946] -[group_50947] -[group_50948] -[group_50949] -[group_50950] -[group_50951] -[group_50952] -[group_50953] -[group_50954] -[group_50955] -[group_50956] -[group_50957] -[group_50958] -[group_50959] -[group_50960] -[group_50961] -[group_50962] -[group_50963] -[group_50964] -[group_50965] -[group_50966] -[group_50967] -[group_50968] -[group_50969] -[group_50970] -[group_50971] -[group_50972] -[group_50973] -[group_50974] -[group_50975] -[group_50976] -[group_50977] -[group_50978] -[group_50979] -[group_50980] -[group_50981] -[group_50982] -[group_50983] -[group_50984] -[group_50985] -[group_50986] -[group_50987] -[group_50988] -[group_50989] -[group_50990] -[group_50991] -[group_50992] -[group_50993] -[group_50994] -[group_50995] -[group_50996] -[group_50997] -[group_50998] -[group_50999] -[group_51000] -[group_51001] -[group_51002] -[group_51003] -[group_51004] -[group_51005] -[group_51006] -[group_51007] -[group_51008] -[group_51009] -[group_51010] -[group_51011] -[group_51012] -[group_51013] -[group_51014] -[group_51015] -[group_51016] -[group_51017] -[group_51018] -[group_51019] -[group_51020] -[group_51021] -[group_51022] -[group_51023] -[group_51024] -[group_51025] -[group_51026] -[group_51027] -[group_51028] -[group_51029] -[group_51030] -[group_51031] -[group_51032] -[group_51033] -[group_51034] -[group_51035] -[group_51036] -[group_51037] -[group_51038] -[group_51039] -[group_51040] -[group_51041] -[group_51042] -[group_51043] -[group_51044] -[group_51045] -[group_51046] -[group_51047] -[group_51048] -[group_51049] -[group_51050] -[group_51051] -[group_51052] -[group_51053] -[group_51054] -[group_51055] -[group_51056] -[group_51057] -[group_51058] -[group_51059] -[group_51060] -[group_51061] -[group_51062] -[group_51063] -[group_51064] -[group_51065] -[group_51066] -[group_51067] -[group_51068] -[group_51069] -[group_51070] -[group_51071] -[group_51072] -[group_51073] -[group_51074] -[group_51075] -[group_51076] -[group_51077] -[group_51078] -[group_51079] -[group_51080] -[group_51081] -[group_51082] -[group_51083] -[group_51084] -[group_51085] -[group_51086] -[group_51087] -[group_51088] -[group_51089] -[group_51090] -[group_51091] -[group_51092] -[group_51093] -[group_51094] -[group_51095] -[group_51096] -[group_51097] -[group_51098] -[group_51099] -[group_51100] -[group_51101] -[group_51102] -[group_51103] -[group_51104] -[group_51105] -[group_51106] -[group_51107] -[group_51108] -[group_51109] -[group_51110] -[group_51111] -[group_51112] -[group_51113] -[group_51114] -[group_51115] -[group_51116] -[group_51117] -[group_51118] -[group_51119] -[group_51120] -[group_51121] -[group_51122] -[group_51123] -[group_51124] -[group_51125] -[group_51126] -[group_51127] -[group_51128] -[group_51129] -[group_51130] -[group_51131] -[group_51132] -[group_51133] -[group_51134] -[group_51135] -[group_51136] -[group_51137] -[group_51138] -[group_51139] -[group_51140] -[group_51141] -[group_51142] -[group_51143] -[group_51144] -[group_51145] -[group_51146] -[group_51147] -[group_51148] -[group_51149] -[group_51150] -[group_51151] -[group_51152] -[group_51153] -[group_51154] -[group_51155] -[group_51156] -[group_51157] -[group_51158] -[group_51159] -[group_51160] -[group_51161] -[group_51162] -[group_51163] -[group_51164] -[group_51165] -[group_51166] -[group_51167] -[group_51168] -[group_51169] -[group_51170] -[group_51171] -[group_51172] -[group_51173] -[group_51174] -[group_51175] -[group_51176] -[group_51177] -[group_51178] -[group_51179] -[group_51180] -[group_51181] -[group_51182] -[group_51183] -[group_51184] -[group_51185] -[group_51186] -[group_51187] -[group_51188] -[group_51189] -[group_51190] -[group_51191] -[group_51192] -[group_51193] -[group_51194] -[group_51195] -[group_51196] -[group_51197] -[group_51198] -[group_51199] -[group_51200] -[group_51201] -[group_51202] -[group_51203] -[group_51204] -[group_51205] -[group_51206] -[group_51207] -[group_51208] -[group_51209] -[group_51210] -[group_51211] -[group_51212] -[group_51213] -[group_51214] -[group_51215] -[group_51216] -[group_51217] -[group_51218] -[group_51219] -[group_51220] -[group_51221] -[group_51222] -[group_51223] -[group_51224] -[group_51225] -[group_51226] -[group_51227] -[group_51228] -[group_51229] -[group_51230] -[group_51231] -[group_51232] -[group_51233] -[group_51234] -[group_51235] -[group_51236] -[group_51237] -[group_51238] -[group_51239] -[group_51240] -[group_51241] -[group_51242] -[group_51243] -[group_51244] -[group_51245] -[group_51246] -[group_51247] -[group_51248] -[group_51249] -[group_51250] -[group_51251] -[group_51252] -[group_51253] -[group_51254] -[group_51255] -[group_51256] -[group_51257] -[group_51258] -[group_51259] -[group_51260] -[group_51261] -[group_51262] -[group_51263] -[group_51264] -[group_51265] -[group_51266] -[group_51267] -[group_51268] -[group_51269] -[group_51270] -[group_51271] -[group_51272] -[group_51273] -[group_51274] -[group_51275] -[group_51276] -[group_51277] -[group_51278] -[group_51279] -[group_51280] -[group_51281] -[group_51282] -[group_51283] -[group_51284] -[group_51285] -[group_51286] -[group_51287] -[group_51288] -[group_51289] -[group_51290] -[group_51291] -[group_51292] -[group_51293] -[group_51294] -[group_51295] -[group_51296] -[group_51297] -[group_51298] -[group_51299] -[group_51300] -[group_51301] -[group_51302] -[group_51303] -[group_51304] -[group_51305] -[group_51306] -[group_51307] -[group_51308] -[group_51309] -[group_51310] -[group_51311] -[group_51312] -[group_51313] -[group_51314] -[group_51315] -[group_51316] -[group_51317] -[group_51318] -[group_51319] -[group_51320] -[group_51321] -[group_51322] -[group_51323] -[group_51324] -[group_51325] -[group_51326] -[group_51327] -[group_51328] -[group_51329] -[group_51330] -[group_51331] -[group_51332] -[group_51333] -[group_51334] -[group_51335] -[group_51336] -[group_51337] -[group_51338] -[group_51339] -[group_51340] -[group_51341] -[group_51342] -[group_51343] -[group_51344] -[group_51345] -[group_51346] -[group_51347] -[group_51348] -[group_51349] -[group_51350] -[group_51351] -[group_51352] -[group_51353] -[group_51354] -[group_51355] -[group_51356] -[group_51357] -[group_51358] -[group_51359] -[group_51360] -[group_51361] -[group_51362] -[group_51363] -[group_51364] -[group_51365] -[group_51366] -[group_51367] -[group_51368] -[group_51369] -[group_51370] -[group_51371] -[group_51372] -[group_51373] -[group_51374] -[group_51375] -[group_51376] -[group_51377] -[group_51378] -[group_51379] -[group_51380] -[group_51381] -[group_51382] -[group_51383] -[group_51384] -[group_51385] -[group_51386] -[group_51387] -[group_51388] -[group_51389] -[group_51390] -[group_51391] -[group_51392] -[group_51393] -[group_51394] -[group_51395] -[group_51396] -[group_51397] -[group_51398] -[group_51399] -[group_51400] -[group_51401] -[group_51402] -[group_51403] -[group_51404] -[group_51405] -[group_51406] -[group_51407] -[group_51408] -[group_51409] -[group_51410] -[group_51411] -[group_51412] -[group_51413] -[group_51414] -[group_51415] -[group_51416] -[group_51417] -[group_51418] -[group_51419] -[group_51420] -[group_51421] -[group_51422] -[group_51423] -[group_51424] -[group_51425] -[group_51426] -[group_51427] -[group_51428] -[group_51429] -[group_51430] -[group_51431] -[group_51432] -[group_51433] -[group_51434] -[group_51435] -[group_51436] -[group_51437] -[group_51438] -[group_51439] -[group_51440] -[group_51441] -[group_51442] -[group_51443] -[group_51444] -[group_51445] -[group_51446] -[group_51447] -[group_51448] -[group_51449] -[group_51450] -[group_51451] -[group_51452] -[group_51453] -[group_51454] -[group_51455] -[group_51456] -[group_51457] -[group_51458] -[group_51459] -[group_51460] -[group_51461] -[group_51462] -[group_51463] -[group_51464] -[group_51465] -[group_51466] -[group_51467] -[group_51468] -[group_51469] -[group_51470] -[group_51471] -[group_51472] -[group_51473] -[group_51474] -[group_51475] -[group_51476] -[group_51477] -[group_51478] -[group_51479] -[group_51480] -[group_51481] -[group_51482] -[group_51483] -[group_51484] -[group_51485] -[group_51486] -[group_51487] -[group_51488] -[group_51489] -[group_51490] -[group_51491] -[group_51492] -[group_51493] -[group_51494] -[group_51495] -[group_51496] -[group_51497] -[group_51498] -[group_51499] -[group_51500] -[group_51501] -[group_51502] -[group_51503] -[group_51504] -[group_51505] -[group_51506] -[group_51507] -[group_51508] -[group_51509] -[group_51510] -[group_51511] -[group_51512] -[group_51513] -[group_51514] -[group_51515] -[group_51516] -[group_51517] -[group_51518] -[group_51519] -[group_51520] -[group_51521] -[group_51522] -[group_51523] -[group_51524] -[group_51525] -[group_51526] -[group_51527] -[group_51528] -[group_51529] -[group_51530] -[group_51531] -[group_51532] -[group_51533] -[group_51534] -[group_51535] -[group_51536] -[group_51537] -[group_51538] -[group_51539] -[group_51540] -[group_51541] -[group_51542] -[group_51543] -[group_51544] -[group_51545] -[group_51546] -[group_51547] -[group_51548] -[group_51549] -[group_51550] -[group_51551] -[group_51552] -[group_51553] -[group_51554] -[group_51555] -[group_51556] -[group_51557] -[group_51558] -[group_51559] -[group_51560] -[group_51561] -[group_51562] -[group_51563] -[group_51564] -[group_51565] -[group_51566] -[group_51567] -[group_51568] -[group_51569] -[group_51570] -[group_51571] -[group_51572] -[group_51573] -[group_51574] -[group_51575] -[group_51576] -[group_51577] -[group_51578] -[group_51579] -[group_51580] -[group_51581] -[group_51582] -[group_51583] -[group_51584] -[group_51585] -[group_51586] -[group_51587] -[group_51588] -[group_51589] -[group_51590] -[group_51591] -[group_51592] -[group_51593] -[group_51594] -[group_51595] -[group_51596] -[group_51597] -[group_51598] -[group_51599] -[group_51600] -[group_51601] -[group_51602] -[group_51603] -[group_51604] -[group_51605] -[group_51606] -[group_51607] -[group_51608] -[group_51609] -[group_51610] -[group_51611] -[group_51612] -[group_51613] -[group_51614] -[group_51615] -[group_51616] -[group_51617] -[group_51618] -[group_51619] -[group_51620] -[group_51621] -[group_51622] -[group_51623] -[group_51624] -[group_51625] -[group_51626] -[group_51627] -[group_51628] -[group_51629] -[group_51630] -[group_51631] -[group_51632] -[group_51633] -[group_51634] -[group_51635] -[group_51636] -[group_51637] -[group_51638] -[group_51639] -[group_51640] -[group_51641] -[group_51642] -[group_51643] -[group_51644] -[group_51645] -[group_51646] -[group_51647] -[group_51648] -[group_51649] -[group_51650] -[group_51651] -[group_51652] -[group_51653] -[group_51654] -[group_51655] -[group_51656] -[group_51657] -[group_51658] -[group_51659] -[group_51660] -[group_51661] -[group_51662] -[group_51663] -[group_51664] -[group_51665] -[group_51666] -[group_51667] -[group_51668] -[group_51669] -[group_51670] -[group_51671] -[group_51672] -[group_51673] -[group_51674] -[group_51675] -[group_51676] -[group_51677] -[group_51678] -[group_51679] -[group_51680] -[group_51681] -[group_51682] -[group_51683] -[group_51684] -[group_51685] -[group_51686] -[group_51687] -[group_51688] -[group_51689] -[group_51690] -[group_51691] -[group_51692] -[group_51693] -[group_51694] -[group_51695] -[group_51696] -[group_51697] -[group_51698] -[group_51699] -[group_51700] -[group_51701] -[group_51702] -[group_51703] -[group_51704] -[group_51705] -[group_51706] -[group_51707] -[group_51708] -[group_51709] -[group_51710] -[group_51711] -[group_51712] -[group_51713] -[group_51714] -[group_51715] -[group_51716] -[group_51717] -[group_51718] -[group_51719] -[group_51720] -[group_51721] -[group_51722] -[group_51723] -[group_51724] -[group_51725] -[group_51726] -[group_51727] -[group_51728] -[group_51729] -[group_51730] -[group_51731] -[group_51732] -[group_51733] -[group_51734] -[group_51735] -[group_51736] -[group_51737] -[group_51738] -[group_51739] -[group_51740] -[group_51741] -[group_51742] -[group_51743] -[group_51744] -[group_51745] -[group_51746] -[group_51747] -[group_51748] -[group_51749] -[group_51750] -[group_51751] -[group_51752] -[group_51753] -[group_51754] -[group_51755] -[group_51756] -[group_51757] -[group_51758] -[group_51759] -[group_51760] -[group_51761] -[group_51762] -[group_51763] -[group_51764] -[group_51765] -[group_51766] -[group_51767] -[group_51768] -[group_51769] -[group_51770] -[group_51771] -[group_51772] -[group_51773] -[group_51774] -[group_51775] -[group_51776] -[group_51777] -[group_51778] -[group_51779] -[group_51780] -[group_51781] -[group_51782] -[group_51783] -[group_51784] -[group_51785] -[group_51786] -[group_51787] -[group_51788] -[group_51789] -[group_51790] -[group_51791] -[group_51792] -[group_51793] -[group_51794] -[group_51795] -[group_51796] -[group_51797] -[group_51798] -[group_51799] -[group_51800] -[group_51801] -[group_51802] -[group_51803] -[group_51804] -[group_51805] -[group_51806] -[group_51807] -[group_51808] -[group_51809] -[group_51810] -[group_51811] -[group_51812] -[group_51813] -[group_51814] -[group_51815] -[group_51816] -[group_51817] -[group_51818] -[group_51819] -[group_51820] -[group_51821] -[group_51822] -[group_51823] -[group_51824] -[group_51825] -[group_51826] -[group_51827] -[group_51828] -[group_51829] -[group_51830] -[group_51831] -[group_51832] -[group_51833] -[group_51834] -[group_51835] -[group_51836] -[group_51837] -[group_51838] -[group_51839] -[group_51840] -[group_51841] -[group_51842] -[group_51843] -[group_51844] -[group_51845] -[group_51846] -[group_51847] -[group_51848] -[group_51849] -[group_51850] -[group_51851] -[group_51852] -[group_51853] -[group_51854] -[group_51855] -[group_51856] -[group_51857] -[group_51858] -[group_51859] -[group_51860] -[group_51861] -[group_51862] -[group_51863] -[group_51864] -[group_51865] -[group_51866] -[group_51867] -[group_51868] -[group_51869] -[group_51870] -[group_51871] -[group_51872] -[group_51873] -[group_51874] -[group_51875] -[group_51876] -[group_51877] -[group_51878] -[group_51879] -[group_51880] -[group_51881] -[group_51882] -[group_51883] -[group_51884] -[group_51885] -[group_51886] -[group_51887] -[group_51888] -[group_51889] -[group_51890] -[group_51891] -[group_51892] -[group_51893] -[group_51894] -[group_51895] -[group_51896] -[group_51897] -[group_51898] -[group_51899] -[group_51900] -[group_51901] -[group_51902] -[group_51903] -[group_51904] -[group_51905] -[group_51906] -[group_51907] -[group_51908] -[group_51909] -[group_51910] -[group_51911] -[group_51912] -[group_51913] -[group_51914] -[group_51915] -[group_51916] -[group_51917] -[group_51918] -[group_51919] -[group_51920] -[group_51921] -[group_51922] -[group_51923] -[group_51924] -[group_51925] -[group_51926] -[group_51927] -[group_51928] -[group_51929] -[group_51930] -[group_51931] -[group_51932] -[group_51933] -[group_51934] -[group_51935] -[group_51936] -[group_51937] -[group_51938] -[group_51939] -[group_51940] -[group_51941] -[group_51942] -[group_51943] -[group_51944] -[group_51945] -[group_51946] -[group_51947] -[group_51948] -[group_51949] -[group_51950] -[group_51951] -[group_51952] -[group_51953] -[group_51954] -[group_51955] -[group_51956] -[group_51957] -[group_51958] -[group_51959] -[group_51960] -[group_51961] -[group_51962] -[group_51963] -[group_51964] -[group_51965] -[group_51966] -[group_51967] -[group_51968] -[group_51969] -[group_51970] -[group_51971] -[group_51972] -[group_51973] -[group_51974] -[group_51975] -[group_51976] -[group_51977] -[group_51978] -[group_51979] -[group_51980] -[group_51981] -[group_51982] -[group_51983] -[group_51984] -[group_51985] -[group_51986] -[group_51987] -[group_51988] -[group_51989] -[group_51990] -[group_51991] -[group_51992] -[group_51993] -[group_51994] -[group_51995] -[group_51996] -[group_51997] -[group_51998] -[group_51999] -[group_52000] -[group_52001] -[group_52002] -[group_52003] -[group_52004] -[group_52005] -[group_52006] -[group_52007] -[group_52008] -[group_52009] -[group_52010] -[group_52011] -[group_52012] -[group_52013] -[group_52014] -[group_52015] -[group_52016] -[group_52017] -[group_52018] -[group_52019] -[group_52020] -[group_52021] -[group_52022] -[group_52023] -[group_52024] -[group_52025] -[group_52026] -[group_52027] -[group_52028] -[group_52029] -[group_52030] -[group_52031] -[group_52032] -[group_52033] -[group_52034] -[group_52035] -[group_52036] -[group_52037] -[group_52038] -[group_52039] -[group_52040] -[group_52041] -[group_52042] -[group_52043] -[group_52044] -[group_52045] -[group_52046] -[group_52047] -[group_52048] -[group_52049] -[group_52050] -[group_52051] -[group_52052] -[group_52053] -[group_52054] -[group_52055] -[group_52056] -[group_52057] -[group_52058] -[group_52059] -[group_52060] -[group_52061] -[group_52062] -[group_52063] -[group_52064] -[group_52065] -[group_52066] -[group_52067] -[group_52068] -[group_52069] -[group_52070] -[group_52071] -[group_52072] -[group_52073] -[group_52074] -[group_52075] -[group_52076] -[group_52077] -[group_52078] -[group_52079] -[group_52080] -[group_52081] -[group_52082] -[group_52083] -[group_52084] -[group_52085] -[group_52086] -[group_52087] -[group_52088] -[group_52089] -[group_52090] -[group_52091] -[group_52092] -[group_52093] -[group_52094] -[group_52095] -[group_52096] -[group_52097] -[group_52098] -[group_52099] -[group_52100] -[group_52101] -[group_52102] -[group_52103] -[group_52104] -[group_52105] -[group_52106] -[group_52107] -[group_52108] -[group_52109] -[group_52110] -[group_52111] -[group_52112] -[group_52113] -[group_52114] -[group_52115] -[group_52116] -[group_52117] -[group_52118] -[group_52119] -[group_52120] -[group_52121] -[group_52122] -[group_52123] -[group_52124] -[group_52125] -[group_52126] -[group_52127] -[group_52128] -[group_52129] -[group_52130] -[group_52131] -[group_52132] -[group_52133] -[group_52134] -[group_52135] -[group_52136] -[group_52137] -[group_52138] -[group_52139] -[group_52140] -[group_52141] -[group_52142] -[group_52143] -[group_52144] -[group_52145] -[group_52146] -[group_52147] -[group_52148] -[group_52149] -[group_52150] -[group_52151] -[group_52152] -[group_52153] -[group_52154] -[group_52155] -[group_52156] -[group_52157] -[group_52158] -[group_52159] -[group_52160] -[group_52161] -[group_52162] -[group_52163] -[group_52164] -[group_52165] -[group_52166] -[group_52167] -[group_52168] -[group_52169] -[group_52170] -[group_52171] -[group_52172] -[group_52173] -[group_52174] -[group_52175] -[group_52176] -[group_52177] -[group_52178] -[group_52179] -[group_52180] -[group_52181] -[group_52182] -[group_52183] -[group_52184] -[group_52185] -[group_52186] -[group_52187] -[group_52188] -[group_52189] -[group_52190] -[group_52191] -[group_52192] -[group_52193] -[group_52194] -[group_52195] -[group_52196] -[group_52197] -[group_52198] -[group_52199] -[group_52200] -[group_52201] -[group_52202] -[group_52203] -[group_52204] -[group_52205] -[group_52206] -[group_52207] -[group_52208] -[group_52209] -[group_52210] -[group_52211] -[group_52212] -[group_52213] -[group_52214] -[group_52215] -[group_52216] -[group_52217] -[group_52218] -[group_52219] -[group_52220] -[group_52221] -[group_52222] -[group_52223] -[group_52224] -[group_52225] -[group_52226] -[group_52227] -[group_52228] -[group_52229] -[group_52230] -[group_52231] -[group_52232] -[group_52233] -[group_52234] -[group_52235] -[group_52236] -[group_52237] -[group_52238] -[group_52239] -[group_52240] -[group_52241] -[group_52242] -[group_52243] -[group_52244] -[group_52245] -[group_52246] -[group_52247] -[group_52248] -[group_52249] -[group_52250] -[group_52251] -[group_52252] -[group_52253] -[group_52254] -[group_52255] -[group_52256] -[group_52257] -[group_52258] -[group_52259] -[group_52260] -[group_52261] -[group_52262] -[group_52263] -[group_52264] -[group_52265] -[group_52266] -[group_52267] -[group_52268] -[group_52269] -[group_52270] -[group_52271] -[group_52272] -[group_52273] -[group_52274] -[group_52275] -[group_52276] -[group_52277] -[group_52278] -[group_52279] -[group_52280] -[group_52281] -[group_52282] -[group_52283] -[group_52284] -[group_52285] -[group_52286] -[group_52287] -[group_52288] -[group_52289] -[group_52290] -[group_52291] -[group_52292] -[group_52293] -[group_52294] -[group_52295] -[group_52296] -[group_52297] -[group_52298] -[group_52299] -[group_52300] -[group_52301] -[group_52302] -[group_52303] -[group_52304] -[group_52305] -[group_52306] -[group_52307] -[group_52308] -[group_52309] -[group_52310] -[group_52311] -[group_52312] -[group_52313] -[group_52314] -[group_52315] -[group_52316] -[group_52317] -[group_52318] -[group_52319] -[group_52320] -[group_52321] -[group_52322] -[group_52323] -[group_52324] -[group_52325] -[group_52326] -[group_52327] -[group_52328] -[group_52329] -[group_52330] -[group_52331] -[group_52332] -[group_52333] -[group_52334] -[group_52335] -[group_52336] -[group_52337] -[group_52338] -[group_52339] -[group_52340] -[group_52341] -[group_52342] -[group_52343] -[group_52344] -[group_52345] -[group_52346] -[group_52347] -[group_52348] -[group_52349] -[group_52350] -[group_52351] -[group_52352] -[group_52353] -[group_52354] -[group_52355] -[group_52356] -[group_52357] -[group_52358] -[group_52359] -[group_52360] -[group_52361] -[group_52362] -[group_52363] -[group_52364] -[group_52365] -[group_52366] -[group_52367] -[group_52368] -[group_52369] -[group_52370] -[group_52371] -[group_52372] -[group_52373] -[group_52374] -[group_52375] -[group_52376] -[group_52377] -[group_52378] -[group_52379] -[group_52380] -[group_52381] -[group_52382] -[group_52383] -[group_52384] -[group_52385] -[group_52386] -[group_52387] -[group_52388] -[group_52389] -[group_52390] -[group_52391] -[group_52392] -[group_52393] -[group_52394] -[group_52395] -[group_52396] -[group_52397] -[group_52398] -[group_52399] -[group_52400] -[group_52401] -[group_52402] -[group_52403] -[group_52404] -[group_52405] -[group_52406] -[group_52407] -[group_52408] -[group_52409] -[group_52410] -[group_52411] -[group_52412] -[group_52413] -[group_52414] -[group_52415] -[group_52416] -[group_52417] -[group_52418] -[group_52419] -[group_52420] -[group_52421] -[group_52422] -[group_52423] -[group_52424] -[group_52425] -[group_52426] -[group_52427] -[group_52428] -[group_52429] -[group_52430] -[group_52431] -[group_52432] -[group_52433] -[group_52434] -[group_52435] -[group_52436] -[group_52437] -[group_52438] -[group_52439] -[group_52440] -[group_52441] -[group_52442] -[group_52443] -[group_52444] -[group_52445] -[group_52446] -[group_52447] -[group_52448] -[group_52449] -[group_52450] -[group_52451] -[group_52452] -[group_52453] -[group_52454] -[group_52455] -[group_52456] -[group_52457] -[group_52458] -[group_52459] -[group_52460] -[group_52461] -[group_52462] -[group_52463] -[group_52464] -[group_52465] -[group_52466] -[group_52467] -[group_52468] -[group_52469] -[group_52470] -[group_52471] -[group_52472] -[group_52473] -[group_52474] -[group_52475] -[group_52476] -[group_52477] -[group_52478] -[group_52479] -[group_52480] -[group_52481] -[group_52482] -[group_52483] -[group_52484] -[group_52485] -[group_52486] -[group_52487] -[group_52488] -[group_52489] -[group_52490] -[group_52491] -[group_52492] -[group_52493] -[group_52494] -[group_52495] -[group_52496] -[group_52497] -[group_52498] -[group_52499] -[group_52500] -[group_52501] -[group_52502] -[group_52503] -[group_52504] -[group_52505] -[group_52506] -[group_52507] -[group_52508] -[group_52509] -[group_52510] -[group_52511] -[group_52512] -[group_52513] -[group_52514] -[group_52515] -[group_52516] -[group_52517] -[group_52518] -[group_52519] -[group_52520] -[group_52521] -[group_52522] -[group_52523] -[group_52524] -[group_52525] -[group_52526] -[group_52527] -[group_52528] -[group_52529] -[group_52530] -[group_52531] -[group_52532] -[group_52533] -[group_52534] -[group_52535] -[group_52536] -[group_52537] -[group_52538] -[group_52539] -[group_52540] -[group_52541] -[group_52542] -[group_52543] -[group_52544] -[group_52545] -[group_52546] -[group_52547] -[group_52548] -[group_52549] -[group_52550] -[group_52551] -[group_52552] -[group_52553] -[group_52554] -[group_52555] -[group_52556] -[group_52557] -[group_52558] -[group_52559] -[group_52560] -[group_52561] -[group_52562] -[group_52563] -[group_52564] -[group_52565] -[group_52566] -[group_52567] -[group_52568] -[group_52569] -[group_52570] -[group_52571] -[group_52572] -[group_52573] -[group_52574] -[group_52575] -[group_52576] -[group_52577] -[group_52578] -[group_52579] -[group_52580] -[group_52581] -[group_52582] -[group_52583] -[group_52584] -[group_52585] -[group_52586] -[group_52587] -[group_52588] -[group_52589] -[group_52590] -[group_52591] -[group_52592] -[group_52593] -[group_52594] -[group_52595] -[group_52596] -[group_52597] -[group_52598] -[group_52599] -[group_52600] -[group_52601] -[group_52602] -[group_52603] -[group_52604] -[group_52605] -[group_52606] -[group_52607] -[group_52608] -[group_52609] -[group_52610] -[group_52611] -[group_52612] -[group_52613] -[group_52614] -[group_52615] -[group_52616] -[group_52617] -[group_52618] -[group_52619] -[group_52620] -[group_52621] -[group_52622] -[group_52623] -[group_52624] -[group_52625] -[group_52626] -[group_52627] -[group_52628] -[group_52629] -[group_52630] -[group_52631] -[group_52632] -[group_52633] -[group_52634] -[group_52635] -[group_52636] -[group_52637] -[group_52638] -[group_52639] -[group_52640] -[group_52641] -[group_52642] -[group_52643] -[group_52644] -[group_52645] -[group_52646] -[group_52647] -[group_52648] -[group_52649] -[group_52650] -[group_52651] -[group_52652] -[group_52653] -[group_52654] -[group_52655] -[group_52656] -[group_52657] -[group_52658] -[group_52659] -[group_52660] -[group_52661] -[group_52662] -[group_52663] -[group_52664] -[group_52665] -[group_52666] -[group_52667] -[group_52668] -[group_52669] -[group_52670] -[group_52671] -[group_52672] -[group_52673] -[group_52674] -[group_52675] -[group_52676] -[group_52677] -[group_52678] -[group_52679] -[group_52680] -[group_52681] -[group_52682] -[group_52683] -[group_52684] -[group_52685] -[group_52686] -[group_52687] -[group_52688] -[group_52689] -[group_52690] -[group_52691] -[group_52692] -[group_52693] -[group_52694] -[group_52695] -[group_52696] -[group_52697] -[group_52698] -[group_52699] -[group_52700] -[group_52701] -[group_52702] -[group_52703] -[group_52704] -[group_52705] -[group_52706] -[group_52707] -[group_52708] -[group_52709] -[group_52710] -[group_52711] -[group_52712] -[group_52713] -[group_52714] -[group_52715] -[group_52716] -[group_52717] -[group_52718] -[group_52719] -[group_52720] -[group_52721] -[group_52722] -[group_52723] -[group_52724] -[group_52725] -[group_52726] -[group_52727] -[group_52728] -[group_52729] -[group_52730] -[group_52731] -[group_52732] -[group_52733] -[group_52734] -[group_52735] -[group_52736] -[group_52737] -[group_52738] -[group_52739] -[group_52740] -[group_52741] -[group_52742] -[group_52743] -[group_52744] -[group_52745] -[group_52746] -[group_52747] -[group_52748] -[group_52749] -[group_52750] -[group_52751] -[group_52752] -[group_52753] -[group_52754] -[group_52755] -[group_52756] -[group_52757] -[group_52758] -[group_52759] -[group_52760] -[group_52761] -[group_52762] -[group_52763] -[group_52764] -[group_52765] -[group_52766] -[group_52767] -[group_52768] -[group_52769] -[group_52770] -[group_52771] -[group_52772] -[group_52773] -[group_52774] -[group_52775] -[group_52776] -[group_52777] -[group_52778] -[group_52779] -[group_52780] -[group_52781] -[group_52782] -[group_52783] -[group_52784] -[group_52785] -[group_52786] -[group_52787] -[group_52788] -[group_52789] -[group_52790] -[group_52791] -[group_52792] -[group_52793] -[group_52794] -[group_52795] -[group_52796] -[group_52797] -[group_52798] -[group_52799] -[group_52800] -[group_52801] -[group_52802] -[group_52803] -[group_52804] -[group_52805] -[group_52806] -[group_52807] -[group_52808] -[group_52809] -[group_52810] -[group_52811] -[group_52812] -[group_52813] -[group_52814] -[group_52815] -[group_52816] -[group_52817] -[group_52818] -[group_52819] -[group_52820] -[group_52821] -[group_52822] -[group_52823] -[group_52824] -[group_52825] -[group_52826] -[group_52827] -[group_52828] -[group_52829] -[group_52830] -[group_52831] -[group_52832] -[group_52833] -[group_52834] -[group_52835] -[group_52836] -[group_52837] -[group_52838] -[group_52839] -[group_52840] -[group_52841] -[group_52842] -[group_52843] -[group_52844] -[group_52845] -[group_52846] -[group_52847] -[group_52848] -[group_52849] -[group_52850] -[group_52851] -[group_52852] -[group_52853] -[group_52854] -[group_52855] -[group_52856] -[group_52857] -[group_52858] -[group_52859] -[group_52860] -[group_52861] -[group_52862] -[group_52863] -[group_52864] -[group_52865] -[group_52866] -[group_52867] -[group_52868] -[group_52869] -[group_52870] -[group_52871] -[group_52872] -[group_52873] -[group_52874] -[group_52875] -[group_52876] -[group_52877] -[group_52878] -[group_52879] -[group_52880] -[group_52881] -[group_52882] -[group_52883] -[group_52884] -[group_52885] -[group_52886] -[group_52887] -[group_52888] -[group_52889] -[group_52890] -[group_52891] -[group_52892] -[group_52893] -[group_52894] -[group_52895] -[group_52896] -[group_52897] -[group_52898] -[group_52899] -[group_52900] -[group_52901] -[group_52902] -[group_52903] -[group_52904] -[group_52905] -[group_52906] -[group_52907] -[group_52908] -[group_52909] -[group_52910] -[group_52911] -[group_52912] -[group_52913] -[group_52914] -[group_52915] -[group_52916] -[group_52917] -[group_52918] -[group_52919] -[group_52920] -[group_52921] -[group_52922] -[group_52923] -[group_52924] -[group_52925] -[group_52926] -[group_52927] -[group_52928] -[group_52929] -[group_52930] -[group_52931] -[group_52932] -[group_52933] -[group_52934] -[group_52935] -[group_52936] -[group_52937] -[group_52938] -[group_52939] -[group_52940] -[group_52941] -[group_52942] -[group_52943] -[group_52944] -[group_52945] -[group_52946] -[group_52947] -[group_52948] -[group_52949] -[group_52950] -[group_52951] -[group_52952] -[group_52953] -[group_52954] -[group_52955] -[group_52956] -[group_52957] -[group_52958] -[group_52959] -[group_52960] -[group_52961] -[group_52962] -[group_52963] -[group_52964] -[group_52965] -[group_52966] -[group_52967] -[group_52968] -[group_52969] -[group_52970] -[group_52971] -[group_52972] -[group_52973] -[group_52974] -[group_52975] -[group_52976] -[group_52977] -[group_52978] -[group_52979] -[group_52980] -[group_52981] -[group_52982] -[group_52983] -[group_52984] -[group_52985] -[group_52986] -[group_52987] -[group_52988] -[group_52989] -[group_52990] -[group_52991] -[group_52992] -[group_52993] -[group_52994] -[group_52995] -[group_52996] -[group_52997] -[group_52998] -[group_52999] -[group_53000] -[group_53001] -[group_53002] -[group_53003] -[group_53004] -[group_53005] -[group_53006] -[group_53007] -[group_53008] -[group_53009] -[group_53010] -[group_53011] -[group_53012] -[group_53013] -[group_53014] -[group_53015] -[group_53016] -[group_53017] -[group_53018] -[group_53019] -[group_53020] -[group_53021] -[group_53022] -[group_53023] -[group_53024] -[group_53025] -[group_53026] -[group_53027] -[group_53028] -[group_53029] -[group_53030] -[group_53031] -[group_53032] -[group_53033] -[group_53034] -[group_53035] -[group_53036] -[group_53037] -[group_53038] -[group_53039] -[group_53040] -[group_53041] -[group_53042] -[group_53043] -[group_53044] -[group_53045] -[group_53046] -[group_53047] -[group_53048] -[group_53049] -[group_53050] -[group_53051] -[group_53052] -[group_53053] -[group_53054] -[group_53055] -[group_53056] -[group_53057] -[group_53058] -[group_53059] -[group_53060] -[group_53061] -[group_53062] -[group_53063] -[group_53064] -[group_53065] -[group_53066] -[group_53067] -[group_53068] -[group_53069] -[group_53070] -[group_53071] -[group_53072] -[group_53073] -[group_53074] -[group_53075] -[group_53076] -[group_53077] -[group_53078] -[group_53079] -[group_53080] -[group_53081] -[group_53082] -[group_53083] -[group_53084] -[group_53085] -[group_53086] -[group_53087] -[group_53088] -[group_53089] -[group_53090] -[group_53091] -[group_53092] -[group_53093] -[group_53094] -[group_53095] -[group_53096] -[group_53097] -[group_53098] -[group_53099] -[group_53100] -[group_53101] -[group_53102] -[group_53103] -[group_53104] -[group_53105] -[group_53106] -[group_53107] -[group_53108] -[group_53109] -[group_53110] -[group_53111] -[group_53112] -[group_53113] -[group_53114] -[group_53115] -[group_53116] -[group_53117] -[group_53118] -[group_53119] -[group_53120] -[group_53121] -[group_53122] -[group_53123] -[group_53124] -[group_53125] -[group_53126] -[group_53127] -[group_53128] -[group_53129] -[group_53130] -[group_53131] -[group_53132] -[group_53133] -[group_53134] -[group_53135] -[group_53136] -[group_53137] -[group_53138] -[group_53139] -[group_53140] -[group_53141] -[group_53142] -[group_53143] -[group_53144] -[group_53145] -[group_53146] -[group_53147] -[group_53148] -[group_53149] -[group_53150] -[group_53151] -[group_53152] -[group_53153] -[group_53154] -[group_53155] -[group_53156] -[group_53157] -[group_53158] -[group_53159] -[group_53160] -[group_53161] -[group_53162] -[group_53163] -[group_53164] -[group_53165] -[group_53166] -[group_53167] -[group_53168] -[group_53169] -[group_53170] -[group_53171] -[group_53172] -[group_53173] -[group_53174] -[group_53175] -[group_53176] -[group_53177] -[group_53178] -[group_53179] -[group_53180] -[group_53181] -[group_53182] -[group_53183] -[group_53184] -[group_53185] -[group_53186] -[group_53187] -[group_53188] -[group_53189] -[group_53190] -[group_53191] -[group_53192] -[group_53193] -[group_53194] -[group_53195] -[group_53196] -[group_53197] -[group_53198] -[group_53199] -[group_53200] -[group_53201] -[group_53202] -[group_53203] -[group_53204] -[group_53205] -[group_53206] -[group_53207] -[group_53208] -[group_53209] -[group_53210] -[group_53211] -[group_53212] -[group_53213] -[group_53214] -[group_53215] -[group_53216] -[group_53217] -[group_53218] -[group_53219] -[group_53220] -[group_53221] -[group_53222] -[group_53223] -[group_53224] -[group_53225] -[group_53226] -[group_53227] -[group_53228] -[group_53229] -[group_53230] -[group_53231] -[group_53232] -[group_53233] -[group_53234] -[group_53235] -[group_53236] -[group_53237] -[group_53238] -[group_53239] -[group_53240] -[group_53241] -[group_53242] -[group_53243] -[group_53244] -[group_53245] -[group_53246] -[group_53247] -[group_53248] -[group_53249] -[group_53250] -[group_53251] -[group_53252] -[group_53253] -[group_53254] -[group_53255] -[group_53256] -[group_53257] -[group_53258] -[group_53259] -[group_53260] -[group_53261] -[group_53262] -[group_53263] -[group_53264] -[group_53265] -[group_53266] -[group_53267] -[group_53268] -[group_53269] -[group_53270] -[group_53271] -[group_53272] -[group_53273] -[group_53274] -[group_53275] -[group_53276] -[group_53277] -[group_53278] -[group_53279] -[group_53280] -[group_53281] -[group_53282] -[group_53283] -[group_53284] -[group_53285] -[group_53286] -[group_53287] -[group_53288] -[group_53289] -[group_53290] -[group_53291] -[group_53292] -[group_53293] -[group_53294] -[group_53295] -[group_53296] -[group_53297] -[group_53298] -[group_53299] -[group_53300] -[group_53301] -[group_53302] -[group_53303] -[group_53304] -[group_53305] -[group_53306] -[group_53307] -[group_53308] -[group_53309] -[group_53310] -[group_53311] -[group_53312] -[group_53313] -[group_53314] -[group_53315] -[group_53316] -[group_53317] -[group_53318] -[group_53319] -[group_53320] -[group_53321] -[group_53322] -[group_53323] -[group_53324] -[group_53325] -[group_53326] -[group_53327] -[group_53328] -[group_53329] -[group_53330] -[group_53331] -[group_53332] -[group_53333] -[group_53334] -[group_53335] -[group_53336] -[group_53337] -[group_53338] -[group_53339] -[group_53340] -[group_53341] -[group_53342] -[group_53343] -[group_53344] -[group_53345] -[group_53346] -[group_53347] -[group_53348] -[group_53349] -[group_53350] -[group_53351] -[group_53352] -[group_53353] -[group_53354] -[group_53355] -[group_53356] -[group_53357] -[group_53358] -[group_53359] -[group_53360] -[group_53361] -[group_53362] -[group_53363] -[group_53364] -[group_53365] -[group_53366] -[group_53367] -[group_53368] -[group_53369] -[group_53370] -[group_53371] -[group_53372] -[group_53373] -[group_53374] -[group_53375] -[group_53376] -[group_53377] -[group_53378] -[group_53379] -[group_53380] -[group_53381] -[group_53382] -[group_53383] -[group_53384] -[group_53385] -[group_53386] -[group_53387] -[group_53388] -[group_53389] -[group_53390] -[group_53391] -[group_53392] -[group_53393] -[group_53394] -[group_53395] -[group_53396] -[group_53397] -[group_53398] -[group_53399] -[group_53400] -[group_53401] -[group_53402] -[group_53403] -[group_53404] -[group_53405] -[group_53406] -[group_53407] -[group_53408] -[group_53409] -[group_53410] -[group_53411] -[group_53412] -[group_53413] -[group_53414] -[group_53415] -[group_53416] -[group_53417] -[group_53418] -[group_53419] -[group_53420] -[group_53421] -[group_53422] -[group_53423] -[group_53424] -[group_53425] -[group_53426] -[group_53427] -[group_53428] -[group_53429] -[group_53430] -[group_53431] -[group_53432] -[group_53433] -[group_53434] -[group_53435] -[group_53436] -[group_53437] -[group_53438] -[group_53439] -[group_53440] -[group_53441] -[group_53442] -[group_53443] -[group_53444] -[group_53445] -[group_53446] -[group_53447] -[group_53448] -[group_53449] -[group_53450] -[group_53451] -[group_53452] -[group_53453] -[group_53454] -[group_53455] -[group_53456] -[group_53457] -[group_53458] -[group_53459] -[group_53460] -[group_53461] -[group_53462] -[group_53463] -[group_53464] -[group_53465] -[group_53466] -[group_53467] -[group_53468] -[group_53469] -[group_53470] -[group_53471] -[group_53472] -[group_53473] -[group_53474] -[group_53475] -[group_53476] -[group_53477] -[group_53478] -[group_53479] -[group_53480] -[group_53481] -[group_53482] -[group_53483] -[group_53484] -[group_53485] -[group_53486] -[group_53487] -[group_53488] -[group_53489] -[group_53490] -[group_53491] -[group_53492] -[group_53493] -[group_53494] -[group_53495] -[group_53496] -[group_53497] -[group_53498] -[group_53499] -[group_53500] -[group_53501] -[group_53502] -[group_53503] -[group_53504] -[group_53505] -[group_53506] -[group_53507] -[group_53508] -[group_53509] -[group_53510] -[group_53511] -[group_53512] -[group_53513] -[group_53514] -[group_53515] -[group_53516] -[group_53517] -[group_53518] -[group_53519] -[group_53520] -[group_53521] -[group_53522] -[group_53523] -[group_53524] -[group_53525] -[group_53526] -[group_53527] -[group_53528] -[group_53529] -[group_53530] -[group_53531] -[group_53532] -[group_53533] -[group_53534] -[group_53535] -[group_53536] -[group_53537] -[group_53538] -[group_53539] -[group_53540] -[group_53541] -[group_53542] -[group_53543] -[group_53544] -[group_53545] -[group_53546] -[group_53547] -[group_53548] -[group_53549] -[group_53550] -[group_53551] -[group_53552] -[group_53553] -[group_53554] -[group_53555] -[group_53556] -[group_53557] -[group_53558] -[group_53559] -[group_53560] -[group_53561] -[group_53562] -[group_53563] -[group_53564] -[group_53565] -[group_53566] -[group_53567] -[group_53568] -[group_53569] -[group_53570] -[group_53571] -[group_53572] -[group_53573] -[group_53574] -[group_53575] -[group_53576] -[group_53577] -[group_53578] -[group_53579] -[group_53580] -[group_53581] -[group_53582] -[group_53583] -[group_53584] -[group_53585] -[group_53586] -[group_53587] -[group_53588] -[group_53589] -[group_53590] -[group_53591] -[group_53592] -[group_53593] -[group_53594] -[group_53595] -[group_53596] -[group_53597] -[group_53598] -[group_53599] -[group_53600] -[group_53601] -[group_53602] -[group_53603] -[group_53604] -[group_53605] -[group_53606] -[group_53607] -[group_53608] -[group_53609] -[group_53610] -[group_53611] -[group_53612] -[group_53613] -[group_53614] -[group_53615] -[group_53616] -[group_53617] -[group_53618] -[group_53619] -[group_53620] -[group_53621] -[group_53622] -[group_53623] -[group_53624] -[group_53625] -[group_53626] -[group_53627] -[group_53628] -[group_53629] -[group_53630] -[group_53631] -[group_53632] -[group_53633] -[group_53634] -[group_53635] -[group_53636] -[group_53637] -[group_53638] -[group_53639] -[group_53640] -[group_53641] -[group_53642] -[group_53643] -[group_53644] -[group_53645] -[group_53646] -[group_53647] -[group_53648] -[group_53649] -[group_53650] -[group_53651] -[group_53652] -[group_53653] -[group_53654] -[group_53655] -[group_53656] -[group_53657] -[group_53658] -[group_53659] -[group_53660] -[group_53661] -[group_53662] -[group_53663] -[group_53664] -[group_53665] -[group_53666] -[group_53667] -[group_53668] -[group_53669] -[group_53670] -[group_53671] -[group_53672] -[group_53673] -[group_53674] -[group_53675] -[group_53676] -[group_53677] -[group_53678] -[group_53679] -[group_53680] -[group_53681] -[group_53682] -[group_53683] -[group_53684] -[group_53685] -[group_53686] -[group_53687] -[group_53688] -[group_53689] -[group_53690] -[group_53691] -[group_53692] -[group_53693] -[group_53694] -[group_53695] -[group_53696] -[group_53697] -[group_53698] -[group_53699] -[group_53700] -[group_53701] -[group_53702] -[group_53703] -[group_53704] -[group_53705] -[group_53706] -[group_53707] -[group_53708] -[group_53709] -[group_53710] -[group_53711] -[group_53712] -[group_53713] -[group_53714] -[group_53715] -[group_53716] -[group_53717] -[group_53718] -[group_53719] -[group_53720] -[group_53721] -[group_53722] -[group_53723] -[group_53724] -[group_53725] -[group_53726] -[group_53727] -[group_53728] -[group_53729] -[group_53730] -[group_53731] -[group_53732] -[group_53733] -[group_53734] -[group_53735] -[group_53736] -[group_53737] -[group_53738] -[group_53739] -[group_53740] -[group_53741] -[group_53742] -[group_53743] -[group_53744] -[group_53745] -[group_53746] -[group_53747] -[group_53748] -[group_53749] -[group_53750] -[group_53751] -[group_53752] -[group_53753] -[group_53754] -[group_53755] -[group_53756] -[group_53757] -[group_53758] -[group_53759] -[group_53760] -[group_53761] -[group_53762] -[group_53763] -[group_53764] -[group_53765] -[group_53766] -[group_53767] -[group_53768] -[group_53769] -[group_53770] -[group_53771] -[group_53772] -[group_53773] -[group_53774] -[group_53775] -[group_53776] -[group_53777] -[group_53778] -[group_53779] -[group_53780] -[group_53781] -[group_53782] -[group_53783] -[group_53784] -[group_53785] -[group_53786] -[group_53787] -[group_53788] -[group_53789] -[group_53790] -[group_53791] -[group_53792] -[group_53793] -[group_53794] -[group_53795] -[group_53796] -[group_53797] -[group_53798] -[group_53799] -[group_53800] -[group_53801] -[group_53802] -[group_53803] -[group_53804] -[group_53805] -[group_53806] -[group_53807] -[group_53808] -[group_53809] -[group_53810] -[group_53811] -[group_53812] -[group_53813] -[group_53814] -[group_53815] -[group_53816] -[group_53817] -[group_53818] -[group_53819] -[group_53820] -[group_53821] -[group_53822] -[group_53823] -[group_53824] -[group_53825] -[group_53826] -[group_53827] -[group_53828] -[group_53829] -[group_53830] -[group_53831] -[group_53832] -[group_53833] -[group_53834] -[group_53835] -[group_53836] -[group_53837] -[group_53838] -[group_53839] -[group_53840] -[group_53841] -[group_53842] -[group_53843] -[group_53844] -[group_53845] -[group_53846] -[group_53847] -[group_53848] -[group_53849] -[group_53850] -[group_53851] -[group_53852] -[group_53853] -[group_53854] -[group_53855] -[group_53856] -[group_53857] -[group_53858] -[group_53859] -[group_53860] -[group_53861] -[group_53862] -[group_53863] -[group_53864] -[group_53865] -[group_53866] -[group_53867] -[group_53868] -[group_53869] -[group_53870] -[group_53871] -[group_53872] -[group_53873] -[group_53874] -[group_53875] -[group_53876] -[group_53877] -[group_53878] -[group_53879] -[group_53880] -[group_53881] -[group_53882] -[group_53883] -[group_53884] -[group_53885] -[group_53886] -[group_53887] -[group_53888] -[group_53889] -[group_53890] -[group_53891] -[group_53892] -[group_53893] -[group_53894] -[group_53895] -[group_53896] -[group_53897] -[group_53898] -[group_53899] -[group_53900] -[group_53901] -[group_53902] -[group_53903] -[group_53904] -[group_53905] -[group_53906] -[group_53907] -[group_53908] -[group_53909] -[group_53910] -[group_53911] -[group_53912] -[group_53913] -[group_53914] -[group_53915] -[group_53916] -[group_53917] -[group_53918] -[group_53919] -[group_53920] -[group_53921] -[group_53922] -[group_53923] -[group_53924] -[group_53925] -[group_53926] -[group_53927] -[group_53928] -[group_53929] -[group_53930] -[group_53931] -[group_53932] -[group_53933] -[group_53934] -[group_53935] -[group_53936] -[group_53937] -[group_53938] -[group_53939] -[group_53940] -[group_53941] -[group_53942] -[group_53943] -[group_53944] -[group_53945] -[group_53946] -[group_53947] -[group_53948] -[group_53949] -[group_53950] -[group_53951] -[group_53952] -[group_53953] -[group_53954] -[group_53955] -[group_53956] -[group_53957] -[group_53958] -[group_53959] -[group_53960] -[group_53961] -[group_53962] -[group_53963] -[group_53964] -[group_53965] -[group_53966] -[group_53967] -[group_53968] -[group_53969] -[group_53970] -[group_53971] -[group_53972] -[group_53973] -[group_53974] -[group_53975] -[group_53976] -[group_53977] -[group_53978] -[group_53979] -[group_53980] -[group_53981] -[group_53982] -[group_53983] -[group_53984] -[group_53985] -[group_53986] -[group_53987] -[group_53988] -[group_53989] -[group_53990] -[group_53991] -[group_53992] -[group_53993] -[group_53994] -[group_53995] -[group_53996] -[group_53997] -[group_53998] -[group_53999] -[group_54000] -[group_54001] -[group_54002] -[group_54003] -[group_54004] -[group_54005] -[group_54006] -[group_54007] -[group_54008] -[group_54009] -[group_54010] -[group_54011] -[group_54012] -[group_54013] -[group_54014] -[group_54015] -[group_54016] -[group_54017] -[group_54018] -[group_54019] -[group_54020] -[group_54021] -[group_54022] -[group_54023] -[group_54024] -[group_54025] -[group_54026] -[group_54027] -[group_54028] -[group_54029] -[group_54030] -[group_54031] -[group_54032] -[group_54033] -[group_54034] -[group_54035] -[group_54036] -[group_54037] -[group_54038] -[group_54039] -[group_54040] -[group_54041] -[group_54042] -[group_54043] -[group_54044] -[group_54045] -[group_54046] -[group_54047] -[group_54048] -[group_54049] -[group_54050] -[group_54051] -[group_54052] -[group_54053] -[group_54054] -[group_54055] -[group_54056] -[group_54057] -[group_54058] -[group_54059] -[group_54060] -[group_54061] -[group_54062] -[group_54063] -[group_54064] -[group_54065] -[group_54066] -[group_54067] -[group_54068] -[group_54069] -[group_54070] -[group_54071] -[group_54072] -[group_54073] -[group_54074] -[group_54075] -[group_54076] -[group_54077] -[group_54078] -[group_54079] -[group_54080] -[group_54081] -[group_54082] -[group_54083] -[group_54084] -[group_54085] -[group_54086] -[group_54087] -[group_54088] -[group_54089] -[group_54090] -[group_54091] -[group_54092] -[group_54093] -[group_54094] -[group_54095] -[group_54096] -[group_54097] -[group_54098] -[group_54099] -[group_54100] -[group_54101] -[group_54102] -[group_54103] -[group_54104] -[group_54105] -[group_54106] -[group_54107] -[group_54108] -[group_54109] -[group_54110] -[group_54111] -[group_54112] -[group_54113] -[group_54114] -[group_54115] -[group_54116] -[group_54117] -[group_54118] -[group_54119] -[group_54120] -[group_54121] -[group_54122] -[group_54123] -[group_54124] -[group_54125] -[group_54126] -[group_54127] -[group_54128] -[group_54129] -[group_54130] -[group_54131] -[group_54132] -[group_54133] -[group_54134] -[group_54135] -[group_54136] -[group_54137] -[group_54138] -[group_54139] -[group_54140] -[group_54141] -[group_54142] -[group_54143] -[group_54144] -[group_54145] -[group_54146] -[group_54147] -[group_54148] -[group_54149] -[group_54150] -[group_54151] -[group_54152] -[group_54153] -[group_54154] -[group_54155] -[group_54156] -[group_54157] -[group_54158] -[group_54159] -[group_54160] -[group_54161] -[group_54162] -[group_54163] -[group_54164] -[group_54165] -[group_54166] -[group_54167] -[group_54168] -[group_54169] -[group_54170] -[group_54171] -[group_54172] -[group_54173] -[group_54174] -[group_54175] -[group_54176] -[group_54177] -[group_54178] -[group_54179] -[group_54180] -[group_54181] -[group_54182] -[group_54183] -[group_54184] -[group_54185] -[group_54186] -[group_54187] -[group_54188] -[group_54189] -[group_54190] -[group_54191] -[group_54192] -[group_54193] -[group_54194] -[group_54195] -[group_54196] -[group_54197] -[group_54198] -[group_54199] -[group_54200] -[group_54201] -[group_54202] -[group_54203] -[group_54204] -[group_54205] -[group_54206] -[group_54207] -[group_54208] -[group_54209] -[group_54210] -[group_54211] -[group_54212] -[group_54213] -[group_54214] -[group_54215] -[group_54216] -[group_54217] -[group_54218] -[group_54219] -[group_54220] -[group_54221] -[group_54222] -[group_54223] -[group_54224] -[group_54225] -[group_54226] -[group_54227] -[group_54228] -[group_54229] -[group_54230] -[group_54231] -[group_54232] -[group_54233] -[group_54234] -[group_54235] -[group_54236] -[group_54237] -[group_54238] -[group_54239] -[group_54240] -[group_54241] -[group_54242] -[group_54243] -[group_54244] -[group_54245] -[group_54246] -[group_54247] -[group_54248] -[group_54249] -[group_54250] -[group_54251] -[group_54252] -[group_54253] -[group_54254] -[group_54255] -[group_54256] -[group_54257] -[group_54258] -[group_54259] -[group_54260] -[group_54261] -[group_54262] -[group_54263] -[group_54264] -[group_54265] -[group_54266] -[group_54267] -[group_54268] -[group_54269] -[group_54270] -[group_54271] -[group_54272] -[group_54273] -[group_54274] -[group_54275] -[group_54276] -[group_54277] -[group_54278] -[group_54279] -[group_54280] -[group_54281] -[group_54282] -[group_54283] -[group_54284] -[group_54285] -[group_54286] -[group_54287] -[group_54288] -[group_54289] -[group_54290] -[group_54291] -[group_54292] -[group_54293] -[group_54294] -[group_54295] -[group_54296] -[group_54297] -[group_54298] -[group_54299] -[group_54300] -[group_54301] -[group_54302] -[group_54303] -[group_54304] -[group_54305] -[group_54306] -[group_54307] -[group_54308] -[group_54309] -[group_54310] -[group_54311] -[group_54312] -[group_54313] -[group_54314] -[group_54315] -[group_54316] -[group_54317] -[group_54318] -[group_54319] -[group_54320] -[group_54321] -[group_54322] -[group_54323] -[group_54324] -[group_54325] -[group_54326] -[group_54327] -[group_54328] -[group_54329] -[group_54330] -[group_54331] -[group_54332] -[group_54333] -[group_54334] -[group_54335] -[group_54336] -[group_54337] -[group_54338] -[group_54339] -[group_54340] -[group_54341] -[group_54342] -[group_54343] -[group_54344] -[group_54345] -[group_54346] -[group_54347] -[group_54348] -[group_54349] -[group_54350] -[group_54351] -[group_54352] -[group_54353] -[group_54354] -[group_54355] -[group_54356] -[group_54357] -[group_54358] -[group_54359] -[group_54360] -[group_54361] -[group_54362] -[group_54363] -[group_54364] -[group_54365] -[group_54366] -[group_54367] -[group_54368] -[group_54369] -[group_54370] -[group_54371] -[group_54372] -[group_54373] -[group_54374] -[group_54375] -[group_54376] -[group_54377] -[group_54378] -[group_54379] -[group_54380] -[group_54381] -[group_54382] -[group_54383] -[group_54384] -[group_54385] -[group_54386] -[group_54387] -[group_54388] -[group_54389] -[group_54390] -[group_54391] -[group_54392] -[group_54393] -[group_54394] -[group_54395] -[group_54396] -[group_54397] -[group_54398] -[group_54399] -[group_54400] -[group_54401] -[group_54402] -[group_54403] -[group_54404] -[group_54405] -[group_54406] -[group_54407] -[group_54408] -[group_54409] -[group_54410] -[group_54411] -[group_54412] -[group_54413] -[group_54414] -[group_54415] -[group_54416] -[group_54417] -[group_54418] -[group_54419] -[group_54420] -[group_54421] -[group_54422] -[group_54423] -[group_54424] -[group_54425] -[group_54426] -[group_54427] -[group_54428] -[group_54429] -[group_54430] -[group_54431] -[group_54432] -[group_54433] -[group_54434] -[group_54435] -[group_54436] -[group_54437] -[group_54438] -[group_54439] -[group_54440] -[group_54441] -[group_54442] -[group_54443] -[group_54444] -[group_54445] -[group_54446] -[group_54447] -[group_54448] -[group_54449] -[group_54450] -[group_54451] -[group_54452] -[group_54453] -[group_54454] -[group_54455] -[group_54456] -[group_54457] -[group_54458] -[group_54459] -[group_54460] -[group_54461] -[group_54462] -[group_54463] -[group_54464] -[group_54465] -[group_54466] -[group_54467] -[group_54468] -[group_54469] -[group_54470] -[group_54471] -[group_54472] -[group_54473] -[group_54474] -[group_54475] -[group_54476] -[group_54477] -[group_54478] -[group_54479] -[group_54480] -[group_54481] -[group_54482] -[group_54483] -[group_54484] -[group_54485] -[group_54486] -[group_54487] -[group_54488] -[group_54489] -[group_54490] -[group_54491] -[group_54492] -[group_54493] -[group_54494] -[group_54495] -[group_54496] -[group_54497] -[group_54498] -[group_54499] -[group_54500] -[group_54501] -[group_54502] -[group_54503] -[group_54504] -[group_54505] -[group_54506] -[group_54507] -[group_54508] -[group_54509] -[group_54510] -[group_54511] -[group_54512] -[group_54513] -[group_54514] -[group_54515] -[group_54516] -[group_54517] -[group_54518] -[group_54519] -[group_54520] -[group_54521] -[group_54522] -[group_54523] -[group_54524] -[group_54525] -[group_54526] -[group_54527] -[group_54528] -[group_54529] -[group_54530] -[group_54531] -[group_54532] -[group_54533] -[group_54534] -[group_54535] -[group_54536] -[group_54537] -[group_54538] -[group_54539] -[group_54540] -[group_54541] -[group_54542] -[group_54543] -[group_54544] -[group_54545] -[group_54546] -[group_54547] -[group_54548] -[group_54549] -[group_54550] -[group_54551] -[group_54552] -[group_54553] -[group_54554] -[group_54555] -[group_54556] -[group_54557] -[group_54558] -[group_54559] -[group_54560] -[group_54561] -[group_54562] -[group_54563] -[group_54564] -[group_54565] -[group_54566] -[group_54567] -[group_54568] -[group_54569] -[group_54570] -[group_54571] -[group_54572] -[group_54573] -[group_54574] -[group_54575] -[group_54576] -[group_54577] -[group_54578] -[group_54579] -[group_54580] -[group_54581] -[group_54582] -[group_54583] -[group_54584] -[group_54585] -[group_54586] -[group_54587] -[group_54588] -[group_54589] -[group_54590] -[group_54591] -[group_54592] -[group_54593] -[group_54594] -[group_54595] -[group_54596] -[group_54597] -[group_54598] -[group_54599] -[group_54600] -[group_54601] -[group_54602] -[group_54603] -[group_54604] -[group_54605] -[group_54606] -[group_54607] -[group_54608] -[group_54609] -[group_54610] -[group_54611] -[group_54612] -[group_54613] -[group_54614] -[group_54615] -[group_54616] -[group_54617] -[group_54618] -[group_54619] -[group_54620] -[group_54621] -[group_54622] -[group_54623] -[group_54624] -[group_54625] -[group_54626] -[group_54627] -[group_54628] -[group_54629] -[group_54630] -[group_54631] -[group_54632] -[group_54633] -[group_54634] -[group_54635] -[group_54636] -[group_54637] -[group_54638] -[group_54639] -[group_54640] -[group_54641] -[group_54642] -[group_54643] -[group_54644] -[group_54645] -[group_54646] -[group_54647] -[group_54648] -[group_54649] -[group_54650] -[group_54651] -[group_54652] -[group_54653] -[group_54654] -[group_54655] -[group_54656] -[group_54657] -[group_54658] -[group_54659] -[group_54660] -[group_54661] -[group_54662] -[group_54663] -[group_54664] -[group_54665] -[group_54666] -[group_54667] -[group_54668] -[group_54669] -[group_54670] -[group_54671] -[group_54672] -[group_54673] -[group_54674] -[group_54675] -[group_54676] -[group_54677] -[group_54678] -[group_54679] -[group_54680] -[group_54681] -[group_54682] -[group_54683] -[group_54684] -[group_54685] -[group_54686] -[group_54687] -[group_54688] -[group_54689] -[group_54690] -[group_54691] -[group_54692] -[group_54693] -[group_54694] -[group_54695] -[group_54696] -[group_54697] -[group_54698] -[group_54699] -[group_54700] -[group_54701] -[group_54702] -[group_54703] -[group_54704] -[group_54705] -[group_54706] -[group_54707] -[group_54708] -[group_54709] -[group_54710] -[group_54711] -[group_54712] -[group_54713] -[group_54714] -[group_54715] -[group_54716] -[group_54717] -[group_54718] -[group_54719] -[group_54720] -[group_54721] -[group_54722] -[group_54723] -[group_54724] -[group_54725] -[group_54726] -[group_54727] -[group_54728] -[group_54729] -[group_54730] -[group_54731] -[group_54732] -[group_54733] -[group_54734] -[group_54735] -[group_54736] -[group_54737] -[group_54738] -[group_54739] -[group_54740] -[group_54741] -[group_54742] -[group_54743] -[group_54744] -[group_54745] -[group_54746] -[group_54747] -[group_54748] -[group_54749] -[group_54750] -[group_54751] -[group_54752] -[group_54753] -[group_54754] -[group_54755] -[group_54756] -[group_54757] -[group_54758] -[group_54759] -[group_54760] -[group_54761] -[group_54762] -[group_54763] -[group_54764] -[group_54765] -[group_54766] -[group_54767] -[group_54768] -[group_54769] -[group_54770] -[group_54771] -[group_54772] -[group_54773] -[group_54774] -[group_54775] -[group_54776] -[group_54777] -[group_54778] -[group_54779] -[group_54780] -[group_54781] -[group_54782] -[group_54783] -[group_54784] -[group_54785] -[group_54786] -[group_54787] -[group_54788] -[group_54789] -[group_54790] -[group_54791] -[group_54792] -[group_54793] -[group_54794] -[group_54795] -[group_54796] -[group_54797] -[group_54798] -[group_54799] -[group_54800] -[group_54801] -[group_54802] -[group_54803] -[group_54804] -[group_54805] -[group_54806] -[group_54807] -[group_54808] -[group_54809] -[group_54810] -[group_54811] -[group_54812] -[group_54813] -[group_54814] -[group_54815] -[group_54816] -[group_54817] -[group_54818] -[group_54819] -[group_54820] -[group_54821] -[group_54822] -[group_54823] -[group_54824] -[group_54825] -[group_54826] -[group_54827] -[group_54828] -[group_54829] -[group_54830] -[group_54831] -[group_54832] -[group_54833] -[group_54834] -[group_54835] -[group_54836] -[group_54837] -[group_54838] -[group_54839] -[group_54840] -[group_54841] -[group_54842] -[group_54843] -[group_54844] -[group_54845] -[group_54846] -[group_54847] -[group_54848] -[group_54849] -[group_54850] -[group_54851] -[group_54852] -[group_54853] -[group_54854] -[group_54855] -[group_54856] -[group_54857] -[group_54858] -[group_54859] -[group_54860] -[group_54861] -[group_54862] -[group_54863] -[group_54864] -[group_54865] -[group_54866] -[group_54867] -[group_54868] -[group_54869] -[group_54870] -[group_54871] -[group_54872] -[group_54873] -[group_54874] -[group_54875] -[group_54876] -[group_54877] -[group_54878] -[group_54879] -[group_54880] -[group_54881] -[group_54882] -[group_54883] -[group_54884] -[group_54885] -[group_54886] -[group_54887] -[group_54888] -[group_54889] -[group_54890] -[group_54891] -[group_54892] -[group_54893] -[group_54894] -[group_54895] -[group_54896] -[group_54897] -[group_54898] -[group_54899] -[group_54900] -[group_54901] -[group_54902] -[group_54903] -[group_54904] -[group_54905] -[group_54906] -[group_54907] -[group_54908] -[group_54909] -[group_54910] -[group_54911] -[group_54912] -[group_54913] -[group_54914] -[group_54915] -[group_54916] -[group_54917] -[group_54918] -[group_54919] -[group_54920] -[group_54921] -[group_54922] -[group_54923] -[group_54924] -[group_54925] -[group_54926] -[group_54927] -[group_54928] -[group_54929] -[group_54930] -[group_54931] -[group_54932] -[group_54933] -[group_54934] -[group_54935] -[group_54936] -[group_54937] -[group_54938] -[group_54939] -[group_54940] -[group_54941] -[group_54942] -[group_54943] -[group_54944] -[group_54945] -[group_54946] -[group_54947] -[group_54948] -[group_54949] -[group_54950] -[group_54951] -[group_54952] -[group_54953] -[group_54954] -[group_54955] -[group_54956] -[group_54957] -[group_54958] -[group_54959] -[group_54960] -[group_54961] -[group_54962] -[group_54963] -[group_54964] -[group_54965] -[group_54966] -[group_54967] -[group_54968] -[group_54969] -[group_54970] -[group_54971] -[group_54972] -[group_54973] -[group_54974] -[group_54975] -[group_54976] -[group_54977] -[group_54978] -[group_54979] -[group_54980] -[group_54981] -[group_54982] -[group_54983] -[group_54984] -[group_54985] -[group_54986] -[group_54987] -[group_54988] -[group_54989] -[group_54990] -[group_54991] -[group_54992] -[group_54993] -[group_54994] -[group_54995] -[group_54996] -[group_54997] -[group_54998] -[group_54999] -[group_55000] -[group_55001] -[group_55002] -[group_55003] -[group_55004] -[group_55005] -[group_55006] -[group_55007] -[group_55008] -[group_55009] -[group_55010] -[group_55011] -[group_55012] -[group_55013] -[group_55014] -[group_55015] -[group_55016] -[group_55017] -[group_55018] -[group_55019] -[group_55020] -[group_55021] -[group_55022] -[group_55023] -[group_55024] -[group_55025] -[group_55026] -[group_55027] -[group_55028] -[group_55029] -[group_55030] -[group_55031] -[group_55032] -[group_55033] -[group_55034] -[group_55035] -[group_55036] -[group_55037] -[group_55038] -[group_55039] -[group_55040] -[group_55041] -[group_55042] -[group_55043] -[group_55044] -[group_55045] -[group_55046] -[group_55047] -[group_55048] -[group_55049] -[group_55050] -[group_55051] -[group_55052] -[group_55053] -[group_55054] -[group_55055] -[group_55056] -[group_55057] -[group_55058] -[group_55059] -[group_55060] -[group_55061] -[group_55062] -[group_55063] -[group_55064] -[group_55065] -[group_55066] -[group_55067] -[group_55068] -[group_55069] -[group_55070] -[group_55071] -[group_55072] -[group_55073] -[group_55074] -[group_55075] -[group_55076] -[group_55077] -[group_55078] -[group_55079] -[group_55080] -[group_55081] -[group_55082] -[group_55083] -[group_55084] -[group_55085] -[group_55086] -[group_55087] -[group_55088] -[group_55089] -[group_55090] -[group_55091] -[group_55092] -[group_55093] -[group_55094] -[group_55095] -[group_55096] -[group_55097] -[group_55098] -[group_55099] -[group_55100] -[group_55101] -[group_55102] -[group_55103] -[group_55104] -[group_55105] -[group_55106] -[group_55107] -[group_55108] -[group_55109] -[group_55110] -[group_55111] -[group_55112] -[group_55113] -[group_55114] -[group_55115] -[group_55116] -[group_55117] -[group_55118] -[group_55119] -[group_55120] -[group_55121] -[group_55122] -[group_55123] -[group_55124] -[group_55125] -[group_55126] -[group_55127] -[group_55128] -[group_55129] -[group_55130] -[group_55131] -[group_55132] -[group_55133] -[group_55134] -[group_55135] -[group_55136] -[group_55137] -[group_55138] -[group_55139] -[group_55140] -[group_55141] -[group_55142] -[group_55143] -[group_55144] -[group_55145] -[group_55146] -[group_55147] -[group_55148] -[group_55149] -[group_55150] -[group_55151] -[group_55152] -[group_55153] -[group_55154] -[group_55155] -[group_55156] -[group_55157] -[group_55158] -[group_55159] -[group_55160] -[group_55161] -[group_55162] -[group_55163] -[group_55164] -[group_55165] -[group_55166] -[group_55167] -[group_55168] -[group_55169] -[group_55170] -[group_55171] -[group_55172] -[group_55173] -[group_55174] -[group_55175] -[group_55176] -[group_55177] -[group_55178] -[group_55179] -[group_55180] -[group_55181] -[group_55182] -[group_55183] -[group_55184] -[group_55185] -[group_55186] -[group_55187] -[group_55188] -[group_55189] -[group_55190] -[group_55191] -[group_55192] -[group_55193] -[group_55194] -[group_55195] -[group_55196] -[group_55197] -[group_55198] -[group_55199] -[group_55200] -[group_55201] -[group_55202] -[group_55203] -[group_55204] -[group_55205] -[group_55206] -[group_55207] -[group_55208] -[group_55209] -[group_55210] -[group_55211] -[group_55212] -[group_55213] -[group_55214] -[group_55215] -[group_55216] -[group_55217] -[group_55218] -[group_55219] -[group_55220] -[group_55221] -[group_55222] -[group_55223] -[group_55224] -[group_55225] -[group_55226] -[group_55227] -[group_55228] -[group_55229] -[group_55230] -[group_55231] -[group_55232] -[group_55233] -[group_55234] -[group_55235] -[group_55236] -[group_55237] -[group_55238] -[group_55239] -[group_55240] -[group_55241] -[group_55242] -[group_55243] -[group_55244] -[group_55245] -[group_55246] -[group_55247] -[group_55248] -[group_55249] -[group_55250] -[group_55251] -[group_55252] -[group_55253] -[group_55254] -[group_55255] -[group_55256] -[group_55257] -[group_55258] -[group_55259] -[group_55260] -[group_55261] -[group_55262] -[group_55263] -[group_55264] -[group_55265] -[group_55266] -[group_55267] -[group_55268] -[group_55269] -[group_55270] -[group_55271] -[group_55272] -[group_55273] -[group_55274] -[group_55275] -[group_55276] -[group_55277] -[group_55278] -[group_55279] -[group_55280] -[group_55281] -[group_55282] -[group_55283] -[group_55284] -[group_55285] -[group_55286] -[group_55287] -[group_55288] -[group_55289] -[group_55290] -[group_55291] -[group_55292] -[group_55293] -[group_55294] -[group_55295] -[group_55296] -[group_55297] -[group_55298] -[group_55299] -[group_55300] -[group_55301] -[group_55302] -[group_55303] -[group_55304] -[group_55305] -[group_55306] -[group_55307] -[group_55308] -[group_55309] -[group_55310] -[group_55311] -[group_55312] -[group_55313] -[group_55314] -[group_55315] -[group_55316] -[group_55317] -[group_55318] -[group_55319] -[group_55320] -[group_55321] -[group_55322] -[group_55323] -[group_55324] -[group_55325] -[group_55326] -[group_55327] -[group_55328] -[group_55329] -[group_55330] -[group_55331] -[group_55332] -[group_55333] -[group_55334] -[group_55335] -[group_55336] -[group_55337] -[group_55338] -[group_55339] -[group_55340] -[group_55341] -[group_55342] -[group_55343] -[group_55344] -[group_55345] -[group_55346] -[group_55347] -[group_55348] -[group_55349] -[group_55350] -[group_55351] -[group_55352] -[group_55353] -[group_55354] -[group_55355] -[group_55356] -[group_55357] -[group_55358] -[group_55359] -[group_55360] -[group_55361] -[group_55362] -[group_55363] -[group_55364] -[group_55365] -[group_55366] -[group_55367] -[group_55368] -[group_55369] -[group_55370] -[group_55371] -[group_55372] -[group_55373] -[group_55374] -[group_55375] -[group_55376] -[group_55377] -[group_55378] -[group_55379] -[group_55380] -[group_55381] -[group_55382] -[group_55383] -[group_55384] -[group_55385] -[group_55386] -[group_55387] -[group_55388] -[group_55389] -[group_55390] -[group_55391] -[group_55392] -[group_55393] -[group_55394] -[group_55395] -[group_55396] -[group_55397] -[group_55398] -[group_55399] -[group_55400] -[group_55401] -[group_55402] -[group_55403] -[group_55404] -[group_55405] -[group_55406] -[group_55407] -[group_55408] -[group_55409] -[group_55410] -[group_55411] -[group_55412] -[group_55413] -[group_55414] -[group_55415] -[group_55416] -[group_55417] -[group_55418] -[group_55419] -[group_55420] -[group_55421] -[group_55422] -[group_55423] -[group_55424] -[group_55425] -[group_55426] -[group_55427] -[group_55428] -[group_55429] -[group_55430] -[group_55431] -[group_55432] -[group_55433] -[group_55434] -[group_55435] -[group_55436] -[group_55437] -[group_55438] -[group_55439] -[group_55440] -[group_55441] -[group_55442] -[group_55443] -[group_55444] -[group_55445] -[group_55446] -[group_55447] -[group_55448] -[group_55449] -[group_55450] -[group_55451] -[group_55452] -[group_55453] -[group_55454] -[group_55455] -[group_55456] -[group_55457] -[group_55458] -[group_55459] -[group_55460] -[group_55461] -[group_55462] -[group_55463] -[group_55464] -[group_55465] -[group_55466] -[group_55467] -[group_55468] -[group_55469] -[group_55470] -[group_55471] -[group_55472] -[group_55473] -[group_55474] -[group_55475] -[group_55476] -[group_55477] -[group_55478] -[group_55479] -[group_55480] -[group_55481] -[group_55482] -[group_55483] -[group_55484] -[group_55485] -[group_55486] -[group_55487] -[group_55488] -[group_55489] -[group_55490] -[group_55491] -[group_55492] -[group_55493] -[group_55494] -[group_55495] -[group_55496] -[group_55497] -[group_55498] -[group_55499] -[group_55500] -[group_55501] -[group_55502] -[group_55503] -[group_55504] -[group_55505] -[group_55506] -[group_55507] -[group_55508] -[group_55509] -[group_55510] -[group_55511] -[group_55512] -[group_55513] -[group_55514] -[group_55515] -[group_55516] -[group_55517] -[group_55518] -[group_55519] -[group_55520] -[group_55521] -[group_55522] -[group_55523] -[group_55524] -[group_55525] -[group_55526] -[group_55527] -[group_55528] -[group_55529] -[group_55530] -[group_55531] -[group_55532] -[group_55533] -[group_55534] -[group_55535] -[group_55536] -[group_55537] -[group_55538] -[group_55539] -[group_55540] -[group_55541] -[group_55542] -[group_55543] -[group_55544] -[group_55545] -[group_55546] -[group_55547] -[group_55548] -[group_55549] -[group_55550] -[group_55551] -[group_55552] -[group_55553] -[group_55554] -[group_55555] -[group_55556] -[group_55557] -[group_55558] -[group_55559] -[group_55560] -[group_55561] -[group_55562] -[group_55563] -[group_55564] -[group_55565] -[group_55566] -[group_55567] -[group_55568] -[group_55569] -[group_55570] -[group_55571] -[group_55572] -[group_55573] -[group_55574] -[group_55575] -[group_55576] -[group_55577] -[group_55578] -[group_55579] -[group_55580] -[group_55581] -[group_55582] -[group_55583] -[group_55584] -[group_55585] -[group_55586] -[group_55587] -[group_55588] -[group_55589] -[group_55590] -[group_55591] -[group_55592] -[group_55593] -[group_55594] -[group_55595] -[group_55596] -[group_55597] -[group_55598] -[group_55599] -[group_55600] -[group_55601] -[group_55602] -[group_55603] -[group_55604] -[group_55605] -[group_55606] -[group_55607] -[group_55608] -[group_55609] -[group_55610] -[group_55611] -[group_55612] -[group_55613] -[group_55614] -[group_55615] -[group_55616] -[group_55617] -[group_55618] -[group_55619] -[group_55620] -[group_55621] -[group_55622] -[group_55623] -[group_55624] -[group_55625] -[group_55626] -[group_55627] -[group_55628] -[group_55629] -[group_55630] -[group_55631] -[group_55632] -[group_55633] -[group_55634] -[group_55635] -[group_55636] -[group_55637] -[group_55638] -[group_55639] -[group_55640] -[group_55641] -[group_55642] -[group_55643] -[group_55644] -[group_55645] -[group_55646] -[group_55647] -[group_55648] -[group_55649] -[group_55650] -[group_55651] -[group_55652] -[group_55653] -[group_55654] -[group_55655] -[group_55656] -[group_55657] -[group_55658] -[group_55659] -[group_55660] -[group_55661] -[group_55662] -[group_55663] -[group_55664] -[group_55665] -[group_55666] -[group_55667] -[group_55668] -[group_55669] -[group_55670] -[group_55671] -[group_55672] -[group_55673] -[group_55674] -[group_55675] -[group_55676] -[group_55677] -[group_55678] -[group_55679] -[group_55680] -[group_55681] -[group_55682] -[group_55683] -[group_55684] -[group_55685] -[group_55686] -[group_55687] -[group_55688] -[group_55689] -[group_55690] -[group_55691] -[group_55692] -[group_55693] -[group_55694] -[group_55695] -[group_55696] -[group_55697] -[group_55698] -[group_55699] -[group_55700] -[group_55701] -[group_55702] -[group_55703] -[group_55704] -[group_55705] -[group_55706] -[group_55707] -[group_55708] -[group_55709] -[group_55710] -[group_55711] -[group_55712] -[group_55713] -[group_55714] -[group_55715] -[group_55716] -[group_55717] -[group_55718] -[group_55719] -[group_55720] -[group_55721] -[group_55722] -[group_55723] -[group_55724] -[group_55725] -[group_55726] -[group_55727] -[group_55728] -[group_55729] -[group_55730] -[group_55731] -[group_55732] -[group_55733] -[group_55734] -[group_55735] -[group_55736] -[group_55737] -[group_55738] -[group_55739] -[group_55740] -[group_55741] -[group_55742] -[group_55743] -[group_55744] -[group_55745] -[group_55746] -[group_55747] -[group_55748] -[group_55749] -[group_55750] -[group_55751] -[group_55752] -[group_55753] -[group_55754] -[group_55755] -[group_55756] -[group_55757] -[group_55758] -[group_55759] -[group_55760] -[group_55761] -[group_55762] -[group_55763] -[group_55764] -[group_55765] -[group_55766] -[group_55767] -[group_55768] -[group_55769] -[group_55770] -[group_55771] -[group_55772] -[group_55773] -[group_55774] -[group_55775] -[group_55776] -[group_55777] -[group_55778] -[group_55779] -[group_55780] -[group_55781] -[group_55782] -[group_55783] -[group_55784] -[group_55785] -[group_55786] -[group_55787] -[group_55788] -[group_55789] -[group_55790] -[group_55791] -[group_55792] -[group_55793] -[group_55794] -[group_55795] -[group_55796] -[group_55797] -[group_55798] -[group_55799] -[group_55800] -[group_55801] -[group_55802] -[group_55803] -[group_55804] -[group_55805] -[group_55806] -[group_55807] -[group_55808] -[group_55809] -[group_55810] -[group_55811] -[group_55812] -[group_55813] -[group_55814] -[group_55815] -[group_55816] -[group_55817] -[group_55818] -[group_55819] -[group_55820] -[group_55821] -[group_55822] -[group_55823] -[group_55824] -[group_55825] -[group_55826] -[group_55827] -[group_55828] -[group_55829] -[group_55830] -[group_55831] -[group_55832] -[group_55833] -[group_55834] -[group_55835] -[group_55836] -[group_55837] -[group_55838] -[group_55839] -[group_55840] -[group_55841] -[group_55842] -[group_55843] -[group_55844] -[group_55845] -[group_55846] -[group_55847] -[group_55848] -[group_55849] -[group_55850] -[group_55851] -[group_55852] -[group_55853] -[group_55854] -[group_55855] -[group_55856] -[group_55857] -[group_55858] -[group_55859] -[group_55860] -[group_55861] -[group_55862] -[group_55863] -[group_55864] -[group_55865] -[group_55866] -[group_55867] -[group_55868] -[group_55869] -[group_55870] -[group_55871] -[group_55872] -[group_55873] -[group_55874] -[group_55875] -[group_55876] -[group_55877] -[group_55878] -[group_55879] -[group_55880] -[group_55881] -[group_55882] -[group_55883] -[group_55884] -[group_55885] -[group_55886] -[group_55887] -[group_55888] -[group_55889] -[group_55890] -[group_55891] -[group_55892] -[group_55893] -[group_55894] -[group_55895] -[group_55896] -[group_55897] -[group_55898] -[group_55899] -[group_55900] -[group_55901] -[group_55902] -[group_55903] -[group_55904] -[group_55905] -[group_55906] -[group_55907] -[group_55908] -[group_55909] -[group_55910] -[group_55911] -[group_55912] -[group_55913] -[group_55914] -[group_55915] -[group_55916] -[group_55917] -[group_55918] -[group_55919] -[group_55920] -[group_55921] -[group_55922] -[group_55923] -[group_55924] -[group_55925] -[group_55926] -[group_55927] -[group_55928] -[group_55929] -[group_55930] -[group_55931] -[group_55932] -[group_55933] -[group_55934] -[group_55935] -[group_55936] -[group_55937] -[group_55938] -[group_55939] -[group_55940] -[group_55941] -[group_55942] -[group_55943] -[group_55944] -[group_55945] -[group_55946] -[group_55947] -[group_55948] -[group_55949] -[group_55950] -[group_55951] -[group_55952] -[group_55953] -[group_55954] -[group_55955] -[group_55956] -[group_55957] -[group_55958] -[group_55959] -[group_55960] -[group_55961] -[group_55962] -[group_55963] -[group_55964] -[group_55965] -[group_55966] -[group_55967] -[group_55968] -[group_55969] -[group_55970] -[group_55971] -[group_55972] -[group_55973] -[group_55974] -[group_55975] -[group_55976] -[group_55977] -[group_55978] -[group_55979] -[group_55980] -[group_55981] -[group_55982] -[group_55983] -[group_55984] -[group_55985] -[group_55986] -[group_55987] -[group_55988] -[group_55989] -[group_55990] -[group_55991] -[group_55992] -[group_55993] -[group_55994] -[group_55995] -[group_55996] -[group_55997] -[group_55998] -[group_55999] -[group_56000] -[group_56001] -[group_56002] -[group_56003] -[group_56004] -[group_56005] -[group_56006] -[group_56007] -[group_56008] -[group_56009] -[group_56010] -[group_56011] -[group_56012] -[group_56013] -[group_56014] -[group_56015] -[group_56016] -[group_56017] -[group_56018] -[group_56019] -[group_56020] -[group_56021] -[group_56022] -[group_56023] -[group_56024] -[group_56025] -[group_56026] -[group_56027] -[group_56028] -[group_56029] -[group_56030] -[group_56031] -[group_56032] -[group_56033] -[group_56034] -[group_56035] -[group_56036] -[group_56037] -[group_56038] -[group_56039] -[group_56040] -[group_56041] -[group_56042] -[group_56043] -[group_56044] -[group_56045] -[group_56046] -[group_56047] -[group_56048] -[group_56049] -[group_56050] -[group_56051] -[group_56052] -[group_56053] -[group_56054] -[group_56055] -[group_56056] -[group_56057] -[group_56058] -[group_56059] -[group_56060] -[group_56061] -[group_56062] -[group_56063] -[group_56064] -[group_56065] -[group_56066] -[group_56067] -[group_56068] -[group_56069] -[group_56070] -[group_56071] -[group_56072] -[group_56073] -[group_56074] -[group_56075] -[group_56076] -[group_56077] -[group_56078] -[group_56079] -[group_56080] -[group_56081] -[group_56082] -[group_56083] -[group_56084] -[group_56085] -[group_56086] -[group_56087] -[group_56088] -[group_56089] -[group_56090] -[group_56091] -[group_56092] -[group_56093] -[group_56094] -[group_56095] -[group_56096] -[group_56097] -[group_56098] -[group_56099] -[group_56100] -[group_56101] -[group_56102] -[group_56103] -[group_56104] -[group_56105] -[group_56106] -[group_56107] -[group_56108] -[group_56109] -[group_56110] -[group_56111] -[group_56112] -[group_56113] -[group_56114] -[group_56115] -[group_56116] -[group_56117] -[group_56118] -[group_56119] -[group_56120] -[group_56121] -[group_56122] -[group_56123] -[group_56124] -[group_56125] -[group_56126] -[group_56127] -[group_56128] -[group_56129] -[group_56130] -[group_56131] -[group_56132] -[group_56133] -[group_56134] -[group_56135] -[group_56136] -[group_56137] -[group_56138] -[group_56139] -[group_56140] -[group_56141] -[group_56142] -[group_56143] -[group_56144] -[group_56145] -[group_56146] -[group_56147] -[group_56148] -[group_56149] -[group_56150] -[group_56151] -[group_56152] -[group_56153] -[group_56154] -[group_56155] -[group_56156] -[group_56157] -[group_56158] -[group_56159] -[group_56160] -[group_56161] -[group_56162] -[group_56163] -[group_56164] -[group_56165] -[group_56166] -[group_56167] -[group_56168] -[group_56169] -[group_56170] -[group_56171] -[group_56172] -[group_56173] -[group_56174] -[group_56175] -[group_56176] -[group_56177] -[group_56178] -[group_56179] -[group_56180] -[group_56181] -[group_56182] -[group_56183] -[group_56184] -[group_56185] -[group_56186] -[group_56187] -[group_56188] -[group_56189] -[group_56190] -[group_56191] -[group_56192] -[group_56193] -[group_56194] -[group_56195] -[group_56196] -[group_56197] -[group_56198] -[group_56199] -[group_56200] -[group_56201] -[group_56202] -[group_56203] -[group_56204] -[group_56205] -[group_56206] -[group_56207] -[group_56208] -[group_56209] -[group_56210] -[group_56211] -[group_56212] -[group_56213] -[group_56214] -[group_56215] -[group_56216] -[group_56217] -[group_56218] -[group_56219] -[group_56220] -[group_56221] -[group_56222] -[group_56223] -[group_56224] -[group_56225] -[group_56226] -[group_56227] -[group_56228] -[group_56229] -[group_56230] -[group_56231] -[group_56232] -[group_56233] -[group_56234] -[group_56235] -[group_56236] -[group_56237] -[group_56238] -[group_56239] -[group_56240] -[group_56241] -[group_56242] -[group_56243] -[group_56244] -[group_56245] -[group_56246] -[group_56247] -[group_56248] -[group_56249] -[group_56250] -[group_56251] -[group_56252] -[group_56253] -[group_56254] -[group_56255] -[group_56256] -[group_56257] -[group_56258] -[group_56259] -[group_56260] -[group_56261] -[group_56262] -[group_56263] -[group_56264] -[group_56265] -[group_56266] -[group_56267] -[group_56268] -[group_56269] -[group_56270] -[group_56271] -[group_56272] -[group_56273] -[group_56274] -[group_56275] -[group_56276] -[group_56277] -[group_56278] -[group_56279] -[group_56280] -[group_56281] -[group_56282] -[group_56283] -[group_56284] -[group_56285] -[group_56286] -[group_56287] -[group_56288] -[group_56289] -[group_56290] -[group_56291] -[group_56292] -[group_56293] -[group_56294] -[group_56295] -[group_56296] -[group_56297] -[group_56298] -[group_56299] -[group_56300] -[group_56301] -[group_56302] -[group_56303] -[group_56304] -[group_56305] -[group_56306] -[group_56307] -[group_56308] -[group_56309] -[group_56310] -[group_56311] -[group_56312] -[group_56313] -[group_56314] -[group_56315] -[group_56316] -[group_56317] -[group_56318] -[group_56319] -[group_56320] -[group_56321] -[group_56322] -[group_56323] -[group_56324] -[group_56325] -[group_56326] -[group_56327] -[group_56328] -[group_56329] -[group_56330] -[group_56331] -[group_56332] -[group_56333] -[group_56334] -[group_56335] -[group_56336] -[group_56337] -[group_56338] -[group_56339] -[group_56340] -[group_56341] -[group_56342] -[group_56343] -[group_56344] -[group_56345] -[group_56346] -[group_56347] -[group_56348] -[group_56349] -[group_56350] -[group_56351] -[group_56352] -[group_56353] -[group_56354] -[group_56355] -[group_56356] -[group_56357] -[group_56358] -[group_56359] -[group_56360] -[group_56361] -[group_56362] -[group_56363] -[group_56364] -[group_56365] -[group_56366] -[group_56367] -[group_56368] -[group_56369] -[group_56370] -[group_56371] -[group_56372] -[group_56373] -[group_56374] -[group_56375] -[group_56376] -[group_56377] -[group_56378] -[group_56379] -[group_56380] -[group_56381] -[group_56382] -[group_56383] -[group_56384] -[group_56385] -[group_56386] -[group_56387] -[group_56388] -[group_56389] -[group_56390] -[group_56391] -[group_56392] -[group_56393] -[group_56394] -[group_56395] -[group_56396] -[group_56397] -[group_56398] -[group_56399] -[group_56400] -[group_56401] -[group_56402] -[group_56403] -[group_56404] -[group_56405] -[group_56406] -[group_56407] -[group_56408] -[group_56409] -[group_56410] -[group_56411] -[group_56412] -[group_56413] -[group_56414] -[group_56415] -[group_56416] -[group_56417] -[group_56418] -[group_56419] -[group_56420] -[group_56421] -[group_56422] -[group_56423] -[group_56424] -[group_56425] -[group_56426] -[group_56427] -[group_56428] -[group_56429] -[group_56430] -[group_56431] -[group_56432] -[group_56433] -[group_56434] -[group_56435] -[group_56436] -[group_56437] -[group_56438] -[group_56439] -[group_56440] -[group_56441] -[group_56442] -[group_56443] -[group_56444] -[group_56445] -[group_56446] -[group_56447] -[group_56448] -[group_56449] -[group_56450] -[group_56451] -[group_56452] -[group_56453] -[group_56454] -[group_56455] -[group_56456] -[group_56457] -[group_56458] -[group_56459] -[group_56460] -[group_56461] -[group_56462] -[group_56463] -[group_56464] -[group_56465] -[group_56466] -[group_56467] -[group_56468] -[group_56469] -[group_56470] -[group_56471] -[group_56472] -[group_56473] -[group_56474] -[group_56475] -[group_56476] -[group_56477] -[group_56478] -[group_56479] -[group_56480] -[group_56481] -[group_56482] -[group_56483] -[group_56484] -[group_56485] -[group_56486] -[group_56487] -[group_56488] -[group_56489] -[group_56490] -[group_56491] -[group_56492] -[group_56493] -[group_56494] -[group_56495] -[group_56496] -[group_56497] -[group_56498] -[group_56499] -[group_56500] -[group_56501] -[group_56502] -[group_56503] -[group_56504] -[group_56505] -[group_56506] -[group_56507] -[group_56508] -[group_56509] -[group_56510] -[group_56511] -[group_56512] -[group_56513] -[group_56514] -[group_56515] -[group_56516] -[group_56517] -[group_56518] -[group_56519] -[group_56520] -[group_56521] -[group_56522] -[group_56523] -[group_56524] -[group_56525] -[group_56526] -[group_56527] -[group_56528] -[group_56529] -[group_56530] -[group_56531] -[group_56532] -[group_56533] -[group_56534] -[group_56535] -[group_56536] -[group_56537] -[group_56538] -[group_56539] -[group_56540] -[group_56541] -[group_56542] -[group_56543] -[group_56544] -[group_56545] -[group_56546] -[group_56547] -[group_56548] -[group_56549] -[group_56550] -[group_56551] -[group_56552] -[group_56553] -[group_56554] -[group_56555] -[group_56556] -[group_56557] -[group_56558] -[group_56559] -[group_56560] -[group_56561] -[group_56562] -[group_56563] -[group_56564] -[group_56565] -[group_56566] -[group_56567] -[group_56568] -[group_56569] -[group_56570] -[group_56571] -[group_56572] -[group_56573] -[group_56574] -[group_56575] -[group_56576] -[group_56577] -[group_56578] -[group_56579] -[group_56580] -[group_56581] -[group_56582] -[group_56583] -[group_56584] -[group_56585] -[group_56586] -[group_56587] -[group_56588] -[group_56589] -[group_56590] -[group_56591] -[group_56592] -[group_56593] -[group_56594] -[group_56595] -[group_56596] -[group_56597] -[group_56598] -[group_56599] -[group_56600] -[group_56601] -[group_56602] -[group_56603] -[group_56604] -[group_56605] -[group_56606] -[group_56607] -[group_56608] -[group_56609] -[group_56610] -[group_56611] -[group_56612] -[group_56613] -[group_56614] -[group_56615] -[group_56616] -[group_56617] -[group_56618] -[group_56619] -[group_56620] -[group_56621] -[group_56622] -[group_56623] -[group_56624] -[group_56625] -[group_56626] -[group_56627] -[group_56628] -[group_56629] -[group_56630] -[group_56631] -[group_56632] -[group_56633] -[group_56634] -[group_56635] -[group_56636] -[group_56637] -[group_56638] -[group_56639] -[group_56640] -[group_56641] -[group_56642] -[group_56643] -[group_56644] -[group_56645] -[group_56646] -[group_56647] -[group_56648] -[group_56649] -[group_56650] -[group_56651] -[group_56652] -[group_56653] -[group_56654] -[group_56655] -[group_56656] -[group_56657] -[group_56658] -[group_56659] -[group_56660] -[group_56661] -[group_56662] -[group_56663] -[group_56664] -[group_56665] -[group_56666] -[group_56667] -[group_56668] -[group_56669] -[group_56670] -[group_56671] -[group_56672] -[group_56673] -[group_56674] -[group_56675] -[group_56676] -[group_56677] -[group_56678] -[group_56679] -[group_56680] -[group_56681] -[group_56682] -[group_56683] -[group_56684] -[group_56685] -[group_56686] -[group_56687] -[group_56688] -[group_56689] -[group_56690] -[group_56691] -[group_56692] -[group_56693] -[group_56694] -[group_56695] -[group_56696] -[group_56697] -[group_56698] -[group_56699] -[group_56700] -[group_56701] -[group_56702] -[group_56703] -[group_56704] -[group_56705] -[group_56706] -[group_56707] -[group_56708] -[group_56709] -[group_56710] -[group_56711] -[group_56712] -[group_56713] -[group_56714] -[group_56715] -[group_56716] -[group_56717] -[group_56718] -[group_56719] -[group_56720] -[group_56721] -[group_56722] -[group_56723] -[group_56724] -[group_56725] -[group_56726] -[group_56727] -[group_56728] -[group_56729] -[group_56730] -[group_56731] -[group_56732] -[group_56733] -[group_56734] -[group_56735] -[group_56736] -[group_56737] -[group_56738] -[group_56739] -[group_56740] -[group_56741] -[group_56742] -[group_56743] -[group_56744] -[group_56745] -[group_56746] -[group_56747] -[group_56748] -[group_56749] -[group_56750] -[group_56751] -[group_56752] -[group_56753] -[group_56754] -[group_56755] -[group_56756] -[group_56757] -[group_56758] -[group_56759] -[group_56760] -[group_56761] -[group_56762] -[group_56763] -[group_56764] -[group_56765] -[group_56766] -[group_56767] -[group_56768] -[group_56769] -[group_56770] -[group_56771] -[group_56772] -[group_56773] -[group_56774] -[group_56775] -[group_56776] -[group_56777] -[group_56778] -[group_56779] -[group_56780] -[group_56781] -[group_56782] -[group_56783] -[group_56784] -[group_56785] -[group_56786] -[group_56787] -[group_56788] -[group_56789] -[group_56790] -[group_56791] -[group_56792] -[group_56793] -[group_56794] -[group_56795] -[group_56796] -[group_56797] -[group_56798] -[group_56799] -[group_56800] -[group_56801] -[group_56802] -[group_56803] -[group_56804] -[group_56805] -[group_56806] -[group_56807] -[group_56808] -[group_56809] -[group_56810] -[group_56811] -[group_56812] -[group_56813] -[group_56814] -[group_56815] -[group_56816] -[group_56817] -[group_56818] -[group_56819] -[group_56820] -[group_56821] -[group_56822] -[group_56823] -[group_56824] -[group_56825] -[group_56826] -[group_56827] -[group_56828] -[group_56829] -[group_56830] -[group_56831] -[group_56832] -[group_56833] -[group_56834] -[group_56835] -[group_56836] -[group_56837] -[group_56838] -[group_56839] -[group_56840] -[group_56841] -[group_56842] -[group_56843] -[group_56844] -[group_56845] -[group_56846] -[group_56847] -[group_56848] -[group_56849] -[group_56850] -[group_56851] -[group_56852] -[group_56853] -[group_56854] -[group_56855] -[group_56856] -[group_56857] -[group_56858] -[group_56859] -[group_56860] -[group_56861] -[group_56862] -[group_56863] -[group_56864] -[group_56865] -[group_56866] -[group_56867] -[group_56868] -[group_56869] -[group_56870] -[group_56871] -[group_56872] -[group_56873] -[group_56874] -[group_56875] -[group_56876] -[group_56877] -[group_56878] -[group_56879] -[group_56880] -[group_56881] -[group_56882] -[group_56883] -[group_56884] -[group_56885] -[group_56886] -[group_56887] -[group_56888] -[group_56889] -[group_56890] -[group_56891] -[group_56892] -[group_56893] -[group_56894] -[group_56895] -[group_56896] -[group_56897] -[group_56898] -[group_56899] -[group_56900] -[group_56901] -[group_56902] -[group_56903] -[group_56904] -[group_56905] -[group_56906] -[group_56907] -[group_56908] -[group_56909] -[group_56910] -[group_56911] -[group_56912] -[group_56913] -[group_56914] -[group_56915] -[group_56916] -[group_56917] -[group_56918] -[group_56919] -[group_56920] -[group_56921] -[group_56922] -[group_56923] -[group_56924] -[group_56925] -[group_56926] -[group_56927] -[group_56928] -[group_56929] -[group_56930] -[group_56931] -[group_56932] -[group_56933] -[group_56934] -[group_56935] -[group_56936] -[group_56937] -[group_56938] -[group_56939] -[group_56940] -[group_56941] -[group_56942] -[group_56943] -[group_56944] -[group_56945] -[group_56946] -[group_56947] -[group_56948] -[group_56949] -[group_56950] -[group_56951] -[group_56952] -[group_56953] -[group_56954] -[group_56955] -[group_56956] -[group_56957] -[group_56958] -[group_56959] -[group_56960] -[group_56961] -[group_56962] -[group_56963] -[group_56964] -[group_56965] -[group_56966] -[group_56967] -[group_56968] -[group_56969] -[group_56970] -[group_56971] -[group_56972] -[group_56973] -[group_56974] -[group_56975] -[group_56976] -[group_56977] -[group_56978] -[group_56979] -[group_56980] -[group_56981] -[group_56982] -[group_56983] -[group_56984] -[group_56985] -[group_56986] -[group_56987] -[group_56988] -[group_56989] -[group_56990] -[group_56991] -[group_56992] -[group_56993] -[group_56994] -[group_56995] -[group_56996] -[group_56997] -[group_56998] -[group_56999] -[group_57000] -[group_57001] -[group_57002] -[group_57003] -[group_57004] -[group_57005] -[group_57006] -[group_57007] -[group_57008] -[group_57009] -[group_57010] -[group_57011] -[group_57012] -[group_57013] -[group_57014] -[group_57015] -[group_57016] -[group_57017] -[group_57018] -[group_57019] -[group_57020] -[group_57021] -[group_57022] -[group_57023] -[group_57024] -[group_57025] -[group_57026] -[group_57027] -[group_57028] -[group_57029] -[group_57030] -[group_57031] -[group_57032] -[group_57033] -[group_57034] -[group_57035] -[group_57036] -[group_57037] -[group_57038] -[group_57039] -[group_57040] -[group_57041] -[group_57042] -[group_57043] -[group_57044] -[group_57045] -[group_57046] -[group_57047] -[group_57048] -[group_57049] -[group_57050] -[group_57051] -[group_57052] -[group_57053] -[group_57054] -[group_57055] -[group_57056] -[group_57057] -[group_57058] -[group_57059] -[group_57060] -[group_57061] -[group_57062] -[group_57063] -[group_57064] -[group_57065] -[group_57066] -[group_57067] -[group_57068] -[group_57069] -[group_57070] -[group_57071] -[group_57072] -[group_57073] -[group_57074] -[group_57075] -[group_57076] -[group_57077] -[group_57078] -[group_57079] -[group_57080] -[group_57081] -[group_57082] -[group_57083] -[group_57084] -[group_57085] -[group_57086] -[group_57087] -[group_57088] -[group_57089] -[group_57090] -[group_57091] -[group_57092] -[group_57093] -[group_57094] -[group_57095] -[group_57096] -[group_57097] -[group_57098] -[group_57099] -[group_57100] -[group_57101] -[group_57102] -[group_57103] -[group_57104] -[group_57105] -[group_57106] -[group_57107] -[group_57108] -[group_57109] -[group_57110] -[group_57111] -[group_57112] -[group_57113] -[group_57114] -[group_57115] -[group_57116] -[group_57117] -[group_57118] -[group_57119] -[group_57120] -[group_57121] -[group_57122] -[group_57123] -[group_57124] -[group_57125] -[group_57126] -[group_57127] -[group_57128] -[group_57129] -[group_57130] -[group_57131] -[group_57132] -[group_57133] -[group_57134] -[group_57135] -[group_57136] -[group_57137] -[group_57138] -[group_57139] -[group_57140] -[group_57141] -[group_57142] -[group_57143] -[group_57144] -[group_57145] -[group_57146] -[group_57147] -[group_57148] -[group_57149] -[group_57150] -[group_57151] -[group_57152] -[group_57153] -[group_57154] -[group_57155] -[group_57156] -[group_57157] -[group_57158] -[group_57159] -[group_57160] -[group_57161] -[group_57162] -[group_57163] -[group_57164] -[group_57165] -[group_57166] -[group_57167] -[group_57168] -[group_57169] -[group_57170] -[group_57171] -[group_57172] -[group_57173] -[group_57174] -[group_57175] -[group_57176] -[group_57177] -[group_57178] -[group_57179] -[group_57180] -[group_57181] -[group_57182] -[group_57183] -[group_57184] -[group_57185] -[group_57186] -[group_57187] -[group_57188] -[group_57189] -[group_57190] -[group_57191] -[group_57192] -[group_57193] -[group_57194] -[group_57195] -[group_57196] -[group_57197] -[group_57198] -[group_57199] -[group_57200] -[group_57201] -[group_57202] -[group_57203] -[group_57204] -[group_57205] -[group_57206] -[group_57207] -[group_57208] -[group_57209] -[group_57210] -[group_57211] -[group_57212] -[group_57213] -[group_57214] -[group_57215] -[group_57216] -[group_57217] -[group_57218] -[group_57219] -[group_57220] -[group_57221] -[group_57222] -[group_57223] -[group_57224] -[group_57225] -[group_57226] -[group_57227] -[group_57228] -[group_57229] -[group_57230] -[group_57231] -[group_57232] -[group_57233] -[group_57234] -[group_57235] -[group_57236] -[group_57237] -[group_57238] -[group_57239] -[group_57240] -[group_57241] -[group_57242] -[group_57243] -[group_57244] -[group_57245] -[group_57246] -[group_57247] -[group_57248] -[group_57249] -[group_57250] -[group_57251] -[group_57252] -[group_57253] -[group_57254] -[group_57255] -[group_57256] -[group_57257] -[group_57258] -[group_57259] -[group_57260] -[group_57261] -[group_57262] -[group_57263] -[group_57264] -[group_57265] -[group_57266] -[group_57267] -[group_57268] -[group_57269] -[group_57270] -[group_57271] -[group_57272] -[group_57273] -[group_57274] -[group_57275] -[group_57276] -[group_57277] -[group_57278] -[group_57279] -[group_57280] -[group_57281] -[group_57282] -[group_57283] -[group_57284] -[group_57285] -[group_57286] -[group_57287] -[group_57288] -[group_57289] -[group_57290] -[group_57291] -[group_57292] -[group_57293] -[group_57294] -[group_57295] -[group_57296] -[group_57297] -[group_57298] -[group_57299] -[group_57300] -[group_57301] -[group_57302] -[group_57303] -[group_57304] -[group_57305] -[group_57306] -[group_57307] -[group_57308] -[group_57309] -[group_57310] -[group_57311] -[group_57312] -[group_57313] -[group_57314] -[group_57315] -[group_57316] -[group_57317] -[group_57318] -[group_57319] -[group_57320] -[group_57321] -[group_57322] -[group_57323] -[group_57324] -[group_57325] -[group_57326] -[group_57327] -[group_57328] -[group_57329] -[group_57330] -[group_57331] -[group_57332] -[group_57333] -[group_57334] -[group_57335] -[group_57336] -[group_57337] -[group_57338] -[group_57339] -[group_57340] -[group_57341] -[group_57342] -[group_57343] -[group_57344] -[group_57345] -[group_57346] -[group_57347] -[group_57348] -[group_57349] -[group_57350] -[group_57351] -[group_57352] -[group_57353] -[group_57354] -[group_57355] -[group_57356] -[group_57357] -[group_57358] -[group_57359] -[group_57360] -[group_57361] -[group_57362] -[group_57363] -[group_57364] -[group_57365] -[group_57366] -[group_57367] -[group_57368] -[group_57369] -[group_57370] -[group_57371] -[group_57372] -[group_57373] -[group_57374] -[group_57375] -[group_57376] -[group_57377] -[group_57378] -[group_57379] -[group_57380] -[group_57381] -[group_57382] -[group_57383] -[group_57384] -[group_57385] -[group_57386] -[group_57387] -[group_57388] -[group_57389] -[group_57390] -[group_57391] -[group_57392] -[group_57393] -[group_57394] -[group_57395] -[group_57396] -[group_57397] -[group_57398] -[group_57399] -[group_57400] -[group_57401] -[group_57402] -[group_57403] -[group_57404] -[group_57405] -[group_57406] -[group_57407] -[group_57408] -[group_57409] -[group_57410] -[group_57411] -[group_57412] -[group_57413] -[group_57414] -[group_57415] -[group_57416] -[group_57417] -[group_57418] -[group_57419] -[group_57420] -[group_57421] -[group_57422] -[group_57423] -[group_57424] -[group_57425] -[group_57426] -[group_57427] -[group_57428] -[group_57429] -[group_57430] -[group_57431] -[group_57432] -[group_57433] -[group_57434] -[group_57435] -[group_57436] -[group_57437] -[group_57438] -[group_57439] -[group_57440] -[group_57441] -[group_57442] -[group_57443] -[group_57444] -[group_57445] -[group_57446] -[group_57447] -[group_57448] -[group_57449] -[group_57450] -[group_57451] -[group_57452] -[group_57453] -[group_57454] -[group_57455] -[group_57456] -[group_57457] -[group_57458] -[group_57459] -[group_57460] -[group_57461] -[group_57462] -[group_57463] -[group_57464] -[group_57465] -[group_57466] -[group_57467] -[group_57468] -[group_57469] -[group_57470] -[group_57471] -[group_57472] -[group_57473] -[group_57474] -[group_57475] -[group_57476] -[group_57477] -[group_57478] -[group_57479] -[group_57480] -[group_57481] -[group_57482] -[group_57483] -[group_57484] -[group_57485] -[group_57486] -[group_57487] -[group_57488] -[group_57489] -[group_57490] -[group_57491] -[group_57492] -[group_57493] -[group_57494] -[group_57495] -[group_57496] -[group_57497] -[group_57498] -[group_57499] -[group_57500] -[group_57501] -[group_57502] -[group_57503] -[group_57504] -[group_57505] -[group_57506] -[group_57507] -[group_57508] -[group_57509] -[group_57510] -[group_57511] -[group_57512] -[group_57513] -[group_57514] -[group_57515] -[group_57516] -[group_57517] -[group_57518] -[group_57519] -[group_57520] -[group_57521] -[group_57522] -[group_57523] -[group_57524] -[group_57525] -[group_57526] -[group_57527] -[group_57528] -[group_57529] -[group_57530] -[group_57531] -[group_57532] -[group_57533] -[group_57534] -[group_57535] -[group_57536] -[group_57537] -[group_57538] -[group_57539] -[group_57540] -[group_57541] -[group_57542] -[group_57543] -[group_57544] -[group_57545] -[group_57546] -[group_57547] -[group_57548] -[group_57549] -[group_57550] -[group_57551] -[group_57552] -[group_57553] -[group_57554] -[group_57555] -[group_57556] -[group_57557] -[group_57558] -[group_57559] -[group_57560] -[group_57561] -[group_57562] -[group_57563] -[group_57564] -[group_57565] -[group_57566] -[group_57567] -[group_57568] -[group_57569] -[group_57570] -[group_57571] -[group_57572] -[group_57573] -[group_57574] -[group_57575] -[group_57576] -[group_57577] -[group_57578] -[group_57579] -[group_57580] -[group_57581] -[group_57582] -[group_57583] -[group_57584] -[group_57585] -[group_57586] -[group_57587] -[group_57588] -[group_57589] -[group_57590] -[group_57591] -[group_57592] -[group_57593] -[group_57594] -[group_57595] -[group_57596] -[group_57597] -[group_57598] -[group_57599] -[group_57600] -[group_57601] -[group_57602] -[group_57603] -[group_57604] -[group_57605] -[group_57606] -[group_57607] -[group_57608] -[group_57609] -[group_57610] -[group_57611] -[group_57612] -[group_57613] -[group_57614] -[group_57615] -[group_57616] -[group_57617] -[group_57618] -[group_57619] -[group_57620] -[group_57621] -[group_57622] -[group_57623] -[group_57624] -[group_57625] -[group_57626] -[group_57627] -[group_57628] -[group_57629] -[group_57630] -[group_57631] -[group_57632] -[group_57633] -[group_57634] -[group_57635] -[group_57636] -[group_57637] -[group_57638] -[group_57639] -[group_57640] -[group_57641] -[group_57642] -[group_57643] -[group_57644] -[group_57645] -[group_57646] -[group_57647] -[group_57648] -[group_57649] -[group_57650] -[group_57651] -[group_57652] -[group_57653] -[group_57654] -[group_57655] -[group_57656] -[group_57657] -[group_57658] -[group_57659] -[group_57660] -[group_57661] -[group_57662] -[group_57663] -[group_57664] -[group_57665] -[group_57666] -[group_57667] -[group_57668] -[group_57669] -[group_57670] -[group_57671] -[group_57672] -[group_57673] -[group_57674] -[group_57675] -[group_57676] -[group_57677] -[group_57678] -[group_57679] -[group_57680] -[group_57681] -[group_57682] -[group_57683] -[group_57684] -[group_57685] -[group_57686] -[group_57687] -[group_57688] -[group_57689] -[group_57690] -[group_57691] -[group_57692] -[group_57693] -[group_57694] -[group_57695] -[group_57696] -[group_57697] -[group_57698] -[group_57699] -[group_57700] -[group_57701] -[group_57702] -[group_57703] -[group_57704] -[group_57705] -[group_57706] -[group_57707] -[group_57708] -[group_57709] -[group_57710] -[group_57711] -[group_57712] -[group_57713] -[group_57714] -[group_57715] -[group_57716] -[group_57717] -[group_57718] -[group_57719] -[group_57720] -[group_57721] -[group_57722] -[group_57723] -[group_57724] -[group_57725] -[group_57726] -[group_57727] -[group_57728] -[group_57729] -[group_57730] -[group_57731] -[group_57732] -[group_57733] -[group_57734] -[group_57735] -[group_57736] -[group_57737] -[group_57738] -[group_57739] -[group_57740] -[group_57741] -[group_57742] -[group_57743] -[group_57744] -[group_57745] -[group_57746] -[group_57747] -[group_57748] -[group_57749] -[group_57750] -[group_57751] -[group_57752] -[group_57753] -[group_57754] -[group_57755] -[group_57756] -[group_57757] -[group_57758] -[group_57759] -[group_57760] -[group_57761] -[group_57762] -[group_57763] -[group_57764] -[group_57765] -[group_57766] -[group_57767] -[group_57768] -[group_57769] -[group_57770] -[group_57771] -[group_57772] -[group_57773] -[group_57774] -[group_57775] -[group_57776] -[group_57777] -[group_57778] -[group_57779] -[group_57780] -[group_57781] -[group_57782] -[group_57783] -[group_57784] -[group_57785] -[group_57786] -[group_57787] -[group_57788] -[group_57789] -[group_57790] -[group_57791] -[group_57792] -[group_57793] -[group_57794] -[group_57795] -[group_57796] -[group_57797] -[group_57798] -[group_57799] -[group_57800] -[group_57801] -[group_57802] -[group_57803] -[group_57804] -[group_57805] -[group_57806] -[group_57807] -[group_57808] -[group_57809] -[group_57810] -[group_57811] -[group_57812] -[group_57813] -[group_57814] -[group_57815] -[group_57816] -[group_57817] -[group_57818] -[group_57819] -[group_57820] -[group_57821] -[group_57822] -[group_57823] -[group_57824] -[group_57825] -[group_57826] -[group_57827] -[group_57828] -[group_57829] -[group_57830] -[group_57831] -[group_57832] -[group_57833] -[group_57834] -[group_57835] -[group_57836] -[group_57837] -[group_57838] -[group_57839] -[group_57840] -[group_57841] -[group_57842] -[group_57843] -[group_57844] -[group_57845] -[group_57846] -[group_57847] -[group_57848] -[group_57849] -[group_57850] -[group_57851] -[group_57852] -[group_57853] -[group_57854] -[group_57855] -[group_57856] -[group_57857] -[group_57858] -[group_57859] -[group_57860] -[group_57861] -[group_57862] -[group_57863] -[group_57864] -[group_57865] -[group_57866] -[group_57867] -[group_57868] -[group_57869] -[group_57870] -[group_57871] -[group_57872] -[group_57873] -[group_57874] -[group_57875] -[group_57876] -[group_57877] -[group_57878] -[group_57879] -[group_57880] -[group_57881] -[group_57882] -[group_57883] -[group_57884] -[group_57885] -[group_57886] -[group_57887] -[group_57888] -[group_57889] -[group_57890] -[group_57891] -[group_57892] -[group_57893] -[group_57894] -[group_57895] -[group_57896] -[group_57897] -[group_57898] -[group_57899] -[group_57900] -[group_57901] -[group_57902] -[group_57903] -[group_57904] -[group_57905] -[group_57906] -[group_57907] -[group_57908] -[group_57909] -[group_57910] -[group_57911] -[group_57912] -[group_57913] -[group_57914] -[group_57915] -[group_57916] -[group_57917] -[group_57918] -[group_57919] -[group_57920] -[group_57921] -[group_57922] -[group_57923] -[group_57924] -[group_57925] -[group_57926] -[group_57927] -[group_57928] -[group_57929] -[group_57930] -[group_57931] -[group_57932] -[group_57933] -[group_57934] -[group_57935] -[group_57936] -[group_57937] -[group_57938] -[group_57939] -[group_57940] -[group_57941] -[group_57942] -[group_57943] -[group_57944] -[group_57945] -[group_57946] -[group_57947] -[group_57948] -[group_57949] -[group_57950] -[group_57951] -[group_57952] -[group_57953] -[group_57954] -[group_57955] -[group_57956] -[group_57957] -[group_57958] -[group_57959] -[group_57960] -[group_57961] -[group_57962] -[group_57963] -[group_57964] -[group_57965] -[group_57966] -[group_57967] -[group_57968] -[group_57969] -[group_57970] -[group_57971] -[group_57972] -[group_57973] -[group_57974] -[group_57975] -[group_57976] -[group_57977] -[group_57978] -[group_57979] -[group_57980] -[group_57981] -[group_57982] -[group_57983] -[group_57984] -[group_57985] -[group_57986] -[group_57987] -[group_57988] -[group_57989] -[group_57990] -[group_57991] -[group_57992] -[group_57993] -[group_57994] -[group_57995] -[group_57996] -[group_57997] -[group_57998] -[group_57999] -[group_58000] -[group_58001] -[group_58002] -[group_58003] -[group_58004] -[group_58005] -[group_58006] -[group_58007] -[group_58008] -[group_58009] -[group_58010] -[group_58011] -[group_58012] -[group_58013] -[group_58014] -[group_58015] -[group_58016] -[group_58017] -[group_58018] -[group_58019] -[group_58020] -[group_58021] -[group_58022] -[group_58023] -[group_58024] -[group_58025] -[group_58026] -[group_58027] -[group_58028] -[group_58029] -[group_58030] -[group_58031] -[group_58032] -[group_58033] -[group_58034] -[group_58035] -[group_58036] -[group_58037] -[group_58038] -[group_58039] -[group_58040] -[group_58041] -[group_58042] -[group_58043] -[group_58044] -[group_58045] -[group_58046] -[group_58047] -[group_58048] -[group_58049] -[group_58050] -[group_58051] -[group_58052] -[group_58053] -[group_58054] -[group_58055] -[group_58056] -[group_58057] -[group_58058] -[group_58059] -[group_58060] -[group_58061] -[group_58062] -[group_58063] -[group_58064] -[group_58065] -[group_58066] -[group_58067] -[group_58068] -[group_58069] -[group_58070] -[group_58071] -[group_58072] -[group_58073] -[group_58074] -[group_58075] -[group_58076] -[group_58077] -[group_58078] -[group_58079] -[group_58080] -[group_58081] -[group_58082] -[group_58083] -[group_58084] -[group_58085] -[group_58086] -[group_58087] -[group_58088] -[group_58089] -[group_58090] -[group_58091] -[group_58092] -[group_58093] -[group_58094] -[group_58095] -[group_58096] -[group_58097] -[group_58098] -[group_58099] -[group_58100] -[group_58101] -[group_58102] -[group_58103] -[group_58104] -[group_58105] -[group_58106] -[group_58107] -[group_58108] -[group_58109] -[group_58110] -[group_58111] -[group_58112] -[group_58113] -[group_58114] -[group_58115] -[group_58116] -[group_58117] -[group_58118] -[group_58119] -[group_58120] -[group_58121] -[group_58122] -[group_58123] -[group_58124] -[group_58125] -[group_58126] -[group_58127] -[group_58128] -[group_58129] -[group_58130] -[group_58131] -[group_58132] -[group_58133] -[group_58134] -[group_58135] -[group_58136] -[group_58137] -[group_58138] -[group_58139] -[group_58140] -[group_58141] -[group_58142] -[group_58143] -[group_58144] -[group_58145] -[group_58146] -[group_58147] -[group_58148] -[group_58149] -[group_58150] -[group_58151] -[group_58152] -[group_58153] -[group_58154] -[group_58155] -[group_58156] -[group_58157] -[group_58158] -[group_58159] -[group_58160] -[group_58161] -[group_58162] -[group_58163] -[group_58164] -[group_58165] -[group_58166] -[group_58167] -[group_58168] -[group_58169] -[group_58170] -[group_58171] -[group_58172] -[group_58173] -[group_58174] -[group_58175] -[group_58176] -[group_58177] -[group_58178] -[group_58179] -[group_58180] -[group_58181] -[group_58182] -[group_58183] -[group_58184] -[group_58185] -[group_58186] -[group_58187] -[group_58188] -[group_58189] -[group_58190] -[group_58191] -[group_58192] -[group_58193] -[group_58194] -[group_58195] -[group_58196] -[group_58197] -[group_58198] -[group_58199] -[group_58200] -[group_58201] -[group_58202] -[group_58203] -[group_58204] -[group_58205] -[group_58206] -[group_58207] -[group_58208] -[group_58209] -[group_58210] -[group_58211] -[group_58212] -[group_58213] -[group_58214] -[group_58215] -[group_58216] -[group_58217] -[group_58218] -[group_58219] -[group_58220] -[group_58221] -[group_58222] -[group_58223] -[group_58224] -[group_58225] -[group_58226] -[group_58227] -[group_58228] -[group_58229] -[group_58230] -[group_58231] -[group_58232] -[group_58233] -[group_58234] -[group_58235] -[group_58236] -[group_58237] -[group_58238] -[group_58239] -[group_58240] -[group_58241] -[group_58242] -[group_58243] -[group_58244] -[group_58245] -[group_58246] -[group_58247] -[group_58248] -[group_58249] -[group_58250] -[group_58251] -[group_58252] -[group_58253] -[group_58254] -[group_58255] -[group_58256] -[group_58257] -[group_58258] -[group_58259] -[group_58260] -[group_58261] -[group_58262] -[group_58263] -[group_58264] -[group_58265] -[group_58266] -[group_58267] -[group_58268] -[group_58269] -[group_58270] -[group_58271] -[group_58272] -[group_58273] -[group_58274] -[group_58275] -[group_58276] -[group_58277] -[group_58278] -[group_58279] -[group_58280] -[group_58281] -[group_58282] -[group_58283] -[group_58284] -[group_58285] -[group_58286] -[group_58287] -[group_58288] -[group_58289] -[group_58290] -[group_58291] -[group_58292] -[group_58293] -[group_58294] -[group_58295] -[group_58296] -[group_58297] -[group_58298] -[group_58299] -[group_58300] -[group_58301] -[group_58302] -[group_58303] -[group_58304] -[group_58305] -[group_58306] -[group_58307] -[group_58308] -[group_58309] -[group_58310] -[group_58311] -[group_58312] -[group_58313] -[group_58314] -[group_58315] -[group_58316] -[group_58317] -[group_58318] -[group_58319] -[group_58320] -[group_58321] -[group_58322] -[group_58323] -[group_58324] -[group_58325] -[group_58326] -[group_58327] -[group_58328] -[group_58329] -[group_58330] -[group_58331] -[group_58332] -[group_58333] -[group_58334] -[group_58335] -[group_58336] -[group_58337] -[group_58338] -[group_58339] -[group_58340] -[group_58341] -[group_58342] -[group_58343] -[group_58344] -[group_58345] -[group_58346] -[group_58347] -[group_58348] -[group_58349] -[group_58350] -[group_58351] -[group_58352] -[group_58353] -[group_58354] -[group_58355] -[group_58356] -[group_58357] -[group_58358] -[group_58359] -[group_58360] -[group_58361] -[group_58362] -[group_58363] -[group_58364] -[group_58365] -[group_58366] -[group_58367] -[group_58368] -[group_58369] -[group_58370] -[group_58371] -[group_58372] -[group_58373] -[group_58374] -[group_58375] -[group_58376] -[group_58377] -[group_58378] -[group_58379] -[group_58380] -[group_58381] -[group_58382] -[group_58383] -[group_58384] -[group_58385] -[group_58386] -[group_58387] -[group_58388] -[group_58389] -[group_58390] -[group_58391] -[group_58392] -[group_58393] -[group_58394] -[group_58395] -[group_58396] -[group_58397] -[group_58398] -[group_58399] -[group_58400] -[group_58401] -[group_58402] -[group_58403] -[group_58404] -[group_58405] -[group_58406] -[group_58407] -[group_58408] -[group_58409] -[group_58410] -[group_58411] -[group_58412] -[group_58413] -[group_58414] -[group_58415] -[group_58416] -[group_58417] -[group_58418] -[group_58419] -[group_58420] -[group_58421] -[group_58422] -[group_58423] -[group_58424] -[group_58425] -[group_58426] -[group_58427] -[group_58428] -[group_58429] -[group_58430] -[group_58431] -[group_58432] -[group_58433] -[group_58434] -[group_58435] -[group_58436] -[group_58437] -[group_58438] -[group_58439] -[group_58440] -[group_58441] -[group_58442] -[group_58443] -[group_58444] -[group_58445] -[group_58446] -[group_58447] -[group_58448] -[group_58449] -[group_58450] -[group_58451] -[group_58452] -[group_58453] -[group_58454] -[group_58455] -[group_58456] -[group_58457] -[group_58458] -[group_58459] -[group_58460] -[group_58461] -[group_58462] -[group_58463] -[group_58464] -[group_58465] -[group_58466] -[group_58467] -[group_58468] -[group_58469] -[group_58470] -[group_58471] -[group_58472] -[group_58473] -[group_58474] -[group_58475] -[group_58476] -[group_58477] -[group_58478] -[group_58479] -[group_58480] -[group_58481] -[group_58482] -[group_58483] -[group_58484] -[group_58485] -[group_58486] -[group_58487] -[group_58488] -[group_58489] -[group_58490] -[group_58491] -[group_58492] -[group_58493] -[group_58494] -[group_58495] -[group_58496] -[group_58497] -[group_58498] -[group_58499] -[group_58500] -[group_58501] -[group_58502] -[group_58503] -[group_58504] -[group_58505] -[group_58506] -[group_58507] -[group_58508] -[group_58509] -[group_58510] -[group_58511] -[group_58512] -[group_58513] -[group_58514] -[group_58515] -[group_58516] -[group_58517] -[group_58518] -[group_58519] -[group_58520] -[group_58521] -[group_58522] -[group_58523] -[group_58524] -[group_58525] -[group_58526] -[group_58527] -[group_58528] -[group_58529] -[group_58530] -[group_58531] -[group_58532] -[group_58533] -[group_58534] -[group_58535] -[group_58536] -[group_58537] -[group_58538] -[group_58539] -[group_58540] -[group_58541] -[group_58542] -[group_58543] -[group_58544] -[group_58545] -[group_58546] -[group_58547] -[group_58548] -[group_58549] -[group_58550] -[group_58551] -[group_58552] -[group_58553] -[group_58554] -[group_58555] -[group_58556] -[group_58557] -[group_58558] -[group_58559] -[group_58560] -[group_58561] -[group_58562] -[group_58563] -[group_58564] -[group_58565] -[group_58566] -[group_58567] -[group_58568] -[group_58569] -[group_58570] -[group_58571] -[group_58572] -[group_58573] -[group_58574] -[group_58575] -[group_58576] -[group_58577] -[group_58578] -[group_58579] -[group_58580] -[group_58581] -[group_58582] -[group_58583] -[group_58584] -[group_58585] -[group_58586] -[group_58587] -[group_58588] -[group_58589] -[group_58590] -[group_58591] -[group_58592] -[group_58593] -[group_58594] -[group_58595] -[group_58596] -[group_58597] -[group_58598] -[group_58599] -[group_58600] -[group_58601] -[group_58602] -[group_58603] -[group_58604] -[group_58605] -[group_58606] -[group_58607] -[group_58608] -[group_58609] -[group_58610] -[group_58611] -[group_58612] -[group_58613] -[group_58614] -[group_58615] -[group_58616] -[group_58617] -[group_58618] -[group_58619] -[group_58620] -[group_58621] -[group_58622] -[group_58623] -[group_58624] -[group_58625] -[group_58626] -[group_58627] -[group_58628] -[group_58629] -[group_58630] -[group_58631] -[group_58632] -[group_58633] -[group_58634] -[group_58635] -[group_58636] -[group_58637] -[group_58638] -[group_58639] -[group_58640] -[group_58641] -[group_58642] -[group_58643] -[group_58644] -[group_58645] -[group_58646] -[group_58647] -[group_58648] -[group_58649] -[group_58650] -[group_58651] -[group_58652] -[group_58653] -[group_58654] -[group_58655] -[group_58656] -[group_58657] -[group_58658] -[group_58659] -[group_58660] -[group_58661] -[group_58662] -[group_58663] -[group_58664] -[group_58665] -[group_58666] -[group_58667] -[group_58668] -[group_58669] -[group_58670] -[group_58671] -[group_58672] -[group_58673] -[group_58674] -[group_58675] -[group_58676] -[group_58677] -[group_58678] -[group_58679] -[group_58680] -[group_58681] -[group_58682] -[group_58683] -[group_58684] -[group_58685] -[group_58686] -[group_58687] -[group_58688] -[group_58689] -[group_58690] -[group_58691] -[group_58692] -[group_58693] -[group_58694] -[group_58695] -[group_58696] -[group_58697] -[group_58698] -[group_58699] -[group_58700] -[group_58701] -[group_58702] -[group_58703] -[group_58704] -[group_58705] -[group_58706] -[group_58707] -[group_58708] -[group_58709] -[group_58710] -[group_58711] -[group_58712] -[group_58713] -[group_58714] -[group_58715] -[group_58716] -[group_58717] -[group_58718] -[group_58719] -[group_58720] -[group_58721] -[group_58722] -[group_58723] -[group_58724] -[group_58725] -[group_58726] -[group_58727] -[group_58728] -[group_58729] -[group_58730] -[group_58731] -[group_58732] -[group_58733] -[group_58734] -[group_58735] -[group_58736] -[group_58737] -[group_58738] -[group_58739] -[group_58740] -[group_58741] -[group_58742] -[group_58743] -[group_58744] -[group_58745] -[group_58746] -[group_58747] -[group_58748] -[group_58749] -[group_58750] -[group_58751] -[group_58752] -[group_58753] -[group_58754] -[group_58755] -[group_58756] -[group_58757] -[group_58758] -[group_58759] -[group_58760] -[group_58761] -[group_58762] -[group_58763] -[group_58764] -[group_58765] -[group_58766] -[group_58767] -[group_58768] -[group_58769] -[group_58770] -[group_58771] -[group_58772] -[group_58773] -[group_58774] -[group_58775] -[group_58776] -[group_58777] -[group_58778] -[group_58779] -[group_58780] -[group_58781] -[group_58782] -[group_58783] -[group_58784] -[group_58785] -[group_58786] -[group_58787] -[group_58788] -[group_58789] -[group_58790] -[group_58791] -[group_58792] -[group_58793] -[group_58794] -[group_58795] -[group_58796] -[group_58797] -[group_58798] -[group_58799] -[group_58800] -[group_58801] -[group_58802] -[group_58803] -[group_58804] -[group_58805] -[group_58806] -[group_58807] -[group_58808] -[group_58809] -[group_58810] -[group_58811] -[group_58812] -[group_58813] -[group_58814] -[group_58815] -[group_58816] -[group_58817] -[group_58818] -[group_58819] -[group_58820] -[group_58821] -[group_58822] -[group_58823] -[group_58824] -[group_58825] -[group_58826] -[group_58827] -[group_58828] -[group_58829] -[group_58830] -[group_58831] -[group_58832] -[group_58833] -[group_58834] -[group_58835] -[group_58836] -[group_58837] -[group_58838] -[group_58839] -[group_58840] -[group_58841] -[group_58842] -[group_58843] -[group_58844] -[group_58845] -[group_58846] -[group_58847] -[group_58848] -[group_58849] -[group_58850] -[group_58851] -[group_58852] -[group_58853] -[group_58854] -[group_58855] -[group_58856] -[group_58857] -[group_58858] -[group_58859] -[group_58860] -[group_58861] -[group_58862] -[group_58863] -[group_58864] -[group_58865] -[group_58866] -[group_58867] -[group_58868] -[group_58869] -[group_58870] -[group_58871] -[group_58872] -[group_58873] -[group_58874] -[group_58875] -[group_58876] -[group_58877] -[group_58878] -[group_58879] -[group_58880] -[group_58881] -[group_58882] -[group_58883] -[group_58884] -[group_58885] -[group_58886] -[group_58887] -[group_58888] -[group_58889] -[group_58890] -[group_58891] -[group_58892] -[group_58893] -[group_58894] -[group_58895] -[group_58896] -[group_58897] -[group_58898] -[group_58899] -[group_58900] -[group_58901] -[group_58902] -[group_58903] -[group_58904] -[group_58905] -[group_58906] -[group_58907] -[group_58908] -[group_58909] -[group_58910] -[group_58911] -[group_58912] -[group_58913] -[group_58914] -[group_58915] -[group_58916] -[group_58917] -[group_58918] -[group_58919] -[group_58920] -[group_58921] -[group_58922] -[group_58923] -[group_58924] -[group_58925] -[group_58926] -[group_58927] -[group_58928] -[group_58929] -[group_58930] -[group_58931] -[group_58932] -[group_58933] -[group_58934] -[group_58935] -[group_58936] -[group_58937] -[group_58938] -[group_58939] -[group_58940] -[group_58941] -[group_58942] -[group_58943] -[group_58944] -[group_58945] -[group_58946] -[group_58947] -[group_58948] -[group_58949] -[group_58950] -[group_58951] -[group_58952] -[group_58953] -[group_58954] -[group_58955] -[group_58956] -[group_58957] -[group_58958] -[group_58959] -[group_58960] -[group_58961] -[group_58962] -[group_58963] -[group_58964] -[group_58965] -[group_58966] -[group_58967] -[group_58968] -[group_58969] -[group_58970] -[group_58971] -[group_58972] -[group_58973] -[group_58974] -[group_58975] -[group_58976] -[group_58977] -[group_58978] -[group_58979] -[group_58980] -[group_58981] -[group_58982] -[group_58983] -[group_58984] -[group_58985] -[group_58986] -[group_58987] -[group_58988] -[group_58989] -[group_58990] -[group_58991] -[group_58992] -[group_58993] -[group_58994] -[group_58995] -[group_58996] -[group_58997] -[group_58998] -[group_58999] -[group_59000] -[group_59001] -[group_59002] -[group_59003] -[group_59004] -[group_59005] -[group_59006] -[group_59007] -[group_59008] -[group_59009] -[group_59010] -[group_59011] -[group_59012] -[group_59013] -[group_59014] -[group_59015] -[group_59016] -[group_59017] -[group_59018] -[group_59019] -[group_59020] -[group_59021] -[group_59022] -[group_59023] -[group_59024] -[group_59025] -[group_59026] -[group_59027] -[group_59028] -[group_59029] -[group_59030] -[group_59031] -[group_59032] -[group_59033] -[group_59034] -[group_59035] -[group_59036] -[group_59037] -[group_59038] -[group_59039] -[group_59040] -[group_59041] -[group_59042] -[group_59043] -[group_59044] -[group_59045] -[group_59046] -[group_59047] -[group_59048] -[group_59049] -[group_59050] -[group_59051] -[group_59052] -[group_59053] -[group_59054] -[group_59055] -[group_59056] -[group_59057] -[group_59058] -[group_59059] -[group_59060] -[group_59061] -[group_59062] -[group_59063] -[group_59064] -[group_59065] -[group_59066] -[group_59067] -[group_59068] -[group_59069] -[group_59070] -[group_59071] -[group_59072] -[group_59073] -[group_59074] -[group_59075] -[group_59076] -[group_59077] -[group_59078] -[group_59079] -[group_59080] -[group_59081] -[group_59082] -[group_59083] -[group_59084] -[group_59085] -[group_59086] -[group_59087] -[group_59088] -[group_59089] -[group_59090] -[group_59091] -[group_59092] -[group_59093] -[group_59094] -[group_59095] -[group_59096] -[group_59097] -[group_59098] -[group_59099] -[group_59100] -[group_59101] -[group_59102] -[group_59103] -[group_59104] -[group_59105] -[group_59106] -[group_59107] -[group_59108] -[group_59109] -[group_59110] -[group_59111] -[group_59112] -[group_59113] -[group_59114] -[group_59115] -[group_59116] -[group_59117] -[group_59118] -[group_59119] -[group_59120] -[group_59121] -[group_59122] -[group_59123] -[group_59124] -[group_59125] -[group_59126] -[group_59127] -[group_59128] -[group_59129] -[group_59130] -[group_59131] -[group_59132] -[group_59133] -[group_59134] -[group_59135] -[group_59136] -[group_59137] -[group_59138] -[group_59139] -[group_59140] -[group_59141] -[group_59142] -[group_59143] -[group_59144] -[group_59145] -[group_59146] -[group_59147] -[group_59148] -[group_59149] -[group_59150] -[group_59151] -[group_59152] -[group_59153] -[group_59154] -[group_59155] -[group_59156] -[group_59157] -[group_59158] -[group_59159] -[group_59160] -[group_59161] -[group_59162] -[group_59163] -[group_59164] -[group_59165] -[group_59166] -[group_59167] -[group_59168] -[group_59169] -[group_59170] -[group_59171] -[group_59172] -[group_59173] -[group_59174] -[group_59175] -[group_59176] -[group_59177] -[group_59178] -[group_59179] -[group_59180] -[group_59181] -[group_59182] -[group_59183] -[group_59184] -[group_59185] -[group_59186] -[group_59187] -[group_59188] -[group_59189] -[group_59190] -[group_59191] -[group_59192] -[group_59193] -[group_59194] -[group_59195] -[group_59196] -[group_59197] -[group_59198] -[group_59199] -[group_59200] -[group_59201] -[group_59202] -[group_59203] -[group_59204] -[group_59205] -[group_59206] -[group_59207] -[group_59208] -[group_59209] -[group_59210] -[group_59211] -[group_59212] -[group_59213] -[group_59214] -[group_59215] -[group_59216] -[group_59217] -[group_59218] -[group_59219] -[group_59220] -[group_59221] -[group_59222] -[group_59223] -[group_59224] -[group_59225] -[group_59226] -[group_59227] -[group_59228] -[group_59229] -[group_59230] -[group_59231] -[group_59232] -[group_59233] -[group_59234] -[group_59235] -[group_59236] -[group_59237] -[group_59238] -[group_59239] -[group_59240] -[group_59241] -[group_59242] -[group_59243] -[group_59244] -[group_59245] -[group_59246] -[group_59247] -[group_59248] -[group_59249] -[group_59250] -[group_59251] -[group_59252] -[group_59253] -[group_59254] -[group_59255] -[group_59256] -[group_59257] -[group_59258] -[group_59259] -[group_59260] -[group_59261] -[group_59262] -[group_59263] -[group_59264] -[group_59265] -[group_59266] -[group_59267] -[group_59268] -[group_59269] -[group_59270] -[group_59271] -[group_59272] -[group_59273] -[group_59274] -[group_59275] -[group_59276] -[group_59277] -[group_59278] -[group_59279] -[group_59280] -[group_59281] -[group_59282] -[group_59283] -[group_59284] -[group_59285] -[group_59286] -[group_59287] -[group_59288] -[group_59289] -[group_59290] -[group_59291] -[group_59292] -[group_59293] -[group_59294] -[group_59295] -[group_59296] -[group_59297] -[group_59298] -[group_59299] -[group_59300] -[group_59301] -[group_59302] -[group_59303] -[group_59304] -[group_59305] -[group_59306] -[group_59307] -[group_59308] -[group_59309] -[group_59310] -[group_59311] -[group_59312] -[group_59313] -[group_59314] -[group_59315] -[group_59316] -[group_59317] -[group_59318] -[group_59319] -[group_59320] -[group_59321] -[group_59322] -[group_59323] -[group_59324] -[group_59325] -[group_59326] -[group_59327] -[group_59328] -[group_59329] -[group_59330] -[group_59331] -[group_59332] -[group_59333] -[group_59334] -[group_59335] -[group_59336] -[group_59337] -[group_59338] -[group_59339] -[group_59340] -[group_59341] -[group_59342] -[group_59343] -[group_59344] -[group_59345] -[group_59346] -[group_59347] -[group_59348] -[group_59349] -[group_59350] -[group_59351] -[group_59352] -[group_59353] -[group_59354] -[group_59355] -[group_59356] -[group_59357] -[group_59358] -[group_59359] -[group_59360] -[group_59361] -[group_59362] -[group_59363] -[group_59364] -[group_59365] -[group_59366] -[group_59367] -[group_59368] -[group_59369] -[group_59370] -[group_59371] -[group_59372] -[group_59373] -[group_59374] -[group_59375] -[group_59376] -[group_59377] -[group_59378] -[group_59379] -[group_59380] -[group_59381] -[group_59382] -[group_59383] -[group_59384] -[group_59385] -[group_59386] -[group_59387] -[group_59388] -[group_59389] -[group_59390] -[group_59391] -[group_59392] -[group_59393] -[group_59394] -[group_59395] -[group_59396] -[group_59397] -[group_59398] -[group_59399] -[group_59400] -[group_59401] -[group_59402] -[group_59403] -[group_59404] -[group_59405] -[group_59406] -[group_59407] -[group_59408] -[group_59409] -[group_59410] -[group_59411] -[group_59412] -[group_59413] -[group_59414] -[group_59415] -[group_59416] -[group_59417] -[group_59418] -[group_59419] -[group_59420] -[group_59421] -[group_59422] -[group_59423] -[group_59424] -[group_59425] -[group_59426] -[group_59427] -[group_59428] -[group_59429] -[group_59430] -[group_59431] -[group_59432] -[group_59433] -[group_59434] -[group_59435] -[group_59436] -[group_59437] -[group_59438] -[group_59439] -[group_59440] -[group_59441] -[group_59442] -[group_59443] -[group_59444] -[group_59445] -[group_59446] -[group_59447] -[group_59448] -[group_59449] -[group_59450] -[group_59451] -[group_59452] -[group_59453] -[group_59454] -[group_59455] -[group_59456] -[group_59457] -[group_59458] -[group_59459] -[group_59460] -[group_59461] -[group_59462] -[group_59463] -[group_59464] -[group_59465] -[group_59466] -[group_59467] -[group_59468] -[group_59469] -[group_59470] -[group_59471] -[group_59472] -[group_59473] -[group_59474] -[group_59475] -[group_59476] -[group_59477] -[group_59478] -[group_59479] -[group_59480] -[group_59481] -[group_59482] -[group_59483] -[group_59484] -[group_59485] -[group_59486] -[group_59487] -[group_59488] -[group_59489] -[group_59490] -[group_59491] -[group_59492] -[group_59493] -[group_59494] -[group_59495] -[group_59496] -[group_59497] -[group_59498] -[group_59499] -[group_59500] -[group_59501] -[group_59502] -[group_59503] -[group_59504] -[group_59505] -[group_59506] -[group_59507] -[group_59508] -[group_59509] -[group_59510] -[group_59511] -[group_59512] -[group_59513] -[group_59514] -[group_59515] -[group_59516] -[group_59517] -[group_59518] -[group_59519] -[group_59520] -[group_59521] -[group_59522] -[group_59523] -[group_59524] -[group_59525] -[group_59526] -[group_59527] -[group_59528] -[group_59529] -[group_59530] -[group_59531] -[group_59532] -[group_59533] -[group_59534] -[group_59535] -[group_59536] -[group_59537] -[group_59538] -[group_59539] -[group_59540] -[group_59541] -[group_59542] -[group_59543] -[group_59544] -[group_59545] -[group_59546] -[group_59547] -[group_59548] -[group_59549] -[group_59550] -[group_59551] -[group_59552] -[group_59553] -[group_59554] -[group_59555] -[group_59556] -[group_59557] -[group_59558] -[group_59559] -[group_59560] -[group_59561] -[group_59562] -[group_59563] -[group_59564] -[group_59565] -[group_59566] -[group_59567] -[group_59568] -[group_59569] -[group_59570] -[group_59571] -[group_59572] -[group_59573] -[group_59574] -[group_59575] -[group_59576] -[group_59577] -[group_59578] -[group_59579] -[group_59580] -[group_59581] -[group_59582] -[group_59583] -[group_59584] -[group_59585] -[group_59586] -[group_59587] -[group_59588] -[group_59589] -[group_59590] -[group_59591] -[group_59592] -[group_59593] -[group_59594] -[group_59595] -[group_59596] -[group_59597] -[group_59598] -[group_59599] -[group_59600] -[group_59601] -[group_59602] -[group_59603] -[group_59604] -[group_59605] -[group_59606] -[group_59607] -[group_59608] -[group_59609] -[group_59610] -[group_59611] -[group_59612] -[group_59613] -[group_59614] -[group_59615] -[group_59616] -[group_59617] -[group_59618] -[group_59619] -[group_59620] -[group_59621] -[group_59622] -[group_59623] -[group_59624] -[group_59625] -[group_59626] -[group_59627] -[group_59628] -[group_59629] -[group_59630] -[group_59631] -[group_59632] -[group_59633] -[group_59634] -[group_59635] -[group_59636] -[group_59637] -[group_59638] -[group_59639] -[group_59640] -[group_59641] -[group_59642] -[group_59643] -[group_59644] -[group_59645] -[group_59646] -[group_59647] -[group_59648] -[group_59649] -[group_59650] -[group_59651] -[group_59652] -[group_59653] -[group_59654] -[group_59655] -[group_59656] -[group_59657] -[group_59658] -[group_59659] -[group_59660] -[group_59661] -[group_59662] -[group_59663] -[group_59664] -[group_59665] -[group_59666] -[group_59667] -[group_59668] -[group_59669] -[group_59670] -[group_59671] -[group_59672] -[group_59673] -[group_59674] -[group_59675] -[group_59676] -[group_59677] -[group_59678] -[group_59679] -[group_59680] -[group_59681] -[group_59682] -[group_59683] -[group_59684] -[group_59685] -[group_59686] -[group_59687] -[group_59688] -[group_59689] -[group_59690] -[group_59691] -[group_59692] -[group_59693] -[group_59694] -[group_59695] -[group_59696] -[group_59697] -[group_59698] -[group_59699] -[group_59700] -[group_59701] -[group_59702] -[group_59703] -[group_59704] -[group_59705] -[group_59706] -[group_59707] -[group_59708] -[group_59709] -[group_59710] -[group_59711] -[group_59712] -[group_59713] -[group_59714] -[group_59715] -[group_59716] -[group_59717] -[group_59718] -[group_59719] -[group_59720] -[group_59721] -[group_59722] -[group_59723] -[group_59724] -[group_59725] -[group_59726] -[group_59727] -[group_59728] -[group_59729] -[group_59730] -[group_59731] -[group_59732] -[group_59733] -[group_59734] -[group_59735] -[group_59736] -[group_59737] -[group_59738] -[group_59739] -[group_59740] -[group_59741] -[group_59742] -[group_59743] -[group_59744] -[group_59745] -[group_59746] -[group_59747] -[group_59748] -[group_59749] -[group_59750] -[group_59751] -[group_59752] -[group_59753] -[group_59754] -[group_59755] -[group_59756] -[group_59757] -[group_59758] -[group_59759] -[group_59760] -[group_59761] -[group_59762] -[group_59763] -[group_59764] -[group_59765] -[group_59766] -[group_59767] -[group_59768] -[group_59769] -[group_59770] -[group_59771] -[group_59772] -[group_59773] -[group_59774] -[group_59775] -[group_59776] -[group_59777] -[group_59778] -[group_59779] -[group_59780] -[group_59781] -[group_59782] -[group_59783] -[group_59784] -[group_59785] -[group_59786] -[group_59787] -[group_59788] -[group_59789] -[group_59790] -[group_59791] -[group_59792] -[group_59793] -[group_59794] -[group_59795] -[group_59796] -[group_59797] -[group_59798] -[group_59799] -[group_59800] -[group_59801] -[group_59802] -[group_59803] -[group_59804] -[group_59805] -[group_59806] -[group_59807] -[group_59808] -[group_59809] -[group_59810] -[group_59811] -[group_59812] -[group_59813] -[group_59814] -[group_59815] -[group_59816] -[group_59817] -[group_59818] -[group_59819] -[group_59820] -[group_59821] -[group_59822] -[group_59823] -[group_59824] -[group_59825] -[group_59826] -[group_59827] -[group_59828] -[group_59829] -[group_59830] -[group_59831] -[group_59832] -[group_59833] -[group_59834] -[group_59835] -[group_59836] -[group_59837] -[group_59838] -[group_59839] -[group_59840] -[group_59841] -[group_59842] -[group_59843] -[group_59844] -[group_59845] -[group_59846] -[group_59847] -[group_59848] -[group_59849] -[group_59850] -[group_59851] -[group_59852] -[group_59853] -[group_59854] -[group_59855] -[group_59856] -[group_59857] -[group_59858] -[group_59859] -[group_59860] -[group_59861] -[group_59862] -[group_59863] -[group_59864] -[group_59865] -[group_59866] -[group_59867] -[group_59868] -[group_59869] -[group_59870] -[group_59871] -[group_59872] -[group_59873] -[group_59874] -[group_59875] -[group_59876] -[group_59877] -[group_59878] -[group_59879] -[group_59880] -[group_59881] -[group_59882] -[group_59883] -[group_59884] -[group_59885] -[group_59886] -[group_59887] -[group_59888] -[group_59889] -[group_59890] -[group_59891] -[group_59892] -[group_59893] -[group_59894] -[group_59895] -[group_59896] -[group_59897] -[group_59898] -[group_59899] -[group_59900] -[group_59901] -[group_59902] -[group_59903] -[group_59904] -[group_59905] -[group_59906] -[group_59907] -[group_59908] -[group_59909] -[group_59910] -[group_59911] -[group_59912] -[group_59913] -[group_59914] -[group_59915] -[group_59916] -[group_59917] -[group_59918] -[group_59919] -[group_59920] -[group_59921] -[group_59922] -[group_59923] -[group_59924] -[group_59925] -[group_59926] -[group_59927] -[group_59928] -[group_59929] -[group_59930] -[group_59931] -[group_59932] -[group_59933] -[group_59934] -[group_59935] -[group_59936] -[group_59937] -[group_59938] -[group_59939] -[group_59940] -[group_59941] -[group_59942] -[group_59943] -[group_59944] -[group_59945] -[group_59946] -[group_59947] -[group_59948] -[group_59949] -[group_59950] -[group_59951] -[group_59952] -[group_59953] -[group_59954] -[group_59955] -[group_59956] -[group_59957] -[group_59958] -[group_59959] -[group_59960] -[group_59961] -[group_59962] -[group_59963] -[group_59964] -[group_59965] -[group_59966] -[group_59967] -[group_59968] -[group_59969] -[group_59970] -[group_59971] -[group_59972] -[group_59973] -[group_59974] -[group_59975] -[group_59976] -[group_59977] -[group_59978] -[group_59979] -[group_59980] -[group_59981] -[group_59982] -[group_59983] -[group_59984] -[group_59985] -[group_59986] -[group_59987] -[group_59988] -[group_59989] -[group_59990] -[group_59991] -[group_59992] -[group_59993] -[group_59994] -[group_59995] -[group_59996] -[group_59997] -[group_59998] -[group_59999] -[group_60000] -[group_60001] -[group_60002] -[group_60003] -[group_60004] -[group_60005] -[group_60006] -[group_60007] -[group_60008] -[group_60009] -[group_60010] -[group_60011] -[group_60012] -[group_60013] -[group_60014] -[group_60015] -[group_60016] -[group_60017] -[group_60018] -[group_60019] -[group_60020] -[group_60021] -[group_60022] -[group_60023] -[group_60024] -[group_60025] -[group_60026] -[group_60027] -[group_60028] -[group_60029] -[group_60030] -[group_60031] -[group_60032] -[group_60033] -[group_60034] -[group_60035] -[group_60036] -[group_60037] -[group_60038] -[group_60039] -[group_60040] -[group_60041] -[group_60042] -[group_60043] -[group_60044] -[group_60045] -[group_60046] -[group_60047] -[group_60048] -[group_60049] -[group_60050] -[group_60051] -[group_60052] -[group_60053] -[group_60054] -[group_60055] -[group_60056] -[group_60057] -[group_60058] -[group_60059] -[group_60060] -[group_60061] -[group_60062] -[group_60063] -[group_60064] -[group_60065] -[group_60066] -[group_60067] -[group_60068] -[group_60069] -[group_60070] -[group_60071] -[group_60072] -[group_60073] -[group_60074] -[group_60075] -[group_60076] -[group_60077] -[group_60078] -[group_60079] -[group_60080] -[group_60081] -[group_60082] -[group_60083] -[group_60084] -[group_60085] -[group_60086] -[group_60087] -[group_60088] -[group_60089] -[group_60090] -[group_60091] -[group_60092] -[group_60093] -[group_60094] -[group_60095] -[group_60096] -[group_60097] -[group_60098] -[group_60099] -[group_60100] -[group_60101] -[group_60102] -[group_60103] -[group_60104] -[group_60105] -[group_60106] -[group_60107] -[group_60108] -[group_60109] -[group_60110] -[group_60111] -[group_60112] -[group_60113] -[group_60114] -[group_60115] -[group_60116] -[group_60117] -[group_60118] -[group_60119] -[group_60120] -[group_60121] -[group_60122] -[group_60123] -[group_60124] -[group_60125] -[group_60126] -[group_60127] -[group_60128] -[group_60129] -[group_60130] -[group_60131] -[group_60132] -[group_60133] -[group_60134] -[group_60135] -[group_60136] -[group_60137] -[group_60138] -[group_60139] -[group_60140] -[group_60141] -[group_60142] -[group_60143] -[group_60144] -[group_60145] -[group_60146] -[group_60147] -[group_60148] -[group_60149] -[group_60150] -[group_60151] -[group_60152] -[group_60153] -[group_60154] -[group_60155] -[group_60156] -[group_60157] -[group_60158] -[group_60159] -[group_60160] -[group_60161] -[group_60162] -[group_60163] -[group_60164] -[group_60165] -[group_60166] -[group_60167] -[group_60168] -[group_60169] -[group_60170] -[group_60171] -[group_60172] -[group_60173] -[group_60174] -[group_60175] -[group_60176] -[group_60177] -[group_60178] -[group_60179] -[group_60180] -[group_60181] -[group_60182] -[group_60183] -[group_60184] -[group_60185] -[group_60186] -[group_60187] -[group_60188] -[group_60189] -[group_60190] -[group_60191] -[group_60192] -[group_60193] -[group_60194] -[group_60195] -[group_60196] -[group_60197] -[group_60198] -[group_60199] -[group_60200] -[group_60201] -[group_60202] -[group_60203] -[group_60204] -[group_60205] -[group_60206] -[group_60207] -[group_60208] -[group_60209] -[group_60210] -[group_60211] -[group_60212] -[group_60213] -[group_60214] -[group_60215] -[group_60216] -[group_60217] -[group_60218] -[group_60219] -[group_60220] -[group_60221] -[group_60222] -[group_60223] -[group_60224] -[group_60225] -[group_60226] -[group_60227] -[group_60228] -[group_60229] -[group_60230] -[group_60231] -[group_60232] -[group_60233] -[group_60234] -[group_60235] -[group_60236] -[group_60237] -[group_60238] -[group_60239] -[group_60240] -[group_60241] -[group_60242] -[group_60243] -[group_60244] -[group_60245] -[group_60246] -[group_60247] -[group_60248] -[group_60249] -[group_60250] -[group_60251] -[group_60252] -[group_60253] -[group_60254] -[group_60255] -[group_60256] -[group_60257] -[group_60258] -[group_60259] -[group_60260] -[group_60261] -[group_60262] -[group_60263] -[group_60264] -[group_60265] -[group_60266] -[group_60267] -[group_60268] -[group_60269] -[group_60270] -[group_60271] -[group_60272] -[group_60273] -[group_60274] -[group_60275] -[group_60276] -[group_60277] -[group_60278] -[group_60279] -[group_60280] -[group_60281] -[group_60282] -[group_60283] -[group_60284] -[group_60285] -[group_60286] -[group_60287] -[group_60288] -[group_60289] -[group_60290] -[group_60291] -[group_60292] -[group_60293] -[group_60294] -[group_60295] -[group_60296] -[group_60297] -[group_60298] -[group_60299] -[group_60300] -[group_60301] -[group_60302] -[group_60303] -[group_60304] -[group_60305] -[group_60306] -[group_60307] -[group_60308] -[group_60309] -[group_60310] -[group_60311] -[group_60312] -[group_60313] -[group_60314] -[group_60315] -[group_60316] -[group_60317] -[group_60318] -[group_60319] -[group_60320] -[group_60321] -[group_60322] -[group_60323] -[group_60324] -[group_60325] -[group_60326] -[group_60327] -[group_60328] -[group_60329] -[group_60330] -[group_60331] -[group_60332] -[group_60333] -[group_60334] -[group_60335] -[group_60336] -[group_60337] -[group_60338] -[group_60339] -[group_60340] -[group_60341] -[group_60342] -[group_60343] -[group_60344] -[group_60345] -[group_60346] -[group_60347] -[group_60348] -[group_60349] -[group_60350] -[group_60351] -[group_60352] -[group_60353] -[group_60354] -[group_60355] -[group_60356] -[group_60357] -[group_60358] -[group_60359] -[group_60360] -[group_60361] -[group_60362] -[group_60363] -[group_60364] -[group_60365] -[group_60366] -[group_60367] -[group_60368] -[group_60369] -[group_60370] -[group_60371] -[group_60372] -[group_60373] -[group_60374] -[group_60375] -[group_60376] -[group_60377] -[group_60378] -[group_60379] -[group_60380] -[group_60381] -[group_60382] -[group_60383] -[group_60384] -[group_60385] -[group_60386] -[group_60387] -[group_60388] -[group_60389] -[group_60390] -[group_60391] -[group_60392] -[group_60393] -[group_60394] -[group_60395] -[group_60396] -[group_60397] -[group_60398] -[group_60399] -[group_60400] -[group_60401] -[group_60402] -[group_60403] -[group_60404] -[group_60405] -[group_60406] -[group_60407] -[group_60408] -[group_60409] -[group_60410] -[group_60411] -[group_60412] -[group_60413] -[group_60414] -[group_60415] -[group_60416] -[group_60417] -[group_60418] -[group_60419] -[group_60420] -[group_60421] -[group_60422] -[group_60423] -[group_60424] -[group_60425] -[group_60426] -[group_60427] -[group_60428] -[group_60429] -[group_60430] -[group_60431] -[group_60432] -[group_60433] -[group_60434] -[group_60435] -[group_60436] -[group_60437] -[group_60438] -[group_60439] -[group_60440] -[group_60441] -[group_60442] -[group_60443] -[group_60444] -[group_60445] -[group_60446] -[group_60447] -[group_60448] -[group_60449] -[group_60450] -[group_60451] -[group_60452] -[group_60453] -[group_60454] -[group_60455] -[group_60456] -[group_60457] -[group_60458] -[group_60459] -[group_60460] -[group_60461] -[group_60462] -[group_60463] -[group_60464] -[group_60465] -[group_60466] -[group_60467] -[group_60468] -[group_60469] -[group_60470] -[group_60471] -[group_60472] -[group_60473] -[group_60474] -[group_60475] -[group_60476] -[group_60477] -[group_60478] -[group_60479] -[group_60480] -[group_60481] -[group_60482] -[group_60483] -[group_60484] -[group_60485] -[group_60486] -[group_60487] -[group_60488] -[group_60489] -[group_60490] -[group_60491] -[group_60492] -[group_60493] -[group_60494] -[group_60495] -[group_60496] -[group_60497] -[group_60498] -[group_60499] -[group_60500] -[group_60501] -[group_60502] -[group_60503] -[group_60504] -[group_60505] -[group_60506] -[group_60507] -[group_60508] -[group_60509] -[group_60510] -[group_60511] -[group_60512] -[group_60513] -[group_60514] -[group_60515] -[group_60516] -[group_60517] -[group_60518] -[group_60519] -[group_60520] -[group_60521] -[group_60522] -[group_60523] -[group_60524] -[group_60525] -[group_60526] -[group_60527] -[group_60528] -[group_60529] -[group_60530] -[group_60531] -[group_60532] -[group_60533] -[group_60534] -[group_60535] -[group_60536] -[group_60537] -[group_60538] -[group_60539] -[group_60540] -[group_60541] -[group_60542] -[group_60543] -[group_60544] -[group_60545] -[group_60546] -[group_60547] -[group_60548] -[group_60549] -[group_60550] -[group_60551] -[group_60552] -[group_60553] -[group_60554] -[group_60555] -[group_60556] -[group_60557] -[group_60558] -[group_60559] -[group_60560] -[group_60561] -[group_60562] -[group_60563] -[group_60564] -[group_60565] -[group_60566] -[group_60567] -[group_60568] -[group_60569] -[group_60570] -[group_60571] -[group_60572] -[group_60573] -[group_60574] -[group_60575] -[group_60576] -[group_60577] -[group_60578] -[group_60579] -[group_60580] -[group_60581] -[group_60582] -[group_60583] -[group_60584] -[group_60585] -[group_60586] -[group_60587] -[group_60588] -[group_60589] -[group_60590] -[group_60591] -[group_60592] -[group_60593] -[group_60594] -[group_60595] -[group_60596] -[group_60597] -[group_60598] -[group_60599] -[group_60600] -[group_60601] -[group_60602] -[group_60603] -[group_60604] -[group_60605] -[group_60606] -[group_60607] -[group_60608] -[group_60609] -[group_60610] -[group_60611] -[group_60612] -[group_60613] -[group_60614] -[group_60615] -[group_60616] -[group_60617] -[group_60618] -[group_60619] -[group_60620] -[group_60621] -[group_60622] -[group_60623] -[group_60624] -[group_60625] -[group_60626] -[group_60627] -[group_60628] -[group_60629] -[group_60630] -[group_60631] -[group_60632] -[group_60633] -[group_60634] -[group_60635] -[group_60636] -[group_60637] -[group_60638] -[group_60639] -[group_60640] -[group_60641] -[group_60642] -[group_60643] -[group_60644] -[group_60645] -[group_60646] -[group_60647] -[group_60648] -[group_60649] -[group_60650] -[group_60651] -[group_60652] -[group_60653] -[group_60654] -[group_60655] -[group_60656] -[group_60657] -[group_60658] -[group_60659] -[group_60660] -[group_60661] -[group_60662] -[group_60663] -[group_60664] -[group_60665] -[group_60666] -[group_60667] -[group_60668] -[group_60669] -[group_60670] -[group_60671] -[group_60672] -[group_60673] -[group_60674] -[group_60675] -[group_60676] -[group_60677] -[group_60678] -[group_60679] -[group_60680] -[group_60681] -[group_60682] -[group_60683] -[group_60684] -[group_60685] -[group_60686] -[group_60687] -[group_60688] -[group_60689] -[group_60690] -[group_60691] -[group_60692] -[group_60693] -[group_60694] -[group_60695] -[group_60696] -[group_60697] -[group_60698] -[group_60699] -[group_60700] -[group_60701] -[group_60702] -[group_60703] -[group_60704] -[group_60705] -[group_60706] -[group_60707] -[group_60708] -[group_60709] -[group_60710] -[group_60711] -[group_60712] -[group_60713] -[group_60714] -[group_60715] -[group_60716] -[group_60717] -[group_60718] -[group_60719] -[group_60720] -[group_60721] -[group_60722] -[group_60723] -[group_60724] -[group_60725] -[group_60726] -[group_60727] -[group_60728] -[group_60729] -[group_60730] -[group_60731] -[group_60732] -[group_60733] -[group_60734] -[group_60735] -[group_60736] -[group_60737] -[group_60738] -[group_60739] -[group_60740] -[group_60741] -[group_60742] -[group_60743] -[group_60744] -[group_60745] -[group_60746] -[group_60747] -[group_60748] -[group_60749] -[group_60750] -[group_60751] -[group_60752] -[group_60753] -[group_60754] -[group_60755] -[group_60756] -[group_60757] -[group_60758] -[group_60759] -[group_60760] -[group_60761] -[group_60762] -[group_60763] -[group_60764] -[group_60765] -[group_60766] -[group_60767] -[group_60768] -[group_60769] -[group_60770] -[group_60771] -[group_60772] -[group_60773] -[group_60774] -[group_60775] -[group_60776] -[group_60777] -[group_60778] -[group_60779] -[group_60780] -[group_60781] -[group_60782] -[group_60783] -[group_60784] -[group_60785] -[group_60786] -[group_60787] -[group_60788] -[group_60789] -[group_60790] -[group_60791] -[group_60792] -[group_60793] -[group_60794] -[group_60795] -[group_60796] -[group_60797] -[group_60798] -[group_60799] -[group_60800] -[group_60801] -[group_60802] -[group_60803] -[group_60804] -[group_60805] -[group_60806] -[group_60807] -[group_60808] -[group_60809] -[group_60810] -[group_60811] -[group_60812] -[group_60813] -[group_60814] -[group_60815] -[group_60816] -[group_60817] -[group_60818] -[group_60819] -[group_60820] -[group_60821] -[group_60822] -[group_60823] -[group_60824] -[group_60825] -[group_60826] -[group_60827] -[group_60828] -[group_60829] -[group_60830] -[group_60831] -[group_60832] -[group_60833] -[group_60834] -[group_60835] -[group_60836] -[group_60837] -[group_60838] -[group_60839] -[group_60840] -[group_60841] -[group_60842] -[group_60843] -[group_60844] -[group_60845] -[group_60846] -[group_60847] -[group_60848] -[group_60849] -[group_60850] -[group_60851] -[group_60852] -[group_60853] -[group_60854] -[group_60855] -[group_60856] -[group_60857] -[group_60858] -[group_60859] -[group_60860] -[group_60861] -[group_60862] -[group_60863] -[group_60864] -[group_60865] -[group_60866] -[group_60867] -[group_60868] -[group_60869] -[group_60870] -[group_60871] -[group_60872] -[group_60873] -[group_60874] -[group_60875] -[group_60876] -[group_60877] -[group_60878] -[group_60879] -[group_60880] -[group_60881] -[group_60882] -[group_60883] -[group_60884] -[group_60885] -[group_60886] -[group_60887] -[group_60888] -[group_60889] -[group_60890] -[group_60891] -[group_60892] -[group_60893] -[group_60894] -[group_60895] -[group_60896] -[group_60897] -[group_60898] -[group_60899] -[group_60900] -[group_60901] -[group_60902] -[group_60903] -[group_60904] -[group_60905] -[group_60906] -[group_60907] -[group_60908] -[group_60909] -[group_60910] -[group_60911] -[group_60912] -[group_60913] -[group_60914] -[group_60915] -[group_60916] -[group_60917] -[group_60918] -[group_60919] -[group_60920] -[group_60921] -[group_60922] -[group_60923] -[group_60924] -[group_60925] -[group_60926] -[group_60927] -[group_60928] -[group_60929] -[group_60930] -[group_60931] -[group_60932] -[group_60933] -[group_60934] -[group_60935] -[group_60936] -[group_60937] -[group_60938] -[group_60939] -[group_60940] -[group_60941] -[group_60942] -[group_60943] -[group_60944] -[group_60945] -[group_60946] -[group_60947] -[group_60948] -[group_60949] -[group_60950] -[group_60951] -[group_60952] -[group_60953] -[group_60954] -[group_60955] -[group_60956] -[group_60957] -[group_60958] -[group_60959] -[group_60960] -[group_60961] -[group_60962] -[group_60963] -[group_60964] -[group_60965] -[group_60966] -[group_60967] -[group_60968] -[group_60969] -[group_60970] -[group_60971] -[group_60972] -[group_60973] -[group_60974] -[group_60975] -[group_60976] -[group_60977] -[group_60978] -[group_60979] -[group_60980] -[group_60981] -[group_60982] -[group_60983] -[group_60984] -[group_60985] -[group_60986] -[group_60987] -[group_60988] -[group_60989] -[group_60990] -[group_60991] -[group_60992] -[group_60993] -[group_60994] -[group_60995] -[group_60996] -[group_60997] -[group_60998] -[group_60999] -[group_61000] -[group_61001] -[group_61002] -[group_61003] -[group_61004] -[group_61005] -[group_61006] -[group_61007] -[group_61008] -[group_61009] -[group_61010] -[group_61011] -[group_61012] -[group_61013] -[group_61014] -[group_61015] -[group_61016] -[group_61017] -[group_61018] -[group_61019] -[group_61020] -[group_61021] -[group_61022] -[group_61023] -[group_61024] -[group_61025] -[group_61026] -[group_61027] -[group_61028] -[group_61029] -[group_61030] -[group_61031] -[group_61032] -[group_61033] -[group_61034] -[group_61035] -[group_61036] -[group_61037] -[group_61038] -[group_61039] -[group_61040] -[group_61041] -[group_61042] -[group_61043] -[group_61044] -[group_61045] -[group_61046] -[group_61047] -[group_61048] -[group_61049] -[group_61050] -[group_61051] -[group_61052] -[group_61053] -[group_61054] -[group_61055] -[group_61056] -[group_61057] -[group_61058] -[group_61059] -[group_61060] -[group_61061] -[group_61062] -[group_61063] -[group_61064] -[group_61065] -[group_61066] -[group_61067] -[group_61068] -[group_61069] -[group_61070] -[group_61071] -[group_61072] -[group_61073] -[group_61074] -[group_61075] -[group_61076] -[group_61077] -[group_61078] -[group_61079] -[group_61080] -[group_61081] -[group_61082] -[group_61083] -[group_61084] -[group_61085] -[group_61086] -[group_61087] -[group_61088] -[group_61089] -[group_61090] -[group_61091] -[group_61092] -[group_61093] -[group_61094] -[group_61095] -[group_61096] -[group_61097] -[group_61098] -[group_61099] -[group_61100] -[group_61101] -[group_61102] -[group_61103] -[group_61104] -[group_61105] -[group_61106] -[group_61107] -[group_61108] -[group_61109] -[group_61110] -[group_61111] -[group_61112] -[group_61113] -[group_61114] -[group_61115] -[group_61116] -[group_61117] -[group_61118] -[group_61119] -[group_61120] -[group_61121] -[group_61122] -[group_61123] -[group_61124] -[group_61125] -[group_61126] -[group_61127] -[group_61128] -[group_61129] -[group_61130] -[group_61131] -[group_61132] -[group_61133] -[group_61134] -[group_61135] -[group_61136] -[group_61137] -[group_61138] -[group_61139] -[group_61140] -[group_61141] -[group_61142] -[group_61143] -[group_61144] -[group_61145] -[group_61146] -[group_61147] -[group_61148] -[group_61149] -[group_61150] -[group_61151] -[group_61152] -[group_61153] -[group_61154] -[group_61155] -[group_61156] -[group_61157] -[group_61158] -[group_61159] -[group_61160] -[group_61161] -[group_61162] -[group_61163] -[group_61164] -[group_61165] -[group_61166] -[group_61167] -[group_61168] -[group_61169] -[group_61170] -[group_61171] -[group_61172] -[group_61173] -[group_61174] -[group_61175] -[group_61176] -[group_61177] -[group_61178] -[group_61179] -[group_61180] -[group_61181] -[group_61182] -[group_61183] -[group_61184] -[group_61185] -[group_61186] -[group_61187] -[group_61188] -[group_61189] -[group_61190] -[group_61191] -[group_61192] -[group_61193] -[group_61194] -[group_61195] -[group_61196] -[group_61197] -[group_61198] -[group_61199] -[group_61200] -[group_61201] -[group_61202] -[group_61203] -[group_61204] -[group_61205] -[group_61206] -[group_61207] -[group_61208] -[group_61209] -[group_61210] -[group_61211] -[group_61212] -[group_61213] -[group_61214] -[group_61215] -[group_61216] -[group_61217] -[group_61218] -[group_61219] -[group_61220] -[group_61221] -[group_61222] -[group_61223] -[group_61224] -[group_61225] -[group_61226] -[group_61227] -[group_61228] -[group_61229] -[group_61230] -[group_61231] -[group_61232] -[group_61233] -[group_61234] -[group_61235] -[group_61236] -[group_61237] -[group_61238] -[group_61239] -[group_61240] -[group_61241] -[group_61242] -[group_61243] -[group_61244] -[group_61245] -[group_61246] -[group_61247] -[group_61248] -[group_61249] -[group_61250] -[group_61251] -[group_61252] -[group_61253] -[group_61254] -[group_61255] -[group_61256] -[group_61257] -[group_61258] -[group_61259] -[group_61260] -[group_61261] -[group_61262] -[group_61263] -[group_61264] -[group_61265] -[group_61266] -[group_61267] -[group_61268] -[group_61269] -[group_61270] -[group_61271] -[group_61272] -[group_61273] -[group_61274] -[group_61275] -[group_61276] -[group_61277] -[group_61278] -[group_61279] -[group_61280] -[group_61281] -[group_61282] -[group_61283] -[group_61284] -[group_61285] -[group_61286] -[group_61287] -[group_61288] -[group_61289] -[group_61290] -[group_61291] -[group_61292] -[group_61293] -[group_61294] -[group_61295] -[group_61296] -[group_61297] -[group_61298] -[group_61299] -[group_61300] -[group_61301] -[group_61302] -[group_61303] -[group_61304] -[group_61305] -[group_61306] -[group_61307] -[group_61308] -[group_61309] -[group_61310] -[group_61311] -[group_61312] -[group_61313] -[group_61314] -[group_61315] -[group_61316] -[group_61317] -[group_61318] -[group_61319] -[group_61320] -[group_61321] -[group_61322] -[group_61323] -[group_61324] -[group_61325] -[group_61326] -[group_61327] -[group_61328] -[group_61329] -[group_61330] -[group_61331] -[group_61332] -[group_61333] -[group_61334] -[group_61335] -[group_61336] -[group_61337] -[group_61338] -[group_61339] -[group_61340] -[group_61341] -[group_61342] -[group_61343] -[group_61344] -[group_61345] -[group_61346] -[group_61347] -[group_61348] -[group_61349] -[group_61350] -[group_61351] -[group_61352] -[group_61353] -[group_61354] -[group_61355] -[group_61356] -[group_61357] -[group_61358] -[group_61359] -[group_61360] -[group_61361] -[group_61362] -[group_61363] -[group_61364] -[group_61365] -[group_61366] -[group_61367] -[group_61368] -[group_61369] -[group_61370] -[group_61371] -[group_61372] -[group_61373] -[group_61374] -[group_61375] -[group_61376] -[group_61377] -[group_61378] -[group_61379] -[group_61380] -[group_61381] -[group_61382] -[group_61383] -[group_61384] -[group_61385] -[group_61386] -[group_61387] -[group_61388] -[group_61389] -[group_61390] -[group_61391] -[group_61392] -[group_61393] -[group_61394] -[group_61395] -[group_61396] -[group_61397] -[group_61398] -[group_61399] -[group_61400] -[group_61401] -[group_61402] -[group_61403] -[group_61404] -[group_61405] -[group_61406] -[group_61407] -[group_61408] -[group_61409] -[group_61410] -[group_61411] -[group_61412] -[group_61413] -[group_61414] -[group_61415] -[group_61416] -[group_61417] -[group_61418] -[group_61419] -[group_61420] -[group_61421] -[group_61422] -[group_61423] -[group_61424] -[group_61425] -[group_61426] -[group_61427] -[group_61428] -[group_61429] -[group_61430] -[group_61431] -[group_61432] -[group_61433] -[group_61434] -[group_61435] -[group_61436] -[group_61437] -[group_61438] -[group_61439] -[group_61440] -[group_61441] -[group_61442] -[group_61443] -[group_61444] -[group_61445] -[group_61446] -[group_61447] -[group_61448] -[group_61449] -[group_61450] -[group_61451] -[group_61452] -[group_61453] -[group_61454] -[group_61455] -[group_61456] -[group_61457] -[group_61458] -[group_61459] -[group_61460] -[group_61461] -[group_61462] -[group_61463] -[group_61464] -[group_61465] -[group_61466] -[group_61467] -[group_61468] -[group_61469] -[group_61470] -[group_61471] -[group_61472] -[group_61473] -[group_61474] -[group_61475] -[group_61476] -[group_61477] -[group_61478] -[group_61479] -[group_61480] -[group_61481] -[group_61482] -[group_61483] -[group_61484] -[group_61485] -[group_61486] -[group_61487] -[group_61488] -[group_61489] -[group_61490] -[group_61491] -[group_61492] -[group_61493] -[group_61494] -[group_61495] -[group_61496] -[group_61497] -[group_61498] -[group_61499] -[group_61500] -[group_61501] -[group_61502] -[group_61503] -[group_61504] -[group_61505] -[group_61506] -[group_61507] -[group_61508] -[group_61509] -[group_61510] -[group_61511] -[group_61512] -[group_61513] -[group_61514] -[group_61515] -[group_61516] -[group_61517] -[group_61518] -[group_61519] -[group_61520] -[group_61521] -[group_61522] -[group_61523] -[group_61524] -[group_61525] -[group_61526] -[group_61527] -[group_61528] -[group_61529] -[group_61530] -[group_61531] -[group_61532] -[group_61533] -[group_61534] -[group_61535] -[group_61536] -[group_61537] -[group_61538] -[group_61539] -[group_61540] -[group_61541] -[group_61542] -[group_61543] -[group_61544] -[group_61545] -[group_61546] -[group_61547] -[group_61548] -[group_61549] -[group_61550] -[group_61551] -[group_61552] -[group_61553] -[group_61554] -[group_61555] -[group_61556] -[group_61557] -[group_61558] -[group_61559] -[group_61560] -[group_61561] -[group_61562] -[group_61563] -[group_61564] -[group_61565] -[group_61566] -[group_61567] -[group_61568] -[group_61569] -[group_61570] -[group_61571] -[group_61572] -[group_61573] -[group_61574] -[group_61575] -[group_61576] -[group_61577] -[group_61578] -[group_61579] -[group_61580] -[group_61581] -[group_61582] -[group_61583] -[group_61584] -[group_61585] -[group_61586] -[group_61587] -[group_61588] -[group_61589] -[group_61590] -[group_61591] -[group_61592] -[group_61593] -[group_61594] -[group_61595] -[group_61596] -[group_61597] -[group_61598] -[group_61599] -[group_61600] -[group_61601] -[group_61602] -[group_61603] -[group_61604] -[group_61605] -[group_61606] -[group_61607] -[group_61608] -[group_61609] -[group_61610] -[group_61611] -[group_61612] -[group_61613] -[group_61614] -[group_61615] -[group_61616] -[group_61617] -[group_61618] -[group_61619] -[group_61620] -[group_61621] -[group_61622] -[group_61623] -[group_61624] -[group_61625] -[group_61626] -[group_61627] -[group_61628] -[group_61629] -[group_61630] -[group_61631] -[group_61632] -[group_61633] -[group_61634] -[group_61635] -[group_61636] -[group_61637] -[group_61638] -[group_61639] -[group_61640] -[group_61641] -[group_61642] -[group_61643] -[group_61644] -[group_61645] -[group_61646] -[group_61647] -[group_61648] -[group_61649] -[group_61650] -[group_61651] -[group_61652] -[group_61653] -[group_61654] -[group_61655] -[group_61656] -[group_61657] -[group_61658] -[group_61659] -[group_61660] -[group_61661] -[group_61662] -[group_61663] -[group_61664] -[group_61665] -[group_61666] -[group_61667] -[group_61668] -[group_61669] -[group_61670] -[group_61671] -[group_61672] -[group_61673] -[group_61674] -[group_61675] -[group_61676] -[group_61677] -[group_61678] -[group_61679] -[group_61680] -[group_61681] -[group_61682] -[group_61683] -[group_61684] -[group_61685] -[group_61686] -[group_61687] -[group_61688] -[group_61689] -[group_61690] -[group_61691] -[group_61692] -[group_61693] -[group_61694] -[group_61695] -[group_61696] -[group_61697] -[group_61698] -[group_61699] -[group_61700] -[group_61701] -[group_61702] -[group_61703] -[group_61704] -[group_61705] -[group_61706] -[group_61707] -[group_61708] -[group_61709] -[group_61710] -[group_61711] -[group_61712] -[group_61713] -[group_61714] -[group_61715] -[group_61716] -[group_61717] -[group_61718] -[group_61719] -[group_61720] -[group_61721] -[group_61722] -[group_61723] -[group_61724] -[group_61725] -[group_61726] -[group_61727] -[group_61728] -[group_61729] -[group_61730] -[group_61731] -[group_61732] -[group_61733] -[group_61734] -[group_61735] -[group_61736] -[group_61737] -[group_61738] -[group_61739] -[group_61740] -[group_61741] -[group_61742] -[group_61743] -[group_61744] -[group_61745] -[group_61746] -[group_61747] -[group_61748] -[group_61749] -[group_61750] -[group_61751] -[group_61752] -[group_61753] -[group_61754] -[group_61755] -[group_61756] -[group_61757] -[group_61758] -[group_61759] -[group_61760] -[group_61761] -[group_61762] -[group_61763] -[group_61764] -[group_61765] -[group_61766] -[group_61767] -[group_61768] -[group_61769] -[group_61770] -[group_61771] -[group_61772] -[group_61773] -[group_61774] -[group_61775] -[group_61776] -[group_61777] -[group_61778] -[group_61779] -[group_61780] -[group_61781] -[group_61782] -[group_61783] -[group_61784] -[group_61785] -[group_61786] -[group_61787] -[group_61788] -[group_61789] -[group_61790] -[group_61791] -[group_61792] -[group_61793] -[group_61794] -[group_61795] -[group_61796] -[group_61797] -[group_61798] -[group_61799] -[group_61800] -[group_61801] -[group_61802] -[group_61803] -[group_61804] -[group_61805] -[group_61806] -[group_61807] -[group_61808] -[group_61809] -[group_61810] -[group_61811] -[group_61812] -[group_61813] -[group_61814] -[group_61815] -[group_61816] -[group_61817] -[group_61818] -[group_61819] -[group_61820] -[group_61821] -[group_61822] -[group_61823] -[group_61824] -[group_61825] -[group_61826] -[group_61827] -[group_61828] -[group_61829] -[group_61830] -[group_61831] -[group_61832] -[group_61833] -[group_61834] -[group_61835] -[group_61836] -[group_61837] -[group_61838] -[group_61839] -[group_61840] -[group_61841] -[group_61842] -[group_61843] -[group_61844] -[group_61845] -[group_61846] -[group_61847] -[group_61848] -[group_61849] -[group_61850] -[group_61851] -[group_61852] -[group_61853] -[group_61854] -[group_61855] -[group_61856] -[group_61857] -[group_61858] -[group_61859] -[group_61860] -[group_61861] -[group_61862] -[group_61863] -[group_61864] -[group_61865] -[group_61866] -[group_61867] -[group_61868] -[group_61869] -[group_61870] -[group_61871] -[group_61872] -[group_61873] -[group_61874] -[group_61875] -[group_61876] -[group_61877] -[group_61878] -[group_61879] -[group_61880] -[group_61881] -[group_61882] -[group_61883] -[group_61884] -[group_61885] -[group_61886] -[group_61887] -[group_61888] -[group_61889] -[group_61890] -[group_61891] -[group_61892] -[group_61893] -[group_61894] -[group_61895] -[group_61896] -[group_61897] -[group_61898] -[group_61899] -[group_61900] -[group_61901] -[group_61902] -[group_61903] -[group_61904] -[group_61905] -[group_61906] -[group_61907] -[group_61908] -[group_61909] -[group_61910] -[group_61911] -[group_61912] -[group_61913] -[group_61914] -[group_61915] -[group_61916] -[group_61917] -[group_61918] -[group_61919] -[group_61920] -[group_61921] -[group_61922] -[group_61923] -[group_61924] -[group_61925] -[group_61926] -[group_61927] -[group_61928] -[group_61929] -[group_61930] -[group_61931] -[group_61932] -[group_61933] -[group_61934] -[group_61935] -[group_61936] -[group_61937] -[group_61938] -[group_61939] -[group_61940] -[group_61941] -[group_61942] -[group_61943] -[group_61944] -[group_61945] -[group_61946] -[group_61947] -[group_61948] -[group_61949] -[group_61950] -[group_61951] -[group_61952] -[group_61953] -[group_61954] -[group_61955] -[group_61956] -[group_61957] -[group_61958] -[group_61959] -[group_61960] -[group_61961] -[group_61962] -[group_61963] -[group_61964] -[group_61965] -[group_61966] -[group_61967] -[group_61968] -[group_61969] -[group_61970] -[group_61971] -[group_61972] -[group_61973] -[group_61974] -[group_61975] -[group_61976] -[group_61977] -[group_61978] -[group_61979] -[group_61980] -[group_61981] -[group_61982] -[group_61983] -[group_61984] -[group_61985] -[group_61986] -[group_61987] -[group_61988] -[group_61989] -[group_61990] -[group_61991] -[group_61992] -[group_61993] -[group_61994] -[group_61995] -[group_61996] -[group_61997] -[group_61998] -[group_61999] -[group_62000] -[group_62001] -[group_62002] -[group_62003] -[group_62004] -[group_62005] -[group_62006] -[group_62007] -[group_62008] -[group_62009] -[group_62010] -[group_62011] -[group_62012] -[group_62013] -[group_62014] -[group_62015] -[group_62016] -[group_62017] -[group_62018] -[group_62019] -[group_62020] -[group_62021] -[group_62022] -[group_62023] -[group_62024] -[group_62025] -[group_62026] -[group_62027] -[group_62028] -[group_62029] -[group_62030] -[group_62031] -[group_62032] -[group_62033] -[group_62034] -[group_62035] -[group_62036] -[group_62037] -[group_62038] -[group_62039] -[group_62040] -[group_62041] -[group_62042] -[group_62043] -[group_62044] -[group_62045] -[group_62046] -[group_62047] -[group_62048] -[group_62049] -[group_62050] -[group_62051] -[group_62052] -[group_62053] -[group_62054] -[group_62055] -[group_62056] -[group_62057] -[group_62058] -[group_62059] -[group_62060] -[group_62061] -[group_62062] -[group_62063] -[group_62064] -[group_62065] -[group_62066] -[group_62067] -[group_62068] -[group_62069] -[group_62070] -[group_62071] -[group_62072] -[group_62073] -[group_62074] -[group_62075] -[group_62076] -[group_62077] -[group_62078] -[group_62079] -[group_62080] -[group_62081] -[group_62082] -[group_62083] -[group_62084] -[group_62085] -[group_62086] -[group_62087] -[group_62088] -[group_62089] -[group_62090] -[group_62091] -[group_62092] -[group_62093] -[group_62094] -[group_62095] -[group_62096] -[group_62097] -[group_62098] -[group_62099] -[group_62100] -[group_62101] -[group_62102] -[group_62103] -[group_62104] -[group_62105] -[group_62106] -[group_62107] -[group_62108] -[group_62109] -[group_62110] -[group_62111] -[group_62112] -[group_62113] -[group_62114] -[group_62115] -[group_62116] -[group_62117] -[group_62118] -[group_62119] -[group_62120] -[group_62121] -[group_62122] -[group_62123] -[group_62124] -[group_62125] -[group_62126] -[group_62127] -[group_62128] -[group_62129] -[group_62130] -[group_62131] -[group_62132] -[group_62133] -[group_62134] -[group_62135] -[group_62136] -[group_62137] -[group_62138] -[group_62139] -[group_62140] -[group_62141] -[group_62142] -[group_62143] -[group_62144] -[group_62145] -[group_62146] -[group_62147] -[group_62148] -[group_62149] -[group_62150] -[group_62151] -[group_62152] -[group_62153] -[group_62154] -[group_62155] -[group_62156] -[group_62157] -[group_62158] -[group_62159] -[group_62160] -[group_62161] -[group_62162] -[group_62163] -[group_62164] -[group_62165] -[group_62166] -[group_62167] -[group_62168] -[group_62169] -[group_62170] -[group_62171] -[group_62172] -[group_62173] -[group_62174] -[group_62175] -[group_62176] -[group_62177] -[group_62178] -[group_62179] -[group_62180] -[group_62181] -[group_62182] -[group_62183] -[group_62184] -[group_62185] -[group_62186] -[group_62187] -[group_62188] -[group_62189] -[group_62190] -[group_62191] -[group_62192] -[group_62193] -[group_62194] -[group_62195] -[group_62196] -[group_62197] -[group_62198] -[group_62199] -[group_62200] -[group_62201] -[group_62202] -[group_62203] -[group_62204] -[group_62205] -[group_62206] -[group_62207] -[group_62208] -[group_62209] -[group_62210] -[group_62211] -[group_62212] -[group_62213] -[group_62214] -[group_62215] -[group_62216] -[group_62217] -[group_62218] -[group_62219] -[group_62220] -[group_62221] -[group_62222] -[group_62223] -[group_62224] -[group_62225] -[group_62226] -[group_62227] -[group_62228] -[group_62229] -[group_62230] -[group_62231] -[group_62232] -[group_62233] -[group_62234] -[group_62235] -[group_62236] -[group_62237] -[group_62238] -[group_62239] -[group_62240] -[group_62241] -[group_62242] -[group_62243] -[group_62244] -[group_62245] -[group_62246] -[group_62247] -[group_62248] -[group_62249] -[group_62250] -[group_62251] -[group_62252] -[group_62253] -[group_62254] -[group_62255] -[group_62256] -[group_62257] -[group_62258] -[group_62259] -[group_62260] -[group_62261] -[group_62262] -[group_62263] -[group_62264] -[group_62265] -[group_62266] -[group_62267] -[group_62268] -[group_62269] -[group_62270] -[group_62271] -[group_62272] -[group_62273] -[group_62274] -[group_62275] -[group_62276] -[group_62277] -[group_62278] -[group_62279] -[group_62280] -[group_62281] -[group_62282] -[group_62283] -[group_62284] -[group_62285] -[group_62286] -[group_62287] -[group_62288] -[group_62289] -[group_62290] -[group_62291] -[group_62292] -[group_62293] -[group_62294] -[group_62295] -[group_62296] -[group_62297] -[group_62298] -[group_62299] -[group_62300] -[group_62301] -[group_62302] -[group_62303] -[group_62304] -[group_62305] -[group_62306] -[group_62307] -[group_62308] -[group_62309] -[group_62310] -[group_62311] -[group_62312] -[group_62313] -[group_62314] -[group_62315] -[group_62316] -[group_62317] -[group_62318] -[group_62319] -[group_62320] -[group_62321] -[group_62322] -[group_62323] -[group_62324] -[group_62325] -[group_62326] -[group_62327] -[group_62328] -[group_62329] -[group_62330] -[group_62331] -[group_62332] -[group_62333] -[group_62334] -[group_62335] -[group_62336] -[group_62337] -[group_62338] -[group_62339] -[group_62340] -[group_62341] -[group_62342] -[group_62343] -[group_62344] -[group_62345] -[group_62346] -[group_62347] -[group_62348] -[group_62349] -[group_62350] -[group_62351] -[group_62352] -[group_62353] -[group_62354] -[group_62355] -[group_62356] -[group_62357] -[group_62358] -[group_62359] -[group_62360] -[group_62361] -[group_62362] -[group_62363] -[group_62364] -[group_62365] -[group_62366] -[group_62367] -[group_62368] -[group_62369] -[group_62370] -[group_62371] -[group_62372] -[group_62373] -[group_62374] -[group_62375] -[group_62376] -[group_62377] -[group_62378] -[group_62379] -[group_62380] -[group_62381] -[group_62382] -[group_62383] -[group_62384] -[group_62385] -[group_62386] -[group_62387] -[group_62388] -[group_62389] -[group_62390] -[group_62391] -[group_62392] -[group_62393] -[group_62394] -[group_62395] -[group_62396] -[group_62397] -[group_62398] -[group_62399] -[group_62400] -[group_62401] -[group_62402] -[group_62403] -[group_62404] -[group_62405] -[group_62406] -[group_62407] -[group_62408] -[group_62409] -[group_62410] -[group_62411] -[group_62412] -[group_62413] -[group_62414] -[group_62415] -[group_62416] -[group_62417] -[group_62418] -[group_62419] -[group_62420] -[group_62421] -[group_62422] -[group_62423] -[group_62424] -[group_62425] -[group_62426] -[group_62427] -[group_62428] -[group_62429] -[group_62430] -[group_62431] -[group_62432] -[group_62433] -[group_62434] -[group_62435] -[group_62436] -[group_62437] -[group_62438] -[group_62439] -[group_62440] -[group_62441] -[group_62442] -[group_62443] -[group_62444] -[group_62445] -[group_62446] -[group_62447] -[group_62448] -[group_62449] -[group_62450] -[group_62451] -[group_62452] -[group_62453] -[group_62454] -[group_62455] -[group_62456] -[group_62457] -[group_62458] -[group_62459] -[group_62460] -[group_62461] -[group_62462] -[group_62463] -[group_62464] -[group_62465] -[group_62466] -[group_62467] -[group_62468] -[group_62469] -[group_62470] -[group_62471] -[group_62472] -[group_62473] -[group_62474] -[group_62475] -[group_62476] -[group_62477] -[group_62478] -[group_62479] -[group_62480] -[group_62481] -[group_62482] -[group_62483] -[group_62484] -[group_62485] -[group_62486] -[group_62487] -[group_62488] -[group_62489] -[group_62490] -[group_62491] -[group_62492] -[group_62493] -[group_62494] -[group_62495] -[group_62496] -[group_62497] -[group_62498] -[group_62499] -[group_62500] -[group_62501] -[group_62502] -[group_62503] -[group_62504] -[group_62505] -[group_62506] -[group_62507] -[group_62508] -[group_62509] -[group_62510] -[group_62511] -[group_62512] -[group_62513] -[group_62514] -[group_62515] -[group_62516] -[group_62517] -[group_62518] -[group_62519] -[group_62520] -[group_62521] -[group_62522] -[group_62523] -[group_62524] -[group_62525] -[group_62526] -[group_62527] -[group_62528] -[group_62529] -[group_62530] -[group_62531] -[group_62532] -[group_62533] -[group_62534] -[group_62535] -[group_62536] -[group_62537] -[group_62538] -[group_62539] -[group_62540] -[group_62541] -[group_62542] -[group_62543] -[group_62544] -[group_62545] -[group_62546] -[group_62547] -[group_62548] -[group_62549] -[group_62550] -[group_62551] -[group_62552] -[group_62553] -[group_62554] -[group_62555] -[group_62556] -[group_62557] -[group_62558] -[group_62559] -[group_62560] -[group_62561] -[group_62562] -[group_62563] -[group_62564] -[group_62565] -[group_62566] -[group_62567] -[group_62568] -[group_62569] -[group_62570] -[group_62571] -[group_62572] -[group_62573] -[group_62574] -[group_62575] -[group_62576] -[group_62577] -[group_62578] -[group_62579] -[group_62580] -[group_62581] -[group_62582] -[group_62583] -[group_62584] -[group_62585] -[group_62586] -[group_62587] -[group_62588] -[group_62589] -[group_62590] -[group_62591] -[group_62592] -[group_62593] -[group_62594] -[group_62595] -[group_62596] -[group_62597] -[group_62598] -[group_62599] -[group_62600] -[group_62601] -[group_62602] -[group_62603] -[group_62604] -[group_62605] -[group_62606] -[group_62607] -[group_62608] -[group_62609] -[group_62610] -[group_62611] -[group_62612] -[group_62613] -[group_62614] -[group_62615] -[group_62616] -[group_62617] -[group_62618] -[group_62619] -[group_62620] -[group_62621] -[group_62622] -[group_62623] -[group_62624] -[group_62625] -[group_62626] -[group_62627] -[group_62628] -[group_62629] -[group_62630] -[group_62631] -[group_62632] -[group_62633] -[group_62634] -[group_62635] -[group_62636] -[group_62637] -[group_62638] -[group_62639] -[group_62640] -[group_62641] -[group_62642] -[group_62643] -[group_62644] -[group_62645] -[group_62646] -[group_62647] -[group_62648] -[group_62649] -[group_62650] -[group_62651] -[group_62652] -[group_62653] -[group_62654] -[group_62655] -[group_62656] -[group_62657] -[group_62658] -[group_62659] -[group_62660] -[group_62661] -[group_62662] -[group_62663] -[group_62664] -[group_62665] -[group_62666] -[group_62667] -[group_62668] -[group_62669] -[group_62670] -[group_62671] -[group_62672] -[group_62673] -[group_62674] -[group_62675] -[group_62676] -[group_62677] -[group_62678] -[group_62679] -[group_62680] -[group_62681] -[group_62682] -[group_62683] -[group_62684] -[group_62685] -[group_62686] -[group_62687] -[group_62688] -[group_62689] -[group_62690] -[group_62691] -[group_62692] -[group_62693] -[group_62694] -[group_62695] -[group_62696] -[group_62697] -[group_62698] -[group_62699] -[group_62700] -[group_62701] -[group_62702] -[group_62703] -[group_62704] -[group_62705] -[group_62706] -[group_62707] -[group_62708] -[group_62709] -[group_62710] -[group_62711] -[group_62712] -[group_62713] -[group_62714] -[group_62715] -[group_62716] -[group_62717] -[group_62718] -[group_62719] -[group_62720] -[group_62721] -[group_62722] -[group_62723] -[group_62724] -[group_62725] -[group_62726] -[group_62727] -[group_62728] -[group_62729] -[group_62730] -[group_62731] -[group_62732] -[group_62733] -[group_62734] -[group_62735] -[group_62736] -[group_62737] -[group_62738] -[group_62739] -[group_62740] -[group_62741] -[group_62742] -[group_62743] -[group_62744] -[group_62745] -[group_62746] -[group_62747] -[group_62748] -[group_62749] -[group_62750] -[group_62751] -[group_62752] -[group_62753] -[group_62754] -[group_62755] -[group_62756] -[group_62757] -[group_62758] -[group_62759] -[group_62760] -[group_62761] -[group_62762] -[group_62763] -[group_62764] -[group_62765] -[group_62766] -[group_62767] -[group_62768] -[group_62769] -[group_62770] -[group_62771] -[group_62772] -[group_62773] -[group_62774] -[group_62775] -[group_62776] -[group_62777] -[group_62778] -[group_62779] -[group_62780] -[group_62781] -[group_62782] -[group_62783] -[group_62784] -[group_62785] -[group_62786] -[group_62787] -[group_62788] -[group_62789] -[group_62790] -[group_62791] -[group_62792] -[group_62793] -[group_62794] -[group_62795] -[group_62796] -[group_62797] -[group_62798] -[group_62799] -[group_62800] -[group_62801] -[group_62802] -[group_62803] -[group_62804] -[group_62805] -[group_62806] -[group_62807] -[group_62808] -[group_62809] -[group_62810] -[group_62811] -[group_62812] -[group_62813] -[group_62814] -[group_62815] -[group_62816] -[group_62817] -[group_62818] -[group_62819] -[group_62820] -[group_62821] -[group_62822] -[group_62823] -[group_62824] -[group_62825] -[group_62826] -[group_62827] -[group_62828] -[group_62829] -[group_62830] -[group_62831] -[group_62832] -[group_62833] -[group_62834] -[group_62835] -[group_62836] -[group_62837] -[group_62838] -[group_62839] -[group_62840] -[group_62841] -[group_62842] -[group_62843] -[group_62844] -[group_62845] -[group_62846] -[group_62847] -[group_62848] -[group_62849] -[group_62850] -[group_62851] -[group_62852] -[group_62853] -[group_62854] -[group_62855] -[group_62856] -[group_62857] -[group_62858] -[group_62859] -[group_62860] -[group_62861] -[group_62862] -[group_62863] -[group_62864] -[group_62865] -[group_62866] -[group_62867] -[group_62868] -[group_62869] -[group_62870] -[group_62871] -[group_62872] -[group_62873] -[group_62874] -[group_62875] -[group_62876] -[group_62877] -[group_62878] -[group_62879] -[group_62880] -[group_62881] -[group_62882] -[group_62883] -[group_62884] -[group_62885] -[group_62886] -[group_62887] -[group_62888] -[group_62889] -[group_62890] -[group_62891] -[group_62892] -[group_62893] -[group_62894] -[group_62895] -[group_62896] -[group_62897] -[group_62898] -[group_62899] -[group_62900] -[group_62901] -[group_62902] -[group_62903] -[group_62904] -[group_62905] -[group_62906] -[group_62907] -[group_62908] -[group_62909] -[group_62910] -[group_62911] -[group_62912] -[group_62913] -[group_62914] -[group_62915] -[group_62916] -[group_62917] -[group_62918] -[group_62919] -[group_62920] -[group_62921] -[group_62922] -[group_62923] -[group_62924] -[group_62925] -[group_62926] -[group_62927] -[group_62928] -[group_62929] -[group_62930] -[group_62931] -[group_62932] -[group_62933] -[group_62934] -[group_62935] -[group_62936] -[group_62937] -[group_62938] -[group_62939] -[group_62940] -[group_62941] -[group_62942] -[group_62943] -[group_62944] -[group_62945] -[group_62946] -[group_62947] -[group_62948] -[group_62949] -[group_62950] -[group_62951] -[group_62952] -[group_62953] -[group_62954] -[group_62955] -[group_62956] -[group_62957] -[group_62958] -[group_62959] -[group_62960] -[group_62961] -[group_62962] -[group_62963] -[group_62964] -[group_62965] -[group_62966] -[group_62967] -[group_62968] -[group_62969] -[group_62970] -[group_62971] -[group_62972] -[group_62973] -[group_62974] -[group_62975] -[group_62976] -[group_62977] -[group_62978] -[group_62979] -[group_62980] -[group_62981] -[group_62982] -[group_62983] -[group_62984] -[group_62985] -[group_62986] -[group_62987] -[group_62988] -[group_62989] -[group_62990] -[group_62991] -[group_62992] -[group_62993] -[group_62994] -[group_62995] -[group_62996] -[group_62997] -[group_62998] -[group_62999] -[group_63000] -[group_63001] -[group_63002] -[group_63003] -[group_63004] -[group_63005] -[group_63006] -[group_63007] -[group_63008] -[group_63009] -[group_63010] -[group_63011] -[group_63012] -[group_63013] -[group_63014] -[group_63015] -[group_63016] -[group_63017] -[group_63018] -[group_63019] -[group_63020] -[group_63021] -[group_63022] -[group_63023] -[group_63024] -[group_63025] -[group_63026] -[group_63027] -[group_63028] -[group_63029] -[group_63030] -[group_63031] -[group_63032] -[group_63033] -[group_63034] -[group_63035] -[group_63036] -[group_63037] -[group_63038] -[group_63039] -[group_63040] -[group_63041] -[group_63042] -[group_63043] -[group_63044] -[group_63045] -[group_63046] -[group_63047] -[group_63048] -[group_63049] -[group_63050] -[group_63051] -[group_63052] -[group_63053] -[group_63054] -[group_63055] -[group_63056] -[group_63057] -[group_63058] -[group_63059] -[group_63060] -[group_63061] -[group_63062] -[group_63063] -[group_63064] -[group_63065] -[group_63066] -[group_63067] -[group_63068] -[group_63069] -[group_63070] -[group_63071] -[group_63072] -[group_63073] -[group_63074] -[group_63075] -[group_63076] -[group_63077] -[group_63078] -[group_63079] -[group_63080] -[group_63081] -[group_63082] -[group_63083] -[group_63084] -[group_63085] -[group_63086] -[group_63087] -[group_63088] -[group_63089] -[group_63090] -[group_63091] -[group_63092] -[group_63093] -[group_63094] -[group_63095] -[group_63096] -[group_63097] -[group_63098] -[group_63099] -[group_63100] -[group_63101] -[group_63102] -[group_63103] -[group_63104] -[group_63105] -[group_63106] -[group_63107] -[group_63108] -[group_63109] -[group_63110] -[group_63111] -[group_63112] -[group_63113] -[group_63114] -[group_63115] -[group_63116] -[group_63117] -[group_63118] -[group_63119] -[group_63120] -[group_63121] -[group_63122] -[group_63123] -[group_63124] -[group_63125] -[group_63126] -[group_63127] -[group_63128] -[group_63129] -[group_63130] -[group_63131] -[group_63132] -[group_63133] -[group_63134] -[group_63135] -[group_63136] -[group_63137] -[group_63138] -[group_63139] -[group_63140] -[group_63141] -[group_63142] -[group_63143] -[group_63144] -[group_63145] -[group_63146] -[group_63147] -[group_63148] -[group_63149] -[group_63150] -[group_63151] -[group_63152] -[group_63153] -[group_63154] -[group_63155] -[group_63156] -[group_63157] -[group_63158] -[group_63159] -[group_63160] -[group_63161] -[group_63162] -[group_63163] -[group_63164] -[group_63165] -[group_63166] -[group_63167] -[group_63168] -[group_63169] -[group_63170] -[group_63171] -[group_63172] -[group_63173] -[group_63174] -[group_63175] -[group_63176] -[group_63177] -[group_63178] -[group_63179] -[group_63180] -[group_63181] -[group_63182] -[group_63183] -[group_63184] -[group_63185] -[group_63186] -[group_63187] -[group_63188] -[group_63189] -[group_63190] -[group_63191] -[group_63192] -[group_63193] -[group_63194] -[group_63195] -[group_63196] -[group_63197] -[group_63198] -[group_63199] -[group_63200] -[group_63201] -[group_63202] -[group_63203] -[group_63204] -[group_63205] -[group_63206] -[group_63207] -[group_63208] -[group_63209] -[group_63210] -[group_63211] -[group_63212] -[group_63213] -[group_63214] -[group_63215] -[group_63216] -[group_63217] -[group_63218] -[group_63219] -[group_63220] -[group_63221] -[group_63222] -[group_63223] -[group_63224] -[group_63225] -[group_63226] -[group_63227] -[group_63228] -[group_63229] -[group_63230] -[group_63231] -[group_63232] -[group_63233] -[group_63234] -[group_63235] -[group_63236] -[group_63237] -[group_63238] -[group_63239] -[group_63240] -[group_63241] -[group_63242] -[group_63243] -[group_63244] -[group_63245] -[group_63246] -[group_63247] -[group_63248] -[group_63249] -[group_63250] -[group_63251] -[group_63252] -[group_63253] -[group_63254] -[group_63255] -[group_63256] -[group_63257] -[group_63258] -[group_63259] -[group_63260] -[group_63261] -[group_63262] -[group_63263] -[group_63264] -[group_63265] -[group_63266] -[group_63267] -[group_63268] -[group_63269] -[group_63270] -[group_63271] -[group_63272] -[group_63273] -[group_63274] -[group_63275] -[group_63276] -[group_63277] -[group_63278] -[group_63279] -[group_63280] -[group_63281] -[group_63282] -[group_63283] -[group_63284] -[group_63285] -[group_63286] -[group_63287] -[group_63288] -[group_63289] -[group_63290] -[group_63291] -[group_63292] -[group_63293] -[group_63294] -[group_63295] -[group_63296] -[group_63297] -[group_63298] -[group_63299] -[group_63300] -[group_63301] -[group_63302] -[group_63303] -[group_63304] -[group_63305] -[group_63306] -[group_63307] -[group_63308] -[group_63309] -[group_63310] -[group_63311] -[group_63312] -[group_63313] -[group_63314] -[group_63315] -[group_63316] -[group_63317] -[group_63318] -[group_63319] -[group_63320] -[group_63321] -[group_63322] -[group_63323] -[group_63324] -[group_63325] -[group_63326] -[group_63327] -[group_63328] -[group_63329] -[group_63330] -[group_63331] -[group_63332] -[group_63333] -[group_63334] -[group_63335] -[group_63336] -[group_63337] -[group_63338] -[group_63339] -[group_63340] -[group_63341] -[group_63342] -[group_63343] -[group_63344] -[group_63345] -[group_63346] -[group_63347] -[group_63348] -[group_63349] -[group_63350] -[group_63351] -[group_63352] -[group_63353] -[group_63354] -[group_63355] -[group_63356] -[group_63357] -[group_63358] -[group_63359] -[group_63360] -[group_63361] -[group_63362] -[group_63363] -[group_63364] -[group_63365] -[group_63366] -[group_63367] -[group_63368] -[group_63369] -[group_63370] -[group_63371] -[group_63372] -[group_63373] -[group_63374] -[group_63375] -[group_63376] -[group_63377] -[group_63378] -[group_63379] -[group_63380] -[group_63381] -[group_63382] -[group_63383] -[group_63384] -[group_63385] -[group_63386] -[group_63387] -[group_63388] -[group_63389] -[group_63390] -[group_63391] -[group_63392] -[group_63393] -[group_63394] -[group_63395] -[group_63396] -[group_63397] -[group_63398] -[group_63399] -[group_63400] -[group_63401] -[group_63402] -[group_63403] -[group_63404] -[group_63405] -[group_63406] -[group_63407] -[group_63408] -[group_63409] -[group_63410] -[group_63411] -[group_63412] -[group_63413] -[group_63414] -[group_63415] -[group_63416] -[group_63417] -[group_63418] -[group_63419] -[group_63420] -[group_63421] -[group_63422] -[group_63423] -[group_63424] -[group_63425] -[group_63426] -[group_63427] -[group_63428] -[group_63429] -[group_63430] -[group_63431] -[group_63432] -[group_63433] -[group_63434] -[group_63435] -[group_63436] -[group_63437] -[group_63438] -[group_63439] -[group_63440] -[group_63441] -[group_63442] -[group_63443] -[group_63444] -[group_63445] -[group_63446] -[group_63447] -[group_63448] -[group_63449] -[group_63450] -[group_63451] -[group_63452] -[group_63453] -[group_63454] -[group_63455] -[group_63456] -[group_63457] -[group_63458] -[group_63459] -[group_63460] -[group_63461] -[group_63462] -[group_63463] -[group_63464] -[group_63465] -[group_63466] -[group_63467] -[group_63468] -[group_63469] -[group_63470] -[group_63471] -[group_63472] -[group_63473] -[group_63474] -[group_63475] -[group_63476] -[group_63477] -[group_63478] -[group_63479] -[group_63480] -[group_63481] -[group_63482] -[group_63483] -[group_63484] -[group_63485] -[group_63486] -[group_63487] -[group_63488] -[group_63489] -[group_63490] -[group_63491] -[group_63492] -[group_63493] -[group_63494] -[group_63495] -[group_63496] -[group_63497] -[group_63498] -[group_63499] -[group_63500] -[group_63501] -[group_63502] -[group_63503] -[group_63504] -[group_63505] -[group_63506] -[group_63507] -[group_63508] -[group_63509] -[group_63510] -[group_63511] -[group_63512] -[group_63513] -[group_63514] -[group_63515] -[group_63516] -[group_63517] -[group_63518] -[group_63519] -[group_63520] -[group_63521] -[group_63522] -[group_63523] -[group_63524] -[group_63525] -[group_63526] -[group_63527] -[group_63528] -[group_63529] -[group_63530] -[group_63531] -[group_63532] -[group_63533] -[group_63534] -[group_63535] -[group_63536] -[group_63537] -[group_63538] -[group_63539] -[group_63540] -[group_63541] -[group_63542] -[group_63543] -[group_63544] -[group_63545] -[group_63546] -[group_63547] -[group_63548] -[group_63549] -[group_63550] -[group_63551] -[group_63552] -[group_63553] -[group_63554] -[group_63555] -[group_63556] -[group_63557] -[group_63558] -[group_63559] -[group_63560] -[group_63561] -[group_63562] -[group_63563] -[group_63564] -[group_63565] -[group_63566] -[group_63567] -[group_63568] -[group_63569] -[group_63570] -[group_63571] -[group_63572] -[group_63573] -[group_63574] -[group_63575] -[group_63576] -[group_63577] -[group_63578] -[group_63579] -[group_63580] -[group_63581] -[group_63582] -[group_63583] -[group_63584] -[group_63585] -[group_63586] -[group_63587] -[group_63588] -[group_63589] -[group_63590] -[group_63591] -[group_63592] -[group_63593] -[group_63594] -[group_63595] -[group_63596] -[group_63597] -[group_63598] -[group_63599] -[group_63600] -[group_63601] -[group_63602] -[group_63603] -[group_63604] -[group_63605] -[group_63606] -[group_63607] -[group_63608] -[group_63609] -[group_63610] -[group_63611] -[group_63612] -[group_63613] -[group_63614] -[group_63615] -[group_63616] -[group_63617] -[group_63618] -[group_63619] -[group_63620] -[group_63621] -[group_63622] -[group_63623] -[group_63624] -[group_63625] -[group_63626] -[group_63627] -[group_63628] -[group_63629] -[group_63630] -[group_63631] -[group_63632] -[group_63633] -[group_63634] -[group_63635] -[group_63636] -[group_63637] -[group_63638] -[group_63639] -[group_63640] -[group_63641] -[group_63642] -[group_63643] -[group_63644] -[group_63645] -[group_63646] -[group_63647] -[group_63648] -[group_63649] -[group_63650] -[group_63651] -[group_63652] -[group_63653] -[group_63654] -[group_63655] -[group_63656] -[group_63657] -[group_63658] -[group_63659] -[group_63660] -[group_63661] -[group_63662] -[group_63663] -[group_63664] -[group_63665] -[group_63666] -[group_63667] -[group_63668] -[group_63669] -[group_63670] -[group_63671] -[group_63672] -[group_63673] -[group_63674] -[group_63675] -[group_63676] -[group_63677] -[group_63678] -[group_63679] -[group_63680] -[group_63681] -[group_63682] -[group_63683] -[group_63684] -[group_63685] -[group_63686] -[group_63687] -[group_63688] -[group_63689] -[group_63690] -[group_63691] -[group_63692] -[group_63693] -[group_63694] -[group_63695] -[group_63696] -[group_63697] -[group_63698] -[group_63699] -[group_63700] -[group_63701] -[group_63702] -[group_63703] -[group_63704] -[group_63705] -[group_63706] -[group_63707] -[group_63708] -[group_63709] -[group_63710] -[group_63711] -[group_63712] -[group_63713] -[group_63714] -[group_63715] -[group_63716] -[group_63717] -[group_63718] -[group_63719] -[group_63720] -[group_63721] -[group_63722] -[group_63723] -[group_63724] -[group_63725] -[group_63726] -[group_63727] -[group_63728] -[group_63729] -[group_63730] -[group_63731] -[group_63732] -[group_63733] -[group_63734] -[group_63735] -[group_63736] -[group_63737] -[group_63738] -[group_63739] -[group_63740] -[group_63741] -[group_63742] -[group_63743] -[group_63744] -[group_63745] -[group_63746] -[group_63747] -[group_63748] -[group_63749] -[group_63750] -[group_63751] -[group_63752] -[group_63753] -[group_63754] -[group_63755] -[group_63756] -[group_63757] -[group_63758] -[group_63759] -[group_63760] -[group_63761] -[group_63762] -[group_63763] -[group_63764] -[group_63765] -[group_63766] -[group_63767] -[group_63768] -[group_63769] -[group_63770] -[group_63771] -[group_63772] -[group_63773] -[group_63774] -[group_63775] -[group_63776] -[group_63777] -[group_63778] -[group_63779] -[group_63780] -[group_63781] -[group_63782] -[group_63783] -[group_63784] -[group_63785] -[group_63786] -[group_63787] -[group_63788] -[group_63789] -[group_63790] -[group_63791] -[group_63792] -[group_63793] -[group_63794] -[group_63795] -[group_63796] -[group_63797] -[group_63798] -[group_63799] -[group_63800] -[group_63801] -[group_63802] -[group_63803] -[group_63804] -[group_63805] -[group_63806] -[group_63807] -[group_63808] -[group_63809] -[group_63810] -[group_63811] -[group_63812] -[group_63813] -[group_63814] -[group_63815] -[group_63816] -[group_63817] -[group_63818] -[group_63819] -[group_63820] -[group_63821] -[group_63822] -[group_63823] -[group_63824] -[group_63825] -[group_63826] -[group_63827] -[group_63828] -[group_63829] -[group_63830] -[group_63831] -[group_63832] -[group_63833] -[group_63834] -[group_63835] -[group_63836] -[group_63837] -[group_63838] -[group_63839] -[group_63840] -[group_63841] -[group_63842] -[group_63843] -[group_63844] -[group_63845] -[group_63846] -[group_63847] -[group_63848] -[group_63849] -[group_63850] -[group_63851] -[group_63852] -[group_63853] -[group_63854] -[group_63855] -[group_63856] -[group_63857] -[group_63858] -[group_63859] -[group_63860] -[group_63861] -[group_63862] -[group_63863] -[group_63864] -[group_63865] -[group_63866] -[group_63867] -[group_63868] -[group_63869] -[group_63870] -[group_63871] -[group_63872] -[group_63873] -[group_63874] -[group_63875] -[group_63876] -[group_63877] -[group_63878] -[group_63879] -[group_63880] -[group_63881] -[group_63882] -[group_63883] -[group_63884] -[group_63885] -[group_63886] -[group_63887] -[group_63888] -[group_63889] -[group_63890] -[group_63891] -[group_63892] -[group_63893] -[group_63894] -[group_63895] -[group_63896] -[group_63897] -[group_63898] -[group_63899] -[group_63900] -[group_63901] -[group_63902] -[group_63903] -[group_63904] -[group_63905] -[group_63906] -[group_63907] -[group_63908] -[group_63909] -[group_63910] -[group_63911] -[group_63912] -[group_63913] -[group_63914] -[group_63915] -[group_63916] -[group_63917] -[group_63918] -[group_63919] -[group_63920] -[group_63921] -[group_63922] -[group_63923] -[group_63924] -[group_63925] -[group_63926] -[group_63927] -[group_63928] -[group_63929] -[group_63930] -[group_63931] -[group_63932] -[group_63933] -[group_63934] -[group_63935] -[group_63936] -[group_63937] -[group_63938] -[group_63939] -[group_63940] -[group_63941] -[group_63942] -[group_63943] -[group_63944] -[group_63945] -[group_63946] -[group_63947] -[group_63948] -[group_63949] -[group_63950] -[group_63951] -[group_63952] -[group_63953] -[group_63954] -[group_63955] -[group_63956] -[group_63957] -[group_63958] -[group_63959] -[group_63960] -[group_63961] -[group_63962] -[group_63963] -[group_63964] -[group_63965] -[group_63966] -[group_63967] -[group_63968] -[group_63969] -[group_63970] -[group_63971] -[group_63972] -[group_63973] -[group_63974] -[group_63975] -[group_63976] -[group_63977] -[group_63978] -[group_63979] -[group_63980] -[group_63981] -[group_63982] -[group_63983] -[group_63984] -[group_63985] -[group_63986] -[group_63987] -[group_63988] -[group_63989] -[group_63990] -[group_63991] -[group_63992] -[group_63993] -[group_63994] -[group_63995] -[group_63996] -[group_63997] -[group_63998] -[group_63999] -[group_64000] -[group_64001] -[group_64002] -[group_64003] -[group_64004] -[group_64005] -[group_64006] -[group_64007] -[group_64008] -[group_64009] -[group_64010] -[group_64011] -[group_64012] -[group_64013] -[group_64014] -[group_64015] -[group_64016] -[group_64017] -[group_64018] -[group_64019] -[group_64020] -[group_64021] -[group_64022] -[group_64023] -[group_64024] -[group_64025] -[group_64026] -[group_64027] -[group_64028] -[group_64029] -[group_64030] -[group_64031] -[group_64032] -[group_64033] -[group_64034] -[group_64035] -[group_64036] -[group_64037] -[group_64038] -[group_64039] -[group_64040] -[group_64041] -[group_64042] -[group_64043] -[group_64044] -[group_64045] -[group_64046] -[group_64047] -[group_64048] -[group_64049] -[group_64050] -[group_64051] -[group_64052] -[group_64053] -[group_64054] -[group_64055] -[group_64056] -[group_64057] -[group_64058] -[group_64059] -[group_64060] -[group_64061] -[group_64062] -[group_64063] -[group_64064] -[group_64065] -[group_64066] -[group_64067] -[group_64068] -[group_64069] -[group_64070] -[group_64071] -[group_64072] -[group_64073] -[group_64074] -[group_64075] -[group_64076] -[group_64077] -[group_64078] -[group_64079] -[group_64080] -[group_64081] -[group_64082] -[group_64083] -[group_64084] -[group_64085] -[group_64086] -[group_64087] -[group_64088] -[group_64089] -[group_64090] -[group_64091] -[group_64092] -[group_64093] -[group_64094] -[group_64095] -[group_64096] -[group_64097] -[group_64098] -[group_64099] -[group_64100] -[group_64101] -[group_64102] -[group_64103] -[group_64104] -[group_64105] -[group_64106] -[group_64107] -[group_64108] -[group_64109] -[group_64110] -[group_64111] -[group_64112] -[group_64113] -[group_64114] -[group_64115] -[group_64116] -[group_64117] -[group_64118] -[group_64119] -[group_64120] -[group_64121] -[group_64122] -[group_64123] -[group_64124] -[group_64125] -[group_64126] -[group_64127] -[group_64128] -[group_64129] -[group_64130] -[group_64131] -[group_64132] -[group_64133] -[group_64134] -[group_64135] -[group_64136] -[group_64137] -[group_64138] -[group_64139] -[group_64140] -[group_64141] -[group_64142] -[group_64143] -[group_64144] -[group_64145] -[group_64146] -[group_64147] -[group_64148] -[group_64149] -[group_64150] -[group_64151] -[group_64152] -[group_64153] -[group_64154] -[group_64155] -[group_64156] -[group_64157] -[group_64158] -[group_64159] -[group_64160] -[group_64161] -[group_64162] -[group_64163] -[group_64164] -[group_64165] -[group_64166] -[group_64167] -[group_64168] -[group_64169] -[group_64170] -[group_64171] -[group_64172] -[group_64173] -[group_64174] -[group_64175] -[group_64176] -[group_64177] -[group_64178] -[group_64179] -[group_64180] -[group_64181] -[group_64182] -[group_64183] -[group_64184] -[group_64185] -[group_64186] -[group_64187] -[group_64188] -[group_64189] -[group_64190] -[group_64191] -[group_64192] -[group_64193] -[group_64194] -[group_64195] -[group_64196] -[group_64197] -[group_64198] -[group_64199] -[group_64200] -[group_64201] -[group_64202] -[group_64203] -[group_64204] -[group_64205] -[group_64206] -[group_64207] -[group_64208] -[group_64209] -[group_64210] -[group_64211] -[group_64212] -[group_64213] -[group_64214] -[group_64215] -[group_64216] -[group_64217] -[group_64218] -[group_64219] -[group_64220] -[group_64221] -[group_64222] -[group_64223] -[group_64224] -[group_64225] -[group_64226] -[group_64227] -[group_64228] -[group_64229] -[group_64230] -[group_64231] -[group_64232] -[group_64233] -[group_64234] -[group_64235] -[group_64236] -[group_64237] -[group_64238] -[group_64239] -[group_64240] -[group_64241] -[group_64242] -[group_64243] -[group_64244] -[group_64245] -[group_64246] -[group_64247] -[group_64248] -[group_64249] -[group_64250] -[group_64251] -[group_64252] -[group_64253] -[group_64254] -[group_64255] -[group_64256] -[group_64257] -[group_64258] -[group_64259] -[group_64260] -[group_64261] -[group_64262] -[group_64263] -[group_64264] -[group_64265] -[group_64266] -[group_64267] -[group_64268] -[group_64269] -[group_64270] -[group_64271] -[group_64272] -[group_64273] -[group_64274] -[group_64275] -[group_64276] -[group_64277] -[group_64278] -[group_64279] -[group_64280] -[group_64281] -[group_64282] -[group_64283] -[group_64284] -[group_64285] -[group_64286] -[group_64287] -[group_64288] -[group_64289] -[group_64290] -[group_64291] -[group_64292] -[group_64293] -[group_64294] -[group_64295] -[group_64296] -[group_64297] -[group_64298] -[group_64299] -[group_64300] -[group_64301] -[group_64302] -[group_64303] -[group_64304] -[group_64305] -[group_64306] -[group_64307] -[group_64308] -[group_64309] -[group_64310] -[group_64311] -[group_64312] -[group_64313] -[group_64314] -[group_64315] -[group_64316] -[group_64317] -[group_64318] -[group_64319] -[group_64320] -[group_64321] -[group_64322] -[group_64323] -[group_64324] -[group_64325] -[group_64326] -[group_64327] -[group_64328] -[group_64329] -[group_64330] -[group_64331] -[group_64332] -[group_64333] -[group_64334] -[group_64335] -[group_64336] -[group_64337] -[group_64338] -[group_64339] -[group_64340] -[group_64341] -[group_64342] -[group_64343] -[group_64344] -[group_64345] -[group_64346] -[group_64347] -[group_64348] -[group_64349] -[group_64350] -[group_64351] -[group_64352] -[group_64353] -[group_64354] -[group_64355] -[group_64356] -[group_64357] -[group_64358] -[group_64359] -[group_64360] -[group_64361] -[group_64362] -[group_64363] -[group_64364] -[group_64365] -[group_64366] -[group_64367] -[group_64368] -[group_64369] -[group_64370] -[group_64371] -[group_64372] -[group_64373] -[group_64374] -[group_64375] -[group_64376] -[group_64377] -[group_64378] -[group_64379] -[group_64380] -[group_64381] -[group_64382] -[group_64383] -[group_64384] -[group_64385] -[group_64386] -[group_64387] -[group_64388] -[group_64389] -[group_64390] -[group_64391] -[group_64392] -[group_64393] -[group_64394] -[group_64395] -[group_64396] -[group_64397] -[group_64398] -[group_64399] -[group_64400] -[group_64401] -[group_64402] -[group_64403] -[group_64404] -[group_64405] -[group_64406] -[group_64407] -[group_64408] -[group_64409] -[group_64410] -[group_64411] -[group_64412] -[group_64413] -[group_64414] -[group_64415] -[group_64416] -[group_64417] -[group_64418] -[group_64419] -[group_64420] -[group_64421] -[group_64422] -[group_64423] -[group_64424] -[group_64425] -[group_64426] -[group_64427] -[group_64428] -[group_64429] -[group_64430] -[group_64431] -[group_64432] -[group_64433] -[group_64434] -[group_64435] -[group_64436] -[group_64437] -[group_64438] -[group_64439] -[group_64440] -[group_64441] -[group_64442] -[group_64443] -[group_64444] -[group_64445] -[group_64446] -[group_64447] -[group_64448] -[group_64449] -[group_64450] -[group_64451] -[group_64452] -[group_64453] -[group_64454] -[group_64455] -[group_64456] -[group_64457] -[group_64458] -[group_64459] -[group_64460] -[group_64461] -[group_64462] -[group_64463] -[group_64464] -[group_64465] -[group_64466] -[group_64467] -[group_64468] -[group_64469] -[group_64470] -[group_64471] -[group_64472] -[group_64473] -[group_64474] -[group_64475] -[group_64476] -[group_64477] -[group_64478] -[group_64479] -[group_64480] -[group_64481] -[group_64482] -[group_64483] -[group_64484] -[group_64485] -[group_64486] -[group_64487] -[group_64488] -[group_64489] -[group_64490] -[group_64491] -[group_64492] -[group_64493] -[group_64494] -[group_64495] -[group_64496] -[group_64497] -[group_64498] -[group_64499] -[group_64500] -[group_64501] -[group_64502] -[group_64503] -[group_64504] -[group_64505] -[group_64506] -[group_64507] -[group_64508] -[group_64509] -[group_64510] -[group_64511] -[group_64512] -[group_64513] -[group_64514] -[group_64515] -[group_64516] -[group_64517] -[group_64518] -[group_64519] -[group_64520] -[group_64521] -[group_64522] -[group_64523] -[group_64524] -[group_64525] -[group_64526] -[group_64527] -[group_64528] -[group_64529] -[group_64530] -[group_64531] -[group_64532] -[group_64533] -[group_64534] -[group_64535] -[group_64536] -[group_64537] -[group_64538] -[group_64539] -[group_64540] -[group_64541] -[group_64542] -[group_64543] -[group_64544] -[group_64545] -[group_64546] -[group_64547] -[group_64548] -[group_64549] -[group_64550] -[group_64551] -[group_64552] -[group_64553] -[group_64554] -[group_64555] -[group_64556] -[group_64557] -[group_64558] -[group_64559] -[group_64560] -[group_64561] -[group_64562] -[group_64563] -[group_64564] -[group_64565] -[group_64566] -[group_64567] -[group_64568] -[group_64569] -[group_64570] -[group_64571] -[group_64572] -[group_64573] -[group_64574] -[group_64575] -[group_64576] -[group_64577] -[group_64578] -[group_64579] -[group_64580] -[group_64581] -[group_64582] -[group_64583] -[group_64584] -[group_64585] -[group_64586] -[group_64587] -[group_64588] -[group_64589] -[group_64590] -[group_64591] -[group_64592] -[group_64593] -[group_64594] -[group_64595] -[group_64596] -[group_64597] -[group_64598] -[group_64599] -[group_64600] -[group_64601] -[group_64602] -[group_64603] -[group_64604] -[group_64605] -[group_64606] -[group_64607] -[group_64608] -[group_64609] -[group_64610] -[group_64611] -[group_64612] -[group_64613] -[group_64614] -[group_64615] -[group_64616] -[group_64617] -[group_64618] -[group_64619] -[group_64620] -[group_64621] -[group_64622] -[group_64623] -[group_64624] -[group_64625] -[group_64626] -[group_64627] -[group_64628] -[group_64629] -[group_64630] -[group_64631] -[group_64632] -[group_64633] -[group_64634] -[group_64635] -[group_64636] -[group_64637] -[group_64638] -[group_64639] -[group_64640] -[group_64641] -[group_64642] -[group_64643] -[group_64644] -[group_64645] -[group_64646] -[group_64647] -[group_64648] -[group_64649] -[group_64650] -[group_64651] -[group_64652] -[group_64653] -[group_64654] -[group_64655] -[group_64656] -[group_64657] -[group_64658] -[group_64659] -[group_64660] -[group_64661] -[group_64662] -[group_64663] -[group_64664] -[group_64665] -[group_64666] -[group_64667] -[group_64668] -[group_64669] -[group_64670] -[group_64671] -[group_64672] -[group_64673] -[group_64674] -[group_64675] -[group_64676] -[group_64677] -[group_64678] -[group_64679] -[group_64680] -[group_64681] -[group_64682] -[group_64683] -[group_64684] -[group_64685] -[group_64686] -[group_64687] -[group_64688] -[group_64689] -[group_64690] -[group_64691] -[group_64692] -[group_64693] -[group_64694] -[group_64695] -[group_64696] -[group_64697] -[group_64698] -[group_64699] -[group_64700] -[group_64701] -[group_64702] -[group_64703] -[group_64704] -[group_64705] -[group_64706] -[group_64707] -[group_64708] -[group_64709] -[group_64710] -[group_64711] -[group_64712] -[group_64713] -[group_64714] -[group_64715] -[group_64716] -[group_64717] -[group_64718] -[group_64719] -[group_64720] -[group_64721] -[group_64722] -[group_64723] -[group_64724] -[group_64725] -[group_64726] -[group_64727] -[group_64728] -[group_64729] -[group_64730] -[group_64731] -[group_64732] -[group_64733] -[group_64734] -[group_64735] -[group_64736] -[group_64737] -[group_64738] -[group_64739] -[group_64740] -[group_64741] -[group_64742] -[group_64743] -[group_64744] -[group_64745] -[group_64746] -[group_64747] -[group_64748] -[group_64749] -[group_64750] -[group_64751] -[group_64752] -[group_64753] -[group_64754] -[group_64755] -[group_64756] -[group_64757] -[group_64758] -[group_64759] -[group_64760] -[group_64761] -[group_64762] -[group_64763] -[group_64764] -[group_64765] -[group_64766] -[group_64767] -[group_64768] -[group_64769] -[group_64770] -[group_64771] -[group_64772] -[group_64773] -[group_64774] -[group_64775] -[group_64776] -[group_64777] -[group_64778] -[group_64779] -[group_64780] -[group_64781] -[group_64782] -[group_64783] -[group_64784] -[group_64785] -[group_64786] -[group_64787] -[group_64788] -[group_64789] -[group_64790] -[group_64791] -[group_64792] -[group_64793] -[group_64794] -[group_64795] -[group_64796] -[group_64797] -[group_64798] -[group_64799] -[group_64800] -[group_64801] -[group_64802] -[group_64803] -[group_64804] -[group_64805] -[group_64806] -[group_64807] -[group_64808] -[group_64809] -[group_64810] -[group_64811] -[group_64812] -[group_64813] -[group_64814] -[group_64815] -[group_64816] -[group_64817] -[group_64818] -[group_64819] -[group_64820] -[group_64821] -[group_64822] -[group_64823] -[group_64824] -[group_64825] -[group_64826] -[group_64827] -[group_64828] -[group_64829] -[group_64830] -[group_64831] -[group_64832] -[group_64833] -[group_64834] -[group_64835] -[group_64836] -[group_64837] -[group_64838] -[group_64839] -[group_64840] -[group_64841] -[group_64842] -[group_64843] -[group_64844] -[group_64845] -[group_64846] -[group_64847] -[group_64848] -[group_64849] -[group_64850] -[group_64851] -[group_64852] -[group_64853] -[group_64854] -[group_64855] -[group_64856] -[group_64857] -[group_64858] -[group_64859] -[group_64860] -[group_64861] -[group_64862] -[group_64863] -[group_64864] -[group_64865] -[group_64866] -[group_64867] -[group_64868] -[group_64869] -[group_64870] -[group_64871] -[group_64872] -[group_64873] -[group_64874] -[group_64875] -[group_64876] -[group_64877] -[group_64878] -[group_64879] -[group_64880] -[group_64881] -[group_64882] -[group_64883] -[group_64884] -[group_64885] -[group_64886] -[group_64887] -[group_64888] -[group_64889] -[group_64890] -[group_64891] -[group_64892] -[group_64893] -[group_64894] -[group_64895] -[group_64896] -[group_64897] -[group_64898] -[group_64899] -[group_64900] -[group_64901] -[group_64902] -[group_64903] -[group_64904] -[group_64905] -[group_64906] -[group_64907] -[group_64908] -[group_64909] -[group_64910] -[group_64911] -[group_64912] -[group_64913] -[group_64914] -[group_64915] -[group_64916] -[group_64917] -[group_64918] -[group_64919] -[group_64920] -[group_64921] -[group_64922] -[group_64923] -[group_64924] -[group_64925] -[group_64926] -[group_64927] -[group_64928] -[group_64929] -[group_64930] -[group_64931] -[group_64932] -[group_64933] -[group_64934] -[group_64935] -[group_64936] -[group_64937] -[group_64938] -[group_64939] -[group_64940] -[group_64941] -[group_64942] -[group_64943] -[group_64944] -[group_64945] -[group_64946] -[group_64947] -[group_64948] -[group_64949] -[group_64950] -[group_64951] -[group_64952] -[group_64953] -[group_64954] -[group_64955] -[group_64956] -[group_64957] -[group_64958] -[group_64959] -[group_64960] -[group_64961] -[group_64962] -[group_64963] -[group_64964] -[group_64965] -[group_64966] -[group_64967] -[group_64968] -[group_64969] -[group_64970] -[group_64971] -[group_64972] -[group_64973] -[group_64974] -[group_64975] -[group_64976] -[group_64977] -[group_64978] -[group_64979] -[group_64980] -[group_64981] -[group_64982] -[group_64983] -[group_64984] -[group_64985] -[group_64986] -[group_64987] -[group_64988] -[group_64989] -[group_64990] -[group_64991] -[group_64992] -[group_64993] -[group_64994] -[group_64995] -[group_64996] -[group_64997] -[group_64998] -[group_64999] -[group_65000] -[group_65001] -[group_65002] -[group_65003] -[group_65004] -[group_65005] -[group_65006] -[group_65007] -[group_65008] -[group_65009] -[group_65010] -[group_65011] -[group_65012] -[group_65013] -[group_65014] -[group_65015] -[group_65016] -[group_65017] -[group_65018] -[group_65019] -[group_65020] -[group_65021] -[group_65022] -[group_65023] -[group_65024] -[group_65025] -[group_65026] -[group_65027] -[group_65028] -[group_65029] -[group_65030] -[group_65031] -[group_65032] -[group_65033] -[group_65034] -[group_65035] -[group_65036] -[group_65037] -[group_65038] -[group_65039] -[group_65040] -[group_65041] -[group_65042] -[group_65043] -[group_65044] -[group_65045] -[group_65046] -[group_65047] -[group_65048] -[group_65049] -[group_65050] -[group_65051] -[group_65052] -[group_65053] -[group_65054] -[group_65055] -[group_65056] -[group_65057] -[group_65058] -[group_65059] -[group_65060] -[group_65061] -[group_65062] -[group_65063] -[group_65064] -[group_65065] -[group_65066] -[group_65067] -[group_65068] -[group_65069] -[group_65070] -[group_65071] -[group_65072] -[group_65073] -[group_65074] -[group_65075] -[group_65076] -[group_65077] -[group_65078] -[group_65079] -[group_65080] -[group_65081] -[group_65082] -[group_65083] -[group_65084] -[group_65085] -[group_65086] -[group_65087] -[group_65088] -[group_65089] -[group_65090] -[group_65091] -[group_65092] -[group_65093] -[group_65094] -[group_65095] -[group_65096] -[group_65097] -[group_65098] -[group_65099] -[group_65100] -[group_65101] -[group_65102] -[group_65103] -[group_65104] -[group_65105] -[group_65106] -[group_65107] -[group_65108] -[group_65109] -[group_65110] -[group_65111] -[group_65112] -[group_65113] -[group_65114] -[group_65115] -[group_65116] -[group_65117] -[group_65118] -[group_65119] -[group_65120] -[group_65121] -[group_65122] -[group_65123] -[group_65124] -[group_65125] -[group_65126] -[group_65127] -[group_65128] -[group_65129] -[group_65130] -[group_65131] -[group_65132] -[group_65133] -[group_65134] -[group_65135] -[group_65136] -[group_65137] -[group_65138] -[group_65139] -[group_65140] -[group_65141] -[group_65142] -[group_65143] -[group_65144] -[group_65145] -[group_65146] -[group_65147] -[group_65148] -[group_65149] -[group_65150] -[group_65151] -[group_65152] -[group_65153] -[group_65154] -[group_65155] -[group_65156] -[group_65157] -[group_65158] -[group_65159] -[group_65160] -[group_65161] -[group_65162] -[group_65163] -[group_65164] -[group_65165] -[group_65166] -[group_65167] -[group_65168] -[group_65169] -[group_65170] -[group_65171] -[group_65172] -[group_65173] -[group_65174] -[group_65175] -[group_65176] -[group_65177] -[group_65178] -[group_65179] -[group_65180] -[group_65181] -[group_65182] -[group_65183] -[group_65184] -[group_65185] -[group_65186] -[group_65187] -[group_65188] -[group_65189] -[group_65190] -[group_65191] -[group_65192] -[group_65193] -[group_65194] -[group_65195] -[group_65196] -[group_65197] -[group_65198] -[group_65199] -[group_65200] -[group_65201] -[group_65202] -[group_65203] -[group_65204] -[group_65205] -[group_65206] -[group_65207] -[group_65208] -[group_65209] -[group_65210] -[group_65211] -[group_65212] -[group_65213] -[group_65214] -[group_65215] -[group_65216] -[group_65217] -[group_65218] -[group_65219] -[group_65220] -[group_65221] -[group_65222] -[group_65223] -[group_65224] -[group_65225] -[group_65226] -[group_65227] -[group_65228] -[group_65229] -[group_65230] -[group_65231] -[group_65232] -[group_65233] -[group_65234] -[group_65235] -[group_65236] -[group_65237] -[group_65238] -[group_65239] -[group_65240] -[group_65241] -[group_65242] -[group_65243] -[group_65244] -[group_65245] -[group_65246] -[group_65247] -[group_65248] -[group_65249] -[group_65250] -[group_65251] -[group_65252] -[group_65253] -[group_65254] -[group_65255] -[group_65256] -[group_65257] -[group_65258] -[group_65259] -[group_65260] -[group_65261] -[group_65262] -[group_65263] -[group_65264] -[group_65265] -[group_65266] -[group_65267] -[group_65268] -[group_65269] -[group_65270] -[group_65271] -[group_65272] -[group_65273] -[group_65274] -[group_65275] -[group_65276] -[group_65277] -[group_65278] -[group_65279] -[group_65280] -[group_65281] -[group_65282] -[group_65283] -[group_65284] -[group_65285] -[group_65286] -[group_65287] -[group_65288] -[group_65289] -[group_65290] -[group_65291] -[group_65292] -[group_65293] -[group_65294] -[group_65295] -[group_65296] -[group_65297] -[group_65298] -[group_65299] -[group_65300] -[group_65301] -[group_65302] -[group_65303] -[group_65304] -[group_65305] -[group_65306] -[group_65307] -[group_65308] -[group_65309] -[group_65310] -[group_65311] -[group_65312] -[group_65313] -[group_65314] -[group_65315] -[group_65316] -[group_65317] -[group_65318] -[group_65319] -[group_65320] -[group_65321] -[group_65322] -[group_65323] -[group_65324] -[group_65325] -[group_65326] -[group_65327] -[group_65328] -[group_65329] -[group_65330] -[group_65331] -[group_65332] -[group_65333] -[group_65334] -[group_65335] -[group_65336] -[group_65337] -[group_65338] -[group_65339] -[group_65340] -[group_65341] -[group_65342] -[group_65343] -[group_65344] -[group_65345] -[group_65346] -[group_65347] -[group_65348] -[group_65349] -[group_65350] -[group_65351] -[group_65352] -[group_65353] -[group_65354] -[group_65355] -[group_65356] -[group_65357] -[group_65358] -[group_65359] -[group_65360] -[group_65361] -[group_65362] -[group_65363] -[group_65364] -[group_65365] -[group_65366] -[group_65367] -[group_65368] -[group_65369] -[group_65370] -[group_65371] -[group_65372] -[group_65373] -[group_65374] -[group_65375] -[group_65376] -[group_65377] -[group_65378] -[group_65379] -[group_65380] -[group_65381] -[group_65382] -[group_65383] -[group_65384] -[group_65385] -[group_65386] -[group_65387] -[group_65388] -[group_65389] -[group_65390] -[group_65391] -[group_65392] -[group_65393] -[group_65394] -[group_65395] -[group_65396] -[group_65397] -[group_65398] -[group_65399] -[group_65400] -[group_65401] -[group_65402] -[group_65403] -[group_65404] -[group_65405] -[group_65406] -[group_65407] -[group_65408] -[group_65409] -[group_65410] -[group_65411] -[group_65412] -[group_65413] -[group_65414] -[group_65415] -[group_65416] -[group_65417] -[group_65418] -[group_65419] -[group_65420] -[group_65421] -[group_65422] -[group_65423] -[group_65424] -[group_65425] -[group_65426] -[group_65427] -[group_65428] -[group_65429] -[group_65430] -[group_65431] -[group_65432] -[group_65433] -[group_65434] -[group_65435] -[group_65436] -[group_65437] -[group_65438] -[group_65439] -[group_65440] -[group_65441] -[group_65442] -[group_65443] -[group_65444] -[group_65445] -[group_65446] -[group_65447] -[group_65448] -[group_65449] -[group_65450] -[group_65451] -[group_65452] -[group_65453] -[group_65454] -[group_65455] -[group_65456] -[group_65457] -[group_65458] -[group_65459] -[group_65460] -[group_65461] -[group_65462] -[group_65463] -[group_65464] -[group_65465] -[group_65466] -[group_65467] -[group_65468] -[group_65469] -[group_65470] -[group_65471] -[group_65472] -[group_65473] -[group_65474] -[group_65475] -[group_65476] -[group_65477] -[group_65478] -[group_65479] -[group_65480] -[group_65481] -[group_65482] -[group_65483] -[group_65484] -[group_65485] -[group_65486] -[group_65487] -[group_65488] -[group_65489] -[group_65490] -[group_65491] -[group_65492] -[group_65493] -[group_65494] -[group_65495] -[group_65496] -[group_65497] -[group_65498] -[group_65499] -[group_65500] -[group_65501] -[group_65502] -[group_65503] -[group_65504] -[group_65505] -[group_65506] -[group_65507] -[group_65508] -[group_65509] -[group_65510] -[group_65511] -[group_65512] -[group_65513] -[group_65514] -[group_65515] -[group_65516] -[group_65517] -[group_65518] -[group_65519] -[group_65520] -[group_65521] -[group_65522] -[group_65523] -[group_65524] -[group_65525] -[group_65526] -[group_65527] -[group_65528] -[group_65529] -[group_65530] -[group_65531] -[group_65532] -[group_65533] -[group_65534] -[group_65535] -[group_65536] -[group_65537] -[group_65538] -[group_65539] -[group_65540] -[group_65541] -[group_65542] -[group_65543] -[group_65544] -[group_65545] -[group_65546] -[group_65547] -[group_65548] -[group_65549] -[group_65550] -[group_65551] -[group_65552] -[group_65553] -[group_65554] -[group_65555] -[group_65556] -[group_65557] -[group_65558] -[group_65559] -[group_65560] -[group_65561] -[group_65562] -[group_65563] -[group_65564] -[group_65565] -[group_65566] -[group_65567] -[group_65568] -[group_65569] -[group_65570] -[group_65571] -[group_65572] -[group_65573] -[group_65574] -[group_65575] -[group_65576] -[group_65577] -[group_65578] -[group_65579] -[group_65580] -[group_65581] -[group_65582] -[group_65583] -[group_65584] -[group_65585] -[group_65586] -[group_65587] -[group_65588] -[group_65589] -[group_65590] -[group_65591] -[group_65592] -[group_65593] -[group_65594] -[group_65595] -[group_65596] -[group_65597] -[group_65598] -[group_65599] -[group_65600] -[group_65601] -[group_65602] -[group_65603] -[group_65604] -[group_65605] -[group_65606] -[group_65607] -[group_65608] -[group_65609] -[group_65610] -[group_65611] -[group_65612] -[group_65613] -[group_65614] -[group_65615] -[group_65616] -[group_65617] -[group_65618] -[group_65619] -[group_65620] -[group_65621] -[group_65622] -[group_65623] -[group_65624] -[group_65625] -[group_65626] -[group_65627] -[group_65628] -[group_65629] -[group_65630] -[group_65631] -[group_65632] -[group_65633] -[group_65634] -[group_65635] -[group_65636] -[group_65637] -[group_65638] -[group_65639] -[group_65640] -[group_65641] -[group_65642] -[group_65643] -[group_65644] -[group_65645] -[group_65646] -[group_65647] -[group_65648] -[group_65649] -[group_65650] -[group_65651] -[group_65652] -[group_65653] -[group_65654] -[group_65655] -[group_65656] -[group_65657] -[group_65658] -[group_65659] -[group_65660] -[group_65661] -[group_65662] -[group_65663] -[group_65664] -[group_65665] -[group_65666] -[group_65667] -[group_65668] -[group_65669] -[group_65670] -[group_65671] -[group_65672] -[group_65673] -[group_65674] -[group_65675] -[group_65676] -[group_65677] -[group_65678] -[group_65679] -[group_65680] -[group_65681] -[group_65682] -[group_65683] -[group_65684] -[group_65685] -[group_65686] -[group_65687] -[group_65688] -[group_65689] -[group_65690] -[group_65691] -[group_65692] -[group_65693] -[group_65694] -[group_65695] -[group_65696] -[group_65697] -[group_65698] -[group_65699] -[group_65700] -[group_65701] -[group_65702] -[group_65703] -[group_65704] -[group_65705] -[group_65706] -[group_65707] -[group_65708] -[group_65709] -[group_65710] -[group_65711] -[group_65712] -[group_65713] -[group_65714] -[group_65715] -[group_65716] -[group_65717] -[group_65718] -[group_65719] -[group_65720] -[group_65721] -[group_65722] -[group_65723] -[group_65724] -[group_65725] -[group_65726] -[group_65727] -[group_65728] -[group_65729] -[group_65730] -[group_65731] -[group_65732] -[group_65733] -[group_65734] -[group_65735] -[group_65736] -[group_65737] -[group_65738] -[group_65739] -[group_65740] -[group_65741] -[group_65742] -[group_65743] -[group_65744] -[group_65745] -[group_65746] -[group_65747] -[group_65748] -[group_65749] -[group_65750] -[group_65751] -[group_65752] -[group_65753] -[group_65754] -[group_65755] -[group_65756] -[group_65757] -[group_65758] -[group_65759] -[group_65760] -[group_65761] -[group_65762] -[group_65763] -[group_65764] -[group_65765] -[group_65766] -[group_65767] -[group_65768] -[group_65769] -[group_65770] -[group_65771] -[group_65772] -[group_65773] -[group_65774] -[group_65775] -[group_65776] -[group_65777] -[group_65778] -[group_65779] -[group_65780] -[group_65781] -[group_65782] -[group_65783] -[group_65784] -[group_65785] -[group_65786] -[group_65787] -[group_65788] -[group_65789] -[group_65790] -[group_65791] -[group_65792] -[group_65793] -[group_65794] -[group_65795] -[group_65796] -[group_65797] -[group_65798] -[group_65799] -[group_65800] -[group_65801] -[group_65802] -[group_65803] -[group_65804] -[group_65805] -[group_65806] -[group_65807] -[group_65808] -[group_65809] -[group_65810] -[group_65811] -[group_65812] -[group_65813] -[group_65814] -[group_65815] -[group_65816] -[group_65817] -[group_65818] -[group_65819] -[group_65820] -[group_65821] -[group_65822] -[group_65823] -[group_65824] -[group_65825] -[group_65826] -[group_65827] -[group_65828] -[group_65829] -[group_65830] -[group_65831] -[group_65832] -[group_65833] -[group_65834] -[group_65835] -[group_65836] -[group_65837] -[group_65838] -[group_65839] -[group_65840] -[group_65841] -[group_65842] -[group_65843] -[group_65844] -[group_65845] -[group_65846] -[group_65847] -[group_65848] -[group_65849] -[group_65850] -[group_65851] -[group_65852] -[group_65853] -[group_65854] -[group_65855] -[group_65856] -[group_65857] -[group_65858] -[group_65859] -[group_65860] -[group_65861] -[group_65862] -[group_65863] -[group_65864] -[group_65865] -[group_65866] -[group_65867] -[group_65868] -[group_65869] -[group_65870] -[group_65871] -[group_65872] -[group_65873] -[group_65874] -[group_65875] -[group_65876] -[group_65877] -[group_65878] -[group_65879] -[group_65880] -[group_65881] -[group_65882] -[group_65883] -[group_65884] -[group_65885] -[group_65886] -[group_65887] -[group_65888] -[group_65889] -[group_65890] -[group_65891] -[group_65892] -[group_65893] -[group_65894] -[group_65895] -[group_65896] -[group_65897] -[group_65898] -[group_65899] -[group_65900] -[group_65901] -[group_65902] -[group_65903] -[group_65904] -[group_65905] -[group_65906] -[group_65907] -[group_65908] -[group_65909] -[group_65910] -[group_65911] -[group_65912] -[group_65913] -[group_65914] -[group_65915] -[group_65916] -[group_65917] -[group_65918] -[group_65919] -[group_65920] -[group_65921] -[group_65922] -[group_65923] -[group_65924] -[group_65925] -[group_65926] -[group_65927] -[group_65928] -[group_65929] -[group_65930] -[group_65931] -[group_65932] -[group_65933] -[group_65934] -[group_65935] -[group_65936] -[group_65937] -[group_65938] -[group_65939] -[group_65940] -[group_65941] -[group_65942] -[group_65943] -[group_65944] -[group_65945] -[group_65946] -[group_65947] -[group_65948] -[group_65949] -[group_65950] -[group_65951] -[group_65952] -[group_65953] -[group_65954] -[group_65955] -[group_65956] -[group_65957] -[group_65958] -[group_65959] -[group_65960] -[group_65961] -[group_65962] -[group_65963] -[group_65964] -[group_65965] -[group_65966] -[group_65967] -[group_65968] -[group_65969] -[group_65970] -[group_65971] -[group_65972] -[group_65973] -[group_65974] -[group_65975] -[group_65976] -[group_65977] -[group_65978] -[group_65979] -[group_65980] -[group_65981] -[group_65982] -[group_65983] -[group_65984] -[group_65985] -[group_65986] -[group_65987] -[group_65988] -[group_65989] -[group_65990] -[group_65991] -[group_65992] -[group_65993] -[group_65994] -[group_65995] -[group_65996] -[group_65997] -[group_65998] -[group_65999] -[group_66000] -[group_66001] -[group_66002] -[group_66003] -[group_66004] -[group_66005] -[group_66006] -[group_66007] -[group_66008] -[group_66009] -[group_66010] -[group_66011] -[group_66012] -[group_66013] -[group_66014] -[group_66015] -[group_66016] -[group_66017] -[group_66018] -[group_66019] -[group_66020] -[group_66021] -[group_66022] -[group_66023] -[group_66024] -[group_66025] -[group_66026] -[group_66027] -[group_66028] -[group_66029] -[group_66030] -[group_66031] -[group_66032] -[group_66033] -[group_66034] -[group_66035] -[group_66036] -[group_66037] -[group_66038] -[group_66039] -[group_66040] -[group_66041] -[group_66042] -[group_66043] -[group_66044] -[group_66045] -[group_66046] -[group_66047] -[group_66048] -[group_66049] -[group_66050] -[group_66051] -[group_66052] -[group_66053] -[group_66054] -[group_66055] -[group_66056] -[group_66057] -[group_66058] -[group_66059] -[group_66060] -[group_66061] -[group_66062] -[group_66063] -[group_66064] -[group_66065] -[group_66066] -[group_66067] -[group_66068] -[group_66069] -[group_66070] -[group_66071] -[group_66072] -[group_66073] -[group_66074] -[group_66075] -[group_66076] -[group_66077] -[group_66078] -[group_66079] -[group_66080] -[group_66081] -[group_66082] -[group_66083] -[group_66084] -[group_66085] -[group_66086] -[group_66087] -[group_66088] -[group_66089] -[group_66090] -[group_66091] -[group_66092] -[group_66093] -[group_66094] -[group_66095] -[group_66096] -[group_66097] -[group_66098] -[group_66099] -[group_66100] -[group_66101] -[group_66102] -[group_66103] -[group_66104] -[group_66105] -[group_66106] -[group_66107] -[group_66108] -[group_66109] -[group_66110] -[group_66111] -[group_66112] -[group_66113] -[group_66114] -[group_66115] -[group_66116] -[group_66117] -[group_66118] -[group_66119] -[group_66120] -[group_66121] -[group_66122] -[group_66123] -[group_66124] -[group_66125] -[group_66126] -[group_66127] -[group_66128] -[group_66129] -[group_66130] -[group_66131] -[group_66132] -[group_66133] -[group_66134] -[group_66135] -[group_66136] -[group_66137] -[group_66138] -[group_66139] -[group_66140] -[group_66141] -[group_66142] -[group_66143] -[group_66144] -[group_66145] -[group_66146] -[group_66147] -[group_66148] -[group_66149] -[group_66150] -[group_66151] -[group_66152] -[group_66153] -[group_66154] -[group_66155] -[group_66156] -[group_66157] -[group_66158] -[group_66159] -[group_66160] -[group_66161] -[group_66162] -[group_66163] -[group_66164] -[group_66165] -[group_66166] -[group_66167] -[group_66168] -[group_66169] -[group_66170] -[group_66171] -[group_66172] -[group_66173] -[group_66174] -[group_66175] -[group_66176] -[group_66177] -[group_66178] -[group_66179] -[group_66180] -[group_66181] -[group_66182] -[group_66183] -[group_66184] -[group_66185] -[group_66186] -[group_66187] -[group_66188] -[group_66189] -[group_66190] -[group_66191] -[group_66192] -[group_66193] -[group_66194] -[group_66195] -[group_66196] -[group_66197] -[group_66198] -[group_66199] -[group_66200] -[group_66201] -[group_66202] -[group_66203] -[group_66204] -[group_66205] -[group_66206] -[group_66207] -[group_66208] -[group_66209] -[group_66210] -[group_66211] -[group_66212] -[group_66213] -[group_66214] -[group_66215] -[group_66216] -[group_66217] -[group_66218] -[group_66219] -[group_66220] -[group_66221] -[group_66222] -[group_66223] -[group_66224] -[group_66225] -[group_66226] -[group_66227] -[group_66228] -[group_66229] -[group_66230] -[group_66231] -[group_66232] -[group_66233] -[group_66234] -[group_66235] -[group_66236] -[group_66237] -[group_66238] -[group_66239] -[group_66240] -[group_66241] -[group_66242] -[group_66243] -[group_66244] -[group_66245] -[group_66246] -[group_66247] -[group_66248] -[group_66249] -[group_66250] -[group_66251] -[group_66252] -[group_66253] -[group_66254] -[group_66255] -[group_66256] -[group_66257] -[group_66258] -[group_66259] -[group_66260] -[group_66261] -[group_66262] -[group_66263] -[group_66264] -[group_66265] -[group_66266] -[group_66267] -[group_66268] -[group_66269] -[group_66270] -[group_66271] -[group_66272] -[group_66273] -[group_66274] -[group_66275] -[group_66276] -[group_66277] -[group_66278] -[group_66279] -[group_66280] -[group_66281] -[group_66282] -[group_66283] -[group_66284] -[group_66285] -[group_66286] -[group_66287] -[group_66288] -[group_66289] -[group_66290] -[group_66291] -[group_66292] -[group_66293] -[group_66294] -[group_66295] -[group_66296] -[group_66297] -[group_66298] -[group_66299] -[group_66300] -[group_66301] -[group_66302] -[group_66303] -[group_66304] -[group_66305] -[group_66306] -[group_66307] -[group_66308] -[group_66309] -[group_66310] -[group_66311] -[group_66312] -[group_66313] -[group_66314] -[group_66315] -[group_66316] -[group_66317] -[group_66318] -[group_66319] -[group_66320] -[group_66321] -[group_66322] -[group_66323] -[group_66324] -[group_66325] -[group_66326] -[group_66327] -[group_66328] -[group_66329] -[group_66330] -[group_66331] -[group_66332] -[group_66333] -[group_66334] -[group_66335] -[group_66336] -[group_66337] -[group_66338] -[group_66339] -[group_66340] -[group_66341] -[group_66342] -[group_66343] -[group_66344] -[group_66345] -[group_66346] -[group_66347] -[group_66348] -[group_66349] -[group_66350] -[group_66351] -[group_66352] -[group_66353] -[group_66354] -[group_66355] -[group_66356] -[group_66357] -[group_66358] -[group_66359] -[group_66360] -[group_66361] -[group_66362] -[group_66363] -[group_66364] -[group_66365] -[group_66366] -[group_66367] -[group_66368] -[group_66369] -[group_66370] -[group_66371] -[group_66372] -[group_66373] -[group_66374] -[group_66375] -[group_66376] -[group_66377] -[group_66378] -[group_66379] -[group_66380] -[group_66381] -[group_66382] -[group_66383] -[group_66384] -[group_66385] -[group_66386] -[group_66387] -[group_66388] -[group_66389] -[group_66390] -[group_66391] -[group_66392] -[group_66393] -[group_66394] -[group_66395] -[group_66396] -[group_66397] -[group_66398] -[group_66399] -[group_66400] -[group_66401] -[group_66402] -[group_66403] -[group_66404] -[group_66405] -[group_66406] -[group_66407] -[group_66408] -[group_66409] -[group_66410] -[group_66411] -[group_66412] -[group_66413] -[group_66414] -[group_66415] -[group_66416] -[group_66417] -[group_66418] -[group_66419] -[group_66420] -[group_66421] -[group_66422] -[group_66423] -[group_66424] -[group_66425] -[group_66426] -[group_66427] -[group_66428] -[group_66429] -[group_66430] -[group_66431] -[group_66432] -[group_66433] -[group_66434] -[group_66435] -[group_66436] -[group_66437] -[group_66438] -[group_66439] -[group_66440] -[group_66441] -[group_66442] -[group_66443] -[group_66444] -[group_66445] -[group_66446] -[group_66447] -[group_66448] -[group_66449] -[group_66450] -[group_66451] -[group_66452] -[group_66453] -[group_66454] -[group_66455] -[group_66456] -[group_66457] -[group_66458] -[group_66459] -[group_66460] -[group_66461] -[group_66462] -[group_66463] -[group_66464] -[group_66465] -[group_66466] -[group_66467] -[group_66468] -[group_66469] -[group_66470] -[group_66471] -[group_66472] -[group_66473] -[group_66474] -[group_66475] -[group_66476] -[group_66477] -[group_66478] -[group_66479] -[group_66480] -[group_66481] -[group_66482] -[group_66483] -[group_66484] -[group_66485] -[group_66486] -[group_66487] -[group_66488] -[group_66489] -[group_66490] -[group_66491] -[group_66492] -[group_66493] -[group_66494] -[group_66495] -[group_66496] -[group_66497] -[group_66498] -[group_66499] -[group_66500] -[group_66501] -[group_66502] -[group_66503] -[group_66504] -[group_66505] -[group_66506] -[group_66507] -[group_66508] -[group_66509] -[group_66510] -[group_66511] -[group_66512] -[group_66513] -[group_66514] -[group_66515] -[group_66516] -[group_66517] -[group_66518] -[group_66519] -[group_66520] -[group_66521] -[group_66522] -[group_66523] -[group_66524] -[group_66525] -[group_66526] -[group_66527] -[group_66528] -[group_66529] -[group_66530] -[group_66531] -[group_66532] -[group_66533] -[group_66534] -[group_66535] -[group_66536] -[group_66537] -[group_66538] -[group_66539] -[group_66540] -[group_66541] -[group_66542] -[group_66543] -[group_66544] -[group_66545] -[group_66546] -[group_66547] -[group_66548] -[group_66549] -[group_66550] -[group_66551] -[group_66552] -[group_66553] -[group_66554] -[group_66555] -[group_66556] -[group_66557] -[group_66558] -[group_66559] -[group_66560] -[group_66561] -[group_66562] -[group_66563] -[group_66564] -[group_66565] -[group_66566] -[group_66567] -[group_66568] -[group_66569] -[group_66570] -[group_66571] -[group_66572] -[group_66573] -[group_66574] -[group_66575] -[group_66576] -[group_66577] -[group_66578] -[group_66579] -[group_66580] -[group_66581] -[group_66582] -[group_66583] -[group_66584] -[group_66585] -[group_66586] -[group_66587] -[group_66588] -[group_66589] -[group_66590] -[group_66591] -[group_66592] -[group_66593] -[group_66594] -[group_66595] -[group_66596] -[group_66597] -[group_66598] -[group_66599] -[group_66600] -[group_66601] -[group_66602] -[group_66603] -[group_66604] -[group_66605] -[group_66606] -[group_66607] -[group_66608] -[group_66609] -[group_66610] -[group_66611] -[group_66612] -[group_66613] -[group_66614] -[group_66615] -[group_66616] -[group_66617] -[group_66618] -[group_66619] -[group_66620] -[group_66621] -[group_66622] -[group_66623] -[group_66624] -[group_66625] -[group_66626] -[group_66627] -[group_66628] -[group_66629] -[group_66630] -[group_66631] -[group_66632] -[group_66633] -[group_66634] -[group_66635] -[group_66636] -[group_66637] -[group_66638] -[group_66639] -[group_66640] -[group_66641] -[group_66642] -[group_66643] -[group_66644] -[group_66645] -[group_66646] -[group_66647] -[group_66648] -[group_66649] -[group_66650] -[group_66651] -[group_66652] -[group_66653] -[group_66654] -[group_66655] -[group_66656] -[group_66657] -[group_66658] -[group_66659] -[group_66660] -[group_66661] -[group_66662] -[group_66663] -[group_66664] -[group_66665] -[group_66666] -[group_66667] -[group_66668] -[group_66669] -[group_66670] -[group_66671] -[group_66672] -[group_66673] -[group_66674] -[group_66675] -[group_66676] -[group_66677] -[group_66678] -[group_66679] -[group_66680] -[group_66681] -[group_66682] -[group_66683] -[group_66684] -[group_66685] -[group_66686] -[group_66687] -[group_66688] -[group_66689] -[group_66690] -[group_66691] -[group_66692] -[group_66693] -[group_66694] -[group_66695] -[group_66696] -[group_66697] -[group_66698] -[group_66699] -[group_66700] -[group_66701] -[group_66702] -[group_66703] -[group_66704] -[group_66705] -[group_66706] -[group_66707] -[group_66708] -[group_66709] -[group_66710] -[group_66711] -[group_66712] -[group_66713] -[group_66714] -[group_66715] -[group_66716] -[group_66717] -[group_66718] -[group_66719] -[group_66720] -[group_66721] -[group_66722] -[group_66723] -[group_66724] -[group_66725] -[group_66726] -[group_66727] -[group_66728] -[group_66729] -[group_66730] -[group_66731] -[group_66732] -[group_66733] -[group_66734] -[group_66735] -[group_66736] -[group_66737] -[group_66738] -[group_66739] -[group_66740] -[group_66741] -[group_66742] -[group_66743] -[group_66744] -[group_66745] -[group_66746] -[group_66747] -[group_66748] -[group_66749] -[group_66750] -[group_66751] -[group_66752] -[group_66753] -[group_66754] -[group_66755] -[group_66756] -[group_66757] -[group_66758] -[group_66759] -[group_66760] -[group_66761] -[group_66762] -[group_66763] -[group_66764] -[group_66765] -[group_66766] -[group_66767] -[group_66768] -[group_66769] -[group_66770] -[group_66771] -[group_66772] -[group_66773] -[group_66774] -[group_66775] -[group_66776] -[group_66777] -[group_66778] -[group_66779] -[group_66780] -[group_66781] -[group_66782] -[group_66783] -[group_66784] -[group_66785] -[group_66786] -[group_66787] -[group_66788] -[group_66789] -[group_66790] -[group_66791] -[group_66792] -[group_66793] -[group_66794] -[group_66795] -[group_66796] -[group_66797] -[group_66798] -[group_66799] -[group_66800] -[group_66801] -[group_66802] -[group_66803] -[group_66804] -[group_66805] -[group_66806] -[group_66807] -[group_66808] -[group_66809] -[group_66810] -[group_66811] -[group_66812] -[group_66813] -[group_66814] -[group_66815] -[group_66816] -[group_66817] -[group_66818] -[group_66819] -[group_66820] -[group_66821] -[group_66822] -[group_66823] -[group_66824] -[group_66825] -[group_66826] -[group_66827] -[group_66828] -[group_66829] -[group_66830] -[group_66831] -[group_66832] -[group_66833] -[group_66834] -[group_66835] -[group_66836] -[group_66837] -[group_66838] -[group_66839] -[group_66840] -[group_66841] -[group_66842] -[group_66843] -[group_66844] -[group_66845] -[group_66846] -[group_66847] -[group_66848] -[group_66849] -[group_66850] -[group_66851] -[group_66852] -[group_66853] -[group_66854] -[group_66855] -[group_66856] -[group_66857] -[group_66858] -[group_66859] -[group_66860] -[group_66861] -[group_66862] -[group_66863] -[group_66864] -[group_66865] -[group_66866] -[group_66867] -[group_66868] -[group_66869] -[group_66870] -[group_66871] -[group_66872] -[group_66873] -[group_66874] -[group_66875] -[group_66876] -[group_66877] -[group_66878] -[group_66879] -[group_66880] -[group_66881] -[group_66882] -[group_66883] -[group_66884] -[group_66885] -[group_66886] -[group_66887] -[group_66888] -[group_66889] -[group_66890] -[group_66891] -[group_66892] -[group_66893] -[group_66894] -[group_66895] -[group_66896] -[group_66897] -[group_66898] -[group_66899] -[group_66900] -[group_66901] -[group_66902] -[group_66903] -[group_66904] -[group_66905] -[group_66906] -[group_66907] -[group_66908] -[group_66909] -[group_66910] -[group_66911] -[group_66912] -[group_66913] -[group_66914] -[group_66915] -[group_66916] -[group_66917] -[group_66918] -[group_66919] -[group_66920] -[group_66921] -[group_66922] -[group_66923] -[group_66924] -[group_66925] -[group_66926] -[group_66927] -[group_66928] -[group_66929] -[group_66930] -[group_66931] -[group_66932] -[group_66933] -[group_66934] -[group_66935] -[group_66936] -[group_66937] -[group_66938] -[group_66939] -[group_66940] -[group_66941] -[group_66942] -[group_66943] -[group_66944] -[group_66945] -[group_66946] -[group_66947] -[group_66948] -[group_66949] -[group_66950] -[group_66951] -[group_66952] -[group_66953] -[group_66954] -[group_66955] -[group_66956] -[group_66957] -[group_66958] -[group_66959] -[group_66960] -[group_66961] -[group_66962] -[group_66963] -[group_66964] -[group_66965] -[group_66966] -[group_66967] -[group_66968] -[group_66969] -[group_66970] -[group_66971] -[group_66972] -[group_66973] -[group_66974] -[group_66975] -[group_66976] -[group_66977] -[group_66978] -[group_66979] -[group_66980] -[group_66981] -[group_66982] -[group_66983] -[group_66984] -[group_66985] -[group_66986] -[group_66987] -[group_66988] -[group_66989] -[group_66990] -[group_66991] -[group_66992] -[group_66993] -[group_66994] -[group_66995] -[group_66996] -[group_66997] -[group_66998] -[group_66999] -[group_67000] -[group_67001] -[group_67002] -[group_67003] -[group_67004] -[group_67005] -[group_67006] -[group_67007] -[group_67008] -[group_67009] -[group_67010] -[group_67011] -[group_67012] -[group_67013] -[group_67014] -[group_67015] -[group_67016] -[group_67017] -[group_67018] -[group_67019] -[group_67020] -[group_67021] -[group_67022] -[group_67023] -[group_67024] -[group_67025] -[group_67026] -[group_67027] -[group_67028] -[group_67029] -[group_67030] -[group_67031] -[group_67032] -[group_67033] -[group_67034] -[group_67035] -[group_67036] -[group_67037] -[group_67038] -[group_67039] -[group_67040] -[group_67041] -[group_67042] -[group_67043] -[group_67044] -[group_67045] -[group_67046] -[group_67047] -[group_67048] -[group_67049] -[group_67050] -[group_67051] -[group_67052] -[group_67053] -[group_67054] -[group_67055] -[group_67056] -[group_67057] -[group_67058] -[group_67059] -[group_67060] -[group_67061] -[group_67062] -[group_67063] -[group_67064] -[group_67065] -[group_67066] -[group_67067] -[group_67068] -[group_67069] -[group_67070] -[group_67071] -[group_67072] -[group_67073] -[group_67074] -[group_67075] -[group_67076] -[group_67077] -[group_67078] -[group_67079] -[group_67080] -[group_67081] -[group_67082] -[group_67083] -[group_67084] -[group_67085] -[group_67086] -[group_67087] -[group_67088] -[group_67089] -[group_67090] -[group_67091] -[group_67092] -[group_67093] -[group_67094] -[group_67095] -[group_67096] -[group_67097] -[group_67098] -[group_67099] -[group_67100] -[group_67101] -[group_67102] -[group_67103] -[group_67104] -[group_67105] -[group_67106] -[group_67107] -[group_67108] -[group_67109] -[group_67110] -[group_67111] -[group_67112] -[group_67113] -[group_67114] -[group_67115] -[group_67116] -[group_67117] -[group_67118] -[group_67119] -[group_67120] -[group_67121] -[group_67122] -[group_67123] -[group_67124] -[group_67125] -[group_67126] -[group_67127] -[group_67128] -[group_67129] -[group_67130] -[group_67131] -[group_67132] -[group_67133] -[group_67134] -[group_67135] -[group_67136] -[group_67137] -[group_67138] -[group_67139] -[group_67140] -[group_67141] -[group_67142] -[group_67143] -[group_67144] -[group_67145] -[group_67146] -[group_67147] -[group_67148] -[group_67149] -[group_67150] -[group_67151] -[group_67152] -[group_67153] -[group_67154] -[group_67155] -[group_67156] -[group_67157] -[group_67158] -[group_67159] -[group_67160] -[group_67161] -[group_67162] -[group_67163] -[group_67164] -[group_67165] -[group_67166] -[group_67167] -[group_67168] -[group_67169] -[group_67170] -[group_67171] -[group_67172] -[group_67173] -[group_67174] -[group_67175] -[group_67176] -[group_67177] -[group_67178] -[group_67179] -[group_67180] -[group_67181] -[group_67182] -[group_67183] -[group_67184] -[group_67185] -[group_67186] -[group_67187] -[group_67188] -[group_67189] -[group_67190] -[group_67191] -[group_67192] -[group_67193] -[group_67194] -[group_67195] -[group_67196] -[group_67197] -[group_67198] -[group_67199] -[group_67200] -[group_67201] -[group_67202] -[group_67203] -[group_67204] -[group_67205] -[group_67206] -[group_67207] -[group_67208] -[group_67209] -[group_67210] -[group_67211] -[group_67212] -[group_67213] -[group_67214] -[group_67215] -[group_67216] -[group_67217] -[group_67218] -[group_67219] -[group_67220] -[group_67221] -[group_67222] -[group_67223] -[group_67224] -[group_67225] -[group_67226] -[group_67227] -[group_67228] -[group_67229] -[group_67230] -[group_67231] -[group_67232] -[group_67233] -[group_67234] -[group_67235] -[group_67236] -[group_67237] -[group_67238] -[group_67239] -[group_67240] -[group_67241] -[group_67242] -[group_67243] -[group_67244] -[group_67245] -[group_67246] -[group_67247] -[group_67248] -[group_67249] -[group_67250] -[group_67251] -[group_67252] -[group_67253] -[group_67254] -[group_67255] -[group_67256] -[group_67257] -[group_67258] -[group_67259] -[group_67260] -[group_67261] -[group_67262] -[group_67263] -[group_67264] -[group_67265] -[group_67266] -[group_67267] -[group_67268] -[group_67269] -[group_67270] -[group_67271] -[group_67272] -[group_67273] -[group_67274] -[group_67275] -[group_67276] -[group_67277] -[group_67278] -[group_67279] -[group_67280] -[group_67281] -[group_67282] -[group_67283] -[group_67284] -[group_67285] -[group_67286] -[group_67287] -[group_67288] -[group_67289] -[group_67290] -[group_67291] -[group_67292] -[group_67293] -[group_67294] -[group_67295] -[group_67296] -[group_67297] -[group_67298] -[group_67299] -[group_67300] -[group_67301] -[group_67302] -[group_67303] -[group_67304] -[group_67305] -[group_67306] -[group_67307] -[group_67308] -[group_67309] -[group_67310] -[group_67311] -[group_67312] -[group_67313] -[group_67314] -[group_67315] -[group_67316] -[group_67317] -[group_67318] -[group_67319] -[group_67320] -[group_67321] -[group_67322] -[group_67323] -[group_67324] -[group_67325] -[group_67326] -[group_67327] -[group_67328] -[group_67329] -[group_67330] -[group_67331] -[group_67332] -[group_67333] -[group_67334] -[group_67335] -[group_67336] -[group_67337] -[group_67338] -[group_67339] -[group_67340] -[group_67341] -[group_67342] -[group_67343] -[group_67344] -[group_67345] -[group_67346] -[group_67347] -[group_67348] -[group_67349] -[group_67350] -[group_67351] -[group_67352] -[group_67353] -[group_67354] -[group_67355] -[group_67356] -[group_67357] -[group_67358] -[group_67359] -[group_67360] -[group_67361] -[group_67362] -[group_67363] -[group_67364] -[group_67365] -[group_67366] -[group_67367] -[group_67368] -[group_67369] -[group_67370] -[group_67371] -[group_67372] -[group_67373] -[group_67374] -[group_67375] -[group_67376] -[group_67377] -[group_67378] -[group_67379] -[group_67380] -[group_67381] -[group_67382] -[group_67383] -[group_67384] -[group_67385] -[group_67386] -[group_67387] -[group_67388] -[group_67389] -[group_67390] -[group_67391] -[group_67392] -[group_67393] -[group_67394] -[group_67395] -[group_67396] -[group_67397] -[group_67398] -[group_67399] -[group_67400] -[group_67401] -[group_67402] -[group_67403] -[group_67404] -[group_67405] -[group_67406] -[group_67407] -[group_67408] -[group_67409] -[group_67410] -[group_67411] -[group_67412] -[group_67413] -[group_67414] -[group_67415] -[group_67416] -[group_67417] -[group_67418] -[group_67419] -[group_67420] -[group_67421] -[group_67422] -[group_67423] -[group_67424] -[group_67425] -[group_67426] -[group_67427] -[group_67428] -[group_67429] -[group_67430] -[group_67431] -[group_67432] -[group_67433] -[group_67434] -[group_67435] -[group_67436] -[group_67437] -[group_67438] -[group_67439] -[group_67440] -[group_67441] -[group_67442] -[group_67443] -[group_67444] -[group_67445] -[group_67446] -[group_67447] -[group_67448] -[group_67449] -[group_67450] -[group_67451] -[group_67452] -[group_67453] -[group_67454] -[group_67455] -[group_67456] -[group_67457] -[group_67458] -[group_67459] -[group_67460] -[group_67461] -[group_67462] -[group_67463] -[group_67464] -[group_67465] -[group_67466] -[group_67467] -[group_67468] -[group_67469] -[group_67470] -[group_67471] -[group_67472] -[group_67473] -[group_67474] -[group_67475] -[group_67476] -[group_67477] -[group_67478] -[group_67479] -[group_67480] -[group_67481] -[group_67482] -[group_67483] -[group_67484] -[group_67485] -[group_67486] -[group_67487] -[group_67488] -[group_67489] -[group_67490] -[group_67491] -[group_67492] -[group_67493] -[group_67494] -[group_67495] -[group_67496] -[group_67497] -[group_67498] -[group_67499] -[group_67500] -[group_67501] -[group_67502] -[group_67503] -[group_67504] -[group_67505] -[group_67506] -[group_67507] -[group_67508] -[group_67509] -[group_67510] -[group_67511] -[group_67512] -[group_67513] -[group_67514] -[group_67515] -[group_67516] -[group_67517] -[group_67518] -[group_67519] -[group_67520] -[group_67521] -[group_67522] -[group_67523] -[group_67524] -[group_67525] -[group_67526] -[group_67527] -[group_67528] -[group_67529] -[group_67530] -[group_67531] -[group_67532] -[group_67533] -[group_67534] -[group_67535] -[group_67536] -[group_67537] -[group_67538] -[group_67539] -[group_67540] -[group_67541] -[group_67542] -[group_67543] -[group_67544] -[group_67545] -[group_67546] -[group_67547] -[group_67548] -[group_67549] -[group_67550] -[group_67551] -[group_67552] -[group_67553] -[group_67554] -[group_67555] -[group_67556] -[group_67557] -[group_67558] -[group_67559] -[group_67560] -[group_67561] -[group_67562] -[group_67563] -[group_67564] -[group_67565] -[group_67566] -[group_67567] -[group_67568] -[group_67569] -[group_67570] -[group_67571] -[group_67572] -[group_67573] -[group_67574] -[group_67575] -[group_67576] -[group_67577] -[group_67578] -[group_67579] -[group_67580] -[group_67581] -[group_67582] -[group_67583] -[group_67584] -[group_67585] -[group_67586] -[group_67587] -[group_67588] -[group_67589] -[group_67590] -[group_67591] -[group_67592] -[group_67593] -[group_67594] -[group_67595] -[group_67596] -[group_67597] -[group_67598] -[group_67599] -[group_67600] -[group_67601] -[group_67602] -[group_67603] -[group_67604] -[group_67605] -[group_67606] -[group_67607] -[group_67608] -[group_67609] -[group_67610] -[group_67611] -[group_67612] -[group_67613] -[group_67614] -[group_67615] -[group_67616] -[group_67617] -[group_67618] -[group_67619] -[group_67620] -[group_67621] -[group_67622] -[group_67623] -[group_67624] -[group_67625] -[group_67626] -[group_67627] -[group_67628] -[group_67629] -[group_67630] -[group_67631] -[group_67632] -[group_67633] -[group_67634] -[group_67635] -[group_67636] -[group_67637] -[group_67638] -[group_67639] -[group_67640] -[group_67641] -[group_67642] -[group_67643] -[group_67644] -[group_67645] -[group_67646] -[group_67647] -[group_67648] -[group_67649] -[group_67650] -[group_67651] -[group_67652] -[group_67653] -[group_67654] -[group_67655] -[group_67656] -[group_67657] -[group_67658] -[group_67659] -[group_67660] -[group_67661] -[group_67662] -[group_67663] -[group_67664] -[group_67665] -[group_67666] -[group_67667] -[group_67668] -[group_67669] -[group_67670] -[group_67671] -[group_67672] -[group_67673] -[group_67674] -[group_67675] -[group_67676] -[group_67677] -[group_67678] -[group_67679] -[group_67680] -[group_67681] -[group_67682] -[group_67683] -[group_67684] -[group_67685] -[group_67686] -[group_67687] -[group_67688] -[group_67689] -[group_67690] -[group_67691] -[group_67692] -[group_67693] -[group_67694] -[group_67695] -[group_67696] -[group_67697] -[group_67698] -[group_67699] -[group_67700] -[group_67701] -[group_67702] -[group_67703] -[group_67704] -[group_67705] -[group_67706] -[group_67707] -[group_67708] -[group_67709] -[group_67710] -[group_67711] -[group_67712] -[group_67713] -[group_67714] -[group_67715] -[group_67716] -[group_67717] -[group_67718] -[group_67719] -[group_67720] -[group_67721] -[group_67722] -[group_67723] -[group_67724] -[group_67725] -[group_67726] -[group_67727] -[group_67728] -[group_67729] -[group_67730] -[group_67731] -[group_67732] -[group_67733] -[group_67734] -[group_67735] -[group_67736] -[group_67737] -[group_67738] -[group_67739] -[group_67740] -[group_67741] -[group_67742] -[group_67743] -[group_67744] -[group_67745] -[group_67746] -[group_67747] -[group_67748] -[group_67749] -[group_67750] -[group_67751] -[group_67752] -[group_67753] -[group_67754] -[group_67755] -[group_67756] -[group_67757] -[group_67758] -[group_67759] -[group_67760] -[group_67761] -[group_67762] -[group_67763] -[group_67764] -[group_67765] -[group_67766] -[group_67767] -[group_67768] -[group_67769] -[group_67770] -[group_67771] -[group_67772] -[group_67773] -[group_67774] -[group_67775] -[group_67776] -[group_67777] -[group_67778] -[group_67779] -[group_67780] -[group_67781] -[group_67782] -[group_67783] -[group_67784] -[group_67785] -[group_67786] -[group_67787] -[group_67788] -[group_67789] -[group_67790] -[group_67791] -[group_67792] -[group_67793] -[group_67794] -[group_67795] -[group_67796] -[group_67797] -[group_67798] -[group_67799] -[group_67800] -[group_67801] -[group_67802] -[group_67803] -[group_67804] -[group_67805] -[group_67806] -[group_67807] -[group_67808] -[group_67809] -[group_67810] -[group_67811] -[group_67812] -[group_67813] -[group_67814] -[group_67815] -[group_67816] -[group_67817] -[group_67818] -[group_67819] -[group_67820] -[group_67821] -[group_67822] -[group_67823] -[group_67824] -[group_67825] -[group_67826] -[group_67827] -[group_67828] -[group_67829] -[group_67830] -[group_67831] -[group_67832] -[group_67833] -[group_67834] -[group_67835] -[group_67836] -[group_67837] -[group_67838] -[group_67839] -[group_67840] -[group_67841] -[group_67842] -[group_67843] -[group_67844] -[group_67845] -[group_67846] -[group_67847] -[group_67848] -[group_67849] -[group_67850] -[group_67851] -[group_67852] -[group_67853] -[group_67854] -[group_67855] -[group_67856] -[group_67857] -[group_67858] -[group_67859] -[group_67860] -[group_67861] -[group_67862] -[group_67863] -[group_67864] -[group_67865] -[group_67866] -[group_67867] -[group_67868] -[group_67869] -[group_67870] -[group_67871] -[group_67872] -[group_67873] -[group_67874] -[group_67875] -[group_67876] -[group_67877] -[group_67878] -[group_67879] -[group_67880] -[group_67881] -[group_67882] -[group_67883] -[group_67884] -[group_67885] -[group_67886] -[group_67887] -[group_67888] -[group_67889] -[group_67890] -[group_67891] -[group_67892] -[group_67893] -[group_67894] -[group_67895] -[group_67896] -[group_67897] -[group_67898] -[group_67899] -[group_67900] -[group_67901] -[group_67902] -[group_67903] -[group_67904] -[group_67905] -[group_67906] -[group_67907] -[group_67908] -[group_67909] -[group_67910] -[group_67911] -[group_67912] -[group_67913] -[group_67914] -[group_67915] -[group_67916] -[group_67917] -[group_67918] -[group_67919] -[group_67920] -[group_67921] -[group_67922] -[group_67923] -[group_67924] -[group_67925] -[group_67926] -[group_67927] -[group_67928] -[group_67929] -[group_67930] -[group_67931] -[group_67932] -[group_67933] -[group_67934] -[group_67935] -[group_67936] -[group_67937] -[group_67938] -[group_67939] -[group_67940] -[group_67941] -[group_67942] -[group_67943] -[group_67944] -[group_67945] -[group_67946] -[group_67947] -[group_67948] -[group_67949] -[group_67950] -[group_67951] -[group_67952] -[group_67953] -[group_67954] -[group_67955] -[group_67956] -[group_67957] -[group_67958] -[group_67959] -[group_67960] -[group_67961] -[group_67962] -[group_67963] -[group_67964] -[group_67965] -[group_67966] -[group_67967] -[group_67968] -[group_67969] -[group_67970] -[group_67971] -[group_67972] -[group_67973] -[group_67974] -[group_67975] -[group_67976] -[group_67977] -[group_67978] -[group_67979] -[group_67980] -[group_67981] -[group_67982] -[group_67983] -[group_67984] -[group_67985] -[group_67986] -[group_67987] -[group_67988] -[group_67989] -[group_67990] -[group_67991] -[group_67992] -[group_67993] -[group_67994] -[group_67995] -[group_67996] -[group_67997] -[group_67998] -[group_67999] -[group_68000] -[group_68001] -[group_68002] -[group_68003] -[group_68004] -[group_68005] -[group_68006] -[group_68007] -[group_68008] -[group_68009] -[group_68010] -[group_68011] -[group_68012] -[group_68013] -[group_68014] -[group_68015] -[group_68016] -[group_68017] -[group_68018] -[group_68019] -[group_68020] -[group_68021] -[group_68022] -[group_68023] -[group_68024] -[group_68025] -[group_68026] -[group_68027] -[group_68028] -[group_68029] -[group_68030] -[group_68031] -[group_68032] -[group_68033] -[group_68034] -[group_68035] -[group_68036] -[group_68037] -[group_68038] -[group_68039] -[group_68040] -[group_68041] -[group_68042] -[group_68043] -[group_68044] -[group_68045] -[group_68046] -[group_68047] -[group_68048] -[group_68049] -[group_68050] -[group_68051] -[group_68052] -[group_68053] -[group_68054] -[group_68055] -[group_68056] -[group_68057] -[group_68058] -[group_68059] -[group_68060] -[group_68061] -[group_68062] -[group_68063] -[group_68064] -[group_68065] -[group_68066] -[group_68067] -[group_68068] -[group_68069] -[group_68070] -[group_68071] -[group_68072] -[group_68073] -[group_68074] -[group_68075] -[group_68076] -[group_68077] -[group_68078] -[group_68079] -[group_68080] -[group_68081] -[group_68082] -[group_68083] -[group_68084] -[group_68085] -[group_68086] -[group_68087] -[group_68088] -[group_68089] -[group_68090] -[group_68091] -[group_68092] -[group_68093] -[group_68094] -[group_68095] -[group_68096] -[group_68097] -[group_68098] -[group_68099] -[group_68100] -[group_68101] -[group_68102] -[group_68103] -[group_68104] -[group_68105] -[group_68106] -[group_68107] -[group_68108] -[group_68109] -[group_68110] -[group_68111] -[group_68112] -[group_68113] -[group_68114] -[group_68115] -[group_68116] -[group_68117] -[group_68118] -[group_68119] -[group_68120] -[group_68121] -[group_68122] -[group_68123] -[group_68124] -[group_68125] -[group_68126] -[group_68127] -[group_68128] -[group_68129] -[group_68130] -[group_68131] -[group_68132] -[group_68133] -[group_68134] -[group_68135] -[group_68136] -[group_68137] -[group_68138] -[group_68139] -[group_68140] -[group_68141] -[group_68142] -[group_68143] -[group_68144] -[group_68145] -[group_68146] -[group_68147] -[group_68148] -[group_68149] -[group_68150] -[group_68151] -[group_68152] -[group_68153] -[group_68154] -[group_68155] -[group_68156] -[group_68157] -[group_68158] -[group_68159] -[group_68160] -[group_68161] -[group_68162] -[group_68163] -[group_68164] -[group_68165] -[group_68166] -[group_68167] -[group_68168] -[group_68169] -[group_68170] -[group_68171] -[group_68172] -[group_68173] -[group_68174] -[group_68175] -[group_68176] -[group_68177] -[group_68178] -[group_68179] -[group_68180] -[group_68181] -[group_68182] -[group_68183] -[group_68184] -[group_68185] -[group_68186] -[group_68187] -[group_68188] -[group_68189] -[group_68190] -[group_68191] -[group_68192] -[group_68193] -[group_68194] -[group_68195] -[group_68196] -[group_68197] -[group_68198] -[group_68199] -[group_68200] -[group_68201] -[group_68202] -[group_68203] -[group_68204] -[group_68205] -[group_68206] -[group_68207] -[group_68208] -[group_68209] -[group_68210] -[group_68211] -[group_68212] -[group_68213] -[group_68214] -[group_68215] -[group_68216] -[group_68217] -[group_68218] -[group_68219] -[group_68220] -[group_68221] -[group_68222] -[group_68223] -[group_68224] -[group_68225] -[group_68226] -[group_68227] -[group_68228] -[group_68229] -[group_68230] -[group_68231] -[group_68232] -[group_68233] -[group_68234] -[group_68235] -[group_68236] -[group_68237] -[group_68238] -[group_68239] -[group_68240] -[group_68241] -[group_68242] -[group_68243] -[group_68244] -[group_68245] -[group_68246] -[group_68247] -[group_68248] -[group_68249] -[group_68250] -[group_68251] -[group_68252] -[group_68253] -[group_68254] -[group_68255] -[group_68256] -[group_68257] -[group_68258] -[group_68259] -[group_68260] -[group_68261] -[group_68262] -[group_68263] -[group_68264] -[group_68265] -[group_68266] -[group_68267] -[group_68268] -[group_68269] -[group_68270] -[group_68271] -[group_68272] -[group_68273] -[group_68274] -[group_68275] -[group_68276] -[group_68277] -[group_68278] -[group_68279] -[group_68280] -[group_68281] -[group_68282] -[group_68283] -[group_68284] -[group_68285] -[group_68286] -[group_68287] -[group_68288] -[group_68289] -[group_68290] -[group_68291] -[group_68292] -[group_68293] -[group_68294] -[group_68295] -[group_68296] -[group_68297] -[group_68298] -[group_68299] -[group_68300] -[group_68301] -[group_68302] -[group_68303] -[group_68304] -[group_68305] -[group_68306] -[group_68307] -[group_68308] -[group_68309] -[group_68310] -[group_68311] -[group_68312] -[group_68313] -[group_68314] -[group_68315] -[group_68316] -[group_68317] -[group_68318] -[group_68319] -[group_68320] -[group_68321] -[group_68322] -[group_68323] -[group_68324] -[group_68325] -[group_68326] -[group_68327] -[group_68328] -[group_68329] -[group_68330] -[group_68331] -[group_68332] -[group_68333] -[group_68334] -[group_68335] -[group_68336] -[group_68337] -[group_68338] -[group_68339] -[group_68340] -[group_68341] -[group_68342] -[group_68343] -[group_68344] -[group_68345] -[group_68346] -[group_68347] -[group_68348] -[group_68349] -[group_68350] -[group_68351] -[group_68352] -[group_68353] -[group_68354] -[group_68355] -[group_68356] -[group_68357] -[group_68358] -[group_68359] -[group_68360] -[group_68361] -[group_68362] -[group_68363] -[group_68364] -[group_68365] -[group_68366] -[group_68367] -[group_68368] -[group_68369] -[group_68370] -[group_68371] -[group_68372] -[group_68373] -[group_68374] -[group_68375] -[group_68376] -[group_68377] -[group_68378] -[group_68379] -[group_68380] -[group_68381] -[group_68382] -[group_68383] -[group_68384] -[group_68385] -[group_68386] -[group_68387] -[group_68388] -[group_68389] -[group_68390] -[group_68391] -[group_68392] -[group_68393] -[group_68394] -[group_68395] -[group_68396] -[group_68397] -[group_68398] -[group_68399] -[group_68400] -[group_68401] -[group_68402] -[group_68403] -[group_68404] -[group_68405] -[group_68406] -[group_68407] -[group_68408] -[group_68409] -[group_68410] -[group_68411] -[group_68412] -[group_68413] -[group_68414] -[group_68415] -[group_68416] -[group_68417] -[group_68418] -[group_68419] -[group_68420] -[group_68421] -[group_68422] -[group_68423] -[group_68424] -[group_68425] -[group_68426] -[group_68427] -[group_68428] -[group_68429] -[group_68430] -[group_68431] -[group_68432] -[group_68433] -[group_68434] -[group_68435] -[group_68436] -[group_68437] -[group_68438] -[group_68439] -[group_68440] -[group_68441] -[group_68442] -[group_68443] -[group_68444] -[group_68445] -[group_68446] -[group_68447] -[group_68448] -[group_68449] -[group_68450] -[group_68451] -[group_68452] -[group_68453] -[group_68454] -[group_68455] -[group_68456] -[group_68457] -[group_68458] -[group_68459] -[group_68460] -[group_68461] -[group_68462] -[group_68463] -[group_68464] -[group_68465] -[group_68466] -[group_68467] -[group_68468] -[group_68469] -[group_68470] -[group_68471] -[group_68472] -[group_68473] -[group_68474] -[group_68475] -[group_68476] -[group_68477] -[group_68478] -[group_68479] -[group_68480] -[group_68481] -[group_68482] -[group_68483] -[group_68484] -[group_68485] -[group_68486] -[group_68487] -[group_68488] -[group_68489] -[group_68490] -[group_68491] -[group_68492] -[group_68493] -[group_68494] -[group_68495] -[group_68496] -[group_68497] -[group_68498] -[group_68499] -[group_68500] -[group_68501] -[group_68502] -[group_68503] -[group_68504] -[group_68505] -[group_68506] -[group_68507] -[group_68508] -[group_68509] -[group_68510] -[group_68511] -[group_68512] -[group_68513] -[group_68514] -[group_68515] -[group_68516] -[group_68517] -[group_68518] -[group_68519] -[group_68520] -[group_68521] -[group_68522] -[group_68523] -[group_68524] -[group_68525] -[group_68526] -[group_68527] -[group_68528] -[group_68529] -[group_68530] -[group_68531] -[group_68532] -[group_68533] -[group_68534] -[group_68535] -[group_68536] -[group_68537] -[group_68538] -[group_68539] -[group_68540] -[group_68541] -[group_68542] -[group_68543] -[group_68544] -[group_68545] -[group_68546] -[group_68547] -[group_68548] -[group_68549] -[group_68550] -[group_68551] -[group_68552] -[group_68553] -[group_68554] -[group_68555] -[group_68556] -[group_68557] -[group_68558] -[group_68559] -[group_68560] -[group_68561] -[group_68562] -[group_68563] -[group_68564] -[group_68565] -[group_68566] -[group_68567] -[group_68568] -[group_68569] -[group_68570] -[group_68571] -[group_68572] -[group_68573] -[group_68574] -[group_68575] -[group_68576] -[group_68577] -[group_68578] -[group_68579] -[group_68580] -[group_68581] -[group_68582] -[group_68583] -[group_68584] -[group_68585] -[group_68586] -[group_68587] -[group_68588] -[group_68589] -[group_68590] -[group_68591] -[group_68592] -[group_68593] -[group_68594] -[group_68595] -[group_68596] -[group_68597] -[group_68598] -[group_68599] -[group_68600] -[group_68601] -[group_68602] -[group_68603] -[group_68604] -[group_68605] -[group_68606] -[group_68607] -[group_68608] -[group_68609] -[group_68610] -[group_68611] -[group_68612] -[group_68613] -[group_68614] -[group_68615] -[group_68616] -[group_68617] -[group_68618] -[group_68619] -[group_68620] -[group_68621] -[group_68622] -[group_68623] -[group_68624] -[group_68625] -[group_68626] -[group_68627] -[group_68628] -[group_68629] -[group_68630] -[group_68631] -[group_68632] -[group_68633] -[group_68634] -[group_68635] -[group_68636] -[group_68637] -[group_68638] -[group_68639] -[group_68640] -[group_68641] -[group_68642] -[group_68643] -[group_68644] -[group_68645] -[group_68646] -[group_68647] -[group_68648] -[group_68649] -[group_68650] -[group_68651] -[group_68652] -[group_68653] -[group_68654] -[group_68655] -[group_68656] -[group_68657] -[group_68658] -[group_68659] -[group_68660] -[group_68661] -[group_68662] -[group_68663] -[group_68664] -[group_68665] -[group_68666] -[group_68667] -[group_68668] -[group_68669] -[group_68670] -[group_68671] -[group_68672] -[group_68673] -[group_68674] -[group_68675] -[group_68676] -[group_68677] -[group_68678] -[group_68679] -[group_68680] -[group_68681] -[group_68682] -[group_68683] -[group_68684] -[group_68685] -[group_68686] -[group_68687] -[group_68688] -[group_68689] -[group_68690] -[group_68691] -[group_68692] -[group_68693] -[group_68694] -[group_68695] -[group_68696] -[group_68697] -[group_68698] -[group_68699] -[group_68700] -[group_68701] -[group_68702] -[group_68703] -[group_68704] -[group_68705] -[group_68706] -[group_68707] -[group_68708] -[group_68709] -[group_68710] -[group_68711] -[group_68712] -[group_68713] -[group_68714] -[group_68715] -[group_68716] -[group_68717] -[group_68718] -[group_68719] -[group_68720] -[group_68721] -[group_68722] -[group_68723] -[group_68724] -[group_68725] -[group_68726] -[group_68727] -[group_68728] -[group_68729] -[group_68730] -[group_68731] -[group_68732] -[group_68733] -[group_68734] -[group_68735] -[group_68736] -[group_68737] -[group_68738] -[group_68739] -[group_68740] -[group_68741] -[group_68742] -[group_68743] -[group_68744] -[group_68745] -[group_68746] -[group_68747] -[group_68748] -[group_68749] -[group_68750] -[group_68751] -[group_68752] -[group_68753] -[group_68754] -[group_68755] -[group_68756] -[group_68757] -[group_68758] -[group_68759] -[group_68760] -[group_68761] -[group_68762] -[group_68763] -[group_68764] -[group_68765] -[group_68766] -[group_68767] -[group_68768] -[group_68769] -[group_68770] -[group_68771] -[group_68772] -[group_68773] -[group_68774] -[group_68775] -[group_68776] -[group_68777] -[group_68778] -[group_68779] -[group_68780] -[group_68781] -[group_68782] -[group_68783] -[group_68784] -[group_68785] -[group_68786] -[group_68787] -[group_68788] -[group_68789] -[group_68790] -[group_68791] -[group_68792] -[group_68793] -[group_68794] -[group_68795] -[group_68796] -[group_68797] -[group_68798] -[group_68799] -[group_68800] -[group_68801] -[group_68802] -[group_68803] -[group_68804] -[group_68805] -[group_68806] -[group_68807] -[group_68808] -[group_68809] -[group_68810] -[group_68811] -[group_68812] -[group_68813] -[group_68814] -[group_68815] -[group_68816] -[group_68817] -[group_68818] -[group_68819] -[group_68820] -[group_68821] -[group_68822] -[group_68823] -[group_68824] -[group_68825] -[group_68826] -[group_68827] -[group_68828] -[group_68829] -[group_68830] -[group_68831] -[group_68832] -[group_68833] -[group_68834] -[group_68835] -[group_68836] -[group_68837] -[group_68838] -[group_68839] -[group_68840] -[group_68841] -[group_68842] -[group_68843] -[group_68844] -[group_68845] -[group_68846] -[group_68847] -[group_68848] -[group_68849] -[group_68850] -[group_68851] -[group_68852] -[group_68853] -[group_68854] -[group_68855] -[group_68856] -[group_68857] -[group_68858] -[group_68859] -[group_68860] -[group_68861] -[group_68862] -[group_68863] -[group_68864] -[group_68865] -[group_68866] -[group_68867] -[group_68868] -[group_68869] -[group_68870] -[group_68871] -[group_68872] -[group_68873] -[group_68874] -[group_68875] -[group_68876] -[group_68877] -[group_68878] -[group_68879] -[group_68880] -[group_68881] -[group_68882] -[group_68883] -[group_68884] -[group_68885] -[group_68886] -[group_68887] -[group_68888] -[group_68889] -[group_68890] -[group_68891] -[group_68892] -[group_68893] -[group_68894] -[group_68895] -[group_68896] -[group_68897] -[group_68898] -[group_68899] -[group_68900] -[group_68901] -[group_68902] -[group_68903] -[group_68904] -[group_68905] -[group_68906] -[group_68907] -[group_68908] -[group_68909] -[group_68910] -[group_68911] -[group_68912] -[group_68913] -[group_68914] -[group_68915] -[group_68916] -[group_68917] -[group_68918] -[group_68919] -[group_68920] -[group_68921] -[group_68922] -[group_68923] -[group_68924] -[group_68925] -[group_68926] -[group_68927] -[group_68928] -[group_68929] -[group_68930] -[group_68931] -[group_68932] -[group_68933] -[group_68934] -[group_68935] -[group_68936] -[group_68937] -[group_68938] -[group_68939] -[group_68940] -[group_68941] -[group_68942] -[group_68943] -[group_68944] -[group_68945] -[group_68946] -[group_68947] -[group_68948] -[group_68949] -[group_68950] -[group_68951] -[group_68952] -[group_68953] -[group_68954] -[group_68955] -[group_68956] -[group_68957] -[group_68958] -[group_68959] -[group_68960] -[group_68961] -[group_68962] -[group_68963] -[group_68964] -[group_68965] -[group_68966] -[group_68967] -[group_68968] -[group_68969] -[group_68970] -[group_68971] -[group_68972] -[group_68973] -[group_68974] -[group_68975] -[group_68976] -[group_68977] -[group_68978] -[group_68979] -[group_68980] -[group_68981] -[group_68982] -[group_68983] -[group_68984] -[group_68985] -[group_68986] -[group_68987] -[group_68988] -[group_68989] -[group_68990] -[group_68991] -[group_68992] -[group_68993] -[group_68994] -[group_68995] -[group_68996] -[group_68997] -[group_68998] -[group_68999] -[group_69000] -[group_69001] -[group_69002] -[group_69003] -[group_69004] -[group_69005] -[group_69006] -[group_69007] -[group_69008] -[group_69009] -[group_69010] -[group_69011] -[group_69012] -[group_69013] -[group_69014] -[group_69015] -[group_69016] -[group_69017] -[group_69018] -[group_69019] -[group_69020] -[group_69021] -[group_69022] -[group_69023] -[group_69024] -[group_69025] -[group_69026] -[group_69027] -[group_69028] -[group_69029] -[group_69030] -[group_69031] -[group_69032] -[group_69033] -[group_69034] -[group_69035] -[group_69036] -[group_69037] -[group_69038] -[group_69039] -[group_69040] -[group_69041] -[group_69042] -[group_69043] -[group_69044] -[group_69045] -[group_69046] -[group_69047] -[group_69048] -[group_69049] -[group_69050] -[group_69051] -[group_69052] -[group_69053] -[group_69054] -[group_69055] -[group_69056] -[group_69057] -[group_69058] -[group_69059] -[group_69060] -[group_69061] -[group_69062] -[group_69063] -[group_69064] -[group_69065] -[group_69066] -[group_69067] -[group_69068] -[group_69069] -[group_69070] -[group_69071] -[group_69072] -[group_69073] -[group_69074] -[group_69075] -[group_69076] -[group_69077] -[group_69078] -[group_69079] -[group_69080] -[group_69081] -[group_69082] -[group_69083] -[group_69084] -[group_69085] -[group_69086] -[group_69087] -[group_69088] -[group_69089] -[group_69090] -[group_69091] -[group_69092] -[group_69093] -[group_69094] -[group_69095] -[group_69096] -[group_69097] -[group_69098] -[group_69099] -[group_69100] -[group_69101] -[group_69102] -[group_69103] -[group_69104] -[group_69105] -[group_69106] -[group_69107] -[group_69108] -[group_69109] -[group_69110] -[group_69111] -[group_69112] -[group_69113] -[group_69114] -[group_69115] -[group_69116] -[group_69117] -[group_69118] -[group_69119] -[group_69120] -[group_69121] -[group_69122] -[group_69123] -[group_69124] -[group_69125] -[group_69126] -[group_69127] -[group_69128] -[group_69129] -[group_69130] -[group_69131] -[group_69132] -[group_69133] -[group_69134] -[group_69135] -[group_69136] -[group_69137] -[group_69138] -[group_69139] -[group_69140] -[group_69141] -[group_69142] -[group_69143] -[group_69144] -[group_69145] -[group_69146] -[group_69147] -[group_69148] -[group_69149] -[group_69150] -[group_69151] -[group_69152] -[group_69153] -[group_69154] -[group_69155] -[group_69156] -[group_69157] -[group_69158] -[group_69159] -[group_69160] -[group_69161] -[group_69162] -[group_69163] -[group_69164] -[group_69165] -[group_69166] -[group_69167] -[group_69168] -[group_69169] -[group_69170] -[group_69171] -[group_69172] -[group_69173] -[group_69174] -[group_69175] -[group_69176] -[group_69177] -[group_69178] -[group_69179] -[group_69180] -[group_69181] -[group_69182] -[group_69183] -[group_69184] -[group_69185] -[group_69186] -[group_69187] -[group_69188] -[group_69189] -[group_69190] -[group_69191] -[group_69192] -[group_69193] -[group_69194] -[group_69195] -[group_69196] -[group_69197] -[group_69198] -[group_69199] -[group_69200] -[group_69201] -[group_69202] -[group_69203] -[group_69204] -[group_69205] -[group_69206] -[group_69207] -[group_69208] -[group_69209] -[group_69210] -[group_69211] -[group_69212] -[group_69213] -[group_69214] -[group_69215] -[group_69216] -[group_69217] -[group_69218] -[group_69219] -[group_69220] -[group_69221] -[group_69222] -[group_69223] -[group_69224] -[group_69225] -[group_69226] -[group_69227] -[group_69228] -[group_69229] -[group_69230] -[group_69231] -[group_69232] -[group_69233] -[group_69234] -[group_69235] -[group_69236] -[group_69237] -[group_69238] -[group_69239] -[group_69240] -[group_69241] -[group_69242] -[group_69243] -[group_69244] -[group_69245] -[group_69246] -[group_69247] -[group_69248] -[group_69249] -[group_69250] -[group_69251] -[group_69252] -[group_69253] -[group_69254] -[group_69255] -[group_69256] -[group_69257] -[group_69258] -[group_69259] -[group_69260] -[group_69261] -[group_69262] -[group_69263] -[group_69264] -[group_69265] -[group_69266] -[group_69267] -[group_69268] -[group_69269] -[group_69270] -[group_69271] -[group_69272] -[group_69273] -[group_69274] -[group_69275] -[group_69276] -[group_69277] -[group_69278] -[group_69279] -[group_69280] -[group_69281] -[group_69282] -[group_69283] -[group_69284] -[group_69285] -[group_69286] -[group_69287] -[group_69288] -[group_69289] -[group_69290] -[group_69291] -[group_69292] -[group_69293] -[group_69294] -[group_69295] -[group_69296] -[group_69297] -[group_69298] -[group_69299] -[group_69300] -[group_69301] -[group_69302] -[group_69303] -[group_69304] -[group_69305] -[group_69306] -[group_69307] -[group_69308] -[group_69309] -[group_69310] -[group_69311] -[group_69312] -[group_69313] -[group_69314] -[group_69315] -[group_69316] -[group_69317] -[group_69318] -[group_69319] -[group_69320] -[group_69321] -[group_69322] -[group_69323] -[group_69324] -[group_69325] -[group_69326] -[group_69327] -[group_69328] -[group_69329] -[group_69330] -[group_69331] -[group_69332] -[group_69333] -[group_69334] -[group_69335] -[group_69336] -[group_69337] -[group_69338] -[group_69339] -[group_69340] -[group_69341] -[group_69342] -[group_69343] -[group_69344] -[group_69345] -[group_69346] -[group_69347] -[group_69348] -[group_69349] -[group_69350] -[group_69351] -[group_69352] -[group_69353] -[group_69354] -[group_69355] -[group_69356] -[group_69357] -[group_69358] -[group_69359] -[group_69360] -[group_69361] -[group_69362] -[group_69363] -[group_69364] -[group_69365] -[group_69366] -[group_69367] -[group_69368] -[group_69369] -[group_69370] -[group_69371] -[group_69372] -[group_69373] -[group_69374] -[group_69375] -[group_69376] -[group_69377] -[group_69378] -[group_69379] -[group_69380] -[group_69381] -[group_69382] -[group_69383] -[group_69384] -[group_69385] -[group_69386] -[group_69387] -[group_69388] -[group_69389] -[group_69390] -[group_69391] -[group_69392] -[group_69393] -[group_69394] -[group_69395] -[group_69396] -[group_69397] -[group_69398] -[group_69399] -[group_69400] -[group_69401] -[group_69402] -[group_69403] -[group_69404] -[group_69405] -[group_69406] -[group_69407] -[group_69408] -[group_69409] -[group_69410] -[group_69411] -[group_69412] -[group_69413] -[group_69414] -[group_69415] -[group_69416] -[group_69417] -[group_69418] -[group_69419] -[group_69420] -[group_69421] -[group_69422] -[group_69423] -[group_69424] -[group_69425] -[group_69426] -[group_69427] -[group_69428] -[group_69429] -[group_69430] -[group_69431] -[group_69432] -[group_69433] -[group_69434] -[group_69435] -[group_69436] -[group_69437] -[group_69438] -[group_69439] -[group_69440] -[group_69441] -[group_69442] -[group_69443] -[group_69444] -[group_69445] -[group_69446] -[group_69447] -[group_69448] -[group_69449] -[group_69450] -[group_69451] -[group_69452] -[group_69453] -[group_69454] -[group_69455] -[group_69456] -[group_69457] -[group_69458] -[group_69459] -[group_69460] -[group_69461] -[group_69462] -[group_69463] -[group_69464] -[group_69465] -[group_69466] -[group_69467] -[group_69468] -[group_69469] -[group_69470] -[group_69471] -[group_69472] -[group_69473] -[group_69474] -[group_69475] -[group_69476] -[group_69477] -[group_69478] -[group_69479] -[group_69480] -[group_69481] -[group_69482] -[group_69483] -[group_69484] -[group_69485] -[group_69486] -[group_69487] -[group_69488] -[group_69489] -[group_69490] -[group_69491] -[group_69492] -[group_69493] -[group_69494] -[group_69495] -[group_69496] -[group_69497] -[group_69498] -[group_69499] -[group_69500] -[group_69501] -[group_69502] -[group_69503] -[group_69504] -[group_69505] -[group_69506] -[group_69507] -[group_69508] -[group_69509] -[group_69510] -[group_69511] -[group_69512] -[group_69513] -[group_69514] -[group_69515] -[group_69516] -[group_69517] -[group_69518] -[group_69519] -[group_69520] -[group_69521] -[group_69522] -[group_69523] -[group_69524] -[group_69525] -[group_69526] -[group_69527] -[group_69528] -[group_69529] -[group_69530] -[group_69531] -[group_69532] -[group_69533] -[group_69534] -[group_69535] -[group_69536] -[group_69537] -[group_69538] -[group_69539] -[group_69540] -[group_69541] -[group_69542] -[group_69543] -[group_69544] -[group_69545] -[group_69546] -[group_69547] -[group_69548] -[group_69549] -[group_69550] -[group_69551] -[group_69552] -[group_69553] -[group_69554] -[group_69555] -[group_69556] -[group_69557] -[group_69558] -[group_69559] -[group_69560] -[group_69561] -[group_69562] -[group_69563] -[group_69564] -[group_69565] -[group_69566] -[group_69567] -[group_69568] -[group_69569] -[group_69570] -[group_69571] -[group_69572] -[group_69573] -[group_69574] -[group_69575] -[group_69576] -[group_69577] -[group_69578] -[group_69579] -[group_69580] -[group_69581] -[group_69582] -[group_69583] -[group_69584] -[group_69585] -[group_69586] -[group_69587] -[group_69588] -[group_69589] -[group_69590] -[group_69591] -[group_69592] -[group_69593] -[group_69594] -[group_69595] -[group_69596] -[group_69597] -[group_69598] -[group_69599] -[group_69600] -[group_69601] -[group_69602] -[group_69603] -[group_69604] -[group_69605] -[group_69606] -[group_69607] -[group_69608] -[group_69609] -[group_69610] -[group_69611] -[group_69612] -[group_69613] -[group_69614] -[group_69615] -[group_69616] -[group_69617] -[group_69618] -[group_69619] -[group_69620] -[group_69621] -[group_69622] -[group_69623] -[group_69624] -[group_69625] -[group_69626] -[group_69627] -[group_69628] -[group_69629] -[group_69630] -[group_69631] -[group_69632] -[group_69633] -[group_69634] -[group_69635] -[group_69636] -[group_69637] -[group_69638] -[group_69639] -[group_69640] -[group_69641] -[group_69642] -[group_69643] -[group_69644] -[group_69645] -[group_69646] -[group_69647] -[group_69648] -[group_69649] -[group_69650] -[group_69651] -[group_69652] -[group_69653] -[group_69654] -[group_69655] -[group_69656] -[group_69657] -[group_69658] -[group_69659] -[group_69660] -[group_69661] -[group_69662] -[group_69663] -[group_69664] -[group_69665] -[group_69666] -[group_69667] -[group_69668] -[group_69669] -[group_69670] -[group_69671] -[group_69672] -[group_69673] -[group_69674] -[group_69675] -[group_69676] -[group_69677] -[group_69678] -[group_69679] -[group_69680] -[group_69681] -[group_69682] -[group_69683] -[group_69684] -[group_69685] -[group_69686] -[group_69687] -[group_69688] -[group_69689] -[group_69690] -[group_69691] -[group_69692] -[group_69693] -[group_69694] -[group_69695] -[group_69696] -[group_69697] -[group_69698] -[group_69699] -[group_69700] -[group_69701] -[group_69702] -[group_69703] -[group_69704] -[group_69705] -[group_69706] -[group_69707] -[group_69708] -[group_69709] -[group_69710] -[group_69711] -[group_69712] -[group_69713] -[group_69714] -[group_69715] -[group_69716] -[group_69717] -[group_69718] -[group_69719] -[group_69720] -[group_69721] -[group_69722] -[group_69723] -[group_69724] -[group_69725] -[group_69726] -[group_69727] -[group_69728] -[group_69729] -[group_69730] -[group_69731] -[group_69732] -[group_69733] -[group_69734] -[group_69735] -[group_69736] -[group_69737] -[group_69738] -[group_69739] -[group_69740] -[group_69741] -[group_69742] -[group_69743] -[group_69744] -[group_69745] -[group_69746] -[group_69747] -[group_69748] -[group_69749] -[group_69750] -[group_69751] -[group_69752] -[group_69753] -[group_69754] -[group_69755] -[group_69756] -[group_69757] -[group_69758] -[group_69759] -[group_69760] -[group_69761] -[group_69762] -[group_69763] -[group_69764] -[group_69765] -[group_69766] -[group_69767] -[group_69768] -[group_69769] -[group_69770] -[group_69771] -[group_69772] -[group_69773] -[group_69774] -[group_69775] -[group_69776] -[group_69777] -[group_69778] -[group_69779] -[group_69780] -[group_69781] -[group_69782] -[group_69783] -[group_69784] -[group_69785] -[group_69786] -[group_69787] -[group_69788] -[group_69789] -[group_69790] -[group_69791] -[group_69792] -[group_69793] -[group_69794] -[group_69795] -[group_69796] -[group_69797] -[group_69798] -[group_69799] -[group_69800] -[group_69801] -[group_69802] -[group_69803] -[group_69804] -[group_69805] -[group_69806] -[group_69807] -[group_69808] -[group_69809] -[group_69810] -[group_69811] -[group_69812] -[group_69813] -[group_69814] -[group_69815] -[group_69816] -[group_69817] -[group_69818] -[group_69819] -[group_69820] -[group_69821] -[group_69822] -[group_69823] -[group_69824] -[group_69825] -[group_69826] -[group_69827] -[group_69828] -[group_69829] -[group_69830] -[group_69831] -[group_69832] -[group_69833] -[group_69834] -[group_69835] -[group_69836] -[group_69837] -[group_69838] -[group_69839] -[group_69840] -[group_69841] -[group_69842] -[group_69843] -[group_69844] -[group_69845] -[group_69846] -[group_69847] -[group_69848] -[group_69849] -[group_69850] -[group_69851] -[group_69852] -[group_69853] -[group_69854] -[group_69855] -[group_69856] -[group_69857] -[group_69858] -[group_69859] -[group_69860] -[group_69861] -[group_69862] -[group_69863] -[group_69864] -[group_69865] -[group_69866] -[group_69867] -[group_69868] -[group_69869] -[group_69870] -[group_69871] -[group_69872] -[group_69873] -[group_69874] -[group_69875] -[group_69876] -[group_69877] -[group_69878] -[group_69879] -[group_69880] -[group_69881] -[group_69882] -[group_69883] -[group_69884] -[group_69885] -[group_69886] -[group_69887] -[group_69888] -[group_69889] -[group_69890] -[group_69891] -[group_69892] -[group_69893] -[group_69894] -[group_69895] -[group_69896] -[group_69897] -[group_69898] -[group_69899] -[group_69900] -[group_69901] -[group_69902] -[group_69903] -[group_69904] -[group_69905] -[group_69906] -[group_69907] -[group_69908] -[group_69909] -[group_69910] -[group_69911] -[group_69912] -[group_69913] -[group_69914] -[group_69915] -[group_69916] -[group_69917] -[group_69918] -[group_69919] -[group_69920] -[group_69921] -[group_69922] -[group_69923] -[group_69924] -[group_69925] -[group_69926] -[group_69927] -[group_69928] -[group_69929] -[group_69930] -[group_69931] -[group_69932] -[group_69933] -[group_69934] -[group_69935] -[group_69936] -[group_69937] -[group_69938] -[group_69939] -[group_69940] -[group_69941] -[group_69942] -[group_69943] -[group_69944] -[group_69945] -[group_69946] -[group_69947] -[group_69948] -[group_69949] -[group_69950] -[group_69951] -[group_69952] -[group_69953] -[group_69954] -[group_69955] -[group_69956] -[group_69957] -[group_69958] -[group_69959] -[group_69960] -[group_69961] -[group_69962] -[group_69963] -[group_69964] -[group_69965] -[group_69966] -[group_69967] -[group_69968] -[group_69969] -[group_69970] -[group_69971] -[group_69972] -[group_69973] -[group_69974] -[group_69975] -[group_69976] -[group_69977] -[group_69978] -[group_69979] -[group_69980] -[group_69981] -[group_69982] -[group_69983] -[group_69984] -[group_69985] -[group_69986] -[group_69987] -[group_69988] -[group_69989] -[group_69990] -[group_69991] -[group_69992] -[group_69993] -[group_69994] -[group_69995] -[group_69996] -[group_69997] -[group_69998] -[group_69999] -[group_70000] -[group_70001] -[group_70002] -[group_70003] -[group_70004] -[group_70005] -[group_70006] -[group_70007] -[group_70008] -[group_70009] -[group_70010] -[group_70011] -[group_70012] -[group_70013] -[group_70014] -[group_70015] -[group_70016] -[group_70017] -[group_70018] -[group_70019] -[group_70020] -[group_70021] -[group_70022] -[group_70023] -[group_70024] -[group_70025] -[group_70026] -[group_70027] -[group_70028] -[group_70029] -[group_70030] -[group_70031] -[group_70032] -[group_70033] -[group_70034] -[group_70035] -[group_70036] -[group_70037] -[group_70038] -[group_70039] -[group_70040] -[group_70041] -[group_70042] -[group_70043] -[group_70044] -[group_70045] -[group_70046] -[group_70047] -[group_70048] -[group_70049] -[group_70050] -[group_70051] -[group_70052] -[group_70053] -[group_70054] -[group_70055] -[group_70056] -[group_70057] -[group_70058] -[group_70059] -[group_70060] -[group_70061] -[group_70062] -[group_70063] -[group_70064] -[group_70065] -[group_70066] -[group_70067] -[group_70068] -[group_70069] -[group_70070] -[group_70071] -[group_70072] -[group_70073] -[group_70074] -[group_70075] -[group_70076] -[group_70077] -[group_70078] -[group_70079] -[group_70080] -[group_70081] -[group_70082] -[group_70083] -[group_70084] -[group_70085] -[group_70086] -[group_70087] -[group_70088] -[group_70089] -[group_70090] -[group_70091] -[group_70092] -[group_70093] -[group_70094] -[group_70095] -[group_70096] -[group_70097] -[group_70098] -[group_70099] -[group_70100] -[group_70101] -[group_70102] -[group_70103] -[group_70104] -[group_70105] -[group_70106] -[group_70107] -[group_70108] -[group_70109] -[group_70110] -[group_70111] -[group_70112] -[group_70113] -[group_70114] -[group_70115] -[group_70116] -[group_70117] -[group_70118] -[group_70119] -[group_70120] -[group_70121] -[group_70122] -[group_70123] -[group_70124] -[group_70125] -[group_70126] -[group_70127] -[group_70128] -[group_70129] -[group_70130] -[group_70131] -[group_70132] -[group_70133] -[group_70134] -[group_70135] -[group_70136] -[group_70137] -[group_70138] -[group_70139] -[group_70140] -[group_70141] -[group_70142] -[group_70143] -[group_70144] -[group_70145] -[group_70146] -[group_70147] -[group_70148] -[group_70149] -[group_70150] -[group_70151] -[group_70152] -[group_70153] -[group_70154] -[group_70155] -[group_70156] -[group_70157] -[group_70158] -[group_70159] -[group_70160] -[group_70161] -[group_70162] -[group_70163] -[group_70164] -[group_70165] -[group_70166] -[group_70167] -[group_70168] -[group_70169] -[group_70170] -[group_70171] -[group_70172] -[group_70173] -[group_70174] -[group_70175] -[group_70176] -[group_70177] -[group_70178] -[group_70179] -[group_70180] -[group_70181] -[group_70182] -[group_70183] -[group_70184] -[group_70185] -[group_70186] -[group_70187] -[group_70188] -[group_70189] -[group_70190] -[group_70191] -[group_70192] -[group_70193] -[group_70194] -[group_70195] -[group_70196] -[group_70197] -[group_70198] -[group_70199] -[group_70200] -[group_70201] -[group_70202] -[group_70203] -[group_70204] -[group_70205] -[group_70206] -[group_70207] -[group_70208] -[group_70209] -[group_70210] -[group_70211] -[group_70212] -[group_70213] -[group_70214] -[group_70215] -[group_70216] -[group_70217] -[group_70218] -[group_70219] -[group_70220] -[group_70221] -[group_70222] -[group_70223] -[group_70224] -[group_70225] -[group_70226] -[group_70227] -[group_70228] -[group_70229] -[group_70230] -[group_70231] -[group_70232] -[group_70233] -[group_70234] -[group_70235] -[group_70236] -[group_70237] -[group_70238] -[group_70239] -[group_70240] -[group_70241] -[group_70242] -[group_70243] -[group_70244] -[group_70245] -[group_70246] -[group_70247] -[group_70248] -[group_70249] -[group_70250] -[group_70251] -[group_70252] -[group_70253] -[group_70254] -[group_70255] -[group_70256] -[group_70257] -[group_70258] -[group_70259] -[group_70260] -[group_70261] -[group_70262] -[group_70263] -[group_70264] -[group_70265] -[group_70266] -[group_70267] -[group_70268] -[group_70269] -[group_70270] -[group_70271] -[group_70272] -[group_70273] -[group_70274] -[group_70275] -[group_70276] -[group_70277] -[group_70278] -[group_70279] -[group_70280] -[group_70281] -[group_70282] -[group_70283] -[group_70284] -[group_70285] -[group_70286] -[group_70287] -[group_70288] -[group_70289] -[group_70290] -[group_70291] -[group_70292] -[group_70293] -[group_70294] -[group_70295] -[group_70296] -[group_70297] -[group_70298] -[group_70299] -[group_70300] -[group_70301] -[group_70302] -[group_70303] -[group_70304] -[group_70305] -[group_70306] -[group_70307] -[group_70308] -[group_70309] -[group_70310] -[group_70311] -[group_70312] -[group_70313] -[group_70314] -[group_70315] -[group_70316] -[group_70317] -[group_70318] -[group_70319] -[group_70320] -[group_70321] -[group_70322] -[group_70323] -[group_70324] -[group_70325] -[group_70326] -[group_70327] -[group_70328] -[group_70329] -[group_70330] -[group_70331] -[group_70332] -[group_70333] -[group_70334] -[group_70335] -[group_70336] -[group_70337] -[group_70338] -[group_70339] -[group_70340] -[group_70341] -[group_70342] -[group_70343] -[group_70344] -[group_70345] -[group_70346] -[group_70347] -[group_70348] -[group_70349] -[group_70350] -[group_70351] -[group_70352] -[group_70353] -[group_70354] -[group_70355] -[group_70356] -[group_70357] -[group_70358] -[group_70359] -[group_70360] -[group_70361] -[group_70362] -[group_70363] -[group_70364] -[group_70365] -[group_70366] -[group_70367] -[group_70368] -[group_70369] -[group_70370] -[group_70371] -[group_70372] -[group_70373] -[group_70374] -[group_70375] -[group_70376] -[group_70377] -[group_70378] -[group_70379] -[group_70380] -[group_70381] -[group_70382] -[group_70383] -[group_70384] -[group_70385] -[group_70386] -[group_70387] -[group_70388] -[group_70389] -[group_70390] -[group_70391] -[group_70392] -[group_70393] -[group_70394] -[group_70395] -[group_70396] -[group_70397] -[group_70398] -[group_70399] -[group_70400] -[group_70401] -[group_70402] -[group_70403] -[group_70404] -[group_70405] -[group_70406] -[group_70407] -[group_70408] -[group_70409] -[group_70410] -[group_70411] -[group_70412] -[group_70413] -[group_70414] -[group_70415] -[group_70416] -[group_70417] -[group_70418] -[group_70419] -[group_70420] -[group_70421] -[group_70422] -[group_70423] -[group_70424] -[group_70425] -[group_70426] -[group_70427] -[group_70428] -[group_70429] -[group_70430] -[group_70431] -[group_70432] -[group_70433] -[group_70434] -[group_70435] -[group_70436] -[group_70437] -[group_70438] -[group_70439] -[group_70440] -[group_70441] -[group_70442] -[group_70443] -[group_70444] -[group_70445] -[group_70446] -[group_70447] -[group_70448] -[group_70449] -[group_70450] -[group_70451] -[group_70452] -[group_70453] -[group_70454] -[group_70455] -[group_70456] -[group_70457] -[group_70458] -[group_70459] -[group_70460] -[group_70461] -[group_70462] -[group_70463] -[group_70464] -[group_70465] -[group_70466] -[group_70467] -[group_70468] -[group_70469] -[group_70470] -[group_70471] -[group_70472] -[group_70473] -[group_70474] -[group_70475] -[group_70476] -[group_70477] -[group_70478] -[group_70479] -[group_70480] -[group_70481] -[group_70482] -[group_70483] -[group_70484] -[group_70485] -[group_70486] -[group_70487] -[group_70488] -[group_70489] -[group_70490] -[group_70491] -[group_70492] -[group_70493] -[group_70494] -[group_70495] -[group_70496] -[group_70497] -[group_70498] -[group_70499] -[group_70500] -[group_70501] -[group_70502] -[group_70503] -[group_70504] -[group_70505] -[group_70506] -[group_70507] -[group_70508] -[group_70509] -[group_70510] -[group_70511] -[group_70512] -[group_70513] -[group_70514] -[group_70515] -[group_70516] -[group_70517] -[group_70518] -[group_70519] -[group_70520] -[group_70521] -[group_70522] -[group_70523] -[group_70524] -[group_70525] -[group_70526] -[group_70527] -[group_70528] -[group_70529] -[group_70530] -[group_70531] -[group_70532] -[group_70533] -[group_70534] -[group_70535] -[group_70536] -[group_70537] -[group_70538] -[group_70539] -[group_70540] -[group_70541] -[group_70542] -[group_70543] -[group_70544] -[group_70545] -[group_70546] -[group_70547] -[group_70548] -[group_70549] -[group_70550] -[group_70551] -[group_70552] -[group_70553] -[group_70554] -[group_70555] -[group_70556] -[group_70557] -[group_70558] -[group_70559] -[group_70560] -[group_70561] -[group_70562] -[group_70563] -[group_70564] -[group_70565] -[group_70566] -[group_70567] -[group_70568] -[group_70569] -[group_70570] -[group_70571] -[group_70572] -[group_70573] -[group_70574] -[group_70575] -[group_70576] -[group_70577] -[group_70578] -[group_70579] -[group_70580] -[group_70581] -[group_70582] -[group_70583] -[group_70584] -[group_70585] -[group_70586] -[group_70587] -[group_70588] -[group_70589] -[group_70590] -[group_70591] -[group_70592] -[group_70593] -[group_70594] -[group_70595] -[group_70596] -[group_70597] -[group_70598] -[group_70599] -[group_70600] -[group_70601] -[group_70602] -[group_70603] -[group_70604] -[group_70605] -[group_70606] -[group_70607] -[group_70608] -[group_70609] -[group_70610] -[group_70611] -[group_70612] -[group_70613] -[group_70614] -[group_70615] -[group_70616] -[group_70617] -[group_70618] -[group_70619] -[group_70620] -[group_70621] -[group_70622] -[group_70623] -[group_70624] -[group_70625] -[group_70626] -[group_70627] -[group_70628] -[group_70629] -[group_70630] -[group_70631] -[group_70632] -[group_70633] -[group_70634] -[group_70635] -[group_70636] -[group_70637] -[group_70638] -[group_70639] -[group_70640] -[group_70641] -[group_70642] -[group_70643] -[group_70644] -[group_70645] -[group_70646] -[group_70647] -[group_70648] -[group_70649] -[group_70650] -[group_70651] -[group_70652] -[group_70653] -[group_70654] -[group_70655] -[group_70656] -[group_70657] -[group_70658] -[group_70659] -[group_70660] -[group_70661] -[group_70662] -[group_70663] -[group_70664] -[group_70665] -[group_70666] -[group_70667] -[group_70668] -[group_70669] -[group_70670] -[group_70671] -[group_70672] -[group_70673] -[group_70674] -[group_70675] -[group_70676] -[group_70677] -[group_70678] -[group_70679] -[group_70680] -[group_70681] -[group_70682] -[group_70683] -[group_70684] -[group_70685] -[group_70686] -[group_70687] -[group_70688] -[group_70689] -[group_70690] -[group_70691] -[group_70692] -[group_70693] -[group_70694] -[group_70695] -[group_70696] -[group_70697] -[group_70698] -[group_70699] -[group_70700] -[group_70701] -[group_70702] -[group_70703] -[group_70704] -[group_70705] -[group_70706] -[group_70707] -[group_70708] -[group_70709] -[group_70710] -[group_70711] -[group_70712] -[group_70713] -[group_70714] -[group_70715] -[group_70716] -[group_70717] -[group_70718] -[group_70719] -[group_70720] -[group_70721] -[group_70722] -[group_70723] -[group_70724] -[group_70725] -[group_70726] -[group_70727] -[group_70728] -[group_70729] -[group_70730] -[group_70731] -[group_70732] -[group_70733] -[group_70734] -[group_70735] -[group_70736] -[group_70737] -[group_70738] -[group_70739] -[group_70740] -[group_70741] -[group_70742] -[group_70743] -[group_70744] -[group_70745] -[group_70746] -[group_70747] -[group_70748] -[group_70749] -[group_70750] -[group_70751] -[group_70752] -[group_70753] -[group_70754] -[group_70755] -[group_70756] -[group_70757] -[group_70758] -[group_70759] -[group_70760] -[group_70761] -[group_70762] -[group_70763] -[group_70764] -[group_70765] -[group_70766] -[group_70767] -[group_70768] -[group_70769] -[group_70770] -[group_70771] -[group_70772] -[group_70773] -[group_70774] -[group_70775] -[group_70776] -[group_70777] -[group_70778] -[group_70779] -[group_70780] -[group_70781] -[group_70782] -[group_70783] -[group_70784] -[group_70785] -[group_70786] -[group_70787] -[group_70788] -[group_70789] -[group_70790] -[group_70791] -[group_70792] -[group_70793] -[group_70794] -[group_70795] -[group_70796] -[group_70797] -[group_70798] -[group_70799] -[group_70800] -[group_70801] -[group_70802] -[group_70803] -[group_70804] -[group_70805] -[group_70806] -[group_70807] -[group_70808] -[group_70809] -[group_70810] -[group_70811] -[group_70812] -[group_70813] -[group_70814] -[group_70815] -[group_70816] -[group_70817] -[group_70818] -[group_70819] -[group_70820] -[group_70821] -[group_70822] -[group_70823] -[group_70824] -[group_70825] -[group_70826] -[group_70827] -[group_70828] -[group_70829] -[group_70830] -[group_70831] -[group_70832] -[group_70833] -[group_70834] -[group_70835] -[group_70836] -[group_70837] -[group_70838] -[group_70839] -[group_70840] -[group_70841] -[group_70842] -[group_70843] -[group_70844] -[group_70845] -[group_70846] -[group_70847] -[group_70848] -[group_70849] -[group_70850] -[group_70851] -[group_70852] -[group_70853] -[group_70854] -[group_70855] -[group_70856] -[group_70857] -[group_70858] -[group_70859] -[group_70860] -[group_70861] -[group_70862] -[group_70863] -[group_70864] -[group_70865] -[group_70866] -[group_70867] -[group_70868] -[group_70869] -[group_70870] -[group_70871] -[group_70872] -[group_70873] -[group_70874] -[group_70875] -[group_70876] -[group_70877] -[group_70878] -[group_70879] -[group_70880] -[group_70881] -[group_70882] -[group_70883] -[group_70884] -[group_70885] -[group_70886] -[group_70887] -[group_70888] -[group_70889] -[group_70890] -[group_70891] -[group_70892] -[group_70893] -[group_70894] -[group_70895] -[group_70896] -[group_70897] -[group_70898] -[group_70899] -[group_70900] -[group_70901] -[group_70902] -[group_70903] -[group_70904] -[group_70905] -[group_70906] -[group_70907] -[group_70908] -[group_70909] -[group_70910] -[group_70911] -[group_70912] -[group_70913] -[group_70914] -[group_70915] -[group_70916] -[group_70917] -[group_70918] -[group_70919] -[group_70920] -[group_70921] -[group_70922] -[group_70923] -[group_70924] -[group_70925] -[group_70926] -[group_70927] -[group_70928] -[group_70929] -[group_70930] -[group_70931] -[group_70932] -[group_70933] -[group_70934] -[group_70935] -[group_70936] -[group_70937] -[group_70938] -[group_70939] -[group_70940] -[group_70941] -[group_70942] -[group_70943] -[group_70944] -[group_70945] -[group_70946] -[group_70947] -[group_70948] -[group_70949] -[group_70950] -[group_70951] -[group_70952] -[group_70953] -[group_70954] -[group_70955] -[group_70956] -[group_70957] -[group_70958] -[group_70959] -[group_70960] -[group_70961] -[group_70962] -[group_70963] -[group_70964] -[group_70965] -[group_70966] -[group_70967] -[group_70968] -[group_70969] -[group_70970] -[group_70971] -[group_70972] -[group_70973] -[group_70974] -[group_70975] -[group_70976] -[group_70977] -[group_70978] -[group_70979] -[group_70980] -[group_70981] -[group_70982] -[group_70983] -[group_70984] -[group_70985] -[group_70986] -[group_70987] -[group_70988] -[group_70989] -[group_70990] -[group_70991] -[group_70992] -[group_70993] -[group_70994] -[group_70995] -[group_70996] -[group_70997] -[group_70998] -[group_70999] -[group_71000] -[group_71001] -[group_71002] -[group_71003] -[group_71004] -[group_71005] -[group_71006] -[group_71007] -[group_71008] -[group_71009] -[group_71010] -[group_71011] -[group_71012] -[group_71013] -[group_71014] -[group_71015] -[group_71016] -[group_71017] -[group_71018] -[group_71019] -[group_71020] -[group_71021] -[group_71022] -[group_71023] -[group_71024] -[group_71025] -[group_71026] -[group_71027] -[group_71028] -[group_71029] -[group_71030] -[group_71031] -[group_71032] -[group_71033] -[group_71034] -[group_71035] -[group_71036] -[group_71037] -[group_71038] -[group_71039] -[group_71040] -[group_71041] -[group_71042] -[group_71043] -[group_71044] -[group_71045] -[group_71046] -[group_71047] -[group_71048] -[group_71049] -[group_71050] -[group_71051] -[group_71052] -[group_71053] -[group_71054] -[group_71055] -[group_71056] -[group_71057] -[group_71058] -[group_71059] -[group_71060] -[group_71061] -[group_71062] -[group_71063] -[group_71064] -[group_71065] -[group_71066] -[group_71067] -[group_71068] -[group_71069] -[group_71070] -[group_71071] -[group_71072] -[group_71073] -[group_71074] -[group_71075] -[group_71076] -[group_71077] -[group_71078] -[group_71079] -[group_71080] -[group_71081] -[group_71082] -[group_71083] -[group_71084] -[group_71085] -[group_71086] -[group_71087] -[group_71088] -[group_71089] -[group_71090] -[group_71091] -[group_71092] -[group_71093] -[group_71094] -[group_71095] -[group_71096] -[group_71097] -[group_71098] -[group_71099] -[group_71100] -[group_71101] -[group_71102] -[group_71103] -[group_71104] -[group_71105] -[group_71106] -[group_71107] -[group_71108] -[group_71109] -[group_71110] -[group_71111] -[group_71112] -[group_71113] -[group_71114] -[group_71115] -[group_71116] -[group_71117] -[group_71118] -[group_71119] -[group_71120] -[group_71121] -[group_71122] -[group_71123] -[group_71124] -[group_71125] -[group_71126] -[group_71127] -[group_71128] -[group_71129] -[group_71130] -[group_71131] -[group_71132] -[group_71133] -[group_71134] -[group_71135] -[group_71136] -[group_71137] -[group_71138] -[group_71139] -[group_71140] -[group_71141] -[group_71142] -[group_71143] -[group_71144] -[group_71145] -[group_71146] -[group_71147] -[group_71148] -[group_71149] -[group_71150] -[group_71151] -[group_71152] -[group_71153] -[group_71154] -[group_71155] -[group_71156] -[group_71157] -[group_71158] -[group_71159] -[group_71160] -[group_71161] -[group_71162] -[group_71163] -[group_71164] -[group_71165] -[group_71166] -[group_71167] -[group_71168] -[group_71169] -[group_71170] -[group_71171] -[group_71172] -[group_71173] -[group_71174] -[group_71175] -[group_71176] -[group_71177] -[group_71178] -[group_71179] -[group_71180] -[group_71181] -[group_71182] -[group_71183] -[group_71184] -[group_71185] -[group_71186] -[group_71187] -[group_71188] -[group_71189] -[group_71190] -[group_71191] -[group_71192] -[group_71193] -[group_71194] -[group_71195] -[group_71196] -[group_71197] -[group_71198] -[group_71199] -[group_71200] -[group_71201] -[group_71202] -[group_71203] -[group_71204] -[group_71205] -[group_71206] -[group_71207] -[group_71208] -[group_71209] -[group_71210] -[group_71211] -[group_71212] -[group_71213] -[group_71214] -[group_71215] -[group_71216] -[group_71217] -[group_71218] -[group_71219] -[group_71220] -[group_71221] -[group_71222] -[group_71223] -[group_71224] -[group_71225] -[group_71226] -[group_71227] -[group_71228] -[group_71229] -[group_71230] -[group_71231] -[group_71232] -[group_71233] -[group_71234] -[group_71235] -[group_71236] -[group_71237] -[group_71238] -[group_71239] -[group_71240] -[group_71241] -[group_71242] -[group_71243] -[group_71244] -[group_71245] -[group_71246] -[group_71247] -[group_71248] -[group_71249] -[group_71250] -[group_71251] -[group_71252] -[group_71253] -[group_71254] -[group_71255] -[group_71256] -[group_71257] -[group_71258] -[group_71259] -[group_71260] -[group_71261] -[group_71262] -[group_71263] -[group_71264] -[group_71265] -[group_71266] -[group_71267] -[group_71268] -[group_71269] -[group_71270] -[group_71271] -[group_71272] -[group_71273] -[group_71274] -[group_71275] -[group_71276] -[group_71277] -[group_71278] -[group_71279] -[group_71280] -[group_71281] -[group_71282] -[group_71283] -[group_71284] -[group_71285] -[group_71286] -[group_71287] -[group_71288] -[group_71289] -[group_71290] -[group_71291] -[group_71292] -[group_71293] -[group_71294] -[group_71295] -[group_71296] -[group_71297] -[group_71298] -[group_71299] -[group_71300] -[group_71301] -[group_71302] -[group_71303] -[group_71304] -[group_71305] -[group_71306] -[group_71307] -[group_71308] -[group_71309] -[group_71310] -[group_71311] -[group_71312] -[group_71313] -[group_71314] -[group_71315] -[group_71316] -[group_71317] -[group_71318] -[group_71319] -[group_71320] -[group_71321] -[group_71322] -[group_71323] -[group_71324] -[group_71325] -[group_71326] -[group_71327] -[group_71328] -[group_71329] -[group_71330] -[group_71331] -[group_71332] -[group_71333] -[group_71334] -[group_71335] -[group_71336] -[group_71337] -[group_71338] -[group_71339] -[group_71340] -[group_71341] -[group_71342] -[group_71343] -[group_71344] -[group_71345] -[group_71346] -[group_71347] -[group_71348] -[group_71349] -[group_71350] -[group_71351] -[group_71352] -[group_71353] -[group_71354] -[group_71355] -[group_71356] -[group_71357] -[group_71358] -[group_71359] -[group_71360] -[group_71361] -[group_71362] -[group_71363] -[group_71364] -[group_71365] -[group_71366] -[group_71367] -[group_71368] -[group_71369] -[group_71370] -[group_71371] -[group_71372] -[group_71373] -[group_71374] -[group_71375] -[group_71376] -[group_71377] -[group_71378] -[group_71379] -[group_71380] -[group_71381] -[group_71382] -[group_71383] -[group_71384] -[group_71385] -[group_71386] -[group_71387] -[group_71388] -[group_71389] -[group_71390] -[group_71391] -[group_71392] -[group_71393] -[group_71394] -[group_71395] -[group_71396] -[group_71397] -[group_71398] -[group_71399] -[group_71400] -[group_71401] -[group_71402] -[group_71403] -[group_71404] -[group_71405] -[group_71406] -[group_71407] -[group_71408] -[group_71409] -[group_71410] -[group_71411] -[group_71412] -[group_71413] -[group_71414] -[group_71415] -[group_71416] -[group_71417] -[group_71418] -[group_71419] -[group_71420] -[group_71421] -[group_71422] -[group_71423] -[group_71424] -[group_71425] -[group_71426] -[group_71427] -[group_71428] -[group_71429] -[group_71430] -[group_71431] -[group_71432] -[group_71433] -[group_71434] -[group_71435] -[group_71436] -[group_71437] -[group_71438] -[group_71439] -[group_71440] -[group_71441] -[group_71442] -[group_71443] -[group_71444] -[group_71445] -[group_71446] -[group_71447] -[group_71448] -[group_71449] -[group_71450] -[group_71451] -[group_71452] -[group_71453] -[group_71454] -[group_71455] -[group_71456] -[group_71457] -[group_71458] -[group_71459] -[group_71460] -[group_71461] -[group_71462] -[group_71463] -[group_71464] -[group_71465] -[group_71466] -[group_71467] -[group_71468] -[group_71469] -[group_71470] -[group_71471] -[group_71472] -[group_71473] -[group_71474] -[group_71475] -[group_71476] -[group_71477] -[group_71478] -[group_71479] -[group_71480] -[group_71481] -[group_71482] -[group_71483] -[group_71484] -[group_71485] -[group_71486] -[group_71487] -[group_71488] -[group_71489] -[group_71490] -[group_71491] -[group_71492] -[group_71493] -[group_71494] -[group_71495] -[group_71496] -[group_71497] -[group_71498] -[group_71499] -[group_71500] -[group_71501] -[group_71502] -[group_71503] -[group_71504] -[group_71505] -[group_71506] -[group_71507] -[group_71508] -[group_71509] -[group_71510] -[group_71511] -[group_71512] -[group_71513] -[group_71514] -[group_71515] -[group_71516] -[group_71517] -[group_71518] -[group_71519] -[group_71520] -[group_71521] -[group_71522] -[group_71523] -[group_71524] -[group_71525] -[group_71526] -[group_71527] -[group_71528] -[group_71529] -[group_71530] -[group_71531] -[group_71532] -[group_71533] -[group_71534] -[group_71535] -[group_71536] -[group_71537] -[group_71538] -[group_71539] -[group_71540] -[group_71541] -[group_71542] -[group_71543] -[group_71544] -[group_71545] -[group_71546] -[group_71547] -[group_71548] -[group_71549] -[group_71550] -[group_71551] -[group_71552] -[group_71553] -[group_71554] -[group_71555] -[group_71556] -[group_71557] -[group_71558] -[group_71559] -[group_71560] -[group_71561] -[group_71562] -[group_71563] -[group_71564] -[group_71565] -[group_71566] -[group_71567] -[group_71568] -[group_71569] -[group_71570] -[group_71571] -[group_71572] -[group_71573] -[group_71574] -[group_71575] -[group_71576] -[group_71577] -[group_71578] -[group_71579] -[group_71580] -[group_71581] -[group_71582] -[group_71583] -[group_71584] -[group_71585] -[group_71586] -[group_71587] -[group_71588] -[group_71589] -[group_71590] -[group_71591] -[group_71592] -[group_71593] -[group_71594] -[group_71595] -[group_71596] -[group_71597] -[group_71598] -[group_71599] -[group_71600] -[group_71601] -[group_71602] -[group_71603] -[group_71604] -[group_71605] -[group_71606] -[group_71607] -[group_71608] -[group_71609] -[group_71610] -[group_71611] -[group_71612] -[group_71613] -[group_71614] -[group_71615] -[group_71616] -[group_71617] -[group_71618] -[group_71619] -[group_71620] -[group_71621] -[group_71622] -[group_71623] -[group_71624] -[group_71625] -[group_71626] -[group_71627] -[group_71628] -[group_71629] -[group_71630] -[group_71631] -[group_71632] -[group_71633] -[group_71634] -[group_71635] -[group_71636] -[group_71637] -[group_71638] -[group_71639] -[group_71640] -[group_71641] -[group_71642] -[group_71643] -[group_71644] -[group_71645] -[group_71646] -[group_71647] -[group_71648] -[group_71649] -[group_71650] -[group_71651] -[group_71652] -[group_71653] -[group_71654] -[group_71655] -[group_71656] -[group_71657] -[group_71658] -[group_71659] -[group_71660] -[group_71661] -[group_71662] -[group_71663] -[group_71664] -[group_71665] -[group_71666] -[group_71667] -[group_71668] -[group_71669] -[group_71670] -[group_71671] -[group_71672] -[group_71673] -[group_71674] -[group_71675] -[group_71676] -[group_71677] -[group_71678] -[group_71679] -[group_71680] -[group_71681] -[group_71682] -[group_71683] -[group_71684] -[group_71685] -[group_71686] -[group_71687] -[group_71688] -[group_71689] -[group_71690] -[group_71691] -[group_71692] -[group_71693] -[group_71694] -[group_71695] -[group_71696] -[group_71697] -[group_71698] -[group_71699] -[group_71700] -[group_71701] -[group_71702] -[group_71703] -[group_71704] -[group_71705] -[group_71706] -[group_71707] -[group_71708] -[group_71709] -[group_71710] -[group_71711] -[group_71712] -[group_71713] -[group_71714] -[group_71715] -[group_71716] -[group_71717] -[group_71718] -[group_71719] -[group_71720] -[group_71721] -[group_71722] -[group_71723] -[group_71724] -[group_71725] -[group_71726] -[group_71727] -[group_71728] -[group_71729] -[group_71730] -[group_71731] -[group_71732] -[group_71733] -[group_71734] -[group_71735] -[group_71736] -[group_71737] -[group_71738] -[group_71739] -[group_71740] -[group_71741] -[group_71742] -[group_71743] -[group_71744] -[group_71745] -[group_71746] -[group_71747] -[group_71748] -[group_71749] -[group_71750] -[group_71751] -[group_71752] -[group_71753] -[group_71754] -[group_71755] -[group_71756] -[group_71757] -[group_71758] -[group_71759] -[group_71760] -[group_71761] -[group_71762] -[group_71763] -[group_71764] -[group_71765] -[group_71766] -[group_71767] -[group_71768] -[group_71769] -[group_71770] -[group_71771] -[group_71772] -[group_71773] -[group_71774] -[group_71775] -[group_71776] -[group_71777] -[group_71778] -[group_71779] -[group_71780] -[group_71781] -[group_71782] -[group_71783] -[group_71784] -[group_71785] -[group_71786] -[group_71787] -[group_71788] -[group_71789] -[group_71790] -[group_71791] -[group_71792] -[group_71793] -[group_71794] -[group_71795] -[group_71796] -[group_71797] -[group_71798] -[group_71799] -[group_71800] -[group_71801] -[group_71802] -[group_71803] -[group_71804] -[group_71805] -[group_71806] -[group_71807] -[group_71808] -[group_71809] -[group_71810] -[group_71811] -[group_71812] -[group_71813] -[group_71814] -[group_71815] -[group_71816] -[group_71817] -[group_71818] -[group_71819] -[group_71820] -[group_71821] -[group_71822] -[group_71823] -[group_71824] -[group_71825] -[group_71826] -[group_71827] -[group_71828] -[group_71829] -[group_71830] -[group_71831] -[group_71832] -[group_71833] -[group_71834] -[group_71835] -[group_71836] -[group_71837] -[group_71838] -[group_71839] -[group_71840] -[group_71841] -[group_71842] -[group_71843] -[group_71844] -[group_71845] -[group_71846] -[group_71847] -[group_71848] -[group_71849] -[group_71850] -[group_71851] -[group_71852] -[group_71853] -[group_71854] -[group_71855] -[group_71856] -[group_71857] -[group_71858] -[group_71859] -[group_71860] -[group_71861] -[group_71862] -[group_71863] -[group_71864] -[group_71865] -[group_71866] -[group_71867] -[group_71868] -[group_71869] -[group_71870] -[group_71871] -[group_71872] -[group_71873] -[group_71874] -[group_71875] -[group_71876] -[group_71877] -[group_71878] -[group_71879] -[group_71880] -[group_71881] -[group_71882] -[group_71883] -[group_71884] -[group_71885] -[group_71886] -[group_71887] -[group_71888] -[group_71889] -[group_71890] -[group_71891] -[group_71892] -[group_71893] -[group_71894] -[group_71895] -[group_71896] -[group_71897] -[group_71898] -[group_71899] -[group_71900] -[group_71901] -[group_71902] -[group_71903] -[group_71904] -[group_71905] -[group_71906] -[group_71907] -[group_71908] -[group_71909] -[group_71910] -[group_71911] -[group_71912] -[group_71913] -[group_71914] -[group_71915] -[group_71916] -[group_71917] -[group_71918] -[group_71919] -[group_71920] -[group_71921] -[group_71922] -[group_71923] -[group_71924] -[group_71925] -[group_71926] -[group_71927] -[group_71928] -[group_71929] -[group_71930] -[group_71931] -[group_71932] -[group_71933] -[group_71934] -[group_71935] -[group_71936] -[group_71937] -[group_71938] -[group_71939] -[group_71940] -[group_71941] -[group_71942] -[group_71943] -[group_71944] -[group_71945] -[group_71946] -[group_71947] -[group_71948] -[group_71949] -[group_71950] -[group_71951] -[group_71952] -[group_71953] -[group_71954] -[group_71955] -[group_71956] -[group_71957] -[group_71958] -[group_71959] -[group_71960] -[group_71961] -[group_71962] -[group_71963] -[group_71964] -[group_71965] -[group_71966] -[group_71967] -[group_71968] -[group_71969] -[group_71970] -[group_71971] -[group_71972] -[group_71973] -[group_71974] -[group_71975] -[group_71976] -[group_71977] -[group_71978] -[group_71979] -[group_71980] -[group_71981] -[group_71982] -[group_71983] -[group_71984] -[group_71985] -[group_71986] -[group_71987] -[group_71988] -[group_71989] -[group_71990] -[group_71991] -[group_71992] -[group_71993] -[group_71994] -[group_71995] -[group_71996] -[group_71997] -[group_71998] -[group_71999] -[group_72000] -[group_72001] -[group_72002] -[group_72003] -[group_72004] -[group_72005] -[group_72006] -[group_72007] -[group_72008] -[group_72009] -[group_72010] -[group_72011] -[group_72012] -[group_72013] -[group_72014] -[group_72015] -[group_72016] -[group_72017] -[group_72018] -[group_72019] -[group_72020] -[group_72021] -[group_72022] -[group_72023] -[group_72024] -[group_72025] -[group_72026] -[group_72027] -[group_72028] -[group_72029] -[group_72030] -[group_72031] -[group_72032] -[group_72033] -[group_72034] -[group_72035] -[group_72036] -[group_72037] -[group_72038] -[group_72039] -[group_72040] -[group_72041] -[group_72042] -[group_72043] -[group_72044] -[group_72045] -[group_72046] -[group_72047] -[group_72048] -[group_72049] -[group_72050] -[group_72051] -[group_72052] -[group_72053] -[group_72054] -[group_72055] -[group_72056] -[group_72057] -[group_72058] -[group_72059] -[group_72060] -[group_72061] -[group_72062] -[group_72063] -[group_72064] -[group_72065] -[group_72066] -[group_72067] -[group_72068] -[group_72069] -[group_72070] -[group_72071] -[group_72072] -[group_72073] -[group_72074] -[group_72075] -[group_72076] -[group_72077] -[group_72078] -[group_72079] -[group_72080] -[group_72081] -[group_72082] -[group_72083] -[group_72084] -[group_72085] -[group_72086] -[group_72087] -[group_72088] -[group_72089] -[group_72090] -[group_72091] -[group_72092] -[group_72093] -[group_72094] -[group_72095] -[group_72096] -[group_72097] -[group_72098] -[group_72099] -[group_72100] -[group_72101] -[group_72102] -[group_72103] -[group_72104] -[group_72105] -[group_72106] -[group_72107] -[group_72108] -[group_72109] -[group_72110] -[group_72111] -[group_72112] -[group_72113] -[group_72114] -[group_72115] -[group_72116] -[group_72117] -[group_72118] -[group_72119] -[group_72120] -[group_72121] -[group_72122] -[group_72123] -[group_72124] -[group_72125] -[group_72126] -[group_72127] -[group_72128] -[group_72129] -[group_72130] -[group_72131] -[group_72132] -[group_72133] -[group_72134] -[group_72135] -[group_72136] -[group_72137] -[group_72138] -[group_72139] -[group_72140] -[group_72141] -[group_72142] -[group_72143] -[group_72144] -[group_72145] -[group_72146] -[group_72147] -[group_72148] -[group_72149] -[group_72150] -[group_72151] -[group_72152] -[group_72153] -[group_72154] -[group_72155] -[group_72156] -[group_72157] -[group_72158] -[group_72159] -[group_72160] -[group_72161] -[group_72162] -[group_72163] -[group_72164] -[group_72165] -[group_72166] -[group_72167] -[group_72168] -[group_72169] -[group_72170] -[group_72171] -[group_72172] -[group_72173] -[group_72174] -[group_72175] -[group_72176] -[group_72177] -[group_72178] -[group_72179] -[group_72180] -[group_72181] -[group_72182] -[group_72183] -[group_72184] -[group_72185] -[group_72186] -[group_72187] -[group_72188] -[group_72189] -[group_72190] -[group_72191] -[group_72192] -[group_72193] -[group_72194] -[group_72195] -[group_72196] -[group_72197] -[group_72198] -[group_72199] -[group_72200] -[group_72201] -[group_72202] -[group_72203] -[group_72204] -[group_72205] -[group_72206] -[group_72207] -[group_72208] -[group_72209] -[group_72210] -[group_72211] -[group_72212] -[group_72213] -[group_72214] -[group_72215] -[group_72216] -[group_72217] -[group_72218] -[group_72219] -[group_72220] -[group_72221] -[group_72222] -[group_72223] -[group_72224] -[group_72225] -[group_72226] -[group_72227] -[group_72228] -[group_72229] -[group_72230] -[group_72231] -[group_72232] -[group_72233] -[group_72234] -[group_72235] -[group_72236] -[group_72237] -[group_72238] -[group_72239] -[group_72240] -[group_72241] -[group_72242] -[group_72243] -[group_72244] -[group_72245] -[group_72246] -[group_72247] -[group_72248] -[group_72249] -[group_72250] -[group_72251] -[group_72252] -[group_72253] -[group_72254] -[group_72255] -[group_72256] -[group_72257] -[group_72258] -[group_72259] -[group_72260] -[group_72261] -[group_72262] -[group_72263] -[group_72264] -[group_72265] -[group_72266] -[group_72267] -[group_72268] -[group_72269] -[group_72270] -[group_72271] -[group_72272] -[group_72273] -[group_72274] -[group_72275] -[group_72276] -[group_72277] -[group_72278] -[group_72279] -[group_72280] -[group_72281] -[group_72282] -[group_72283] -[group_72284] -[group_72285] -[group_72286] -[group_72287] -[group_72288] -[group_72289] -[group_72290] -[group_72291] -[group_72292] -[group_72293] -[group_72294] -[group_72295] -[group_72296] -[group_72297] -[group_72298] -[group_72299] -[group_72300] -[group_72301] -[group_72302] -[group_72303] -[group_72304] -[group_72305] -[group_72306] -[group_72307] -[group_72308] -[group_72309] -[group_72310] -[group_72311] -[group_72312] -[group_72313] -[group_72314] -[group_72315] -[group_72316] -[group_72317] -[group_72318] -[group_72319] -[group_72320] -[group_72321] -[group_72322] -[group_72323] -[group_72324] -[group_72325] -[group_72326] -[group_72327] -[group_72328] -[group_72329] -[group_72330] -[group_72331] -[group_72332] -[group_72333] -[group_72334] -[group_72335] -[group_72336] -[group_72337] -[group_72338] -[group_72339] -[group_72340] -[group_72341] -[group_72342] -[group_72343] -[group_72344] -[group_72345] -[group_72346] -[group_72347] -[group_72348] -[group_72349] -[group_72350] -[group_72351] -[group_72352] -[group_72353] -[group_72354] -[group_72355] -[group_72356] -[group_72357] -[group_72358] -[group_72359] -[group_72360] -[group_72361] -[group_72362] -[group_72363] -[group_72364] -[group_72365] -[group_72366] -[group_72367] -[group_72368] -[group_72369] -[group_72370] -[group_72371] -[group_72372] -[group_72373] -[group_72374] -[group_72375] -[group_72376] -[group_72377] -[group_72378] -[group_72379] -[group_72380] -[group_72381] -[group_72382] -[group_72383] -[group_72384] -[group_72385] -[group_72386] -[group_72387] -[group_72388] -[group_72389] -[group_72390] -[group_72391] -[group_72392] -[group_72393] -[group_72394] -[group_72395] -[group_72396] -[group_72397] -[group_72398] -[group_72399] -[group_72400] -[group_72401] -[group_72402] -[group_72403] -[group_72404] -[group_72405] -[group_72406] -[group_72407] -[group_72408] -[group_72409] -[group_72410] -[group_72411] -[group_72412] -[group_72413] -[group_72414] -[group_72415] -[group_72416] -[group_72417] -[group_72418] -[group_72419] -[group_72420] -[group_72421] -[group_72422] -[group_72423] -[group_72424] -[group_72425] -[group_72426] -[group_72427] -[group_72428] -[group_72429] -[group_72430] -[group_72431] -[group_72432] -[group_72433] -[group_72434] -[group_72435] -[group_72436] -[group_72437] -[group_72438] -[group_72439] -[group_72440] -[group_72441] -[group_72442] -[group_72443] -[group_72444] -[group_72445] -[group_72446] -[group_72447] -[group_72448] -[group_72449] -[group_72450] -[group_72451] -[group_72452] -[group_72453] -[group_72454] -[group_72455] -[group_72456] -[group_72457] -[group_72458] -[group_72459] -[group_72460] -[group_72461] -[group_72462] -[group_72463] -[group_72464] -[group_72465] -[group_72466] -[group_72467] -[group_72468] -[group_72469] -[group_72470] -[group_72471] -[group_72472] -[group_72473] -[group_72474] -[group_72475] -[group_72476] -[group_72477] -[group_72478] -[group_72479] -[group_72480] -[group_72481] -[group_72482] -[group_72483] -[group_72484] -[group_72485] -[group_72486] -[group_72487] -[group_72488] -[group_72489] -[group_72490] -[group_72491] -[group_72492] -[group_72493] -[group_72494] -[group_72495] -[group_72496] -[group_72497] -[group_72498] -[group_72499] -[group_72500] -[group_72501] -[group_72502] -[group_72503] -[group_72504] -[group_72505] -[group_72506] -[group_72507] -[group_72508] -[group_72509] -[group_72510] -[group_72511] -[group_72512] -[group_72513] -[group_72514] -[group_72515] -[group_72516] -[group_72517] -[group_72518] -[group_72519] -[group_72520] -[group_72521] -[group_72522] -[group_72523] -[group_72524] -[group_72525] -[group_72526] -[group_72527] -[group_72528] -[group_72529] -[group_72530] -[group_72531] -[group_72532] -[group_72533] -[group_72534] -[group_72535] -[group_72536] -[group_72537] -[group_72538] -[group_72539] -[group_72540] -[group_72541] -[group_72542] -[group_72543] -[group_72544] -[group_72545] -[group_72546] -[group_72547] -[group_72548] -[group_72549] -[group_72550] -[group_72551] -[group_72552] -[group_72553] -[group_72554] -[group_72555] -[group_72556] -[group_72557] -[group_72558] -[group_72559] -[group_72560] -[group_72561] -[group_72562] -[group_72563] -[group_72564] -[group_72565] -[group_72566] -[group_72567] -[group_72568] -[group_72569] -[group_72570] -[group_72571] -[group_72572] -[group_72573] -[group_72574] -[group_72575] -[group_72576] -[group_72577] -[group_72578] -[group_72579] -[group_72580] -[group_72581] -[group_72582] -[group_72583] -[group_72584] -[group_72585] -[group_72586] -[group_72587] -[group_72588] -[group_72589] -[group_72590] -[group_72591] -[group_72592] -[group_72593] -[group_72594] -[group_72595] -[group_72596] -[group_72597] -[group_72598] -[group_72599] -[group_72600] -[group_72601] -[group_72602] -[group_72603] -[group_72604] -[group_72605] -[group_72606] -[group_72607] -[group_72608] -[group_72609] -[group_72610] -[group_72611] -[group_72612] -[group_72613] -[group_72614] -[group_72615] -[group_72616] -[group_72617] -[group_72618] -[group_72619] -[group_72620] -[group_72621] -[group_72622] -[group_72623] -[group_72624] -[group_72625] -[group_72626] -[group_72627] -[group_72628] -[group_72629] -[group_72630] -[group_72631] -[group_72632] -[group_72633] -[group_72634] -[group_72635] -[group_72636] -[group_72637] -[group_72638] -[group_72639] -[group_72640] -[group_72641] -[group_72642] -[group_72643] -[group_72644] -[group_72645] -[group_72646] -[group_72647] -[group_72648] -[group_72649] -[group_72650] -[group_72651] -[group_72652] -[group_72653] -[group_72654] -[group_72655] -[group_72656] -[group_72657] -[group_72658] -[group_72659] -[group_72660] -[group_72661] -[group_72662] -[group_72663] -[group_72664] -[group_72665] -[group_72666] -[group_72667] -[group_72668] -[group_72669] -[group_72670] -[group_72671] -[group_72672] -[group_72673] -[group_72674] -[group_72675] -[group_72676] -[group_72677] -[group_72678] -[group_72679] -[group_72680] -[group_72681] -[group_72682] -[group_72683] -[group_72684] -[group_72685] -[group_72686] -[group_72687] -[group_72688] -[group_72689] -[group_72690] -[group_72691] -[group_72692] -[group_72693] -[group_72694] -[group_72695] -[group_72696] -[group_72697] -[group_72698] -[group_72699] -[group_72700] -[group_72701] -[group_72702] -[group_72703] -[group_72704] -[group_72705] -[group_72706] -[group_72707] -[group_72708] -[group_72709] -[group_72710] -[group_72711] -[group_72712] -[group_72713] -[group_72714] -[group_72715] -[group_72716] -[group_72717] -[group_72718] -[group_72719] -[group_72720] -[group_72721] -[group_72722] -[group_72723] -[group_72724] -[group_72725] -[group_72726] -[group_72727] -[group_72728] -[group_72729] -[group_72730] -[group_72731] -[group_72732] -[group_72733] -[group_72734] -[group_72735] -[group_72736] -[group_72737] -[group_72738] -[group_72739] -[group_72740] -[group_72741] -[group_72742] -[group_72743] -[group_72744] -[group_72745] -[group_72746] -[group_72747] -[group_72748] -[group_72749] -[group_72750] -[group_72751] -[group_72752] -[group_72753] -[group_72754] -[group_72755] -[group_72756] -[group_72757] -[group_72758] -[group_72759] -[group_72760] -[group_72761] -[group_72762] -[group_72763] -[group_72764] -[group_72765] -[group_72766] -[group_72767] -[group_72768] -[group_72769] -[group_72770] -[group_72771] -[group_72772] -[group_72773] -[group_72774] -[group_72775] -[group_72776] -[group_72777] -[group_72778] -[group_72779] -[group_72780] -[group_72781] -[group_72782] -[group_72783] -[group_72784] -[group_72785] -[group_72786] -[group_72787] -[group_72788] -[group_72789] -[group_72790] -[group_72791] -[group_72792] -[group_72793] -[group_72794] -[group_72795] -[group_72796] -[group_72797] -[group_72798] -[group_72799] -[group_72800] -[group_72801] -[group_72802] -[group_72803] -[group_72804] -[group_72805] -[group_72806] -[group_72807] -[group_72808] -[group_72809] -[group_72810] -[group_72811] -[group_72812] -[group_72813] -[group_72814] -[group_72815] -[group_72816] -[group_72817] -[group_72818] -[group_72819] -[group_72820] -[group_72821] -[group_72822] -[group_72823] -[group_72824] -[group_72825] -[group_72826] -[group_72827] -[group_72828] -[group_72829] -[group_72830] -[group_72831] -[group_72832] -[group_72833] -[group_72834] -[group_72835] -[group_72836] -[group_72837] -[group_72838] -[group_72839] -[group_72840] -[group_72841] -[group_72842] -[group_72843] -[group_72844] -[group_72845] -[group_72846] -[group_72847] -[group_72848] -[group_72849] -[group_72850] -[group_72851] -[group_72852] -[group_72853] -[group_72854] -[group_72855] -[group_72856] -[group_72857] -[group_72858] -[group_72859] -[group_72860] -[group_72861] -[group_72862] -[group_72863] -[group_72864] -[group_72865] -[group_72866] -[group_72867] -[group_72868] -[group_72869] -[group_72870] -[group_72871] -[group_72872] -[group_72873] -[group_72874] -[group_72875] -[group_72876] -[group_72877] -[group_72878] -[group_72879] -[group_72880] -[group_72881] -[group_72882] -[group_72883] -[group_72884] -[group_72885] -[group_72886] -[group_72887] -[group_72888] -[group_72889] -[group_72890] -[group_72891] -[group_72892] -[group_72893] -[group_72894] -[group_72895] -[group_72896] -[group_72897] -[group_72898] -[group_72899] -[group_72900] -[group_72901] -[group_72902] -[group_72903] -[group_72904] -[group_72905] -[group_72906] -[group_72907] -[group_72908] -[group_72909] -[group_72910] -[group_72911] -[group_72912] -[group_72913] -[group_72914] -[group_72915] -[group_72916] -[group_72917] -[group_72918] -[group_72919] -[group_72920] -[group_72921] -[group_72922] -[group_72923] -[group_72924] -[group_72925] -[group_72926] -[group_72927] -[group_72928] -[group_72929] -[group_72930] -[group_72931] -[group_72932] -[group_72933] -[group_72934] -[group_72935] -[group_72936] -[group_72937] -[group_72938] -[group_72939] -[group_72940] -[group_72941] -[group_72942] -[group_72943] -[group_72944] -[group_72945] -[group_72946] -[group_72947] -[group_72948] -[group_72949] -[group_72950] -[group_72951] -[group_72952] -[group_72953] -[group_72954] -[group_72955] -[group_72956] -[group_72957] -[group_72958] -[group_72959] -[group_72960] -[group_72961] -[group_72962] -[group_72963] -[group_72964] -[group_72965] -[group_72966] -[group_72967] -[group_72968] -[group_72969] -[group_72970] -[group_72971] -[group_72972] -[group_72973] -[group_72974] -[group_72975] -[group_72976] -[group_72977] -[group_72978] -[group_72979] -[group_72980] -[group_72981] -[group_72982] -[group_72983] -[group_72984] -[group_72985] -[group_72986] -[group_72987] -[group_72988] -[group_72989] -[group_72990] -[group_72991] -[group_72992] -[group_72993] -[group_72994] -[group_72995] -[group_72996] -[group_72997] -[group_72998] -[group_72999] -[group_73000] -[group_73001] -[group_73002] -[group_73003] -[group_73004] -[group_73005] -[group_73006] -[group_73007] -[group_73008] -[group_73009] -[group_73010] -[group_73011] -[group_73012] -[group_73013] -[group_73014] -[group_73015] -[group_73016] -[group_73017] -[group_73018] -[group_73019] -[group_73020] -[group_73021] -[group_73022] -[group_73023] -[group_73024] -[group_73025] -[group_73026] -[group_73027] -[group_73028] -[group_73029] -[group_73030] -[group_73031] -[group_73032] -[group_73033] -[group_73034] -[group_73035] -[group_73036] -[group_73037] -[group_73038] -[group_73039] -[group_73040] -[group_73041] -[group_73042] -[group_73043] -[group_73044] -[group_73045] -[group_73046] -[group_73047] -[group_73048] -[group_73049] -[group_73050] -[group_73051] -[group_73052] -[group_73053] -[group_73054] -[group_73055] -[group_73056] -[group_73057] -[group_73058] -[group_73059] -[group_73060] -[group_73061] -[group_73062] -[group_73063] -[group_73064] -[group_73065] -[group_73066] -[group_73067] -[group_73068] -[group_73069] -[group_73070] -[group_73071] -[group_73072] -[group_73073] -[group_73074] -[group_73075] -[group_73076] -[group_73077] -[group_73078] -[group_73079] -[group_73080] -[group_73081] -[group_73082] -[group_73083] -[group_73084] -[group_73085] -[group_73086] -[group_73087] -[group_73088] -[group_73089] -[group_73090] -[group_73091] -[group_73092] -[group_73093] -[group_73094] -[group_73095] -[group_73096] -[group_73097] -[group_73098] -[group_73099] -[group_73100] -[group_73101] -[group_73102] -[group_73103] -[group_73104] -[group_73105] -[group_73106] -[group_73107] -[group_73108] -[group_73109] -[group_73110] -[group_73111] -[group_73112] -[group_73113] -[group_73114] -[group_73115] -[group_73116] -[group_73117] -[group_73118] -[group_73119] -[group_73120] -[group_73121] -[group_73122] -[group_73123] -[group_73124] -[group_73125] -[group_73126] -[group_73127] -[group_73128] -[group_73129] -[group_73130] -[group_73131] -[group_73132] -[group_73133] -[group_73134] -[group_73135] -[group_73136] -[group_73137] -[group_73138] -[group_73139] -[group_73140] -[group_73141] -[group_73142] -[group_73143] -[group_73144] -[group_73145] -[group_73146] -[group_73147] -[group_73148] -[group_73149] -[group_73150] -[group_73151] -[group_73152] -[group_73153] -[group_73154] -[group_73155] -[group_73156] -[group_73157] -[group_73158] -[group_73159] -[group_73160] -[group_73161] -[group_73162] -[group_73163] -[group_73164] -[group_73165] -[group_73166] -[group_73167] -[group_73168] -[group_73169] -[group_73170] -[group_73171] -[group_73172] -[group_73173] -[group_73174] -[group_73175] -[group_73176] -[group_73177] -[group_73178] -[group_73179] -[group_73180] -[group_73181] -[group_73182] -[group_73183] -[group_73184] -[group_73185] -[group_73186] -[group_73187] -[group_73188] -[group_73189] -[group_73190] -[group_73191] -[group_73192] -[group_73193] -[group_73194] -[group_73195] -[group_73196] -[group_73197] -[group_73198] -[group_73199] -[group_73200] -[group_73201] -[group_73202] -[group_73203] -[group_73204] -[group_73205] -[group_73206] -[group_73207] -[group_73208] -[group_73209] -[group_73210] -[group_73211] -[group_73212] -[group_73213] -[group_73214] -[group_73215] -[group_73216] -[group_73217] -[group_73218] -[group_73219] -[group_73220] -[group_73221] -[group_73222] -[group_73223] -[group_73224] -[group_73225] -[group_73226] -[group_73227] -[group_73228] -[group_73229] -[group_73230] -[group_73231] -[group_73232] -[group_73233] -[group_73234] -[group_73235] -[group_73236] -[group_73237] -[group_73238] -[group_73239] -[group_73240] -[group_73241] -[group_73242] -[group_73243] -[group_73244] -[group_73245] -[group_73246] -[group_73247] -[group_73248] -[group_73249] -[group_73250] -[group_73251] -[group_73252] -[group_73253] -[group_73254] -[group_73255] -[group_73256] -[group_73257] -[group_73258] -[group_73259] -[group_73260] -[group_73261] -[group_73262] -[group_73263] -[group_73264] -[group_73265] -[group_73266] -[group_73267] -[group_73268] -[group_73269] -[group_73270] -[group_73271] -[group_73272] -[group_73273] -[group_73274] -[group_73275] -[group_73276] -[group_73277] -[group_73278] -[group_73279] -[group_73280] -[group_73281] -[group_73282] -[group_73283] -[group_73284] -[group_73285] -[group_73286] -[group_73287] -[group_73288] -[group_73289] -[group_73290] -[group_73291] -[group_73292] -[group_73293] -[group_73294] -[group_73295] -[group_73296] -[group_73297] -[group_73298] -[group_73299] -[group_73300] -[group_73301] -[group_73302] -[group_73303] -[group_73304] -[group_73305] -[group_73306] -[group_73307] -[group_73308] -[group_73309] -[group_73310] -[group_73311] -[group_73312] -[group_73313] -[group_73314] -[group_73315] -[group_73316] -[group_73317] -[group_73318] -[group_73319] -[group_73320] -[group_73321] -[group_73322] -[group_73323] -[group_73324] -[group_73325] -[group_73326] -[group_73327] -[group_73328] -[group_73329] -[group_73330] -[group_73331] -[group_73332] -[group_73333] -[group_73334] -[group_73335] -[group_73336] -[group_73337] -[group_73338] -[group_73339] -[group_73340] -[group_73341] -[group_73342] -[group_73343] -[group_73344] -[group_73345] -[group_73346] -[group_73347] -[group_73348] -[group_73349] -[group_73350] -[group_73351] -[group_73352] -[group_73353] -[group_73354] -[group_73355] -[group_73356] -[group_73357] -[group_73358] -[group_73359] -[group_73360] -[group_73361] -[group_73362] -[group_73363] -[group_73364] -[group_73365] -[group_73366] -[group_73367] -[group_73368] -[group_73369] -[group_73370] -[group_73371] -[group_73372] -[group_73373] -[group_73374] -[group_73375] -[group_73376] -[group_73377] -[group_73378] -[group_73379] -[group_73380] -[group_73381] -[group_73382] -[group_73383] -[group_73384] -[group_73385] -[group_73386] -[group_73387] -[group_73388] -[group_73389] -[group_73390] -[group_73391] -[group_73392] -[group_73393] -[group_73394] -[group_73395] -[group_73396] -[group_73397] -[group_73398] -[group_73399] -[group_73400] -[group_73401] -[group_73402] -[group_73403] -[group_73404] -[group_73405] -[group_73406] -[group_73407] -[group_73408] -[group_73409] -[group_73410] -[group_73411] -[group_73412] -[group_73413] -[group_73414] -[group_73415] -[group_73416] -[group_73417] -[group_73418] -[group_73419] -[group_73420] -[group_73421] -[group_73422] -[group_73423] -[group_73424] -[group_73425] -[group_73426] -[group_73427] -[group_73428] -[group_73429] -[group_73430] -[group_73431] -[group_73432] -[group_73433] -[group_73434] -[group_73435] -[group_73436] -[group_73437] -[group_73438] -[group_73439] -[group_73440] -[group_73441] -[group_73442] -[group_73443] -[group_73444] -[group_73445] -[group_73446] -[group_73447] -[group_73448] -[group_73449] -[group_73450] -[group_73451] -[group_73452] -[group_73453] -[group_73454] -[group_73455] -[group_73456] -[group_73457] -[group_73458] -[group_73459] -[group_73460] -[group_73461] -[group_73462] -[group_73463] -[group_73464] -[group_73465] -[group_73466] -[group_73467] -[group_73468] -[group_73469] -[group_73470] -[group_73471] -[group_73472] -[group_73473] -[group_73474] -[group_73475] -[group_73476] -[group_73477] -[group_73478] -[group_73479] -[group_73480] -[group_73481] -[group_73482] -[group_73483] -[group_73484] -[group_73485] -[group_73486] -[group_73487] -[group_73488] -[group_73489] -[group_73490] -[group_73491] -[group_73492] -[group_73493] -[group_73494] -[group_73495] -[group_73496] -[group_73497] -[group_73498] -[group_73499] -[group_73500] -[group_73501] -[group_73502] -[group_73503] -[group_73504] -[group_73505] -[group_73506] -[group_73507] -[group_73508] -[group_73509] -[group_73510] -[group_73511] -[group_73512] -[group_73513] -[group_73514] -[group_73515] -[group_73516] -[group_73517] -[group_73518] -[group_73519] -[group_73520] -[group_73521] -[group_73522] -[group_73523] -[group_73524] -[group_73525] -[group_73526] -[group_73527] -[group_73528] -[group_73529] -[group_73530] -[group_73531] -[group_73532] -[group_73533] -[group_73534] -[group_73535] -[group_73536] -[group_73537] -[group_73538] -[group_73539] -[group_73540] -[group_73541] -[group_73542] -[group_73543] -[group_73544] -[group_73545] -[group_73546] -[group_73547] -[group_73548] -[group_73549] -[group_73550] -[group_73551] -[group_73552] -[group_73553] -[group_73554] -[group_73555] -[group_73556] -[group_73557] -[group_73558] -[group_73559] -[group_73560] -[group_73561] -[group_73562] -[group_73563] -[group_73564] -[group_73565] -[group_73566] -[group_73567] -[group_73568] -[group_73569] -[group_73570] -[group_73571] -[group_73572] -[group_73573] -[group_73574] -[group_73575] -[group_73576] -[group_73577] -[group_73578] -[group_73579] -[group_73580] -[group_73581] -[group_73582] -[group_73583] -[group_73584] -[group_73585] -[group_73586] -[group_73587] -[group_73588] -[group_73589] -[group_73590] -[group_73591] -[group_73592] -[group_73593] -[group_73594] -[group_73595] -[group_73596] -[group_73597] -[group_73598] -[group_73599] -[group_73600] -[group_73601] -[group_73602] -[group_73603] -[group_73604] -[group_73605] -[group_73606] -[group_73607] -[group_73608] -[group_73609] -[group_73610] -[group_73611] -[group_73612] -[group_73613] -[group_73614] -[group_73615] -[group_73616] -[group_73617] -[group_73618] -[group_73619] -[group_73620] -[group_73621] -[group_73622] -[group_73623] -[group_73624] -[group_73625] -[group_73626] -[group_73627] -[group_73628] -[group_73629] -[group_73630] -[group_73631] -[group_73632] -[group_73633] -[group_73634] -[group_73635] -[group_73636] -[group_73637] -[group_73638] -[group_73639] -[group_73640] -[group_73641] -[group_73642] -[group_73643] -[group_73644] -[group_73645] -[group_73646] -[group_73647] -[group_73648] -[group_73649] -[group_73650] -[group_73651] -[group_73652] -[group_73653] -[group_73654] -[group_73655] -[group_73656] -[group_73657] -[group_73658] -[group_73659] -[group_73660] -[group_73661] -[group_73662] -[group_73663] -[group_73664] -[group_73665] -[group_73666] -[group_73667] -[group_73668] -[group_73669] -[group_73670] -[group_73671] -[group_73672] -[group_73673] -[group_73674] -[group_73675] -[group_73676] -[group_73677] -[group_73678] -[group_73679] -[group_73680] -[group_73681] -[group_73682] -[group_73683] -[group_73684] -[group_73685] -[group_73686] -[group_73687] -[group_73688] -[group_73689] -[group_73690] -[group_73691] -[group_73692] -[group_73693] -[group_73694] -[group_73695] -[group_73696] -[group_73697] -[group_73698] -[group_73699] -[group_73700] -[group_73701] -[group_73702] -[group_73703] -[group_73704] -[group_73705] -[group_73706] -[group_73707] -[group_73708] -[group_73709] -[group_73710] -[group_73711] -[group_73712] -[group_73713] -[group_73714] -[group_73715] -[group_73716] -[group_73717] -[group_73718] -[group_73719] -[group_73720] -[group_73721] -[group_73722] -[group_73723] -[group_73724] -[group_73725] -[group_73726] -[group_73727] -[group_73728] -[group_73729] -[group_73730] -[group_73731] -[group_73732] -[group_73733] -[group_73734] -[group_73735] -[group_73736] -[group_73737] -[group_73738] -[group_73739] -[group_73740] -[group_73741] -[group_73742] -[group_73743] -[group_73744] -[group_73745] -[group_73746] -[group_73747] -[group_73748] -[group_73749] -[group_73750] -[group_73751] -[group_73752] -[group_73753] -[group_73754] -[group_73755] -[group_73756] -[group_73757] -[group_73758] -[group_73759] -[group_73760] -[group_73761] -[group_73762] -[group_73763] -[group_73764] -[group_73765] -[group_73766] -[group_73767] -[group_73768] -[group_73769] -[group_73770] -[group_73771] -[group_73772] -[group_73773] -[group_73774] -[group_73775] -[group_73776] -[group_73777] -[group_73778] -[group_73779] -[group_73780] -[group_73781] -[group_73782] -[group_73783] -[group_73784] -[group_73785] -[group_73786] -[group_73787] -[group_73788] -[group_73789] -[group_73790] -[group_73791] -[group_73792] -[group_73793] -[group_73794] -[group_73795] -[group_73796] -[group_73797] -[group_73798] -[group_73799] -[group_73800] -[group_73801] -[group_73802] -[group_73803] -[group_73804] -[group_73805] -[group_73806] -[group_73807] -[group_73808] -[group_73809] -[group_73810] -[group_73811] -[group_73812] -[group_73813] -[group_73814] -[group_73815] -[group_73816] -[group_73817] -[group_73818] -[group_73819] -[group_73820] -[group_73821] -[group_73822] -[group_73823] -[group_73824] -[group_73825] -[group_73826] -[group_73827] -[group_73828] -[group_73829] -[group_73830] -[group_73831] -[group_73832] -[group_73833] -[group_73834] -[group_73835] -[group_73836] -[group_73837] -[group_73838] -[group_73839] -[group_73840] -[group_73841] -[group_73842] -[group_73843] -[group_73844] -[group_73845] -[group_73846] -[group_73847] -[group_73848] -[group_73849] -[group_73850] -[group_73851] -[group_73852] -[group_73853] -[group_73854] -[group_73855] -[group_73856] -[group_73857] -[group_73858] -[group_73859] -[group_73860] -[group_73861] -[group_73862] -[group_73863] -[group_73864] -[group_73865] -[group_73866] -[group_73867] -[group_73868] -[group_73869] -[group_73870] -[group_73871] -[group_73872] -[group_73873] -[group_73874] -[group_73875] -[group_73876] -[group_73877] -[group_73878] -[group_73879] -[group_73880] -[group_73881] -[group_73882] -[group_73883] -[group_73884] -[group_73885] -[group_73886] -[group_73887] -[group_73888] -[group_73889] -[group_73890] -[group_73891] -[group_73892] -[group_73893] -[group_73894] -[group_73895] -[group_73896] -[group_73897] -[group_73898] -[group_73899] -[group_73900] -[group_73901] -[group_73902] -[group_73903] -[group_73904] -[group_73905] -[group_73906] -[group_73907] -[group_73908] -[group_73909] -[group_73910] -[group_73911] -[group_73912] -[group_73913] -[group_73914] -[group_73915] -[group_73916] -[group_73917] -[group_73918] -[group_73919] -[group_73920] -[group_73921] -[group_73922] -[group_73923] -[group_73924] -[group_73925] -[group_73926] -[group_73927] -[group_73928] -[group_73929] -[group_73930] -[group_73931] -[group_73932] -[group_73933] -[group_73934] -[group_73935] -[group_73936] -[group_73937] -[group_73938] -[group_73939] -[group_73940] -[group_73941] -[group_73942] -[group_73943] -[group_73944] -[group_73945] -[group_73946] -[group_73947] -[group_73948] -[group_73949] -[group_73950] -[group_73951] -[group_73952] -[group_73953] -[group_73954] -[group_73955] -[group_73956] -[group_73957] -[group_73958] -[group_73959] -[group_73960] -[group_73961] -[group_73962] -[group_73963] -[group_73964] -[group_73965] -[group_73966] -[group_73967] -[group_73968] -[group_73969] -[group_73970] -[group_73971] -[group_73972] -[group_73973] -[group_73974] -[group_73975] -[group_73976] -[group_73977] -[group_73978] -[group_73979] -[group_73980] -[group_73981] -[group_73982] -[group_73983] -[group_73984] -[group_73985] -[group_73986] -[group_73987] -[group_73988] -[group_73989] -[group_73990] -[group_73991] -[group_73992] -[group_73993] -[group_73994] -[group_73995] -[group_73996] -[group_73997] -[group_73998] -[group_73999] -[group_74000] -[group_74001] -[group_74002] -[group_74003] -[group_74004] -[group_74005] -[group_74006] -[group_74007] -[group_74008] -[group_74009] -[group_74010] -[group_74011] -[group_74012] -[group_74013] -[group_74014] -[group_74015] -[group_74016] -[group_74017] -[group_74018] -[group_74019] -[group_74020] -[group_74021] -[group_74022] -[group_74023] -[group_74024] -[group_74025] -[group_74026] -[group_74027] -[group_74028] -[group_74029] -[group_74030] -[group_74031] -[group_74032] -[group_74033] -[group_74034] -[group_74035] -[group_74036] -[group_74037] -[group_74038] -[group_74039] -[group_74040] -[group_74041] -[group_74042] -[group_74043] -[group_74044] -[group_74045] -[group_74046] -[group_74047] -[group_74048] -[group_74049] -[group_74050] -[group_74051] -[group_74052] -[group_74053] -[group_74054] -[group_74055] -[group_74056] -[group_74057] -[group_74058] -[group_74059] -[group_74060] -[group_74061] -[group_74062] -[group_74063] -[group_74064] -[group_74065] -[group_74066] -[group_74067] -[group_74068] -[group_74069] -[group_74070] -[group_74071] -[group_74072] -[group_74073] -[group_74074] -[group_74075] -[group_74076] -[group_74077] -[group_74078] -[group_74079] -[group_74080] -[group_74081] -[group_74082] -[group_74083] -[group_74084] -[group_74085] -[group_74086] -[group_74087] -[group_74088] -[group_74089] -[group_74090] -[group_74091] -[group_74092] -[group_74093] -[group_74094] -[group_74095] -[group_74096] -[group_74097] -[group_74098] -[group_74099] -[group_74100] -[group_74101] -[group_74102] -[group_74103] -[group_74104] -[group_74105] -[group_74106] -[group_74107] -[group_74108] -[group_74109] -[group_74110] -[group_74111] -[group_74112] -[group_74113] -[group_74114] -[group_74115] -[group_74116] -[group_74117] -[group_74118] -[group_74119] -[group_74120] -[group_74121] -[group_74122] -[group_74123] -[group_74124] -[group_74125] -[group_74126] -[group_74127] -[group_74128] -[group_74129] -[group_74130] -[group_74131] -[group_74132] -[group_74133] -[group_74134] -[group_74135] -[group_74136] -[group_74137] -[group_74138] -[group_74139] -[group_74140] -[group_74141] -[group_74142] -[group_74143] -[group_74144] -[group_74145] -[group_74146] -[group_74147] -[group_74148] -[group_74149] -[group_74150] -[group_74151] -[group_74152] -[group_74153] -[group_74154] -[group_74155] -[group_74156] -[group_74157] -[group_74158] -[group_74159] -[group_74160] -[group_74161] -[group_74162] -[group_74163] -[group_74164] -[group_74165] -[group_74166] -[group_74167] -[group_74168] -[group_74169] -[group_74170] -[group_74171] -[group_74172] -[group_74173] -[group_74174] -[group_74175] -[group_74176] -[group_74177] -[group_74178] -[group_74179] -[group_74180] -[group_74181] -[group_74182] -[group_74183] -[group_74184] -[group_74185] -[group_74186] -[group_74187] -[group_74188] -[group_74189] -[group_74190] -[group_74191] -[group_74192] -[group_74193] -[group_74194] -[group_74195] -[group_74196] -[group_74197] -[group_74198] -[group_74199] -[group_74200] -[group_74201] -[group_74202] -[group_74203] -[group_74204] -[group_74205] -[group_74206] -[group_74207] -[group_74208] -[group_74209] -[group_74210] -[group_74211] -[group_74212] -[group_74213] -[group_74214] -[group_74215] -[group_74216] -[group_74217] -[group_74218] -[group_74219] -[group_74220] -[group_74221] -[group_74222] -[group_74223] -[group_74224] -[group_74225] -[group_74226] -[group_74227] -[group_74228] -[group_74229] -[group_74230] -[group_74231] -[group_74232] -[group_74233] -[group_74234] -[group_74235] -[group_74236] -[group_74237] -[group_74238] -[group_74239] -[group_74240] -[group_74241] -[group_74242] -[group_74243] -[group_74244] -[group_74245] -[group_74246] -[group_74247] -[group_74248] -[group_74249] -[group_74250] -[group_74251] -[group_74252] -[group_74253] -[group_74254] -[group_74255] -[group_74256] -[group_74257] -[group_74258] -[group_74259] -[group_74260] -[group_74261] -[group_74262] -[group_74263] -[group_74264] -[group_74265] -[group_74266] -[group_74267] -[group_74268] -[group_74269] -[group_74270] -[group_74271] -[group_74272] -[group_74273] -[group_74274] -[group_74275] -[group_74276] -[group_74277] -[group_74278] -[group_74279] -[group_74280] -[group_74281] -[group_74282] -[group_74283] -[group_74284] -[group_74285] -[group_74286] -[group_74287] -[group_74288] -[group_74289] -[group_74290] -[group_74291] -[group_74292] -[group_74293] -[group_74294] -[group_74295] -[group_74296] -[group_74297] -[group_74298] -[group_74299] -[group_74300] -[group_74301] -[group_74302] -[group_74303] -[group_74304] -[group_74305] -[group_74306] -[group_74307] -[group_74308] -[group_74309] -[group_74310] -[group_74311] -[group_74312] -[group_74313] -[group_74314] -[group_74315] -[group_74316] -[group_74317] -[group_74318] -[group_74319] -[group_74320] -[group_74321] -[group_74322] -[group_74323] -[group_74324] -[group_74325] -[group_74326] -[group_74327] -[group_74328] -[group_74329] -[group_74330] -[group_74331] -[group_74332] -[group_74333] -[group_74334] -[group_74335] -[group_74336] -[group_74337] -[group_74338] -[group_74339] -[group_74340] -[group_74341] -[group_74342] -[group_74343] -[group_74344] -[group_74345] -[group_74346] -[group_74347] -[group_74348] -[group_74349] -[group_74350] -[group_74351] -[group_74352] -[group_74353] -[group_74354] -[group_74355] -[group_74356] -[group_74357] -[group_74358] -[group_74359] -[group_74360] -[group_74361] -[group_74362] -[group_74363] -[group_74364] -[group_74365] -[group_74366] -[group_74367] -[group_74368] -[group_74369] -[group_74370] -[group_74371] -[group_74372] -[group_74373] -[group_74374] -[group_74375] -[group_74376] -[group_74377] -[group_74378] -[group_74379] -[group_74380] -[group_74381] -[group_74382] -[group_74383] -[group_74384] -[group_74385] -[group_74386] -[group_74387] -[group_74388] -[group_74389] -[group_74390] -[group_74391] -[group_74392] -[group_74393] -[group_74394] -[group_74395] -[group_74396] -[group_74397] -[group_74398] -[group_74399] -[group_74400] -[group_74401] -[group_74402] -[group_74403] -[group_74404] -[group_74405] -[group_74406] -[group_74407] -[group_74408] -[group_74409] -[group_74410] -[group_74411] -[group_74412] -[group_74413] -[group_74414] -[group_74415] -[group_74416] -[group_74417] -[group_74418] -[group_74419] -[group_74420] -[group_74421] -[group_74422] -[group_74423] -[group_74424] -[group_74425] -[group_74426] -[group_74427] -[group_74428] -[group_74429] -[group_74430] -[group_74431] -[group_74432] -[group_74433] -[group_74434] -[group_74435] -[group_74436] -[group_74437] -[group_74438] -[group_74439] -[group_74440] -[group_74441] -[group_74442] -[group_74443] -[group_74444] -[group_74445] -[group_74446] -[group_74447] -[group_74448] -[group_74449] -[group_74450] -[group_74451] -[group_74452] -[group_74453] -[group_74454] -[group_74455] -[group_74456] -[group_74457] -[group_74458] -[group_74459] -[group_74460] -[group_74461] -[group_74462] -[group_74463] -[group_74464] -[group_74465] -[group_74466] -[group_74467] -[group_74468] -[group_74469] -[group_74470] -[group_74471] -[group_74472] -[group_74473] -[group_74474] -[group_74475] -[group_74476] -[group_74477] -[group_74478] -[group_74479] -[group_74480] -[group_74481] -[group_74482] -[group_74483] -[group_74484] -[group_74485] -[group_74486] -[group_74487] -[group_74488] -[group_74489] -[group_74490] -[group_74491] -[group_74492] -[group_74493] -[group_74494] -[group_74495] -[group_74496] -[group_74497] -[group_74498] -[group_74499] -[group_74500] -[group_74501] -[group_74502] -[group_74503] -[group_74504] -[group_74505] -[group_74506] -[group_74507] -[group_74508] -[group_74509] -[group_74510] -[group_74511] -[group_74512] -[group_74513] -[group_74514] -[group_74515] -[group_74516] -[group_74517] -[group_74518] -[group_74519] -[group_74520] -[group_74521] -[group_74522] -[group_74523] -[group_74524] -[group_74525] -[group_74526] -[group_74527] -[group_74528] -[group_74529] -[group_74530] -[group_74531] -[group_74532] -[group_74533] -[group_74534] -[group_74535] -[group_74536] -[group_74537] -[group_74538] -[group_74539] -[group_74540] -[group_74541] -[group_74542] -[group_74543] -[group_74544] -[group_74545] -[group_74546] -[group_74547] -[group_74548] -[group_74549] -[group_74550] -[group_74551] -[group_74552] -[group_74553] -[group_74554] -[group_74555] -[group_74556] -[group_74557] -[group_74558] -[group_74559] -[group_74560] -[group_74561] -[group_74562] -[group_74563] -[group_74564] -[group_74565] -[group_74566] -[group_74567] -[group_74568] -[group_74569] -[group_74570] -[group_74571] -[group_74572] -[group_74573] -[group_74574] -[group_74575] -[group_74576] -[group_74577] -[group_74578] -[group_74579] -[group_74580] -[group_74581] -[group_74582] -[group_74583] -[group_74584] -[group_74585] -[group_74586] -[group_74587] -[group_74588] -[group_74589] -[group_74590] -[group_74591] -[group_74592] -[group_74593] -[group_74594] -[group_74595] -[group_74596] -[group_74597] -[group_74598] -[group_74599] -[group_74600] -[group_74601] -[group_74602] -[group_74603] -[group_74604] -[group_74605] -[group_74606] -[group_74607] -[group_74608] -[group_74609] -[group_74610] -[group_74611] -[group_74612] -[group_74613] -[group_74614] -[group_74615] -[group_74616] -[group_74617] -[group_74618] -[group_74619] -[group_74620] -[group_74621] -[group_74622] -[group_74623] -[group_74624] -[group_74625] -[group_74626] -[group_74627] -[group_74628] -[group_74629] -[group_74630] -[group_74631] -[group_74632] -[group_74633] -[group_74634] -[group_74635] -[group_74636] -[group_74637] -[group_74638] -[group_74639] -[group_74640] -[group_74641] -[group_74642] -[group_74643] -[group_74644] -[group_74645] -[group_74646] -[group_74647] -[group_74648] -[group_74649] -[group_74650] -[group_74651] -[group_74652] -[group_74653] -[group_74654] -[group_74655] -[group_74656] -[group_74657] -[group_74658] -[group_74659] -[group_74660] -[group_74661] -[group_74662] -[group_74663] -[group_74664] -[group_74665] -[group_74666] -[group_74667] -[group_74668] -[group_74669] -[group_74670] -[group_74671] -[group_74672] -[group_74673] -[group_74674] -[group_74675] -[group_74676] -[group_74677] -[group_74678] -[group_74679] -[group_74680] -[group_74681] -[group_74682] -[group_74683] -[group_74684] -[group_74685] -[group_74686] -[group_74687] -[group_74688] -[group_74689] -[group_74690] -[group_74691] -[group_74692] -[group_74693] -[group_74694] -[group_74695] -[group_74696] -[group_74697] -[group_74698] -[group_74699] -[group_74700] -[group_74701] -[group_74702] -[group_74703] -[group_74704] -[group_74705] -[group_74706] -[group_74707] -[group_74708] -[group_74709] -[group_74710] -[group_74711] -[group_74712] -[group_74713] -[group_74714] -[group_74715] -[group_74716] -[group_74717] -[group_74718] -[group_74719] -[group_74720] -[group_74721] -[group_74722] -[group_74723] -[group_74724] -[group_74725] -[group_74726] -[group_74727] -[group_74728] -[group_74729] -[group_74730] -[group_74731] -[group_74732] -[group_74733] -[group_74734] -[group_74735] -[group_74736] -[group_74737] -[group_74738] -[group_74739] -[group_74740] -[group_74741] -[group_74742] -[group_74743] -[group_74744] -[group_74745] -[group_74746] -[group_74747] -[group_74748] -[group_74749] -[group_74750] -[group_74751] -[group_74752] -[group_74753] -[group_74754] -[group_74755] -[group_74756] -[group_74757] -[group_74758] -[group_74759] -[group_74760] -[group_74761] -[group_74762] -[group_74763] -[group_74764] -[group_74765] -[group_74766] -[group_74767] -[group_74768] -[group_74769] -[group_74770] -[group_74771] -[group_74772] -[group_74773] -[group_74774] -[group_74775] -[group_74776] -[group_74777] -[group_74778] -[group_74779] -[group_74780] -[group_74781] -[group_74782] -[group_74783] -[group_74784] -[group_74785] -[group_74786] -[group_74787] -[group_74788] -[group_74789] -[group_74790] -[group_74791] -[group_74792] -[group_74793] -[group_74794] -[group_74795] -[group_74796] -[group_74797] -[group_74798] -[group_74799] -[group_74800] -[group_74801] -[group_74802] -[group_74803] -[group_74804] -[group_74805] -[group_74806] -[group_74807] -[group_74808] -[group_74809] -[group_74810] -[group_74811] -[group_74812] -[group_74813] -[group_74814] -[group_74815] -[group_74816] -[group_74817] -[group_74818] -[group_74819] -[group_74820] -[group_74821] -[group_74822] -[group_74823] -[group_74824] -[group_74825] -[group_74826] -[group_74827] -[group_74828] -[group_74829] -[group_74830] -[group_74831] -[group_74832] -[group_74833] -[group_74834] -[group_74835] -[group_74836] -[group_74837] -[group_74838] -[group_74839] -[group_74840] -[group_74841] -[group_74842] -[group_74843] -[group_74844] -[group_74845] -[group_74846] -[group_74847] -[group_74848] -[group_74849] -[group_74850] -[group_74851] -[group_74852] -[group_74853] -[group_74854] -[group_74855] -[group_74856] -[group_74857] -[group_74858] -[group_74859] -[group_74860] -[group_74861] -[group_74862] -[group_74863] -[group_74864] -[group_74865] -[group_74866] -[group_74867] -[group_74868] -[group_74869] -[group_74870] -[group_74871] -[group_74872] -[group_74873] -[group_74874] -[group_74875] -[group_74876] -[group_74877] -[group_74878] -[group_74879] -[group_74880] -[group_74881] -[group_74882] -[group_74883] -[group_74884] -[group_74885] -[group_74886] -[group_74887] -[group_74888] -[group_74889] -[group_74890] -[group_74891] -[group_74892] -[group_74893] -[group_74894] -[group_74895] -[group_74896] -[group_74897] -[group_74898] -[group_74899] -[group_74900] -[group_74901] -[group_74902] -[group_74903] -[group_74904] -[group_74905] -[group_74906] -[group_74907] -[group_74908] -[group_74909] -[group_74910] -[group_74911] -[group_74912] -[group_74913] -[group_74914] -[group_74915] -[group_74916] -[group_74917] -[group_74918] -[group_74919] -[group_74920] -[group_74921] -[group_74922] -[group_74923] -[group_74924] -[group_74925] -[group_74926] -[group_74927] -[group_74928] -[group_74929] -[group_74930] -[group_74931] -[group_74932] -[group_74933] -[group_74934] -[group_74935] -[group_74936] -[group_74937] -[group_74938] -[group_74939] -[group_74940] -[group_74941] -[group_74942] -[group_74943] -[group_74944] -[group_74945] -[group_74946] -[group_74947] -[group_74948] -[group_74949] -[group_74950] -[group_74951] -[group_74952] -[group_74953] -[group_74954] -[group_74955] -[group_74956] -[group_74957] -[group_74958] -[group_74959] -[group_74960] -[group_74961] -[group_74962] -[group_74963] -[group_74964] -[group_74965] -[group_74966] -[group_74967] -[group_74968] -[group_74969] -[group_74970] -[group_74971] -[group_74972] -[group_74973] -[group_74974] -[group_74975] -[group_74976] -[group_74977] -[group_74978] -[group_74979] -[group_74980] -[group_74981] -[group_74982] -[group_74983] -[group_74984] -[group_74985] -[group_74986] -[group_74987] -[group_74988] -[group_74989] -[group_74990] -[group_74991] -[group_74992] -[group_74993] -[group_74994] -[group_74995] -[group_74996] -[group_74997] -[group_74998] -[group_74999] -[group_75000] -[group_75001] -[group_75002] -[group_75003] -[group_75004] -[group_75005] -[group_75006] -[group_75007] -[group_75008] -[group_75009] -[group_75010] -[group_75011] -[group_75012] -[group_75013] -[group_75014] -[group_75015] -[group_75016] -[group_75017] -[group_75018] -[group_75019] -[group_75020] -[group_75021] -[group_75022] -[group_75023] -[group_75024] -[group_75025] -[group_75026] -[group_75027] -[group_75028] -[group_75029] -[group_75030] -[group_75031] -[group_75032] -[group_75033] -[group_75034] -[group_75035] -[group_75036] -[group_75037] -[group_75038] -[group_75039] -[group_75040] -[group_75041] -[group_75042] -[group_75043] -[group_75044] -[group_75045] -[group_75046] -[group_75047] -[group_75048] -[group_75049] -[group_75050] -[group_75051] -[group_75052] -[group_75053] -[group_75054] -[group_75055] -[group_75056] -[group_75057] -[group_75058] -[group_75059] -[group_75060] -[group_75061] -[group_75062] -[group_75063] -[group_75064] -[group_75065] -[group_75066] -[group_75067] -[group_75068] -[group_75069] -[group_75070] -[group_75071] -[group_75072] -[group_75073] -[group_75074] -[group_75075] -[group_75076] -[group_75077] -[group_75078] -[group_75079] -[group_75080] -[group_75081] -[group_75082] -[group_75083] -[group_75084] -[group_75085] -[group_75086] -[group_75087] -[group_75088] -[group_75089] -[group_75090] -[group_75091] -[group_75092] -[group_75093] -[group_75094] -[group_75095] -[group_75096] -[group_75097] -[group_75098] -[group_75099] -[group_75100] -[group_75101] -[group_75102] -[group_75103] -[group_75104] -[group_75105] -[group_75106] -[group_75107] -[group_75108] -[group_75109] -[group_75110] -[group_75111] -[group_75112] -[group_75113] -[group_75114] -[group_75115] -[group_75116] -[group_75117] -[group_75118] -[group_75119] -[group_75120] -[group_75121] -[group_75122] -[group_75123] -[group_75124] -[group_75125] -[group_75126] -[group_75127] -[group_75128] -[group_75129] -[group_75130] -[group_75131] -[group_75132] -[group_75133] -[group_75134] -[group_75135] -[group_75136] -[group_75137] -[group_75138] -[group_75139] -[group_75140] -[group_75141] -[group_75142] -[group_75143] -[group_75144] -[group_75145] -[group_75146] -[group_75147] -[group_75148] -[group_75149] -[group_75150] -[group_75151] -[group_75152] -[group_75153] -[group_75154] -[group_75155] -[group_75156] -[group_75157] -[group_75158] -[group_75159] -[group_75160] -[group_75161] -[group_75162] -[group_75163] -[group_75164] -[group_75165] -[group_75166] -[group_75167] -[group_75168] -[group_75169] -[group_75170] -[group_75171] -[group_75172] -[group_75173] -[group_75174] -[group_75175] -[group_75176] -[group_75177] -[group_75178] -[group_75179] -[group_75180] -[group_75181] -[group_75182] -[group_75183] -[group_75184] -[group_75185] -[group_75186] -[group_75187] -[group_75188] -[group_75189] -[group_75190] -[group_75191] -[group_75192] -[group_75193] -[group_75194] -[group_75195] -[group_75196] -[group_75197] -[group_75198] -[group_75199] -[group_75200] -[group_75201] -[group_75202] -[group_75203] -[group_75204] -[group_75205] -[group_75206] -[group_75207] -[group_75208] -[group_75209] -[group_75210] -[group_75211] -[group_75212] -[group_75213] -[group_75214] -[group_75215] -[group_75216] -[group_75217] -[group_75218] -[group_75219] -[group_75220] -[group_75221] -[group_75222] -[group_75223] -[group_75224] -[group_75225] -[group_75226] -[group_75227] -[group_75228] -[group_75229] -[group_75230] -[group_75231] -[group_75232] -[group_75233] -[group_75234] -[group_75235] -[group_75236] -[group_75237] -[group_75238] -[group_75239] -[group_75240] -[group_75241] -[group_75242] -[group_75243] -[group_75244] -[group_75245] -[group_75246] -[group_75247] -[group_75248] -[group_75249] -[group_75250] -[group_75251] -[group_75252] -[group_75253] -[group_75254] -[group_75255] -[group_75256] -[group_75257] -[group_75258] -[group_75259] -[group_75260] -[group_75261] -[group_75262] -[group_75263] -[group_75264] -[group_75265] -[group_75266] -[group_75267] -[group_75268] -[group_75269] -[group_75270] -[group_75271] -[group_75272] -[group_75273] -[group_75274] -[group_75275] -[group_75276] -[group_75277] -[group_75278] -[group_75279] -[group_75280] -[group_75281] -[group_75282] -[group_75283] -[group_75284] -[group_75285] -[group_75286] -[group_75287] -[group_75288] -[group_75289] -[group_75290] -[group_75291] -[group_75292] -[group_75293] -[group_75294] -[group_75295] -[group_75296] -[group_75297] -[group_75298] -[group_75299] -[group_75300] -[group_75301] -[group_75302] -[group_75303] -[group_75304] -[group_75305] -[group_75306] -[group_75307] -[group_75308] -[group_75309] -[group_75310] -[group_75311] -[group_75312] -[group_75313] -[group_75314] -[group_75315] -[group_75316] -[group_75317] -[group_75318] -[group_75319] -[group_75320] -[group_75321] -[group_75322] -[group_75323] -[group_75324] -[group_75325] -[group_75326] -[group_75327] -[group_75328] -[group_75329] -[group_75330] -[group_75331] -[group_75332] -[group_75333] -[group_75334] -[group_75335] -[group_75336] -[group_75337] -[group_75338] -[group_75339] -[group_75340] -[group_75341] -[group_75342] -[group_75343] -[group_75344] -[group_75345] -[group_75346] -[group_75347] -[group_75348] -[group_75349] -[group_75350] -[group_75351] -[group_75352] -[group_75353] -[group_75354] -[group_75355] -[group_75356] -[group_75357] -[group_75358] -[group_75359] -[group_75360] -[group_75361] -[group_75362] -[group_75363] -[group_75364] -[group_75365] -[group_75366] -[group_75367] -[group_75368] -[group_75369] -[group_75370] -[group_75371] -[group_75372] -[group_75373] -[group_75374] -[group_75375] -[group_75376] -[group_75377] -[group_75378] -[group_75379] -[group_75380] -[group_75381] -[group_75382] -[group_75383] -[group_75384] -[group_75385] -[group_75386] -[group_75387] -[group_75388] -[group_75389] -[group_75390] -[group_75391] -[group_75392] -[group_75393] -[group_75394] -[group_75395] -[group_75396] -[group_75397] -[group_75398] -[group_75399] -[group_75400] -[group_75401] -[group_75402] -[group_75403] -[group_75404] -[group_75405] -[group_75406] -[group_75407] -[group_75408] -[group_75409] -[group_75410] -[group_75411] -[group_75412] -[group_75413] -[group_75414] -[group_75415] -[group_75416] -[group_75417] -[group_75418] -[group_75419] -[group_75420] -[group_75421] -[group_75422] -[group_75423] -[group_75424] -[group_75425] -[group_75426] -[group_75427] -[group_75428] -[group_75429] -[group_75430] -[group_75431] -[group_75432] -[group_75433] -[group_75434] -[group_75435] -[group_75436] -[group_75437] -[group_75438] -[group_75439] -[group_75440] -[group_75441] -[group_75442] -[group_75443] -[group_75444] -[group_75445] -[group_75446] -[group_75447] -[group_75448] -[group_75449] -[group_75450] -[group_75451] -[group_75452] -[group_75453] -[group_75454] -[group_75455] -[group_75456] -[group_75457] -[group_75458] -[group_75459] -[group_75460] -[group_75461] -[group_75462] -[group_75463] -[group_75464] -[group_75465] -[group_75466] -[group_75467] -[group_75468] -[group_75469] -[group_75470] -[group_75471] -[group_75472] -[group_75473] -[group_75474] -[group_75475] -[group_75476] -[group_75477] -[group_75478] -[group_75479] -[group_75480] -[group_75481] -[group_75482] -[group_75483] -[group_75484] -[group_75485] -[group_75486] -[group_75487] -[group_75488] -[group_75489] -[group_75490] -[group_75491] -[group_75492] -[group_75493] -[group_75494] -[group_75495] -[group_75496] -[group_75497] -[group_75498] -[group_75499] -[group_75500] -[group_75501] -[group_75502] -[group_75503] -[group_75504] -[group_75505] -[group_75506] -[group_75507] -[group_75508] -[group_75509] -[group_75510] -[group_75511] -[group_75512] -[group_75513] -[group_75514] -[group_75515] -[group_75516] -[group_75517] -[group_75518] -[group_75519] -[group_75520] -[group_75521] -[group_75522] -[group_75523] -[group_75524] -[group_75525] -[group_75526] -[group_75527] -[group_75528] -[group_75529] -[group_75530] -[group_75531] -[group_75532] -[group_75533] -[group_75534] -[group_75535] -[group_75536] -[group_75537] -[group_75538] -[group_75539] -[group_75540] -[group_75541] -[group_75542] -[group_75543] -[group_75544] -[group_75545] -[group_75546] -[group_75547] -[group_75548] -[group_75549] -[group_75550] -[group_75551] -[group_75552] -[group_75553] -[group_75554] -[group_75555] -[group_75556] -[group_75557] -[group_75558] -[group_75559] -[group_75560] -[group_75561] -[group_75562] -[group_75563] -[group_75564] -[group_75565] -[group_75566] -[group_75567] -[group_75568] -[group_75569] -[group_75570] -[group_75571] -[group_75572] -[group_75573] -[group_75574] -[group_75575] -[group_75576] -[group_75577] -[group_75578] -[group_75579] -[group_75580] -[group_75581] -[group_75582] -[group_75583] -[group_75584] -[group_75585] -[group_75586] -[group_75587] -[group_75588] -[group_75589] -[group_75590] -[group_75591] -[group_75592] -[group_75593] -[group_75594] -[group_75595] -[group_75596] -[group_75597] -[group_75598] -[group_75599] -[group_75600] -[group_75601] -[group_75602] -[group_75603] -[group_75604] -[group_75605] -[group_75606] -[group_75607] -[group_75608] -[group_75609] -[group_75610] -[group_75611] -[group_75612] -[group_75613] -[group_75614] -[group_75615] -[group_75616] -[group_75617] -[group_75618] -[group_75619] -[group_75620] -[group_75621] -[group_75622] -[group_75623] -[group_75624] -[group_75625] -[group_75626] -[group_75627] -[group_75628] -[group_75629] -[group_75630] -[group_75631] -[group_75632] -[group_75633] -[group_75634] -[group_75635] -[group_75636] -[group_75637] -[group_75638] -[group_75639] -[group_75640] -[group_75641] -[group_75642] -[group_75643] -[group_75644] -[group_75645] -[group_75646] -[group_75647] -[group_75648] -[group_75649] -[group_75650] -[group_75651] -[group_75652] -[group_75653] -[group_75654] -[group_75655] -[group_75656] -[group_75657] -[group_75658] -[group_75659] -[group_75660] -[group_75661] -[group_75662] -[group_75663] -[group_75664] -[group_75665] -[group_75666] -[group_75667] -[group_75668] -[group_75669] -[group_75670] -[group_75671] -[group_75672] -[group_75673] -[group_75674] -[group_75675] -[group_75676] -[group_75677] -[group_75678] -[group_75679] -[group_75680] -[group_75681] -[group_75682] -[group_75683] -[group_75684] -[group_75685] -[group_75686] -[group_75687] -[group_75688] -[group_75689] -[group_75690] -[group_75691] -[group_75692] -[group_75693] -[group_75694] -[group_75695] -[group_75696] -[group_75697] -[group_75698] -[group_75699] -[group_75700] -[group_75701] -[group_75702] -[group_75703] -[group_75704] -[group_75705] -[group_75706] -[group_75707] -[group_75708] -[group_75709] -[group_75710] -[group_75711] -[group_75712] -[group_75713] -[group_75714] -[group_75715] -[group_75716] -[group_75717] -[group_75718] -[group_75719] -[group_75720] -[group_75721] -[group_75722] -[group_75723] -[group_75724] -[group_75725] -[group_75726] -[group_75727] -[group_75728] -[group_75729] -[group_75730] -[group_75731] -[group_75732] -[group_75733] -[group_75734] -[group_75735] -[group_75736] -[group_75737] -[group_75738] -[group_75739] -[group_75740] -[group_75741] -[group_75742] -[group_75743] -[group_75744] -[group_75745] -[group_75746] -[group_75747] -[group_75748] -[group_75749] -[group_75750] -[group_75751] -[group_75752] -[group_75753] -[group_75754] -[group_75755] -[group_75756] -[group_75757] -[group_75758] -[group_75759] -[group_75760] -[group_75761] -[group_75762] -[group_75763] -[group_75764] -[group_75765] -[group_75766] -[group_75767] -[group_75768] -[group_75769] -[group_75770] -[group_75771] -[group_75772] -[group_75773] -[group_75774] -[group_75775] -[group_75776] -[group_75777] -[group_75778] -[group_75779] -[group_75780] -[group_75781] -[group_75782] -[group_75783] -[group_75784] -[group_75785] -[group_75786] -[group_75787] -[group_75788] -[group_75789] -[group_75790] -[group_75791] -[group_75792] -[group_75793] -[group_75794] -[group_75795] -[group_75796] -[group_75797] -[group_75798] -[group_75799] -[group_75800] -[group_75801] -[group_75802] -[group_75803] -[group_75804] -[group_75805] -[group_75806] -[group_75807] -[group_75808] -[group_75809] -[group_75810] -[group_75811] -[group_75812] -[group_75813] -[group_75814] -[group_75815] -[group_75816] -[group_75817] -[group_75818] -[group_75819] -[group_75820] -[group_75821] -[group_75822] -[group_75823] -[group_75824] -[group_75825] -[group_75826] -[group_75827] -[group_75828] -[group_75829] -[group_75830] -[group_75831] -[group_75832] -[group_75833] -[group_75834] -[group_75835] -[group_75836] -[group_75837] -[group_75838] -[group_75839] -[group_75840] -[group_75841] -[group_75842] -[group_75843] -[group_75844] -[group_75845] -[group_75846] -[group_75847] -[group_75848] -[group_75849] -[group_75850] -[group_75851] -[group_75852] -[group_75853] -[group_75854] -[group_75855] -[group_75856] -[group_75857] -[group_75858] -[group_75859] -[group_75860] -[group_75861] -[group_75862] -[group_75863] -[group_75864] -[group_75865] -[group_75866] -[group_75867] -[group_75868] -[group_75869] -[group_75870] -[group_75871] -[group_75872] -[group_75873] -[group_75874] -[group_75875] -[group_75876] -[group_75877] -[group_75878] -[group_75879] -[group_75880] -[group_75881] -[group_75882] -[group_75883] -[group_75884] -[group_75885] -[group_75886] -[group_75887] -[group_75888] -[group_75889] -[group_75890] -[group_75891] -[group_75892] -[group_75893] -[group_75894] -[group_75895] -[group_75896] -[group_75897] -[group_75898] -[group_75899] -[group_75900] -[group_75901] -[group_75902] -[group_75903] -[group_75904] -[group_75905] -[group_75906] -[group_75907] -[group_75908] -[group_75909] -[group_75910] -[group_75911] -[group_75912] -[group_75913] -[group_75914] -[group_75915] -[group_75916] -[group_75917] -[group_75918] -[group_75919] -[group_75920] -[group_75921] -[group_75922] -[group_75923] -[group_75924] -[group_75925] -[group_75926] -[group_75927] -[group_75928] -[group_75929] -[group_75930] -[group_75931] -[group_75932] -[group_75933] -[group_75934] -[group_75935] -[group_75936] -[group_75937] -[group_75938] -[group_75939] -[group_75940] -[group_75941] -[group_75942] -[group_75943] -[group_75944] -[group_75945] -[group_75946] -[group_75947] -[group_75948] -[group_75949] -[group_75950] -[group_75951] -[group_75952] -[group_75953] -[group_75954] -[group_75955] -[group_75956] -[group_75957] -[group_75958] -[group_75959] -[group_75960] -[group_75961] -[group_75962] -[group_75963] -[group_75964] -[group_75965] -[group_75966] -[group_75967] -[group_75968] -[group_75969] -[group_75970] -[group_75971] -[group_75972] -[group_75973] -[group_75974] -[group_75975] -[group_75976] -[group_75977] -[group_75978] -[group_75979] -[group_75980] -[group_75981] -[group_75982] -[group_75983] -[group_75984] -[group_75985] -[group_75986] -[group_75987] -[group_75988] -[group_75989] -[group_75990] -[group_75991] -[group_75992] -[group_75993] -[group_75994] -[group_75995] -[group_75996] -[group_75997] -[group_75998] -[group_75999] -[group_76000] -[group_76001] -[group_76002] -[group_76003] -[group_76004] -[group_76005] -[group_76006] -[group_76007] -[group_76008] -[group_76009] -[group_76010] -[group_76011] -[group_76012] -[group_76013] -[group_76014] -[group_76015] -[group_76016] -[group_76017] -[group_76018] -[group_76019] -[group_76020] -[group_76021] -[group_76022] -[group_76023] -[group_76024] -[group_76025] -[group_76026] -[group_76027] -[group_76028] -[group_76029] -[group_76030] -[group_76031] -[group_76032] -[group_76033] -[group_76034] -[group_76035] -[group_76036] -[group_76037] -[group_76038] -[group_76039] -[group_76040] -[group_76041] -[group_76042] -[group_76043] -[group_76044] -[group_76045] -[group_76046] -[group_76047] -[group_76048] -[group_76049] -[group_76050] -[group_76051] -[group_76052] -[group_76053] -[group_76054] -[group_76055] -[group_76056] -[group_76057] -[group_76058] -[group_76059] -[group_76060] -[group_76061] -[group_76062] -[group_76063] -[group_76064] -[group_76065] -[group_76066] -[group_76067] -[group_76068] -[group_76069] -[group_76070] -[group_76071] -[group_76072] -[group_76073] -[group_76074] -[group_76075] -[group_76076] -[group_76077] -[group_76078] -[group_76079] -[group_76080] -[group_76081] -[group_76082] -[group_76083] -[group_76084] -[group_76085] -[group_76086] -[group_76087] -[group_76088] -[group_76089] -[group_76090] -[group_76091] -[group_76092] -[group_76093] -[group_76094] -[group_76095] -[group_76096] -[group_76097] -[group_76098] -[group_76099] -[group_76100] -[group_76101] -[group_76102] -[group_76103] -[group_76104] -[group_76105] -[group_76106] -[group_76107] -[group_76108] -[group_76109] -[group_76110] -[group_76111] -[group_76112] -[group_76113] -[group_76114] -[group_76115] -[group_76116] -[group_76117] -[group_76118] -[group_76119] -[group_76120] -[group_76121] -[group_76122] -[group_76123] -[group_76124] -[group_76125] -[group_76126] -[group_76127] -[group_76128] -[group_76129] -[group_76130] -[group_76131] -[group_76132] -[group_76133] -[group_76134] -[group_76135] -[group_76136] -[group_76137] -[group_76138] -[group_76139] -[group_76140] -[group_76141] -[group_76142] -[group_76143] -[group_76144] -[group_76145] -[group_76146] -[group_76147] -[group_76148] -[group_76149] -[group_76150] -[group_76151] -[group_76152] -[group_76153] -[group_76154] -[group_76155] -[group_76156] -[group_76157] -[group_76158] -[group_76159] -[group_76160] -[group_76161] -[group_76162] -[group_76163] -[group_76164] -[group_76165] -[group_76166] -[group_76167] -[group_76168] -[group_76169] -[group_76170] -[group_76171] -[group_76172] -[group_76173] -[group_76174] -[group_76175] -[group_76176] -[group_76177] -[group_76178] -[group_76179] -[group_76180] -[group_76181] -[group_76182] -[group_76183] -[group_76184] -[group_76185] -[group_76186] -[group_76187] -[group_76188] -[group_76189] -[group_76190] -[group_76191] -[group_76192] -[group_76193] -[group_76194] -[group_76195] -[group_76196] -[group_76197] -[group_76198] -[group_76199] -[group_76200] -[group_76201] -[group_76202] -[group_76203] -[group_76204] -[group_76205] -[group_76206] -[group_76207] -[group_76208] -[group_76209] -[group_76210] -[group_76211] -[group_76212] -[group_76213] -[group_76214] -[group_76215] -[group_76216] -[group_76217] -[group_76218] -[group_76219] -[group_76220] -[group_76221] -[group_76222] -[group_76223] -[group_76224] -[group_76225] -[group_76226] -[group_76227] -[group_76228] -[group_76229] -[group_76230] -[group_76231] -[group_76232] -[group_76233] -[group_76234] -[group_76235] -[group_76236] -[group_76237] -[group_76238] -[group_76239] -[group_76240] -[group_76241] -[group_76242] -[group_76243] -[group_76244] -[group_76245] -[group_76246] -[group_76247] -[group_76248] -[group_76249] -[group_76250] -[group_76251] -[group_76252] -[group_76253] -[group_76254] -[group_76255] -[group_76256] -[group_76257] -[group_76258] -[group_76259] -[group_76260] -[group_76261] -[group_76262] -[group_76263] -[group_76264] -[group_76265] -[group_76266] -[group_76267] -[group_76268] -[group_76269] -[group_76270] -[group_76271] -[group_76272] -[group_76273] -[group_76274] -[group_76275] -[group_76276] -[group_76277] -[group_76278] -[group_76279] -[group_76280] -[group_76281] -[group_76282] -[group_76283] -[group_76284] -[group_76285] -[group_76286] -[group_76287] -[group_76288] -[group_76289] -[group_76290] -[group_76291] -[group_76292] -[group_76293] -[group_76294] -[group_76295] -[group_76296] -[group_76297] -[group_76298] -[group_76299] -[group_76300] -[group_76301] -[group_76302] -[group_76303] -[group_76304] -[group_76305] -[group_76306] -[group_76307] -[group_76308] -[group_76309] -[group_76310] -[group_76311] -[group_76312] -[group_76313] -[group_76314] -[group_76315] -[group_76316] -[group_76317] -[group_76318] -[group_76319] -[group_76320] -[group_76321] -[group_76322] -[group_76323] -[group_76324] -[group_76325] -[group_76326] -[group_76327] -[group_76328] -[group_76329] -[group_76330] -[group_76331] -[group_76332] -[group_76333] -[group_76334] -[group_76335] -[group_76336] -[group_76337] -[group_76338] -[group_76339] -[group_76340] -[group_76341] -[group_76342] -[group_76343] -[group_76344] -[group_76345] -[group_76346] -[group_76347] -[group_76348] -[group_76349] -[group_76350] -[group_76351] -[group_76352] -[group_76353] -[group_76354] -[group_76355] -[group_76356] -[group_76357] -[group_76358] -[group_76359] -[group_76360] -[group_76361] -[group_76362] -[group_76363] -[group_76364] -[group_76365] -[group_76366] -[group_76367] -[group_76368] -[group_76369] -[group_76370] -[group_76371] -[group_76372] -[group_76373] -[group_76374] -[group_76375] -[group_76376] -[group_76377] -[group_76378] -[group_76379] -[group_76380] -[group_76381] -[group_76382] -[group_76383] -[group_76384] -[group_76385] -[group_76386] -[group_76387] -[group_76388] -[group_76389] -[group_76390] -[group_76391] -[group_76392] -[group_76393] -[group_76394] -[group_76395] -[group_76396] -[group_76397] -[group_76398] -[group_76399] -[group_76400] -[group_76401] -[group_76402] -[group_76403] -[group_76404] -[group_76405] -[group_76406] -[group_76407] -[group_76408] -[group_76409] -[group_76410] -[group_76411] -[group_76412] -[group_76413] -[group_76414] -[group_76415] -[group_76416] -[group_76417] -[group_76418] -[group_76419] -[group_76420] -[group_76421] -[group_76422] -[group_76423] -[group_76424] -[group_76425] -[group_76426] -[group_76427] -[group_76428] -[group_76429] -[group_76430] -[group_76431] -[group_76432] -[group_76433] -[group_76434] -[group_76435] -[group_76436] -[group_76437] -[group_76438] -[group_76439] -[group_76440] -[group_76441] -[group_76442] -[group_76443] -[group_76444] -[group_76445] -[group_76446] -[group_76447] -[group_76448] -[group_76449] -[group_76450] -[group_76451] -[group_76452] -[group_76453] -[group_76454] -[group_76455] -[group_76456] -[group_76457] -[group_76458] -[group_76459] -[group_76460] -[group_76461] -[group_76462] -[group_76463] -[group_76464] -[group_76465] -[group_76466] -[group_76467] -[group_76468] -[group_76469] -[group_76470] -[group_76471] -[group_76472] -[group_76473] -[group_76474] -[group_76475] -[group_76476] -[group_76477] -[group_76478] -[group_76479] -[group_76480] -[group_76481] -[group_76482] -[group_76483] -[group_76484] -[group_76485] -[group_76486] -[group_76487] -[group_76488] -[group_76489] -[group_76490] -[group_76491] -[group_76492] -[group_76493] -[group_76494] -[group_76495] -[group_76496] -[group_76497] -[group_76498] -[group_76499] -[group_76500] -[group_76501] -[group_76502] -[group_76503] -[group_76504] -[group_76505] -[group_76506] -[group_76507] -[group_76508] -[group_76509] -[group_76510] -[group_76511] -[group_76512] -[group_76513] -[group_76514] -[group_76515] -[group_76516] -[group_76517] -[group_76518] -[group_76519] -[group_76520] -[group_76521] -[group_76522] -[group_76523] -[group_76524] -[group_76525] -[group_76526] -[group_76527] -[group_76528] -[group_76529] -[group_76530] -[group_76531] -[group_76532] -[group_76533] -[group_76534] -[group_76535] -[group_76536] -[group_76537] -[group_76538] -[group_76539] -[group_76540] -[group_76541] -[group_76542] -[group_76543] -[group_76544] -[group_76545] -[group_76546] -[group_76547] -[group_76548] -[group_76549] -[group_76550] -[group_76551] -[group_76552] -[group_76553] -[group_76554] -[group_76555] -[group_76556] -[group_76557] -[group_76558] -[group_76559] -[group_76560] -[group_76561] -[group_76562] -[group_76563] -[group_76564] -[group_76565] -[group_76566] -[group_76567] -[group_76568] -[group_76569] -[group_76570] -[group_76571] -[group_76572] -[group_76573] -[group_76574] -[group_76575] -[group_76576] -[group_76577] -[group_76578] -[group_76579] -[group_76580] -[group_76581] -[group_76582] -[group_76583] -[group_76584] -[group_76585] -[group_76586] -[group_76587] -[group_76588] -[group_76589] -[group_76590] -[group_76591] -[group_76592] -[group_76593] -[group_76594] -[group_76595] -[group_76596] -[group_76597] -[group_76598] -[group_76599] -[group_76600] -[group_76601] -[group_76602] -[group_76603] -[group_76604] -[group_76605] -[group_76606] -[group_76607] -[group_76608] -[group_76609] -[group_76610] -[group_76611] -[group_76612] -[group_76613] -[group_76614] -[group_76615] -[group_76616] -[group_76617] -[group_76618] -[group_76619] -[group_76620] -[group_76621] -[group_76622] -[group_76623] -[group_76624] -[group_76625] -[group_76626] -[group_76627] -[group_76628] -[group_76629] -[group_76630] -[group_76631] -[group_76632] -[group_76633] -[group_76634] -[group_76635] -[group_76636] -[group_76637] -[group_76638] -[group_76639] -[group_76640] -[group_76641] -[group_76642] -[group_76643] -[group_76644] -[group_76645] -[group_76646] -[group_76647] -[group_76648] -[group_76649] -[group_76650] -[group_76651] -[group_76652] -[group_76653] -[group_76654] -[group_76655] -[group_76656] -[group_76657] -[group_76658] -[group_76659] -[group_76660] -[group_76661] -[group_76662] -[group_76663] -[group_76664] -[group_76665] -[group_76666] -[group_76667] -[group_76668] -[group_76669] -[group_76670] -[group_76671] -[group_76672] -[group_76673] -[group_76674] -[group_76675] -[group_76676] -[group_76677] -[group_76678] -[group_76679] -[group_76680] -[group_76681] -[group_76682] -[group_76683] -[group_76684] -[group_76685] -[group_76686] -[group_76687] -[group_76688] -[group_76689] -[group_76690] -[group_76691] -[group_76692] -[group_76693] -[group_76694] -[group_76695] -[group_76696] -[group_76697] -[group_76698] -[group_76699] -[group_76700] -[group_76701] -[group_76702] -[group_76703] -[group_76704] -[group_76705] -[group_76706] -[group_76707] -[group_76708] -[group_76709] -[group_76710] -[group_76711] -[group_76712] -[group_76713] -[group_76714] -[group_76715] -[group_76716] -[group_76717] -[group_76718] -[group_76719] -[group_76720] -[group_76721] -[group_76722] -[group_76723] -[group_76724] -[group_76725] -[group_76726] -[group_76727] -[group_76728] -[group_76729] -[group_76730] -[group_76731] -[group_76732] -[group_76733] -[group_76734] -[group_76735] -[group_76736] -[group_76737] -[group_76738] -[group_76739] -[group_76740] -[group_76741] -[group_76742] -[group_76743] -[group_76744] -[group_76745] -[group_76746] -[group_76747] -[group_76748] -[group_76749] -[group_76750] -[group_76751] -[group_76752] -[group_76753] -[group_76754] -[group_76755] -[group_76756] -[group_76757] -[group_76758] -[group_76759] -[group_76760] -[group_76761] -[group_76762] -[group_76763] -[group_76764] -[group_76765] -[group_76766] -[group_76767] -[group_76768] -[group_76769] -[group_76770] -[group_76771] -[group_76772] -[group_76773] -[group_76774] -[group_76775] -[group_76776] -[group_76777] -[group_76778] -[group_76779] -[group_76780] -[group_76781] -[group_76782] -[group_76783] -[group_76784] -[group_76785] -[group_76786] -[group_76787] -[group_76788] -[group_76789] -[group_76790] -[group_76791] -[group_76792] -[group_76793] -[group_76794] -[group_76795] -[group_76796] -[group_76797] -[group_76798] -[group_76799] -[group_76800] -[group_76801] -[group_76802] -[group_76803] -[group_76804] -[group_76805] -[group_76806] -[group_76807] -[group_76808] -[group_76809] -[group_76810] -[group_76811] -[group_76812] -[group_76813] -[group_76814] -[group_76815] -[group_76816] -[group_76817] -[group_76818] -[group_76819] -[group_76820] -[group_76821] -[group_76822] -[group_76823] -[group_76824] -[group_76825] -[group_76826] -[group_76827] -[group_76828] -[group_76829] -[group_76830] -[group_76831] -[group_76832] -[group_76833] -[group_76834] -[group_76835] -[group_76836] -[group_76837] -[group_76838] -[group_76839] -[group_76840] -[group_76841] -[group_76842] -[group_76843] -[group_76844] -[group_76845] -[group_76846] -[group_76847] -[group_76848] -[group_76849] -[group_76850] -[group_76851] -[group_76852] -[group_76853] -[group_76854] -[group_76855] -[group_76856] -[group_76857] -[group_76858] -[group_76859] -[group_76860] -[group_76861] -[group_76862] -[group_76863] -[group_76864] -[group_76865] -[group_76866] -[group_76867] -[group_76868] -[group_76869] -[group_76870] -[group_76871] -[group_76872] -[group_76873] -[group_76874] -[group_76875] -[group_76876] -[group_76877] -[group_76878] -[group_76879] -[group_76880] -[group_76881] -[group_76882] -[group_76883] -[group_76884] -[group_76885] -[group_76886] -[group_76887] -[group_76888] -[group_76889] -[group_76890] -[group_76891] -[group_76892] -[group_76893] -[group_76894] -[group_76895] -[group_76896] -[group_76897] -[group_76898] -[group_76899] -[group_76900] -[group_76901] -[group_76902] -[group_76903] -[group_76904] -[group_76905] -[group_76906] -[group_76907] -[group_76908] -[group_76909] -[group_76910] -[group_76911] -[group_76912] -[group_76913] -[group_76914] -[group_76915] -[group_76916] -[group_76917] -[group_76918] -[group_76919] -[group_76920] -[group_76921] -[group_76922] -[group_76923] -[group_76924] -[group_76925] -[group_76926] -[group_76927] -[group_76928] -[group_76929] -[group_76930] -[group_76931] -[group_76932] -[group_76933] -[group_76934] -[group_76935] -[group_76936] -[group_76937] -[group_76938] -[group_76939] -[group_76940] -[group_76941] -[group_76942] -[group_76943] -[group_76944] -[group_76945] -[group_76946] -[group_76947] -[group_76948] -[group_76949] -[group_76950] -[group_76951] -[group_76952] -[group_76953] -[group_76954] -[group_76955] -[group_76956] -[group_76957] -[group_76958] -[group_76959] -[group_76960] -[group_76961] -[group_76962] -[group_76963] -[group_76964] -[group_76965] -[group_76966] -[group_76967] -[group_76968] -[group_76969] -[group_76970] -[group_76971] -[group_76972] -[group_76973] -[group_76974] -[group_76975] -[group_76976] -[group_76977] -[group_76978] -[group_76979] -[group_76980] -[group_76981] -[group_76982] -[group_76983] -[group_76984] -[group_76985] -[group_76986] -[group_76987] -[group_76988] -[group_76989] -[group_76990] -[group_76991] -[group_76992] -[group_76993] -[group_76994] -[group_76995] -[group_76996] -[group_76997] -[group_76998] -[group_76999] -[group_77000] -[group_77001] -[group_77002] -[group_77003] -[group_77004] -[group_77005] -[group_77006] -[group_77007] -[group_77008] -[group_77009] -[group_77010] -[group_77011] -[group_77012] -[group_77013] -[group_77014] -[group_77015] -[group_77016] -[group_77017] -[group_77018] -[group_77019] -[group_77020] -[group_77021] -[group_77022] -[group_77023] -[group_77024] -[group_77025] -[group_77026] -[group_77027] -[group_77028] -[group_77029] -[group_77030] -[group_77031] -[group_77032] -[group_77033] -[group_77034] -[group_77035] -[group_77036] -[group_77037] -[group_77038] -[group_77039] -[group_77040] -[group_77041] -[group_77042] -[group_77043] -[group_77044] -[group_77045] -[group_77046] -[group_77047] -[group_77048] -[group_77049] -[group_77050] -[group_77051] -[group_77052] -[group_77053] -[group_77054] -[group_77055] -[group_77056] -[group_77057] -[group_77058] -[group_77059] -[group_77060] -[group_77061] -[group_77062] -[group_77063] -[group_77064] -[group_77065] -[group_77066] -[group_77067] -[group_77068] -[group_77069] -[group_77070] -[group_77071] -[group_77072] -[group_77073] -[group_77074] -[group_77075] -[group_77076] -[group_77077] -[group_77078] -[group_77079] -[group_77080] -[group_77081] -[group_77082] -[group_77083] -[group_77084] -[group_77085] -[group_77086] -[group_77087] -[group_77088] -[group_77089] -[group_77090] -[group_77091] -[group_77092] -[group_77093] -[group_77094] -[group_77095] -[group_77096] -[group_77097] -[group_77098] -[group_77099] -[group_77100] -[group_77101] -[group_77102] -[group_77103] -[group_77104] -[group_77105] -[group_77106] -[group_77107] -[group_77108] -[group_77109] -[group_77110] -[group_77111] -[group_77112] -[group_77113] -[group_77114] -[group_77115] -[group_77116] -[group_77117] -[group_77118] -[group_77119] -[group_77120] -[group_77121] -[group_77122] -[group_77123] -[group_77124] -[group_77125] -[group_77126] -[group_77127] -[group_77128] -[group_77129] -[group_77130] -[group_77131] -[group_77132] -[group_77133] -[group_77134] -[group_77135] -[group_77136] -[group_77137] -[group_77138] -[group_77139] -[group_77140] -[group_77141] -[group_77142] -[group_77143] -[group_77144] -[group_77145] -[group_77146] -[group_77147] -[group_77148] -[group_77149] -[group_77150] -[group_77151] -[group_77152] -[group_77153] -[group_77154] -[group_77155] -[group_77156] -[group_77157] -[group_77158] -[group_77159] -[group_77160] -[group_77161] -[group_77162] -[group_77163] -[group_77164] -[group_77165] -[group_77166] -[group_77167] -[group_77168] -[group_77169] -[group_77170] -[group_77171] -[group_77172] -[group_77173] -[group_77174] -[group_77175] -[group_77176] -[group_77177] -[group_77178] -[group_77179] -[group_77180] -[group_77181] -[group_77182] -[group_77183] -[group_77184] -[group_77185] -[group_77186] -[group_77187] -[group_77188] -[group_77189] -[group_77190] -[group_77191] -[group_77192] -[group_77193] -[group_77194] -[group_77195] -[group_77196] -[group_77197] -[group_77198] -[group_77199] -[group_77200] -[group_77201] -[group_77202] -[group_77203] -[group_77204] -[group_77205] -[group_77206] -[group_77207] -[group_77208] -[group_77209] -[group_77210] -[group_77211] -[group_77212] -[group_77213] -[group_77214] -[group_77215] -[group_77216] -[group_77217] -[group_77218] -[group_77219] -[group_77220] -[group_77221] -[group_77222] -[group_77223] -[group_77224] -[group_77225] -[group_77226] -[group_77227] -[group_77228] -[group_77229] -[group_77230] -[group_77231] -[group_77232] -[group_77233] -[group_77234] -[group_77235] -[group_77236] -[group_77237] -[group_77238] -[group_77239] -[group_77240] -[group_77241] -[group_77242] -[group_77243] -[group_77244] -[group_77245] -[group_77246] -[group_77247] -[group_77248] -[group_77249] -[group_77250] -[group_77251] -[group_77252] -[group_77253] -[group_77254] -[group_77255] -[group_77256] -[group_77257] -[group_77258] -[group_77259] -[group_77260] -[group_77261] -[group_77262] -[group_77263] -[group_77264] -[group_77265] -[group_77266] -[group_77267] -[group_77268] -[group_77269] -[group_77270] -[group_77271] -[group_77272] -[group_77273] -[group_77274] -[group_77275] -[group_77276] -[group_77277] -[group_77278] -[group_77279] -[group_77280] -[group_77281] -[group_77282] -[group_77283] -[group_77284] -[group_77285] -[group_77286] -[group_77287] -[group_77288] -[group_77289] -[group_77290] -[group_77291] -[group_77292] -[group_77293] -[group_77294] -[group_77295] -[group_77296] -[group_77297] -[group_77298] -[group_77299] -[group_77300] -[group_77301] -[group_77302] -[group_77303] -[group_77304] -[group_77305] -[group_77306] -[group_77307] -[group_77308] -[group_77309] -[group_77310] -[group_77311] -[group_77312] -[group_77313] -[group_77314] -[group_77315] -[group_77316] -[group_77317] -[group_77318] -[group_77319] -[group_77320] -[group_77321] -[group_77322] -[group_77323] -[group_77324] -[group_77325] -[group_77326] -[group_77327] -[group_77328] -[group_77329] -[group_77330] -[group_77331] -[group_77332] -[group_77333] -[group_77334] -[group_77335] -[group_77336] -[group_77337] -[group_77338] -[group_77339] -[group_77340] -[group_77341] -[group_77342] -[group_77343] -[group_77344] -[group_77345] -[group_77346] -[group_77347] -[group_77348] -[group_77349] -[group_77350] -[group_77351] -[group_77352] -[group_77353] -[group_77354] -[group_77355] -[group_77356] -[group_77357] -[group_77358] -[group_77359] -[group_77360] -[group_77361] -[group_77362] -[group_77363] -[group_77364] -[group_77365] -[group_77366] -[group_77367] -[group_77368] -[group_77369] -[group_77370] -[group_77371] -[group_77372] -[group_77373] -[group_77374] -[group_77375] -[group_77376] -[group_77377] -[group_77378] -[group_77379] -[group_77380] -[group_77381] -[group_77382] -[group_77383] -[group_77384] -[group_77385] -[group_77386] -[group_77387] -[group_77388] -[group_77389] -[group_77390] -[group_77391] -[group_77392] -[group_77393] -[group_77394] -[group_77395] -[group_77396] -[group_77397] -[group_77398] -[group_77399] -[group_77400] -[group_77401] -[group_77402] -[group_77403] -[group_77404] -[group_77405] -[group_77406] -[group_77407] -[group_77408] -[group_77409] -[group_77410] -[group_77411] -[group_77412] -[group_77413] -[group_77414] -[group_77415] -[group_77416] -[group_77417] -[group_77418] -[group_77419] -[group_77420] -[group_77421] -[group_77422] -[group_77423] -[group_77424] -[group_77425] -[group_77426] -[group_77427] -[group_77428] -[group_77429] -[group_77430] -[group_77431] -[group_77432] -[group_77433] -[group_77434] -[group_77435] -[group_77436] -[group_77437] -[group_77438] -[group_77439] -[group_77440] -[group_77441] -[group_77442] -[group_77443] -[group_77444] -[group_77445] -[group_77446] -[group_77447] -[group_77448] -[group_77449] -[group_77450] -[group_77451] -[group_77452] -[group_77453] -[group_77454] -[group_77455] -[group_77456] -[group_77457] -[group_77458] -[group_77459] -[group_77460] -[group_77461] -[group_77462] -[group_77463] -[group_77464] -[group_77465] -[group_77466] -[group_77467] -[group_77468] -[group_77469] -[group_77470] -[group_77471] -[group_77472] -[group_77473] -[group_77474] -[group_77475] -[group_77476] -[group_77477] -[group_77478] -[group_77479] -[group_77480] -[group_77481] -[group_77482] -[group_77483] -[group_77484] -[group_77485] -[group_77486] -[group_77487] -[group_77488] -[group_77489] -[group_77490] -[group_77491] -[group_77492] -[group_77493] -[group_77494] -[group_77495] -[group_77496] -[group_77497] -[group_77498] -[group_77499] -[group_77500] -[group_77501] -[group_77502] -[group_77503] -[group_77504] -[group_77505] -[group_77506] -[group_77507] -[group_77508] -[group_77509] -[group_77510] -[group_77511] -[group_77512] -[group_77513] -[group_77514] -[group_77515] -[group_77516] -[group_77517] -[group_77518] -[group_77519] -[group_77520] -[group_77521] -[group_77522] -[group_77523] -[group_77524] -[group_77525] -[group_77526] -[group_77527] -[group_77528] -[group_77529] -[group_77530] -[group_77531] -[group_77532] -[group_77533] -[group_77534] -[group_77535] -[group_77536] -[group_77537] -[group_77538] -[group_77539] -[group_77540] -[group_77541] -[group_77542] -[group_77543] -[group_77544] -[group_77545] -[group_77546] -[group_77547] -[group_77548] -[group_77549] -[group_77550] -[group_77551] -[group_77552] -[group_77553] -[group_77554] -[group_77555] -[group_77556] -[group_77557] -[group_77558] -[group_77559] -[group_77560] -[group_77561] -[group_77562] -[group_77563] -[group_77564] -[group_77565] -[group_77566] -[group_77567] -[group_77568] -[group_77569] -[group_77570] -[group_77571] -[group_77572] -[group_77573] -[group_77574] -[group_77575] -[group_77576] -[group_77577] -[group_77578] -[group_77579] -[group_77580] -[group_77581] -[group_77582] -[group_77583] -[group_77584] -[group_77585] -[group_77586] -[group_77587] -[group_77588] -[group_77589] -[group_77590] -[group_77591] -[group_77592] -[group_77593] -[group_77594] -[group_77595] -[group_77596] -[group_77597] -[group_77598] -[group_77599] -[group_77600] -[group_77601] -[group_77602] -[group_77603] -[group_77604] -[group_77605] -[group_77606] -[group_77607] -[group_77608] -[group_77609] -[group_77610] -[group_77611] -[group_77612] -[group_77613] -[group_77614] -[group_77615] -[group_77616] -[group_77617] -[group_77618] -[group_77619] -[group_77620] -[group_77621] -[group_77622] -[group_77623] -[group_77624] -[group_77625] -[group_77626] -[group_77627] -[group_77628] -[group_77629] -[group_77630] -[group_77631] -[group_77632] -[group_77633] -[group_77634] -[group_77635] -[group_77636] -[group_77637] -[group_77638] -[group_77639] -[group_77640] -[group_77641] -[group_77642] -[group_77643] -[group_77644] -[group_77645] -[group_77646] -[group_77647] -[group_77648] -[group_77649] -[group_77650] -[group_77651] -[group_77652] -[group_77653] -[group_77654] -[group_77655] -[group_77656] -[group_77657] -[group_77658] -[group_77659] -[group_77660] -[group_77661] -[group_77662] -[group_77663] -[group_77664] -[group_77665] -[group_77666] -[group_77667] -[group_77668] -[group_77669] -[group_77670] -[group_77671] -[group_77672] -[group_77673] -[group_77674] -[group_77675] -[group_77676] -[group_77677] -[group_77678] -[group_77679] -[group_77680] -[group_77681] -[group_77682] -[group_77683] -[group_77684] -[group_77685] -[group_77686] -[group_77687] -[group_77688] -[group_77689] -[group_77690] -[group_77691] -[group_77692] -[group_77693] -[group_77694] -[group_77695] -[group_77696] -[group_77697] -[group_77698] -[group_77699] -[group_77700] -[group_77701] -[group_77702] -[group_77703] -[group_77704] -[group_77705] -[group_77706] -[group_77707] -[group_77708] -[group_77709] -[group_77710] -[group_77711] -[group_77712] -[group_77713] -[group_77714] -[group_77715] -[group_77716] -[group_77717] -[group_77718] -[group_77719] -[group_77720] -[group_77721] -[group_77722] -[group_77723] -[group_77724] -[group_77725] -[group_77726] -[group_77727] -[group_77728] -[group_77729] -[group_77730] -[group_77731] -[group_77732] -[group_77733] -[group_77734] -[group_77735] -[group_77736] -[group_77737] -[group_77738] -[group_77739] -[group_77740] -[group_77741] -[group_77742] -[group_77743] -[group_77744] -[group_77745] -[group_77746] -[group_77747] -[group_77748] -[group_77749] -[group_77750] -[group_77751] -[group_77752] -[group_77753] -[group_77754] -[group_77755] -[group_77756] -[group_77757] -[group_77758] -[group_77759] -[group_77760] -[group_77761] -[group_77762] -[group_77763] -[group_77764] -[group_77765] -[group_77766] -[group_77767] -[group_77768] -[group_77769] -[group_77770] -[group_77771] -[group_77772] -[group_77773] -[group_77774] -[group_77775] -[group_77776] -[group_77777] -[group_77778] -[group_77779] -[group_77780] -[group_77781] -[group_77782] -[group_77783] -[group_77784] -[group_77785] -[group_77786] -[group_77787] -[group_77788] -[group_77789] -[group_77790] -[group_77791] -[group_77792] -[group_77793] -[group_77794] -[group_77795] -[group_77796] -[group_77797] -[group_77798] -[group_77799] -[group_77800] -[group_77801] -[group_77802] -[group_77803] -[group_77804] -[group_77805] -[group_77806] -[group_77807] -[group_77808] -[group_77809] -[group_77810] -[group_77811] -[group_77812] -[group_77813] -[group_77814] -[group_77815] -[group_77816] -[group_77817] -[group_77818] -[group_77819] -[group_77820] -[group_77821] -[group_77822] -[group_77823] -[group_77824] -[group_77825] -[group_77826] -[group_77827] -[group_77828] -[group_77829] -[group_77830] -[group_77831] -[group_77832] -[group_77833] -[group_77834] -[group_77835] -[group_77836] -[group_77837] -[group_77838] -[group_77839] -[group_77840] -[group_77841] -[group_77842] -[group_77843] -[group_77844] -[group_77845] -[group_77846] -[group_77847] -[group_77848] -[group_77849] -[group_77850] -[group_77851] -[group_77852] -[group_77853] -[group_77854] -[group_77855] -[group_77856] -[group_77857] -[group_77858] -[group_77859] -[group_77860] -[group_77861] -[group_77862] -[group_77863] -[group_77864] -[group_77865] -[group_77866] -[group_77867] -[group_77868] -[group_77869] -[group_77870] -[group_77871] -[group_77872] -[group_77873] -[group_77874] -[group_77875] -[group_77876] -[group_77877] -[group_77878] -[group_77879] -[group_77880] -[group_77881] -[group_77882] -[group_77883] -[group_77884] -[group_77885] -[group_77886] -[group_77887] -[group_77888] -[group_77889] -[group_77890] -[group_77891] -[group_77892] -[group_77893] -[group_77894] -[group_77895] -[group_77896] -[group_77897] -[group_77898] -[group_77899] -[group_77900] -[group_77901] -[group_77902] -[group_77903] -[group_77904] -[group_77905] -[group_77906] -[group_77907] -[group_77908] -[group_77909] -[group_77910] -[group_77911] -[group_77912] -[group_77913] -[group_77914] -[group_77915] -[group_77916] -[group_77917] -[group_77918] -[group_77919] -[group_77920] -[group_77921] -[group_77922] -[group_77923] -[group_77924] -[group_77925] -[group_77926] -[group_77927] -[group_77928] -[group_77929] -[group_77930] -[group_77931] -[group_77932] -[group_77933] -[group_77934] -[group_77935] -[group_77936] -[group_77937] -[group_77938] -[group_77939] -[group_77940] -[group_77941] -[group_77942] -[group_77943] -[group_77944] -[group_77945] -[group_77946] -[group_77947] -[group_77948] -[group_77949] -[group_77950] -[group_77951] -[group_77952] -[group_77953] -[group_77954] -[group_77955] -[group_77956] -[group_77957] -[group_77958] -[group_77959] -[group_77960] -[group_77961] -[group_77962] -[group_77963] -[group_77964] -[group_77965] -[group_77966] -[group_77967] -[group_77968] -[group_77969] -[group_77970] -[group_77971] -[group_77972] -[group_77973] -[group_77974] -[group_77975] -[group_77976] -[group_77977] -[group_77978] -[group_77979] -[group_77980] -[group_77981] -[group_77982] -[group_77983] -[group_77984] -[group_77985] -[group_77986] -[group_77987] -[group_77988] -[group_77989] -[group_77990] -[group_77991] -[group_77992] -[group_77993] -[group_77994] -[group_77995] -[group_77996] -[group_77997] -[group_77998] -[group_77999] -[group_78000] -[group_78001] -[group_78002] -[group_78003] -[group_78004] -[group_78005] -[group_78006] -[group_78007] -[group_78008] -[group_78009] -[group_78010] -[group_78011] -[group_78012] -[group_78013] -[group_78014] -[group_78015] -[group_78016] -[group_78017] -[group_78018] -[group_78019] -[group_78020] -[group_78021] -[group_78022] -[group_78023] -[group_78024] -[group_78025] -[group_78026] -[group_78027] -[group_78028] -[group_78029] -[group_78030] -[group_78031] -[group_78032] -[group_78033] -[group_78034] -[group_78035] -[group_78036] -[group_78037] -[group_78038] -[group_78039] -[group_78040] -[group_78041] -[group_78042] -[group_78043] -[group_78044] -[group_78045] -[group_78046] -[group_78047] -[group_78048] -[group_78049] -[group_78050] -[group_78051] -[group_78052] -[group_78053] -[group_78054] -[group_78055] -[group_78056] -[group_78057] -[group_78058] -[group_78059] -[group_78060] -[group_78061] -[group_78062] -[group_78063] -[group_78064] -[group_78065] -[group_78066] -[group_78067] -[group_78068] -[group_78069] -[group_78070] -[group_78071] -[group_78072] -[group_78073] -[group_78074] -[group_78075] -[group_78076] -[group_78077] -[group_78078] -[group_78079] -[group_78080] -[group_78081] -[group_78082] -[group_78083] -[group_78084] -[group_78085] -[group_78086] -[group_78087] -[group_78088] -[group_78089] -[group_78090] -[group_78091] -[group_78092] -[group_78093] -[group_78094] -[group_78095] -[group_78096] -[group_78097] -[group_78098] -[group_78099] -[group_78100] -[group_78101] -[group_78102] -[group_78103] -[group_78104] -[group_78105] -[group_78106] -[group_78107] -[group_78108] -[group_78109] -[group_78110] -[group_78111] -[group_78112] -[group_78113] -[group_78114] -[group_78115] -[group_78116] -[group_78117] -[group_78118] -[group_78119] -[group_78120] -[group_78121] -[group_78122] -[group_78123] -[group_78124] -[group_78125] -[group_78126] -[group_78127] -[group_78128] -[group_78129] -[group_78130] -[group_78131] -[group_78132] -[group_78133] -[group_78134] -[group_78135] -[group_78136] -[group_78137] -[group_78138] -[group_78139] -[group_78140] -[group_78141] -[group_78142] -[group_78143] -[group_78144] -[group_78145] -[group_78146] -[group_78147] -[group_78148] -[group_78149] -[group_78150] -[group_78151] -[group_78152] -[group_78153] -[group_78154] -[group_78155] -[group_78156] -[group_78157] -[group_78158] -[group_78159] -[group_78160] -[group_78161] -[group_78162] -[group_78163] -[group_78164] -[group_78165] -[group_78166] -[group_78167] -[group_78168] -[group_78169] -[group_78170] -[group_78171] -[group_78172] -[group_78173] -[group_78174] -[group_78175] -[group_78176] -[group_78177] -[group_78178] -[group_78179] -[group_78180] -[group_78181] -[group_78182] -[group_78183] -[group_78184] -[group_78185] -[group_78186] -[group_78187] -[group_78188] -[group_78189] -[group_78190] -[group_78191] -[group_78192] -[group_78193] -[group_78194] -[group_78195] -[group_78196] -[group_78197] -[group_78198] -[group_78199] -[group_78200] -[group_78201] -[group_78202] -[group_78203] -[group_78204] -[group_78205] -[group_78206] -[group_78207] -[group_78208] -[group_78209] -[group_78210] -[group_78211] -[group_78212] -[group_78213] -[group_78214] -[group_78215] -[group_78216] -[group_78217] -[group_78218] -[group_78219] -[group_78220] -[group_78221] -[group_78222] -[group_78223] -[group_78224] -[group_78225] -[group_78226] -[group_78227] -[group_78228] -[group_78229] -[group_78230] -[group_78231] -[group_78232] -[group_78233] -[group_78234] -[group_78235] -[group_78236] -[group_78237] -[group_78238] -[group_78239] -[group_78240] -[group_78241] -[group_78242] -[group_78243] -[group_78244] -[group_78245] -[group_78246] -[group_78247] -[group_78248] -[group_78249] -[group_78250] -[group_78251] -[group_78252] -[group_78253] -[group_78254] -[group_78255] -[group_78256] -[group_78257] -[group_78258] -[group_78259] -[group_78260] -[group_78261] -[group_78262] -[group_78263] -[group_78264] -[group_78265] -[group_78266] -[group_78267] -[group_78268] -[group_78269] -[group_78270] -[group_78271] -[group_78272] -[group_78273] -[group_78274] -[group_78275] -[group_78276] -[group_78277] -[group_78278] -[group_78279] -[group_78280] -[group_78281] -[group_78282] -[group_78283] -[group_78284] -[group_78285] -[group_78286] -[group_78287] -[group_78288] -[group_78289] -[group_78290] -[group_78291] -[group_78292] -[group_78293] -[group_78294] -[group_78295] -[group_78296] -[group_78297] -[group_78298] -[group_78299] -[group_78300] -[group_78301] -[group_78302] -[group_78303] -[group_78304] -[group_78305] -[group_78306] -[group_78307] -[group_78308] -[group_78309] -[group_78310] -[group_78311] -[group_78312] -[group_78313] -[group_78314] -[group_78315] -[group_78316] -[group_78317] -[group_78318] -[group_78319] -[group_78320] -[group_78321] -[group_78322] -[group_78323] -[group_78324] -[group_78325] -[group_78326] -[group_78327] -[group_78328] -[group_78329] -[group_78330] -[group_78331] -[group_78332] -[group_78333] -[group_78334] -[group_78335] -[group_78336] -[group_78337] -[group_78338] -[group_78339] -[group_78340] -[group_78341] -[group_78342] -[group_78343] -[group_78344] -[group_78345] -[group_78346] -[group_78347] -[group_78348] -[group_78349] -[group_78350] -[group_78351] -[group_78352] -[group_78353] -[group_78354] -[group_78355] -[group_78356] -[group_78357] -[group_78358] -[group_78359] -[group_78360] -[group_78361] -[group_78362] -[group_78363] -[group_78364] -[group_78365] -[group_78366] -[group_78367] -[group_78368] -[group_78369] -[group_78370] -[group_78371] -[group_78372] -[group_78373] -[group_78374] -[group_78375] -[group_78376] -[group_78377] -[group_78378] -[group_78379] -[group_78380] -[group_78381] -[group_78382] -[group_78383] -[group_78384] -[group_78385] -[group_78386] -[group_78387] -[group_78388] -[group_78389] -[group_78390] -[group_78391] -[group_78392] -[group_78393] -[group_78394] -[group_78395] -[group_78396] -[group_78397] -[group_78398] -[group_78399] -[group_78400] -[group_78401] -[group_78402] -[group_78403] -[group_78404] -[group_78405] -[group_78406] -[group_78407] -[group_78408] -[group_78409] -[group_78410] -[group_78411] -[group_78412] -[group_78413] -[group_78414] -[group_78415] -[group_78416] -[group_78417] -[group_78418] -[group_78419] -[group_78420] -[group_78421] -[group_78422] -[group_78423] -[group_78424] -[group_78425] -[group_78426] -[group_78427] -[group_78428] -[group_78429] -[group_78430] -[group_78431] -[group_78432] -[group_78433] -[group_78434] -[group_78435] -[group_78436] -[group_78437] -[group_78438] -[group_78439] -[group_78440] -[group_78441] -[group_78442] -[group_78443] -[group_78444] -[group_78445] -[group_78446] -[group_78447] -[group_78448] -[group_78449] -[group_78450] -[group_78451] -[group_78452] -[group_78453] -[group_78454] -[group_78455] -[group_78456] -[group_78457] -[group_78458] -[group_78459] -[group_78460] -[group_78461] -[group_78462] -[group_78463] -[group_78464] -[group_78465] -[group_78466] -[group_78467] -[group_78468] -[group_78469] -[group_78470] -[group_78471] -[group_78472] -[group_78473] -[group_78474] -[group_78475] -[group_78476] -[group_78477] -[group_78478] -[group_78479] -[group_78480] -[group_78481] -[group_78482] -[group_78483] -[group_78484] -[group_78485] -[group_78486] -[group_78487] -[group_78488] -[group_78489] -[group_78490] -[group_78491] -[group_78492] -[group_78493] -[group_78494] -[group_78495] -[group_78496] -[group_78497] -[group_78498] -[group_78499] -[group_78500] -[group_78501] -[group_78502] -[group_78503] -[group_78504] -[group_78505] -[group_78506] -[group_78507] -[group_78508] -[group_78509] -[group_78510] -[group_78511] -[group_78512] -[group_78513] -[group_78514] -[group_78515] -[group_78516] -[group_78517] -[group_78518] -[group_78519] -[group_78520] -[group_78521] -[group_78522] -[group_78523] -[group_78524] -[group_78525] -[group_78526] -[group_78527] -[group_78528] -[group_78529] -[group_78530] -[group_78531] -[group_78532] -[group_78533] -[group_78534] -[group_78535] -[group_78536] -[group_78537] -[group_78538] -[group_78539] -[group_78540] -[group_78541] -[group_78542] -[group_78543] -[group_78544] -[group_78545] -[group_78546] -[group_78547] -[group_78548] -[group_78549] -[group_78550] -[group_78551] -[group_78552] -[group_78553] -[group_78554] -[group_78555] -[group_78556] -[group_78557] -[group_78558] -[group_78559] -[group_78560] -[group_78561] -[group_78562] -[group_78563] -[group_78564] -[group_78565] -[group_78566] -[group_78567] -[group_78568] -[group_78569] -[group_78570] -[group_78571] -[group_78572] -[group_78573] -[group_78574] -[group_78575] -[group_78576] -[group_78577] -[group_78578] -[group_78579] -[group_78580] -[group_78581] -[group_78582] -[group_78583] -[group_78584] -[group_78585] -[group_78586] -[group_78587] -[group_78588] -[group_78589] -[group_78590] -[group_78591] -[group_78592] -[group_78593] -[group_78594] -[group_78595] -[group_78596] -[group_78597] -[group_78598] -[group_78599] -[group_78600] -[group_78601] -[group_78602] -[group_78603] -[group_78604] -[group_78605] -[group_78606] -[group_78607] -[group_78608] -[group_78609] -[group_78610] -[group_78611] -[group_78612] -[group_78613] -[group_78614] -[group_78615] -[group_78616] -[group_78617] -[group_78618] -[group_78619] -[group_78620] -[group_78621] -[group_78622] -[group_78623] -[group_78624] -[group_78625] -[group_78626] -[group_78627] -[group_78628] -[group_78629] -[group_78630] -[group_78631] -[group_78632] -[group_78633] -[group_78634] -[group_78635] -[group_78636] -[group_78637] -[group_78638] -[group_78639] -[group_78640] -[group_78641] -[group_78642] -[group_78643] -[group_78644] -[group_78645] -[group_78646] -[group_78647] -[group_78648] -[group_78649] -[group_78650] -[group_78651] -[group_78652] -[group_78653] -[group_78654] -[group_78655] -[group_78656] -[group_78657] -[group_78658] -[group_78659] -[group_78660] -[group_78661] -[group_78662] -[group_78663] -[group_78664] -[group_78665] -[group_78666] -[group_78667] -[group_78668] -[group_78669] -[group_78670] -[group_78671] -[group_78672] -[group_78673] -[group_78674] -[group_78675] -[group_78676] -[group_78677] -[group_78678] -[group_78679] -[group_78680] -[group_78681] -[group_78682] -[group_78683] -[group_78684] -[group_78685] -[group_78686] -[group_78687] -[group_78688] -[group_78689] -[group_78690] -[group_78691] -[group_78692] -[group_78693] -[group_78694] -[group_78695] -[group_78696] -[group_78697] -[group_78698] -[group_78699] -[group_78700] -[group_78701] -[group_78702] -[group_78703] -[group_78704] -[group_78705] -[group_78706] -[group_78707] -[group_78708] -[group_78709] -[group_78710] -[group_78711] -[group_78712] -[group_78713] -[group_78714] -[group_78715] -[group_78716] -[group_78717] -[group_78718] -[group_78719] -[group_78720] -[group_78721] -[group_78722] -[group_78723] -[group_78724] -[group_78725] -[group_78726] -[group_78727] -[group_78728] -[group_78729] -[group_78730] -[group_78731] -[group_78732] -[group_78733] -[group_78734] -[group_78735] -[group_78736] -[group_78737] -[group_78738] -[group_78739] -[group_78740] -[group_78741] -[group_78742] -[group_78743] -[group_78744] -[group_78745] -[group_78746] -[group_78747] -[group_78748] -[group_78749] -[group_78750] -[group_78751] -[group_78752] -[group_78753] -[group_78754] -[group_78755] -[group_78756] -[group_78757] -[group_78758] -[group_78759] -[group_78760] -[group_78761] -[group_78762] -[group_78763] -[group_78764] -[group_78765] -[group_78766] -[group_78767] -[group_78768] -[group_78769] -[group_78770] -[group_78771] -[group_78772] -[group_78773] -[group_78774] -[group_78775] -[group_78776] -[group_78777] -[group_78778] -[group_78779] -[group_78780] -[group_78781] -[group_78782] -[group_78783] -[group_78784] -[group_78785] -[group_78786] -[group_78787] -[group_78788] -[group_78789] -[group_78790] -[group_78791] -[group_78792] -[group_78793] -[group_78794] -[group_78795] -[group_78796] -[group_78797] -[group_78798] -[group_78799] -[group_78800] -[group_78801] -[group_78802] -[group_78803] -[group_78804] -[group_78805] -[group_78806] -[group_78807] -[group_78808] -[group_78809] -[group_78810] -[group_78811] -[group_78812] -[group_78813] -[group_78814] -[group_78815] -[group_78816] -[group_78817] -[group_78818] -[group_78819] -[group_78820] -[group_78821] -[group_78822] -[group_78823] -[group_78824] -[group_78825] -[group_78826] -[group_78827] -[group_78828] -[group_78829] -[group_78830] -[group_78831] -[group_78832] -[group_78833] -[group_78834] -[group_78835] -[group_78836] -[group_78837] -[group_78838] -[group_78839] -[group_78840] -[group_78841] -[group_78842] -[group_78843] -[group_78844] -[group_78845] -[group_78846] -[group_78847] -[group_78848] -[group_78849] -[group_78850] -[group_78851] -[group_78852] -[group_78853] -[group_78854] -[group_78855] -[group_78856] -[group_78857] -[group_78858] -[group_78859] -[group_78860] -[group_78861] -[group_78862] -[group_78863] -[group_78864] -[group_78865] -[group_78866] -[group_78867] -[group_78868] -[group_78869] -[group_78870] -[group_78871] -[group_78872] -[group_78873] -[group_78874] -[group_78875] -[group_78876] -[group_78877] -[group_78878] -[group_78879] -[group_78880] -[group_78881] -[group_78882] -[group_78883] -[group_78884] -[group_78885] -[group_78886] -[group_78887] -[group_78888] -[group_78889] -[group_78890] -[group_78891] -[group_78892] -[group_78893] -[group_78894] -[group_78895] -[group_78896] -[group_78897] -[group_78898] -[group_78899] -[group_78900] -[group_78901] -[group_78902] -[group_78903] -[group_78904] -[group_78905] -[group_78906] -[group_78907] -[group_78908] -[group_78909] -[group_78910] -[group_78911] -[group_78912] -[group_78913] -[group_78914] -[group_78915] -[group_78916] -[group_78917] -[group_78918] -[group_78919] -[group_78920] -[group_78921] -[group_78922] -[group_78923] -[group_78924] -[group_78925] -[group_78926] -[group_78927] -[group_78928] -[group_78929] -[group_78930] -[group_78931] -[group_78932] -[group_78933] -[group_78934] -[group_78935] -[group_78936] -[group_78937] -[group_78938] -[group_78939] -[group_78940] -[group_78941] -[group_78942] -[group_78943] -[group_78944] -[group_78945] -[group_78946] -[group_78947] -[group_78948] -[group_78949] -[group_78950] -[group_78951] -[group_78952] -[group_78953] -[group_78954] -[group_78955] -[group_78956] -[group_78957] -[group_78958] -[group_78959] -[group_78960] -[group_78961] -[group_78962] -[group_78963] -[group_78964] -[group_78965] -[group_78966] -[group_78967] -[group_78968] -[group_78969] -[group_78970] -[group_78971] -[group_78972] -[group_78973] -[group_78974] -[group_78975] -[group_78976] -[group_78977] -[group_78978] -[group_78979] -[group_78980] -[group_78981] -[group_78982] -[group_78983] -[group_78984] -[group_78985] -[group_78986] -[group_78987] -[group_78988] -[group_78989] -[group_78990] -[group_78991] -[group_78992] -[group_78993] -[group_78994] -[group_78995] -[group_78996] -[group_78997] -[group_78998] -[group_78999] -[group_79000] -[group_79001] -[group_79002] -[group_79003] -[group_79004] -[group_79005] -[group_79006] -[group_79007] -[group_79008] -[group_79009] -[group_79010] -[group_79011] -[group_79012] -[group_79013] -[group_79014] -[group_79015] -[group_79016] -[group_79017] -[group_79018] -[group_79019] -[group_79020] -[group_79021] -[group_79022] -[group_79023] -[group_79024] -[group_79025] -[group_79026] -[group_79027] -[group_79028] -[group_79029] -[group_79030] -[group_79031] -[group_79032] -[group_79033] -[group_79034] -[group_79035] -[group_79036] -[group_79037] -[group_79038] -[group_79039] -[group_79040] -[group_79041] -[group_79042] -[group_79043] -[group_79044] -[group_79045] -[group_79046] -[group_79047] -[group_79048] -[group_79049] -[group_79050] -[group_79051] -[group_79052] -[group_79053] -[group_79054] -[group_79055] -[group_79056] -[group_79057] -[group_79058] -[group_79059] -[group_79060] -[group_79061] -[group_79062] -[group_79063] -[group_79064] -[group_79065] -[group_79066] -[group_79067] -[group_79068] -[group_79069] -[group_79070] -[group_79071] -[group_79072] -[group_79073] -[group_79074] -[group_79075] -[group_79076] -[group_79077] -[group_79078] -[group_79079] -[group_79080] -[group_79081] -[group_79082] -[group_79083] -[group_79084] -[group_79085] -[group_79086] -[group_79087] -[group_79088] -[group_79089] -[group_79090] -[group_79091] -[group_79092] -[group_79093] -[group_79094] -[group_79095] -[group_79096] -[group_79097] -[group_79098] -[group_79099] -[group_79100] -[group_79101] -[group_79102] -[group_79103] -[group_79104] -[group_79105] -[group_79106] -[group_79107] -[group_79108] -[group_79109] -[group_79110] -[group_79111] -[group_79112] -[group_79113] -[group_79114] -[group_79115] -[group_79116] -[group_79117] -[group_79118] -[group_79119] -[group_79120] -[group_79121] -[group_79122] -[group_79123] -[group_79124] -[group_79125] -[group_79126] -[group_79127] -[group_79128] -[group_79129] -[group_79130] -[group_79131] -[group_79132] -[group_79133] -[group_79134] -[group_79135] -[group_79136] -[group_79137] -[group_79138] -[group_79139] -[group_79140] -[group_79141] -[group_79142] -[group_79143] -[group_79144] -[group_79145] -[group_79146] -[group_79147] -[group_79148] -[group_79149] -[group_79150] -[group_79151] -[group_79152] -[group_79153] -[group_79154] -[group_79155] -[group_79156] -[group_79157] -[group_79158] -[group_79159] -[group_79160] -[group_79161] -[group_79162] -[group_79163] -[group_79164] -[group_79165] -[group_79166] -[group_79167] -[group_79168] -[group_79169] -[group_79170] -[group_79171] -[group_79172] -[group_79173] -[group_79174] -[group_79175] -[group_79176] -[group_79177] -[group_79178] -[group_79179] -[group_79180] -[group_79181] -[group_79182] -[group_79183] -[group_79184] -[group_79185] -[group_79186] -[group_79187] -[group_79188] -[group_79189] -[group_79190] -[group_79191] -[group_79192] -[group_79193] -[group_79194] -[group_79195] -[group_79196] -[group_79197] -[group_79198] -[group_79199] -[group_79200] -[group_79201] -[group_79202] -[group_79203] -[group_79204] -[group_79205] -[group_79206] -[group_79207] -[group_79208] -[group_79209] -[group_79210] -[group_79211] -[group_79212] -[group_79213] -[group_79214] -[group_79215] -[group_79216] -[group_79217] -[group_79218] -[group_79219] -[group_79220] -[group_79221] -[group_79222] -[group_79223] -[group_79224] -[group_79225] -[group_79226] -[group_79227] -[group_79228] -[group_79229] -[group_79230] -[group_79231] -[group_79232] -[group_79233] -[group_79234] -[group_79235] -[group_79236] -[group_79237] -[group_79238] -[group_79239] -[group_79240] -[group_79241] -[group_79242] -[group_79243] -[group_79244] -[group_79245] -[group_79246] -[group_79247] -[group_79248] -[group_79249] -[group_79250] -[group_79251] -[group_79252] -[group_79253] -[group_79254] -[group_79255] -[group_79256] -[group_79257] -[group_79258] -[group_79259] -[group_79260] -[group_79261] -[group_79262] -[group_79263] -[group_79264] -[group_79265] -[group_79266] -[group_79267] -[group_79268] -[group_79269] -[group_79270] -[group_79271] -[group_79272] -[group_79273] -[group_79274] -[group_79275] -[group_79276] -[group_79277] -[group_79278] -[group_79279] -[group_79280] -[group_79281] -[group_79282] -[group_79283] -[group_79284] -[group_79285] -[group_79286] -[group_79287] -[group_79288] -[group_79289] -[group_79290] -[group_79291] -[group_79292] -[group_79293] -[group_79294] -[group_79295] -[group_79296] -[group_79297] -[group_79298] -[group_79299] -[group_79300] -[group_79301] -[group_79302] -[group_79303] -[group_79304] -[group_79305] -[group_79306] -[group_79307] -[group_79308] -[group_79309] -[group_79310] -[group_79311] -[group_79312] -[group_79313] -[group_79314] -[group_79315] -[group_79316] -[group_79317] -[group_79318] -[group_79319] -[group_79320] -[group_79321] -[group_79322] -[group_79323] -[group_79324] -[group_79325] -[group_79326] -[group_79327] -[group_79328] -[group_79329] -[group_79330] -[group_79331] -[group_79332] -[group_79333] -[group_79334] -[group_79335] -[group_79336] -[group_79337] -[group_79338] -[group_79339] -[group_79340] -[group_79341] -[group_79342] -[group_79343] -[group_79344] -[group_79345] -[group_79346] -[group_79347] -[group_79348] -[group_79349] -[group_79350] -[group_79351] -[group_79352] -[group_79353] -[group_79354] -[group_79355] -[group_79356] -[group_79357] -[group_79358] -[group_79359] -[group_79360] -[group_79361] -[group_79362] -[group_79363] -[group_79364] -[group_79365] -[group_79366] -[group_79367] -[group_79368] -[group_79369] -[group_79370] -[group_79371] -[group_79372] -[group_79373] -[group_79374] -[group_79375] -[group_79376] -[group_79377] -[group_79378] -[group_79379] -[group_79380] -[group_79381] -[group_79382] -[group_79383] -[group_79384] -[group_79385] -[group_79386] -[group_79387] -[group_79388] -[group_79389] -[group_79390] -[group_79391] -[group_79392] -[group_79393] -[group_79394] -[group_79395] -[group_79396] -[group_79397] -[group_79398] -[group_79399] -[group_79400] -[group_79401] -[group_79402] -[group_79403] -[group_79404] -[group_79405] -[group_79406] -[group_79407] -[group_79408] -[group_79409] -[group_79410] -[group_79411] -[group_79412] -[group_79413] -[group_79414] -[group_79415] -[group_79416] -[group_79417] -[group_79418] -[group_79419] -[group_79420] -[group_79421] -[group_79422] -[group_79423] -[group_79424] -[group_79425] -[group_79426] -[group_79427] -[group_79428] -[group_79429] -[group_79430] -[group_79431] -[group_79432] -[group_79433] -[group_79434] -[group_79435] -[group_79436] -[group_79437] -[group_79438] -[group_79439] -[group_79440] -[group_79441] -[group_79442] -[group_79443] -[group_79444] -[group_79445] -[group_79446] -[group_79447] -[group_79448] -[group_79449] -[group_79450] -[group_79451] -[group_79452] -[group_79453] -[group_79454] -[group_79455] -[group_79456] -[group_79457] -[group_79458] -[group_79459] -[group_79460] -[group_79461] -[group_79462] -[group_79463] -[group_79464] -[group_79465] -[group_79466] -[group_79467] -[group_79468] -[group_79469] -[group_79470] -[group_79471] -[group_79472] -[group_79473] -[group_79474] -[group_79475] -[group_79476] -[group_79477] -[group_79478] -[group_79479] -[group_79480] -[group_79481] -[group_79482] -[group_79483] -[group_79484] -[group_79485] -[group_79486] -[group_79487] -[group_79488] -[group_79489] -[group_79490] -[group_79491] -[group_79492] -[group_79493] -[group_79494] -[group_79495] -[group_79496] -[group_79497] -[group_79498] -[group_79499] -[group_79500] -[group_79501] -[group_79502] -[group_79503] -[group_79504] -[group_79505] -[group_79506] -[group_79507] -[group_79508] -[group_79509] -[group_79510] -[group_79511] -[group_79512] -[group_79513] -[group_79514] -[group_79515] -[group_79516] -[group_79517] -[group_79518] -[group_79519] -[group_79520] -[group_79521] -[group_79522] -[group_79523] -[group_79524] -[group_79525] -[group_79526] -[group_79527] -[group_79528] -[group_79529] -[group_79530] -[group_79531] -[group_79532] -[group_79533] -[group_79534] -[group_79535] -[group_79536] -[group_79537] -[group_79538] -[group_79539] -[group_79540] -[group_79541] -[group_79542] -[group_79543] -[group_79544] -[group_79545] -[group_79546] -[group_79547] -[group_79548] -[group_79549] -[group_79550] -[group_79551] -[group_79552] -[group_79553] -[group_79554] -[group_79555] -[group_79556] -[group_79557] -[group_79558] -[group_79559] -[group_79560] -[group_79561] -[group_79562] -[group_79563] -[group_79564] -[group_79565] -[group_79566] -[group_79567] -[group_79568] -[group_79569] -[group_79570] -[group_79571] -[group_79572] -[group_79573] -[group_79574] -[group_79575] -[group_79576] -[group_79577] -[group_79578] -[group_79579] -[group_79580] -[group_79581] -[group_79582] -[group_79583] -[group_79584] -[group_79585] -[group_79586] -[group_79587] -[group_79588] -[group_79589] -[group_79590] -[group_79591] -[group_79592] -[group_79593] -[group_79594] -[group_79595] -[group_79596] -[group_79597] -[group_79598] -[group_79599] -[group_79600] -[group_79601] -[group_79602] -[group_79603] -[group_79604] -[group_79605] -[group_79606] -[group_79607] -[group_79608] -[group_79609] -[group_79610] -[group_79611] -[group_79612] -[group_79613] -[group_79614] -[group_79615] -[group_79616] -[group_79617] -[group_79618] -[group_79619] -[group_79620] -[group_79621] -[group_79622] -[group_79623] -[group_79624] -[group_79625] -[group_79626] -[group_79627] -[group_79628] -[group_79629] -[group_79630] -[group_79631] -[group_79632] -[group_79633] -[group_79634] -[group_79635] -[group_79636] -[group_79637] -[group_79638] -[group_79639] -[group_79640] -[group_79641] -[group_79642] -[group_79643] -[group_79644] -[group_79645] -[group_79646] -[group_79647] -[group_79648] -[group_79649] -[group_79650] -[group_79651] -[group_79652] -[group_79653] -[group_79654] -[group_79655] -[group_79656] -[group_79657] -[group_79658] -[group_79659] -[group_79660] -[group_79661] -[group_79662] -[group_79663] -[group_79664] -[group_79665] -[group_79666] -[group_79667] -[group_79668] -[group_79669] -[group_79670] -[group_79671] -[group_79672] -[group_79673] -[group_79674] -[group_79675] -[group_79676] -[group_79677] -[group_79678] -[group_79679] -[group_79680] -[group_79681] -[group_79682] -[group_79683] -[group_79684] -[group_79685] -[group_79686] -[group_79687] -[group_79688] -[group_79689] -[group_79690] -[group_79691] -[group_79692] -[group_79693] -[group_79694] -[group_79695] -[group_79696] -[group_79697] -[group_79698] -[group_79699] -[group_79700] -[group_79701] -[group_79702] -[group_79703] -[group_79704] -[group_79705] -[group_79706] -[group_79707] -[group_79708] -[group_79709] -[group_79710] -[group_79711] -[group_79712] -[group_79713] -[group_79714] -[group_79715] -[group_79716] -[group_79717] -[group_79718] -[group_79719] -[group_79720] -[group_79721] -[group_79722] -[group_79723] -[group_79724] -[group_79725] -[group_79726] -[group_79727] -[group_79728] -[group_79729] -[group_79730] -[group_79731] -[group_79732] -[group_79733] -[group_79734] -[group_79735] -[group_79736] -[group_79737] -[group_79738] -[group_79739] -[group_79740] -[group_79741] -[group_79742] -[group_79743] -[group_79744] -[group_79745] -[group_79746] -[group_79747] -[group_79748] -[group_79749] -[group_79750] -[group_79751] -[group_79752] -[group_79753] -[group_79754] -[group_79755] -[group_79756] -[group_79757] -[group_79758] -[group_79759] -[group_79760] -[group_79761] -[group_79762] -[group_79763] -[group_79764] -[group_79765] -[group_79766] -[group_79767] -[group_79768] -[group_79769] -[group_79770] -[group_79771] -[group_79772] -[group_79773] -[group_79774] -[group_79775] -[group_79776] -[group_79777] -[group_79778] -[group_79779] -[group_79780] -[group_79781] -[group_79782] -[group_79783] -[group_79784] -[group_79785] -[group_79786] -[group_79787] -[group_79788] -[group_79789] -[group_79790] -[group_79791] -[group_79792] -[group_79793] -[group_79794] -[group_79795] -[group_79796] -[group_79797] -[group_79798] -[group_79799] -[group_79800] -[group_79801] -[group_79802] -[group_79803] -[group_79804] -[group_79805] -[group_79806] -[group_79807] -[group_79808] -[group_79809] -[group_79810] -[group_79811] -[group_79812] -[group_79813] -[group_79814] -[group_79815] -[group_79816] -[group_79817] -[group_79818] -[group_79819] -[group_79820] -[group_79821] -[group_79822] -[group_79823] -[group_79824] -[group_79825] -[group_79826] -[group_79827] -[group_79828] -[group_79829] -[group_79830] -[group_79831] -[group_79832] -[group_79833] -[group_79834] -[group_79835] -[group_79836] -[group_79837] -[group_79838] -[group_79839] -[group_79840] -[group_79841] -[group_79842] -[group_79843] -[group_79844] -[group_79845] -[group_79846] -[group_79847] -[group_79848] -[group_79849] -[group_79850] -[group_79851] -[group_79852] -[group_79853] -[group_79854] -[group_79855] -[group_79856] -[group_79857] -[group_79858] -[group_79859] -[group_79860] -[group_79861] -[group_79862] -[group_79863] -[group_79864] -[group_79865] -[group_79866] -[group_79867] -[group_79868] -[group_79869] -[group_79870] -[group_79871] -[group_79872] -[group_79873] -[group_79874] -[group_79875] -[group_79876] -[group_79877] -[group_79878] -[group_79879] -[group_79880] -[group_79881] -[group_79882] -[group_79883] -[group_79884] -[group_79885] -[group_79886] -[group_79887] -[group_79888] -[group_79889] -[group_79890] -[group_79891] -[group_79892] -[group_79893] -[group_79894] -[group_79895] -[group_79896] -[group_79897] -[group_79898] -[group_79899] -[group_79900] -[group_79901] -[group_79902] -[group_79903] -[group_79904] -[group_79905] -[group_79906] -[group_79907] -[group_79908] -[group_79909] -[group_79910] -[group_79911] -[group_79912] -[group_79913] -[group_79914] -[group_79915] -[group_79916] -[group_79917] -[group_79918] -[group_79919] -[group_79920] -[group_79921] -[group_79922] -[group_79923] -[group_79924] -[group_79925] -[group_79926] -[group_79927] -[group_79928] -[group_79929] -[group_79930] -[group_79931] -[group_79932] -[group_79933] -[group_79934] -[group_79935] -[group_79936] -[group_79937] -[group_79938] -[group_79939] -[group_79940] -[group_79941] -[group_79942] -[group_79943] -[group_79944] -[group_79945] -[group_79946] -[group_79947] -[group_79948] -[group_79949] -[group_79950] -[group_79951] -[group_79952] -[group_79953] -[group_79954] -[group_79955] -[group_79956] -[group_79957] -[group_79958] -[group_79959] -[group_79960] -[group_79961] -[group_79962] -[group_79963] -[group_79964] -[group_79965] -[group_79966] -[group_79967] -[group_79968] -[group_79969] -[group_79970] -[group_79971] -[group_79972] -[group_79973] -[group_79974] -[group_79975] -[group_79976] -[group_79977] -[group_79978] -[group_79979] -[group_79980] -[group_79981] -[group_79982] -[group_79983] -[group_79984] -[group_79985] -[group_79986] -[group_79987] -[group_79988] -[group_79989] -[group_79990] -[group_79991] -[group_79992] -[group_79993] -[group_79994] -[group_79995] -[group_79996] -[group_79997] -[group_79998] -[group_79999] -[group_80000] -[group_80001] -[group_80002] -[group_80003] -[group_80004] -[group_80005] -[group_80006] -[group_80007] -[group_80008] -[group_80009] -[group_80010] -[group_80011] -[group_80012] -[group_80013] -[group_80014] -[group_80015] -[group_80016] -[group_80017] -[group_80018] -[group_80019] -[group_80020] -[group_80021] -[group_80022] -[group_80023] -[group_80024] -[group_80025] -[group_80026] -[group_80027] -[group_80028] -[group_80029] -[group_80030] -[group_80031] -[group_80032] -[group_80033] -[group_80034] -[group_80035] -[group_80036] -[group_80037] -[group_80038] -[group_80039] -[group_80040] -[group_80041] -[group_80042] -[group_80043] -[group_80044] -[group_80045] -[group_80046] -[group_80047] -[group_80048] -[group_80049] -[group_80050] -[group_80051] -[group_80052] -[group_80053] -[group_80054] -[group_80055] -[group_80056] -[group_80057] -[group_80058] -[group_80059] -[group_80060] -[group_80061] -[group_80062] -[group_80063] -[group_80064] -[group_80065] -[group_80066] -[group_80067] -[group_80068] -[group_80069] -[group_80070] -[group_80071] -[group_80072] -[group_80073] -[group_80074] -[group_80075] -[group_80076] -[group_80077] -[group_80078] -[group_80079] -[group_80080] -[group_80081] -[group_80082] -[group_80083] -[group_80084] -[group_80085] -[group_80086] -[group_80087] -[group_80088] -[group_80089] -[group_80090] -[group_80091] -[group_80092] -[group_80093] -[group_80094] -[group_80095] -[group_80096] -[group_80097] -[group_80098] -[group_80099] -[group_80100] -[group_80101] -[group_80102] -[group_80103] -[group_80104] -[group_80105] -[group_80106] -[group_80107] -[group_80108] -[group_80109] -[group_80110] -[group_80111] -[group_80112] -[group_80113] -[group_80114] -[group_80115] -[group_80116] -[group_80117] -[group_80118] -[group_80119] -[group_80120] -[group_80121] -[group_80122] -[group_80123] -[group_80124] -[group_80125] -[group_80126] -[group_80127] -[group_80128] -[group_80129] -[group_80130] -[group_80131] -[group_80132] -[group_80133] -[group_80134] -[group_80135] -[group_80136] -[group_80137] -[group_80138] -[group_80139] -[group_80140] -[group_80141] -[group_80142] -[group_80143] -[group_80144] -[group_80145] -[group_80146] -[group_80147] -[group_80148] -[group_80149] -[group_80150] -[group_80151] -[group_80152] -[group_80153] -[group_80154] -[group_80155] -[group_80156] -[group_80157] -[group_80158] -[group_80159] -[group_80160] -[group_80161] -[group_80162] -[group_80163] -[group_80164] -[group_80165] -[group_80166] -[group_80167] -[group_80168] -[group_80169] -[group_80170] -[group_80171] -[group_80172] -[group_80173] -[group_80174] -[group_80175] -[group_80176] -[group_80177] -[group_80178] -[group_80179] -[group_80180] -[group_80181] -[group_80182] -[group_80183] -[group_80184] -[group_80185] -[group_80186] -[group_80187] -[group_80188] -[group_80189] -[group_80190] -[group_80191] -[group_80192] -[group_80193] -[group_80194] -[group_80195] -[group_80196] -[group_80197] -[group_80198] -[group_80199] -[group_80200] -[group_80201] -[group_80202] -[group_80203] -[group_80204] -[group_80205] -[group_80206] -[group_80207] -[group_80208] -[group_80209] -[group_80210] -[group_80211] -[group_80212] -[group_80213] -[group_80214] -[group_80215] -[group_80216] -[group_80217] -[group_80218] -[group_80219] -[group_80220] -[group_80221] -[group_80222] -[group_80223] -[group_80224] -[group_80225] -[group_80226] -[group_80227] -[group_80228] -[group_80229] -[group_80230] -[group_80231] -[group_80232] -[group_80233] -[group_80234] -[group_80235] -[group_80236] -[group_80237] -[group_80238] -[group_80239] -[group_80240] -[group_80241] -[group_80242] -[group_80243] -[group_80244] -[group_80245] -[group_80246] -[group_80247] -[group_80248] -[group_80249] -[group_80250] -[group_80251] -[group_80252] -[group_80253] -[group_80254] -[group_80255] -[group_80256] -[group_80257] -[group_80258] -[group_80259] -[group_80260] -[group_80261] -[group_80262] -[group_80263] -[group_80264] -[group_80265] -[group_80266] -[group_80267] -[group_80268] -[group_80269] -[group_80270] -[group_80271] -[group_80272] -[group_80273] -[group_80274] -[group_80275] -[group_80276] -[group_80277] -[group_80278] -[group_80279] -[group_80280] -[group_80281] -[group_80282] -[group_80283] -[group_80284] -[group_80285] -[group_80286] -[group_80287] -[group_80288] -[group_80289] -[group_80290] -[group_80291] -[group_80292] -[group_80293] -[group_80294] -[group_80295] -[group_80296] -[group_80297] -[group_80298] -[group_80299] -[group_80300] -[group_80301] -[group_80302] -[group_80303] -[group_80304] -[group_80305] -[group_80306] -[group_80307] -[group_80308] -[group_80309] -[group_80310] -[group_80311] -[group_80312] -[group_80313] -[group_80314] -[group_80315] -[group_80316] -[group_80317] -[group_80318] -[group_80319] -[group_80320] -[group_80321] -[group_80322] -[group_80323] -[group_80324] -[group_80325] -[group_80326] -[group_80327] -[group_80328] -[group_80329] -[group_80330] -[group_80331] -[group_80332] -[group_80333] -[group_80334] -[group_80335] -[group_80336] -[group_80337] -[group_80338] -[group_80339] -[group_80340] -[group_80341] -[group_80342] -[group_80343] -[group_80344] -[group_80345] -[group_80346] -[group_80347] -[group_80348] -[group_80349] -[group_80350] -[group_80351] -[group_80352] -[group_80353] -[group_80354] -[group_80355] -[group_80356] -[group_80357] -[group_80358] -[group_80359] -[group_80360] -[group_80361] -[group_80362] -[group_80363] -[group_80364] -[group_80365] -[group_80366] -[group_80367] -[group_80368] -[group_80369] -[group_80370] -[group_80371] -[group_80372] -[group_80373] -[group_80374] -[group_80375] -[group_80376] -[group_80377] -[group_80378] -[group_80379] -[group_80380] -[group_80381] -[group_80382] -[group_80383] -[group_80384] -[group_80385] -[group_80386] -[group_80387] -[group_80388] -[group_80389] -[group_80390] -[group_80391] -[group_80392] -[group_80393] -[group_80394] -[group_80395] -[group_80396] -[group_80397] -[group_80398] -[group_80399] -[group_80400] -[group_80401] -[group_80402] -[group_80403] -[group_80404] -[group_80405] -[group_80406] -[group_80407] -[group_80408] -[group_80409] -[group_80410] -[group_80411] -[group_80412] -[group_80413] -[group_80414] -[group_80415] -[group_80416] -[group_80417] -[group_80418] -[group_80419] -[group_80420] -[group_80421] -[group_80422] -[group_80423] -[group_80424] -[group_80425] -[group_80426] -[group_80427] -[group_80428] -[group_80429] -[group_80430] -[group_80431] -[group_80432] -[group_80433] -[group_80434] -[group_80435] -[group_80436] -[group_80437] -[group_80438] -[group_80439] -[group_80440] -[group_80441] -[group_80442] -[group_80443] -[group_80444] -[group_80445] -[group_80446] -[group_80447] -[group_80448] -[group_80449] -[group_80450] -[group_80451] -[group_80452] -[group_80453] -[group_80454] -[group_80455] -[group_80456] -[group_80457] -[group_80458] -[group_80459] -[group_80460] -[group_80461] -[group_80462] -[group_80463] -[group_80464] -[group_80465] -[group_80466] -[group_80467] -[group_80468] -[group_80469] -[group_80470] -[group_80471] -[group_80472] -[group_80473] -[group_80474] -[group_80475] -[group_80476] -[group_80477] -[group_80478] -[group_80479] -[group_80480] -[group_80481] -[group_80482] -[group_80483] -[group_80484] -[group_80485] -[group_80486] -[group_80487] -[group_80488] -[group_80489] -[group_80490] -[group_80491] -[group_80492] -[group_80493] -[group_80494] -[group_80495] -[group_80496] -[group_80497] -[group_80498] -[group_80499] -[group_80500] -[group_80501] -[group_80502] -[group_80503] -[group_80504] -[group_80505] -[group_80506] -[group_80507] -[group_80508] -[group_80509] -[group_80510] -[group_80511] -[group_80512] -[group_80513] -[group_80514] -[group_80515] -[group_80516] -[group_80517] -[group_80518] -[group_80519] -[group_80520] -[group_80521] -[group_80522] -[group_80523] -[group_80524] -[group_80525] -[group_80526] -[group_80527] -[group_80528] -[group_80529] -[group_80530] -[group_80531] -[group_80532] -[group_80533] -[group_80534] -[group_80535] -[group_80536] -[group_80537] -[group_80538] -[group_80539] -[group_80540] -[group_80541] -[group_80542] -[group_80543] -[group_80544] -[group_80545] -[group_80546] -[group_80547] -[group_80548] -[group_80549] -[group_80550] -[group_80551] -[group_80552] -[group_80553] -[group_80554] -[group_80555] -[group_80556] -[group_80557] -[group_80558] -[group_80559] -[group_80560] -[group_80561] -[group_80562] -[group_80563] -[group_80564] -[group_80565] -[group_80566] -[group_80567] -[group_80568] -[group_80569] -[group_80570] -[group_80571] -[group_80572] -[group_80573] -[group_80574] -[group_80575] -[group_80576] -[group_80577] -[group_80578] -[group_80579] -[group_80580] -[group_80581] -[group_80582] -[group_80583] -[group_80584] -[group_80585] -[group_80586] -[group_80587] -[group_80588] -[group_80589] -[group_80590] -[group_80591] -[group_80592] -[group_80593] -[group_80594] -[group_80595] -[group_80596] -[group_80597] -[group_80598] -[group_80599] -[group_80600] -[group_80601] -[group_80602] -[group_80603] -[group_80604] -[group_80605] -[group_80606] -[group_80607] -[group_80608] -[group_80609] -[group_80610] -[group_80611] -[group_80612] -[group_80613] -[group_80614] -[group_80615] -[group_80616] -[group_80617] -[group_80618] -[group_80619] -[group_80620] -[group_80621] -[group_80622] -[group_80623] -[group_80624] -[group_80625] -[group_80626] -[group_80627] -[group_80628] -[group_80629] -[group_80630] -[group_80631] -[group_80632] -[group_80633] -[group_80634] -[group_80635] -[group_80636] -[group_80637] -[group_80638] -[group_80639] -[group_80640] -[group_80641] -[group_80642] -[group_80643] -[group_80644] -[group_80645] -[group_80646] -[group_80647] -[group_80648] -[group_80649] -[group_80650] -[group_80651] -[group_80652] -[group_80653] -[group_80654] -[group_80655] -[group_80656] -[group_80657] -[group_80658] -[group_80659] -[group_80660] -[group_80661] -[group_80662] -[group_80663] -[group_80664] -[group_80665] -[group_80666] -[group_80667] -[group_80668] -[group_80669] -[group_80670] -[group_80671] -[group_80672] -[group_80673] -[group_80674] -[group_80675] -[group_80676] -[group_80677] -[group_80678] -[group_80679] -[group_80680] -[group_80681] -[group_80682] -[group_80683] -[group_80684] -[group_80685] -[group_80686] -[group_80687] -[group_80688] -[group_80689] -[group_80690] -[group_80691] -[group_80692] -[group_80693] -[group_80694] -[group_80695] -[group_80696] -[group_80697] -[group_80698] -[group_80699] -[group_80700] -[group_80701] -[group_80702] -[group_80703] -[group_80704] -[group_80705] -[group_80706] -[group_80707] -[group_80708] -[group_80709] -[group_80710] -[group_80711] -[group_80712] -[group_80713] -[group_80714] -[group_80715] -[group_80716] -[group_80717] -[group_80718] -[group_80719] -[group_80720] -[group_80721] -[group_80722] -[group_80723] -[group_80724] -[group_80725] -[group_80726] -[group_80727] -[group_80728] -[group_80729] -[group_80730] -[group_80731] -[group_80732] -[group_80733] -[group_80734] -[group_80735] -[group_80736] -[group_80737] -[group_80738] -[group_80739] -[group_80740] -[group_80741] -[group_80742] -[group_80743] -[group_80744] -[group_80745] -[group_80746] -[group_80747] -[group_80748] -[group_80749] -[group_80750] -[group_80751] -[group_80752] -[group_80753] -[group_80754] -[group_80755] -[group_80756] -[group_80757] -[group_80758] -[group_80759] -[group_80760] -[group_80761] -[group_80762] -[group_80763] -[group_80764] -[group_80765] -[group_80766] -[group_80767] -[group_80768] -[group_80769] -[group_80770] -[group_80771] -[group_80772] -[group_80773] -[group_80774] -[group_80775] -[group_80776] -[group_80777] -[group_80778] -[group_80779] -[group_80780] -[group_80781] -[group_80782] -[group_80783] -[group_80784] -[group_80785] -[group_80786] -[group_80787] -[group_80788] -[group_80789] -[group_80790] -[group_80791] -[group_80792] -[group_80793] -[group_80794] -[group_80795] -[group_80796] -[group_80797] -[group_80798] -[group_80799] -[group_80800] -[group_80801] -[group_80802] -[group_80803] -[group_80804] -[group_80805] -[group_80806] -[group_80807] -[group_80808] -[group_80809] -[group_80810] -[group_80811] -[group_80812] -[group_80813] -[group_80814] -[group_80815] -[group_80816] -[group_80817] -[group_80818] -[group_80819] -[group_80820] -[group_80821] -[group_80822] -[group_80823] -[group_80824] -[group_80825] -[group_80826] -[group_80827] -[group_80828] -[group_80829] -[group_80830] -[group_80831] -[group_80832] -[group_80833] -[group_80834] -[group_80835] -[group_80836] -[group_80837] -[group_80838] -[group_80839] -[group_80840] -[group_80841] -[group_80842] -[group_80843] -[group_80844] -[group_80845] -[group_80846] -[group_80847] -[group_80848] -[group_80849] -[group_80850] -[group_80851] -[group_80852] -[group_80853] -[group_80854] -[group_80855] -[group_80856] -[group_80857] -[group_80858] -[group_80859] -[group_80860] -[group_80861] -[group_80862] -[group_80863] -[group_80864] -[group_80865] -[group_80866] -[group_80867] -[group_80868] -[group_80869] -[group_80870] -[group_80871] -[group_80872] -[group_80873] -[group_80874] -[group_80875] -[group_80876] -[group_80877] -[group_80878] -[group_80879] -[group_80880] -[group_80881] -[group_80882] -[group_80883] -[group_80884] -[group_80885] -[group_80886] -[group_80887] -[group_80888] -[group_80889] -[group_80890] -[group_80891] -[group_80892] -[group_80893] -[group_80894] -[group_80895] -[group_80896] -[group_80897] -[group_80898] -[group_80899] -[group_80900] -[group_80901] -[group_80902] -[group_80903] -[group_80904] -[group_80905] -[group_80906] -[group_80907] -[group_80908] -[group_80909] -[group_80910] -[group_80911] -[group_80912] -[group_80913] -[group_80914] -[group_80915] -[group_80916] -[group_80917] -[group_80918] -[group_80919] -[group_80920] -[group_80921] -[group_80922] -[group_80923] -[group_80924] -[group_80925] -[group_80926] -[group_80927] -[group_80928] -[group_80929] -[group_80930] -[group_80931] -[group_80932] -[group_80933] -[group_80934] -[group_80935] -[group_80936] -[group_80937] -[group_80938] -[group_80939] -[group_80940] -[group_80941] -[group_80942] -[group_80943] -[group_80944] -[group_80945] -[group_80946] -[group_80947] -[group_80948] -[group_80949] -[group_80950] -[group_80951] -[group_80952] -[group_80953] -[group_80954] -[group_80955] -[group_80956] -[group_80957] -[group_80958] -[group_80959] -[group_80960] -[group_80961] -[group_80962] -[group_80963] -[group_80964] -[group_80965] -[group_80966] -[group_80967] -[group_80968] -[group_80969] -[group_80970] -[group_80971] -[group_80972] -[group_80973] -[group_80974] -[group_80975] -[group_80976] -[group_80977] -[group_80978] -[group_80979] -[group_80980] -[group_80981] -[group_80982] -[group_80983] -[group_80984] -[group_80985] -[group_80986] -[group_80987] -[group_80988] -[group_80989] -[group_80990] -[group_80991] -[group_80992] -[group_80993] -[group_80994] -[group_80995] -[group_80996] -[group_80997] -[group_80998] -[group_80999] -[group_81000] -[group_81001] -[group_81002] -[group_81003] -[group_81004] -[group_81005] -[group_81006] -[group_81007] -[group_81008] -[group_81009] -[group_81010] -[group_81011] -[group_81012] -[group_81013] -[group_81014] -[group_81015] -[group_81016] -[group_81017] -[group_81018] -[group_81019] -[group_81020] -[group_81021] -[group_81022] -[group_81023] -[group_81024] -[group_81025] -[group_81026] -[group_81027] -[group_81028] -[group_81029] -[group_81030] -[group_81031] -[group_81032] -[group_81033] -[group_81034] -[group_81035] -[group_81036] -[group_81037] -[group_81038] -[group_81039] -[group_81040] -[group_81041] -[group_81042] -[group_81043] -[group_81044] -[group_81045] -[group_81046] -[group_81047] -[group_81048] -[group_81049] -[group_81050] -[group_81051] -[group_81052] -[group_81053] -[group_81054] -[group_81055] -[group_81056] -[group_81057] -[group_81058] -[group_81059] -[group_81060] -[group_81061] -[group_81062] -[group_81063] -[group_81064] -[group_81065] -[group_81066] -[group_81067] -[group_81068] -[group_81069] -[group_81070] -[group_81071] -[group_81072] -[group_81073] -[group_81074] -[group_81075] -[group_81076] -[group_81077] -[group_81078] -[group_81079] -[group_81080] -[group_81081] -[group_81082] -[group_81083] -[group_81084] -[group_81085] -[group_81086] -[group_81087] -[group_81088] -[group_81089] -[group_81090] -[group_81091] -[group_81092] -[group_81093] -[group_81094] -[group_81095] -[group_81096] -[group_81097] -[group_81098] -[group_81099] -[group_81100] -[group_81101] -[group_81102] -[group_81103] -[group_81104] -[group_81105] -[group_81106] -[group_81107] -[group_81108] -[group_81109] -[group_81110] -[group_81111] -[group_81112] -[group_81113] -[group_81114] -[group_81115] -[group_81116] -[group_81117] -[group_81118] -[group_81119] -[group_81120] -[group_81121] -[group_81122] -[group_81123] -[group_81124] -[group_81125] -[group_81126] -[group_81127] -[group_81128] -[group_81129] -[group_81130] -[group_81131] -[group_81132] -[group_81133] -[group_81134] -[group_81135] -[group_81136] -[group_81137] -[group_81138] -[group_81139] -[group_81140] -[group_81141] -[group_81142] -[group_81143] -[group_81144] -[group_81145] -[group_81146] -[group_81147] -[group_81148] -[group_81149] -[group_81150] -[group_81151] -[group_81152] -[group_81153] -[group_81154] -[group_81155] -[group_81156] -[group_81157] -[group_81158] -[group_81159] -[group_81160] -[group_81161] -[group_81162] -[group_81163] -[group_81164] -[group_81165] -[group_81166] -[group_81167] -[group_81168] -[group_81169] -[group_81170] -[group_81171] -[group_81172] -[group_81173] -[group_81174] -[group_81175] -[group_81176] -[group_81177] -[group_81178] -[group_81179] -[group_81180] -[group_81181] -[group_81182] -[group_81183] -[group_81184] -[group_81185] -[group_81186] -[group_81187] -[group_81188] -[group_81189] -[group_81190] -[group_81191] -[group_81192] -[group_81193] -[group_81194] -[group_81195] -[group_81196] -[group_81197] -[group_81198] -[group_81199] -[group_81200] -[group_81201] -[group_81202] -[group_81203] -[group_81204] -[group_81205] -[group_81206] -[group_81207] -[group_81208] -[group_81209] -[group_81210] -[group_81211] -[group_81212] -[group_81213] -[group_81214] -[group_81215] -[group_81216] -[group_81217] -[group_81218] -[group_81219] -[group_81220] -[group_81221] -[group_81222] -[group_81223] -[group_81224] -[group_81225] -[group_81226] -[group_81227] -[group_81228] -[group_81229] -[group_81230] -[group_81231] -[group_81232] -[group_81233] -[group_81234] -[group_81235] -[group_81236] -[group_81237] -[group_81238] -[group_81239] -[group_81240] -[group_81241] -[group_81242] -[group_81243] -[group_81244] -[group_81245] -[group_81246] -[group_81247] -[group_81248] -[group_81249] -[group_81250] -[group_81251] -[group_81252] -[group_81253] -[group_81254] -[group_81255] -[group_81256] -[group_81257] -[group_81258] -[group_81259] -[group_81260] -[group_81261] -[group_81262] -[group_81263] -[group_81264] -[group_81265] -[group_81266] -[group_81267] -[group_81268] -[group_81269] -[group_81270] -[group_81271] -[group_81272] -[group_81273] -[group_81274] -[group_81275] -[group_81276] -[group_81277] -[group_81278] -[group_81279] -[group_81280] -[group_81281] -[group_81282] -[group_81283] -[group_81284] -[group_81285] -[group_81286] -[group_81287] -[group_81288] -[group_81289] -[group_81290] -[group_81291] -[group_81292] -[group_81293] -[group_81294] -[group_81295] -[group_81296] -[group_81297] -[group_81298] -[group_81299] -[group_81300] -[group_81301] -[group_81302] -[group_81303] -[group_81304] -[group_81305] -[group_81306] -[group_81307] -[group_81308] -[group_81309] -[group_81310] -[group_81311] -[group_81312] -[group_81313] -[group_81314] -[group_81315] -[group_81316] -[group_81317] -[group_81318] -[group_81319] -[group_81320] -[group_81321] -[group_81322] -[group_81323] -[group_81324] -[group_81325] -[group_81326] -[group_81327] -[group_81328] -[group_81329] -[group_81330] -[group_81331] -[group_81332] -[group_81333] -[group_81334] -[group_81335] -[group_81336] -[group_81337] -[group_81338] -[group_81339] -[group_81340] -[group_81341] -[group_81342] -[group_81343] -[group_81344] -[group_81345] -[group_81346] -[group_81347] -[group_81348] -[group_81349] -[group_81350] -[group_81351] -[group_81352] -[group_81353] -[group_81354] -[group_81355] -[group_81356] -[group_81357] -[group_81358] -[group_81359] -[group_81360] -[group_81361] -[group_81362] -[group_81363] -[group_81364] -[group_81365] -[group_81366] -[group_81367] -[group_81368] -[group_81369] -[group_81370] -[group_81371] -[group_81372] -[group_81373] -[group_81374] -[group_81375] -[group_81376] -[group_81377] -[group_81378] -[group_81379] -[group_81380] -[group_81381] -[group_81382] -[group_81383] -[group_81384] -[group_81385] -[group_81386] -[group_81387] -[group_81388] -[group_81389] -[group_81390] -[group_81391] -[group_81392] -[group_81393] -[group_81394] -[group_81395] -[group_81396] -[group_81397] -[group_81398] -[group_81399] -[group_81400] -[group_81401] -[group_81402] -[group_81403] -[group_81404] -[group_81405] -[group_81406] -[group_81407] -[group_81408] -[group_81409] -[group_81410] -[group_81411] -[group_81412] -[group_81413] -[group_81414] -[group_81415] -[group_81416] -[group_81417] -[group_81418] -[group_81419] -[group_81420] -[group_81421] -[group_81422] -[group_81423] -[group_81424] -[group_81425] -[group_81426] -[group_81427] -[group_81428] -[group_81429] -[group_81430] -[group_81431] -[group_81432] -[group_81433] -[group_81434] -[group_81435] -[group_81436] -[group_81437] -[group_81438] -[group_81439] -[group_81440] -[group_81441] -[group_81442] -[group_81443] -[group_81444] -[group_81445] -[group_81446] -[group_81447] -[group_81448] -[group_81449] -[group_81450] -[group_81451] -[group_81452] -[group_81453] -[group_81454] -[group_81455] -[group_81456] -[group_81457] -[group_81458] -[group_81459] -[group_81460] -[group_81461] -[group_81462] -[group_81463] -[group_81464] -[group_81465] -[group_81466] -[group_81467] -[group_81468] -[group_81469] -[group_81470] -[group_81471] -[group_81472] -[group_81473] -[group_81474] -[group_81475] -[group_81476] -[group_81477] -[group_81478] -[group_81479] -[group_81480] -[group_81481] -[group_81482] -[group_81483] -[group_81484] -[group_81485] -[group_81486] -[group_81487] -[group_81488] -[group_81489] -[group_81490] -[group_81491] -[group_81492] -[group_81493] -[group_81494] -[group_81495] -[group_81496] -[group_81497] -[group_81498] -[group_81499] -[group_81500] -[group_81501] -[group_81502] -[group_81503] -[group_81504] -[group_81505] -[group_81506] -[group_81507] -[group_81508] -[group_81509] -[group_81510] -[group_81511] -[group_81512] -[group_81513] -[group_81514] -[group_81515] -[group_81516] -[group_81517] -[group_81518] -[group_81519] -[group_81520] -[group_81521] -[group_81522] -[group_81523] -[group_81524] -[group_81525] -[group_81526] -[group_81527] -[group_81528] -[group_81529] -[group_81530] -[group_81531] -[group_81532] -[group_81533] -[group_81534] -[group_81535] -[group_81536] -[group_81537] -[group_81538] -[group_81539] -[group_81540] -[group_81541] -[group_81542] -[group_81543] -[group_81544] -[group_81545] -[group_81546] -[group_81547] -[group_81548] -[group_81549] -[group_81550] -[group_81551] -[group_81552] -[group_81553] -[group_81554] -[group_81555] -[group_81556] -[group_81557] -[group_81558] -[group_81559] -[group_81560] -[group_81561] -[group_81562] -[group_81563] -[group_81564] -[group_81565] -[group_81566] -[group_81567] -[group_81568] -[group_81569] -[group_81570] -[group_81571] -[group_81572] -[group_81573] -[group_81574] -[group_81575] -[group_81576] -[group_81577] -[group_81578] -[group_81579] -[group_81580] -[group_81581] -[group_81582] -[group_81583] -[group_81584] -[group_81585] -[group_81586] -[group_81587] -[group_81588] -[group_81589] -[group_81590] -[group_81591] -[group_81592] -[group_81593] -[group_81594] -[group_81595] -[group_81596] -[group_81597] -[group_81598] -[group_81599] -[group_81600] -[group_81601] -[group_81602] -[group_81603] -[group_81604] -[group_81605] -[group_81606] -[group_81607] -[group_81608] -[group_81609] -[group_81610] -[group_81611] -[group_81612] -[group_81613] -[group_81614] -[group_81615] -[group_81616] -[group_81617] -[group_81618] -[group_81619] -[group_81620] -[group_81621] -[group_81622] -[group_81623] -[group_81624] -[group_81625] -[group_81626] -[group_81627] -[group_81628] -[group_81629] -[group_81630] -[group_81631] -[group_81632] -[group_81633] -[group_81634] -[group_81635] -[group_81636] -[group_81637] -[group_81638] -[group_81639] -[group_81640] -[group_81641] -[group_81642] -[group_81643] -[group_81644] -[group_81645] -[group_81646] -[group_81647] -[group_81648] -[group_81649] -[group_81650] -[group_81651] -[group_81652] -[group_81653] -[group_81654] -[group_81655] -[group_81656] -[group_81657] -[group_81658] -[group_81659] -[group_81660] -[group_81661] -[group_81662] -[group_81663] -[group_81664] -[group_81665] -[group_81666] -[group_81667] -[group_81668] -[group_81669] -[group_81670] -[group_81671] -[group_81672] -[group_81673] -[group_81674] -[group_81675] -[group_81676] -[group_81677] -[group_81678] -[group_81679] -[group_81680] -[group_81681] -[group_81682] -[group_81683] -[group_81684] -[group_81685] -[group_81686] -[group_81687] -[group_81688] -[group_81689] -[group_81690] -[group_81691] -[group_81692] -[group_81693] -[group_81694] -[group_81695] -[group_81696] -[group_81697] -[group_81698] -[group_81699] -[group_81700] -[group_81701] -[group_81702] -[group_81703] -[group_81704] -[group_81705] -[group_81706] -[group_81707] -[group_81708] -[group_81709] -[group_81710] -[group_81711] -[group_81712] -[group_81713] -[group_81714] -[group_81715] -[group_81716] -[group_81717] -[group_81718] -[group_81719] -[group_81720] -[group_81721] -[group_81722] -[group_81723] -[group_81724] -[group_81725] -[group_81726] -[group_81727] -[group_81728] -[group_81729] -[group_81730] -[group_81731] -[group_81732] -[group_81733] -[group_81734] -[group_81735] -[group_81736] -[group_81737] -[group_81738] -[group_81739] -[group_81740] -[group_81741] -[group_81742] -[group_81743] -[group_81744] -[group_81745] -[group_81746] -[group_81747] -[group_81748] -[group_81749] -[group_81750] -[group_81751] -[group_81752] -[group_81753] -[group_81754] -[group_81755] -[group_81756] -[group_81757] -[group_81758] -[group_81759] -[group_81760] -[group_81761] -[group_81762] -[group_81763] -[group_81764] -[group_81765] -[group_81766] -[group_81767] -[group_81768] -[group_81769] -[group_81770] -[group_81771] -[group_81772] -[group_81773] -[group_81774] -[group_81775] -[group_81776] -[group_81777] -[group_81778] -[group_81779] -[group_81780] -[group_81781] -[group_81782] -[group_81783] -[group_81784] -[group_81785] -[group_81786] -[group_81787] -[group_81788] -[group_81789] -[group_81790] -[group_81791] -[group_81792] -[group_81793] -[group_81794] -[group_81795] -[group_81796] -[group_81797] -[group_81798] -[group_81799] -[group_81800] -[group_81801] -[group_81802] -[group_81803] -[group_81804] -[group_81805] -[group_81806] -[group_81807] -[group_81808] -[group_81809] -[group_81810] -[group_81811] -[group_81812] -[group_81813] -[group_81814] -[group_81815] -[group_81816] -[group_81817] -[group_81818] -[group_81819] -[group_81820] -[group_81821] -[group_81822] -[group_81823] -[group_81824] -[group_81825] -[group_81826] -[group_81827] -[group_81828] -[group_81829] -[group_81830] -[group_81831] -[group_81832] -[group_81833] -[group_81834] -[group_81835] -[group_81836] -[group_81837] -[group_81838] -[group_81839] -[group_81840] -[group_81841] -[group_81842] -[group_81843] -[group_81844] -[group_81845] -[group_81846] -[group_81847] -[group_81848] -[group_81849] -[group_81850] -[group_81851] -[group_81852] -[group_81853] -[group_81854] -[group_81855] -[group_81856] -[group_81857] -[group_81858] -[group_81859] -[group_81860] -[group_81861] -[group_81862] -[group_81863] -[group_81864] -[group_81865] -[group_81866] -[group_81867] -[group_81868] -[group_81869] -[group_81870] -[group_81871] -[group_81872] -[group_81873] -[group_81874] -[group_81875] -[group_81876] -[group_81877] -[group_81878] -[group_81879] -[group_81880] -[group_81881] -[group_81882] -[group_81883] -[group_81884] -[group_81885] -[group_81886] -[group_81887] -[group_81888] -[group_81889] -[group_81890] -[group_81891] -[group_81892] -[group_81893] -[group_81894] -[group_81895] -[group_81896] -[group_81897] -[group_81898] -[group_81899] -[group_81900] -[group_81901] -[group_81902] -[group_81903] -[group_81904] -[group_81905] -[group_81906] -[group_81907] -[group_81908] -[group_81909] -[group_81910] -[group_81911] -[group_81912] -[group_81913] -[group_81914] -[group_81915] -[group_81916] -[group_81917] -[group_81918] -[group_81919] -[group_81920] -[group_81921] -[group_81922] -[group_81923] -[group_81924] -[group_81925] -[group_81926] -[group_81927] -[group_81928] -[group_81929] -[group_81930] -[group_81931] -[group_81932] -[group_81933] -[group_81934] -[group_81935] -[group_81936] -[group_81937] -[group_81938] -[group_81939] -[group_81940] -[group_81941] -[group_81942] -[group_81943] -[group_81944] -[group_81945] -[group_81946] -[group_81947] -[group_81948] -[group_81949] -[group_81950] -[group_81951] -[group_81952] -[group_81953] -[group_81954] -[group_81955] -[group_81956] -[group_81957] -[group_81958] -[group_81959] -[group_81960] -[group_81961] -[group_81962] -[group_81963] -[group_81964] -[group_81965] -[group_81966] -[group_81967] -[group_81968] -[group_81969] -[group_81970] -[group_81971] -[group_81972] -[group_81973] -[group_81974] -[group_81975] -[group_81976] -[group_81977] -[group_81978] -[group_81979] -[group_81980] -[group_81981] -[group_81982] -[group_81983] -[group_81984] -[group_81985] -[group_81986] -[group_81987] -[group_81988] -[group_81989] -[group_81990] -[group_81991] -[group_81992] -[group_81993] -[group_81994] -[group_81995] -[group_81996] -[group_81997] -[group_81998] -[group_81999] -[group_82000] -[group_82001] -[group_82002] -[group_82003] -[group_82004] -[group_82005] -[group_82006] -[group_82007] -[group_82008] -[group_82009] -[group_82010] -[group_82011] -[group_82012] -[group_82013] -[group_82014] -[group_82015] -[group_82016] -[group_82017] -[group_82018] -[group_82019] -[group_82020] -[group_82021] -[group_82022] -[group_82023] -[group_82024] -[group_82025] -[group_82026] -[group_82027] -[group_82028] -[group_82029] -[group_82030] -[group_82031] -[group_82032] -[group_82033] -[group_82034] -[group_82035] -[group_82036] -[group_82037] -[group_82038] -[group_82039] -[group_82040] -[group_82041] -[group_82042] -[group_82043] -[group_82044] -[group_82045] -[group_82046] -[group_82047] -[group_82048] -[group_82049] -[group_82050] -[group_82051] -[group_82052] -[group_82053] -[group_82054] -[group_82055] -[group_82056] -[group_82057] -[group_82058] -[group_82059] -[group_82060] -[group_82061] -[group_82062] -[group_82063] -[group_82064] -[group_82065] -[group_82066] -[group_82067] -[group_82068] -[group_82069] -[group_82070] -[group_82071] -[group_82072] -[group_82073] -[group_82074] -[group_82075] -[group_82076] -[group_82077] -[group_82078] -[group_82079] -[group_82080] -[group_82081] -[group_82082] -[group_82083] -[group_82084] -[group_82085] -[group_82086] -[group_82087] -[group_82088] -[group_82089] -[group_82090] -[group_82091] -[group_82092] -[group_82093] -[group_82094] -[group_82095] -[group_82096] -[group_82097] -[group_82098] -[group_82099] -[group_82100] -[group_82101] -[group_82102] -[group_82103] -[group_82104] -[group_82105] -[group_82106] -[group_82107] -[group_82108] -[group_82109] -[group_82110] -[group_82111] -[group_82112] -[group_82113] -[group_82114] -[group_82115] -[group_82116] -[group_82117] -[group_82118] -[group_82119] -[group_82120] -[group_82121] -[group_82122] -[group_82123] -[group_82124] -[group_82125] -[group_82126] -[group_82127] -[group_82128] -[group_82129] -[group_82130] -[group_82131] -[group_82132] -[group_82133] -[group_82134] -[group_82135] -[group_82136] -[group_82137] -[group_82138] -[group_82139] -[group_82140] -[group_82141] -[group_82142] -[group_82143] -[group_82144] -[group_82145] -[group_82146] -[group_82147] -[group_82148] -[group_82149] -[group_82150] -[group_82151] -[group_82152] -[group_82153] -[group_82154] -[group_82155] -[group_82156] -[group_82157] -[group_82158] -[group_82159] -[group_82160] -[group_82161] -[group_82162] -[group_82163] -[group_82164] -[group_82165] -[group_82166] -[group_82167] -[group_82168] -[group_82169] -[group_82170] -[group_82171] -[group_82172] -[group_82173] -[group_82174] -[group_82175] -[group_82176] -[group_82177] -[group_82178] -[group_82179] -[group_82180] -[group_82181] -[group_82182] -[group_82183] -[group_82184] -[group_82185] -[group_82186] -[group_82187] -[group_82188] -[group_82189] -[group_82190] -[group_82191] -[group_82192] -[group_82193] -[group_82194] -[group_82195] -[group_82196] -[group_82197] -[group_82198] -[group_82199] -[group_82200] -[group_82201] -[group_82202] -[group_82203] -[group_82204] -[group_82205] -[group_82206] -[group_82207] -[group_82208] -[group_82209] -[group_82210] -[group_82211] -[group_82212] -[group_82213] -[group_82214] -[group_82215] -[group_82216] -[group_82217] -[group_82218] -[group_82219] -[group_82220] -[group_82221] -[group_82222] -[group_82223] -[group_82224] -[group_82225] -[group_82226] -[group_82227] -[group_82228] -[group_82229] -[group_82230] -[group_82231] -[group_82232] -[group_82233] -[group_82234] -[group_82235] -[group_82236] -[group_82237] -[group_82238] -[group_82239] -[group_82240] -[group_82241] -[group_82242] -[group_82243] -[group_82244] -[group_82245] -[group_82246] -[group_82247] -[group_82248] -[group_82249] -[group_82250] -[group_82251] -[group_82252] -[group_82253] -[group_82254] -[group_82255] -[group_82256] -[group_82257] -[group_82258] -[group_82259] -[group_82260] -[group_82261] -[group_82262] -[group_82263] -[group_82264] -[group_82265] -[group_82266] -[group_82267] -[group_82268] -[group_82269] -[group_82270] -[group_82271] -[group_82272] -[group_82273] -[group_82274] -[group_82275] -[group_82276] -[group_82277] -[group_82278] -[group_82279] -[group_82280] -[group_82281] -[group_82282] -[group_82283] -[group_82284] -[group_82285] -[group_82286] -[group_82287] -[group_82288] -[group_82289] -[group_82290] -[group_82291] -[group_82292] -[group_82293] -[group_82294] -[group_82295] -[group_82296] -[group_82297] -[group_82298] -[group_82299] -[group_82300] -[group_82301] -[group_82302] -[group_82303] -[group_82304] -[group_82305] -[group_82306] -[group_82307] -[group_82308] -[group_82309] -[group_82310] -[group_82311] -[group_82312] -[group_82313] -[group_82314] -[group_82315] -[group_82316] -[group_82317] -[group_82318] -[group_82319] -[group_82320] -[group_82321] -[group_82322] -[group_82323] -[group_82324] -[group_82325] -[group_82326] -[group_82327] -[group_82328] -[group_82329] -[group_82330] -[group_82331] -[group_82332] -[group_82333] -[group_82334] -[group_82335] -[group_82336] -[group_82337] -[group_82338] -[group_82339] -[group_82340] -[group_82341] -[group_82342] -[group_82343] -[group_82344] -[group_82345] -[group_82346] -[group_82347] -[group_82348] -[group_82349] -[group_82350] -[group_82351] -[group_82352] -[group_82353] -[group_82354] -[group_82355] -[group_82356] -[group_82357] -[group_82358] -[group_82359] -[group_82360] -[group_82361] -[group_82362] -[group_82363] -[group_82364] -[group_82365] -[group_82366] -[group_82367] -[group_82368] -[group_82369] -[group_82370] -[group_82371] -[group_82372] -[group_82373] -[group_82374] -[group_82375] -[group_82376] -[group_82377] -[group_82378] -[group_82379] -[group_82380] -[group_82381] -[group_82382] -[group_82383] -[group_82384] -[group_82385] -[group_82386] -[group_82387] -[group_82388] -[group_82389] -[group_82390] -[group_82391] -[group_82392] -[group_82393] -[group_82394] -[group_82395] -[group_82396] -[group_82397] -[group_82398] -[group_82399] -[group_82400] -[group_82401] -[group_82402] -[group_82403] -[group_82404] -[group_82405] -[group_82406] -[group_82407] -[group_82408] -[group_82409] -[group_82410] -[group_82411] -[group_82412] -[group_82413] -[group_82414] -[group_82415] -[group_82416] -[group_82417] -[group_82418] -[group_82419] -[group_82420] -[group_82421] -[group_82422] -[group_82423] -[group_82424] -[group_82425] -[group_82426] -[group_82427] -[group_82428] -[group_82429] -[group_82430] -[group_82431] -[group_82432] -[group_82433] -[group_82434] -[group_82435] -[group_82436] -[group_82437] -[group_82438] -[group_82439] -[group_82440] -[group_82441] -[group_82442] -[group_82443] -[group_82444] -[group_82445] -[group_82446] -[group_82447] -[group_82448] -[group_82449] -[group_82450] -[group_82451] -[group_82452] -[group_82453] -[group_82454] -[group_82455] -[group_82456] -[group_82457] -[group_82458] -[group_82459] -[group_82460] -[group_82461] -[group_82462] -[group_82463] -[group_82464] -[group_82465] -[group_82466] -[group_82467] -[group_82468] -[group_82469] -[group_82470] -[group_82471] -[group_82472] -[group_82473] -[group_82474] -[group_82475] -[group_82476] -[group_82477] -[group_82478] -[group_82479] -[group_82480] -[group_82481] -[group_82482] -[group_82483] -[group_82484] -[group_82485] -[group_82486] -[group_82487] -[group_82488] -[group_82489] -[group_82490] -[group_82491] -[group_82492] -[group_82493] -[group_82494] -[group_82495] -[group_82496] -[group_82497] -[group_82498] -[group_82499] -[group_82500] -[group_82501] -[group_82502] -[group_82503] -[group_82504] -[group_82505] -[group_82506] -[group_82507] -[group_82508] -[group_82509] -[group_82510] -[group_82511] -[group_82512] -[group_82513] -[group_82514] -[group_82515] -[group_82516] -[group_82517] -[group_82518] -[group_82519] -[group_82520] -[group_82521] -[group_82522] -[group_82523] -[group_82524] -[group_82525] -[group_82526] -[group_82527] -[group_82528] -[group_82529] -[group_82530] -[group_82531] -[group_82532] -[group_82533] -[group_82534] -[group_82535] -[group_82536] -[group_82537] -[group_82538] -[group_82539] -[group_82540] -[group_82541] -[group_82542] -[group_82543] -[group_82544] -[group_82545] -[group_82546] -[group_82547] -[group_82548] -[group_82549] -[group_82550] -[group_82551] -[group_82552] -[group_82553] -[group_82554] -[group_82555] -[group_82556] -[group_82557] -[group_82558] -[group_82559] -[group_82560] -[group_82561] -[group_82562] -[group_82563] -[group_82564] -[group_82565] -[group_82566] -[group_82567] -[group_82568] -[group_82569] -[group_82570] -[group_82571] -[group_82572] -[group_82573] -[group_82574] -[group_82575] -[group_82576] -[group_82577] -[group_82578] -[group_82579] -[group_82580] -[group_82581] -[group_82582] -[group_82583] -[group_82584] -[group_82585] -[group_82586] -[group_82587] -[group_82588] -[group_82589] -[group_82590] -[group_82591] -[group_82592] -[group_82593] -[group_82594] -[group_82595] -[group_82596] -[group_82597] -[group_82598] -[group_82599] -[group_82600] -[group_82601] -[group_82602] -[group_82603] -[group_82604] -[group_82605] -[group_82606] -[group_82607] -[group_82608] -[group_82609] -[group_82610] -[group_82611] -[group_82612] -[group_82613] -[group_82614] -[group_82615] -[group_82616] -[group_82617] -[group_82618] -[group_82619] -[group_82620] -[group_82621] -[group_82622] -[group_82623] -[group_82624] -[group_82625] -[group_82626] -[group_82627] -[group_82628] -[group_82629] -[group_82630] -[group_82631] -[group_82632] -[group_82633] -[group_82634] -[group_82635] -[group_82636] -[group_82637] -[group_82638] -[group_82639] -[group_82640] -[group_82641] -[group_82642] -[group_82643] -[group_82644] -[group_82645] -[group_82646] -[group_82647] -[group_82648] -[group_82649] -[group_82650] -[group_82651] -[group_82652] -[group_82653] -[group_82654] -[group_82655] -[group_82656] -[group_82657] -[group_82658] -[group_82659] -[group_82660] -[group_82661] -[group_82662] -[group_82663] -[group_82664] -[group_82665] -[group_82666] -[group_82667] -[group_82668] -[group_82669] -[group_82670] -[group_82671] -[group_82672] -[group_82673] -[group_82674] -[group_82675] -[group_82676] -[group_82677] -[group_82678] -[group_82679] -[group_82680] -[group_82681] -[group_82682] -[group_82683] -[group_82684] -[group_82685] -[group_82686] -[group_82687] -[group_82688] -[group_82689] -[group_82690] -[group_82691] -[group_82692] -[group_82693] -[group_82694] -[group_82695] -[group_82696] -[group_82697] -[group_82698] -[group_82699] -[group_82700] -[group_82701] -[group_82702] -[group_82703] -[group_82704] -[group_82705] -[group_82706] -[group_82707] -[group_82708] -[group_82709] -[group_82710] -[group_82711] -[group_82712] -[group_82713] -[group_82714] -[group_82715] -[group_82716] -[group_82717] -[group_82718] -[group_82719] -[group_82720] -[group_82721] -[group_82722] -[group_82723] -[group_82724] -[group_82725] -[group_82726] -[group_82727] -[group_82728] -[group_82729] -[group_82730] -[group_82731] -[group_82732] -[group_82733] -[group_82734] -[group_82735] -[group_82736] -[group_82737] -[group_82738] -[group_82739] -[group_82740] -[group_82741] -[group_82742] -[group_82743] -[group_82744] -[group_82745] -[group_82746] -[group_82747] -[group_82748] -[group_82749] -[group_82750] -[group_82751] -[group_82752] -[group_82753] -[group_82754] -[group_82755] -[group_82756] -[group_82757] -[group_82758] -[group_82759] -[group_82760] -[group_82761] -[group_82762] -[group_82763] -[group_82764] -[group_82765] -[group_82766] -[group_82767] -[group_82768] -[group_82769] -[group_82770] -[group_82771] -[group_82772] -[group_82773] -[group_82774] -[group_82775] -[group_82776] -[group_82777] -[group_82778] -[group_82779] -[group_82780] -[group_82781] -[group_82782] -[group_82783] -[group_82784] -[group_82785] -[group_82786] -[group_82787] -[group_82788] -[group_82789] -[group_82790] -[group_82791] -[group_82792] -[group_82793] -[group_82794] -[group_82795] -[group_82796] -[group_82797] -[group_82798] -[group_82799] -[group_82800] -[group_82801] -[group_82802] -[group_82803] -[group_82804] -[group_82805] -[group_82806] -[group_82807] -[group_82808] -[group_82809] -[group_82810] -[group_82811] -[group_82812] -[group_82813] -[group_82814] -[group_82815] -[group_82816] -[group_82817] -[group_82818] -[group_82819] -[group_82820] -[group_82821] -[group_82822] -[group_82823] -[group_82824] -[group_82825] -[group_82826] -[group_82827] -[group_82828] -[group_82829] -[group_82830] -[group_82831] -[group_82832] -[group_82833] -[group_82834] -[group_82835] -[group_82836] -[group_82837] -[group_82838] -[group_82839] -[group_82840] -[group_82841] -[group_82842] -[group_82843] -[group_82844] -[group_82845] -[group_82846] -[group_82847] -[group_82848] -[group_82849] -[group_82850] -[group_82851] -[group_82852] -[group_82853] -[group_82854] -[group_82855] -[group_82856] -[group_82857] -[group_82858] -[group_82859] -[group_82860] -[group_82861] -[group_82862] -[group_82863] -[group_82864] -[group_82865] -[group_82866] -[group_82867] -[group_82868] -[group_82869] -[group_82870] -[group_82871] -[group_82872] -[group_82873] -[group_82874] -[group_82875] -[group_82876] -[group_82877] -[group_82878] -[group_82879] -[group_82880] -[group_82881] -[group_82882] -[group_82883] -[group_82884] -[group_82885] -[group_82886] -[group_82887] -[group_82888] -[group_82889] -[group_82890] -[group_82891] -[group_82892] -[group_82893] -[group_82894] -[group_82895] -[group_82896] -[group_82897] -[group_82898] -[group_82899] -[group_82900] -[group_82901] -[group_82902] -[group_82903] -[group_82904] -[group_82905] -[group_82906] -[group_82907] -[group_82908] -[group_82909] -[group_82910] -[group_82911] -[group_82912] -[group_82913] -[group_82914] -[group_82915] -[group_82916] -[group_82917] -[group_82918] -[group_82919] -[group_82920] -[group_82921] -[group_82922] -[group_82923] -[group_82924] -[group_82925] -[group_82926] -[group_82927] -[group_82928] -[group_82929] -[group_82930] -[group_82931] -[group_82932] -[group_82933] -[group_82934] -[group_82935] -[group_82936] -[group_82937] -[group_82938] -[group_82939] -[group_82940] -[group_82941] -[group_82942] -[group_82943] -[group_82944] -[group_82945] -[group_82946] -[group_82947] -[group_82948] -[group_82949] -[group_82950] -[group_82951] -[group_82952] -[group_82953] -[group_82954] -[group_82955] -[group_82956] -[group_82957] -[group_82958] -[group_82959] -[group_82960] -[group_82961] -[group_82962] -[group_82963] -[group_82964] -[group_82965] -[group_82966] -[group_82967] -[group_82968] -[group_82969] -[group_82970] -[group_82971] -[group_82972] -[group_82973] -[group_82974] -[group_82975] -[group_82976] -[group_82977] -[group_82978] -[group_82979] -[group_82980] -[group_82981] -[group_82982] -[group_82983] -[group_82984] -[group_82985] -[group_82986] -[group_82987] -[group_82988] -[group_82989] -[group_82990] -[group_82991] -[group_82992] -[group_82993] -[group_82994] -[group_82995] -[group_82996] -[group_82997] -[group_82998] -[group_82999] -[group_83000] -[group_83001] -[group_83002] -[group_83003] -[group_83004] -[group_83005] -[group_83006] -[group_83007] -[group_83008] -[group_83009] -[group_83010] -[group_83011] -[group_83012] -[group_83013] -[group_83014] -[group_83015] -[group_83016] -[group_83017] -[group_83018] -[group_83019] -[group_83020] -[group_83021] -[group_83022] -[group_83023] -[group_83024] -[group_83025] -[group_83026] -[group_83027] -[group_83028] -[group_83029] -[group_83030] -[group_83031] -[group_83032] -[group_83033] -[group_83034] -[group_83035] -[group_83036] -[group_83037] -[group_83038] -[group_83039] -[group_83040] -[group_83041] -[group_83042] -[group_83043] -[group_83044] -[group_83045] -[group_83046] -[group_83047] -[group_83048] -[group_83049] -[group_83050] -[group_83051] -[group_83052] -[group_83053] -[group_83054] -[group_83055] -[group_83056] -[group_83057] -[group_83058] -[group_83059] -[group_83060] -[group_83061] -[group_83062] -[group_83063] -[group_83064] -[group_83065] -[group_83066] -[group_83067] -[group_83068] -[group_83069] -[group_83070] -[group_83071] -[group_83072] -[group_83073] -[group_83074] -[group_83075] -[group_83076] -[group_83077] -[group_83078] -[group_83079] -[group_83080] -[group_83081] -[group_83082] -[group_83083] -[group_83084] -[group_83085] -[group_83086] -[group_83087] -[group_83088] -[group_83089] -[group_83090] -[group_83091] -[group_83092] -[group_83093] -[group_83094] -[group_83095] -[group_83096] -[group_83097] -[group_83098] -[group_83099] -[group_83100] -[group_83101] -[group_83102] -[group_83103] -[group_83104] -[group_83105] -[group_83106] -[group_83107] -[group_83108] -[group_83109] -[group_83110] -[group_83111] -[group_83112] -[group_83113] -[group_83114] -[group_83115] -[group_83116] -[group_83117] -[group_83118] -[group_83119] -[group_83120] -[group_83121] -[group_83122] -[group_83123] -[group_83124] -[group_83125] -[group_83126] -[group_83127] -[group_83128] -[group_83129] -[group_83130] -[group_83131] -[group_83132] -[group_83133] -[group_83134] -[group_83135] -[group_83136] -[group_83137] -[group_83138] -[group_83139] -[group_83140] -[group_83141] -[group_83142] -[group_83143] -[group_83144] -[group_83145] -[group_83146] -[group_83147] -[group_83148] -[group_83149] -[group_83150] -[group_83151] -[group_83152] -[group_83153] -[group_83154] -[group_83155] -[group_83156] -[group_83157] -[group_83158] -[group_83159] -[group_83160] -[group_83161] -[group_83162] -[group_83163] -[group_83164] -[group_83165] -[group_83166] -[group_83167] -[group_83168] -[group_83169] -[group_83170] -[group_83171] -[group_83172] -[group_83173] -[group_83174] -[group_83175] -[group_83176] -[group_83177] -[group_83178] -[group_83179] -[group_83180] -[group_83181] -[group_83182] -[group_83183] -[group_83184] -[group_83185] -[group_83186] -[group_83187] -[group_83188] -[group_83189] -[group_83190] -[group_83191] -[group_83192] -[group_83193] -[group_83194] -[group_83195] -[group_83196] -[group_83197] -[group_83198] -[group_83199] -[group_83200] -[group_83201] -[group_83202] -[group_83203] -[group_83204] -[group_83205] -[group_83206] -[group_83207] -[group_83208] -[group_83209] -[group_83210] -[group_83211] -[group_83212] -[group_83213] -[group_83214] -[group_83215] -[group_83216] -[group_83217] -[group_83218] -[group_83219] -[group_83220] -[group_83221] -[group_83222] -[group_83223] -[group_83224] -[group_83225] -[group_83226] -[group_83227] -[group_83228] -[group_83229] -[group_83230] -[group_83231] -[group_83232] -[group_83233] -[group_83234] -[group_83235] -[group_83236] -[group_83237] -[group_83238] -[group_83239] -[group_83240] -[group_83241] -[group_83242] -[group_83243] -[group_83244] -[group_83245] -[group_83246] -[group_83247] -[group_83248] -[group_83249] -[group_83250] -[group_83251] -[group_83252] -[group_83253] -[group_83254] -[group_83255] -[group_83256] -[group_83257] -[group_83258] -[group_83259] -[group_83260] -[group_83261] -[group_83262] -[group_83263] -[group_83264] -[group_83265] -[group_83266] -[group_83267] -[group_83268] -[group_83269] -[group_83270] -[group_83271] -[group_83272] -[group_83273] -[group_83274] -[group_83275] -[group_83276] -[group_83277] -[group_83278] -[group_83279] -[group_83280] -[group_83281] -[group_83282] -[group_83283] -[group_83284] -[group_83285] -[group_83286] -[group_83287] -[group_83288] -[group_83289] -[group_83290] -[group_83291] -[group_83292] -[group_83293] -[group_83294] -[group_83295] -[group_83296] -[group_83297] -[group_83298] -[group_83299] -[group_83300] -[group_83301] -[group_83302] -[group_83303] -[group_83304] -[group_83305] -[group_83306] -[group_83307] -[group_83308] -[group_83309] -[group_83310] -[group_83311] -[group_83312] -[group_83313] -[group_83314] -[group_83315] -[group_83316] -[group_83317] -[group_83318] -[group_83319] -[group_83320] -[group_83321] -[group_83322] -[group_83323] -[group_83324] -[group_83325] -[group_83326] -[group_83327] -[group_83328] -[group_83329] -[group_83330] -[group_83331] -[group_83332] -[group_83333] -[group_83334] -[group_83335] -[group_83336] -[group_83337] -[group_83338] -[group_83339] -[group_83340] -[group_83341] -[group_83342] -[group_83343] -[group_83344] -[group_83345] -[group_83346] -[group_83347] -[group_83348] -[group_83349] -[group_83350] -[group_83351] -[group_83352] -[group_83353] -[group_83354] -[group_83355] -[group_83356] -[group_83357] -[group_83358] -[group_83359] -[group_83360] -[group_83361] -[group_83362] -[group_83363] -[group_83364] -[group_83365] -[group_83366] -[group_83367] -[group_83368] -[group_83369] -[group_83370] -[group_83371] -[group_83372] -[group_83373] -[group_83374] -[group_83375] -[group_83376] -[group_83377] -[group_83378] -[group_83379] -[group_83380] -[group_83381] -[group_83382] -[group_83383] -[group_83384] -[group_83385] -[group_83386] -[group_83387] -[group_83388] -[group_83389] -[group_83390] -[group_83391] -[group_83392] -[group_83393] -[group_83394] -[group_83395] -[group_83396] -[group_83397] -[group_83398] -[group_83399] -[group_83400] -[group_83401] -[group_83402] -[group_83403] -[group_83404] -[group_83405] -[group_83406] -[group_83407] -[group_83408] -[group_83409] -[group_83410] -[group_83411] -[group_83412] -[group_83413] -[group_83414] -[group_83415] -[group_83416] -[group_83417] -[group_83418] -[group_83419] -[group_83420] -[group_83421] -[group_83422] -[group_83423] -[group_83424] -[group_83425] -[group_83426] -[group_83427] -[group_83428] -[group_83429] -[group_83430] -[group_83431] -[group_83432] -[group_83433] -[group_83434] -[group_83435] -[group_83436] -[group_83437] -[group_83438] -[group_83439] -[group_83440] -[group_83441] -[group_83442] -[group_83443] -[group_83444] -[group_83445] -[group_83446] -[group_83447] -[group_83448] -[group_83449] -[group_83450] -[group_83451] -[group_83452] -[group_83453] -[group_83454] -[group_83455] -[group_83456] -[group_83457] -[group_83458] -[group_83459] -[group_83460] -[group_83461] -[group_83462] -[group_83463] -[group_83464] -[group_83465] -[group_83466] -[group_83467] -[group_83468] -[group_83469] -[group_83470] -[group_83471] -[group_83472] -[group_83473] -[group_83474] -[group_83475] -[group_83476] -[group_83477] -[group_83478] -[group_83479] -[group_83480] -[group_83481] -[group_83482] -[group_83483] -[group_83484] -[group_83485] -[group_83486] -[group_83487] -[group_83488] -[group_83489] -[group_83490] -[group_83491] -[group_83492] -[group_83493] -[group_83494] -[group_83495] -[group_83496] -[group_83497] -[group_83498] -[group_83499] -[group_83500] -[group_83501] -[group_83502] -[group_83503] -[group_83504] -[group_83505] -[group_83506] -[group_83507] -[group_83508] -[group_83509] -[group_83510] -[group_83511] -[group_83512] -[group_83513] -[group_83514] -[group_83515] -[group_83516] -[group_83517] -[group_83518] -[group_83519] -[group_83520] -[group_83521] -[group_83522] -[group_83523] -[group_83524] -[group_83525] -[group_83526] -[group_83527] -[group_83528] -[group_83529] -[group_83530] -[group_83531] -[group_83532] -[group_83533] -[group_83534] -[group_83535] -[group_83536] -[group_83537] -[group_83538] -[group_83539] -[group_83540] -[group_83541] -[group_83542] -[group_83543] -[group_83544] -[group_83545] -[group_83546] -[group_83547] -[group_83548] -[group_83549] -[group_83550] -[group_83551] -[group_83552] -[group_83553] -[group_83554] -[group_83555] -[group_83556] -[group_83557] -[group_83558] -[group_83559] -[group_83560] -[group_83561] -[group_83562] -[group_83563] -[group_83564] -[group_83565] -[group_83566] -[group_83567] -[group_83568] -[group_83569] -[group_83570] -[group_83571] -[group_83572] -[group_83573] -[group_83574] -[group_83575] -[group_83576] -[group_83577] -[group_83578] -[group_83579] -[group_83580] -[group_83581] -[group_83582] -[group_83583] -[group_83584] -[group_83585] -[group_83586] -[group_83587] -[group_83588] -[group_83589] -[group_83590] -[group_83591] -[group_83592] -[group_83593] -[group_83594] -[group_83595] -[group_83596] -[group_83597] -[group_83598] -[group_83599] -[group_83600] -[group_83601] -[group_83602] -[group_83603] -[group_83604] -[group_83605] -[group_83606] -[group_83607] -[group_83608] -[group_83609] -[group_83610] -[group_83611] -[group_83612] -[group_83613] -[group_83614] -[group_83615] -[group_83616] -[group_83617] -[group_83618] -[group_83619] -[group_83620] -[group_83621] -[group_83622] -[group_83623] -[group_83624] -[group_83625] -[group_83626] -[group_83627] -[group_83628] -[group_83629] -[group_83630] -[group_83631] -[group_83632] -[group_83633] -[group_83634] -[group_83635] -[group_83636] -[group_83637] -[group_83638] -[group_83639] -[group_83640] -[group_83641] -[group_83642] -[group_83643] -[group_83644] -[group_83645] -[group_83646] -[group_83647] -[group_83648] -[group_83649] -[group_83650] -[group_83651] -[group_83652] -[group_83653] -[group_83654] -[group_83655] -[group_83656] -[group_83657] -[group_83658] -[group_83659] -[group_83660] -[group_83661] -[group_83662] -[group_83663] -[group_83664] -[group_83665] -[group_83666] -[group_83667] -[group_83668] -[group_83669] -[group_83670] -[group_83671] -[group_83672] -[group_83673] -[group_83674] -[group_83675] -[group_83676] -[group_83677] -[group_83678] -[group_83679] -[group_83680] -[group_83681] -[group_83682] -[group_83683] -[group_83684] -[group_83685] -[group_83686] -[group_83687] -[group_83688] -[group_83689] -[group_83690] -[group_83691] -[group_83692] -[group_83693] -[group_83694] -[group_83695] -[group_83696] -[group_83697] -[group_83698] -[group_83699] -[group_83700] -[group_83701] -[group_83702] -[group_83703] -[group_83704] -[group_83705] -[group_83706] -[group_83707] -[group_83708] -[group_83709] -[group_83710] -[group_83711] -[group_83712] -[group_83713] -[group_83714] -[group_83715] -[group_83716] -[group_83717] -[group_83718] -[group_83719] -[group_83720] -[group_83721] -[group_83722] -[group_83723] -[group_83724] -[group_83725] -[group_83726] -[group_83727] -[group_83728] -[group_83729] -[group_83730] -[group_83731] -[group_83732] -[group_83733] -[group_83734] -[group_83735] -[group_83736] -[group_83737] -[group_83738] -[group_83739] -[group_83740] -[group_83741] -[group_83742] -[group_83743] -[group_83744] -[group_83745] -[group_83746] -[group_83747] -[group_83748] -[group_83749] -[group_83750] -[group_83751] -[group_83752] -[group_83753] -[group_83754] -[group_83755] -[group_83756] -[group_83757] -[group_83758] -[group_83759] -[group_83760] -[group_83761] -[group_83762] -[group_83763] -[group_83764] -[group_83765] -[group_83766] -[group_83767] -[group_83768] -[group_83769] -[group_83770] -[group_83771] -[group_83772] -[group_83773] -[group_83774] -[group_83775] -[group_83776] -[group_83777] -[group_83778] -[group_83779] -[group_83780] -[group_83781] -[group_83782] -[group_83783] -[group_83784] -[group_83785] -[group_83786] -[group_83787] -[group_83788] -[group_83789] -[group_83790] -[group_83791] -[group_83792] -[group_83793] -[group_83794] -[group_83795] -[group_83796] -[group_83797] -[group_83798] -[group_83799] -[group_83800] -[group_83801] -[group_83802] -[group_83803] -[group_83804] -[group_83805] -[group_83806] -[group_83807] -[group_83808] -[group_83809] -[group_83810] -[group_83811] -[group_83812] -[group_83813] -[group_83814] -[group_83815] -[group_83816] -[group_83817] -[group_83818] -[group_83819] -[group_83820] -[group_83821] -[group_83822] -[group_83823] -[group_83824] -[group_83825] -[group_83826] -[group_83827] -[group_83828] -[group_83829] -[group_83830] -[group_83831] -[group_83832] -[group_83833] -[group_83834] -[group_83835] -[group_83836] -[group_83837] -[group_83838] -[group_83839] -[group_83840] -[group_83841] -[group_83842] -[group_83843] -[group_83844] -[group_83845] -[group_83846] -[group_83847] -[group_83848] -[group_83849] -[group_83850] -[group_83851] -[group_83852] -[group_83853] -[group_83854] -[group_83855] -[group_83856] -[group_83857] -[group_83858] -[group_83859] -[group_83860] -[group_83861] -[group_83862] -[group_83863] -[group_83864] -[group_83865] -[group_83866] -[group_83867] -[group_83868] -[group_83869] -[group_83870] -[group_83871] -[group_83872] -[group_83873] -[group_83874] -[group_83875] -[group_83876] -[group_83877] -[group_83878] -[group_83879] -[group_83880] -[group_83881] -[group_83882] -[group_83883] -[group_83884] -[group_83885] -[group_83886] -[group_83887] -[group_83888] -[group_83889] -[group_83890] -[group_83891] -[group_83892] -[group_83893] -[group_83894] -[group_83895] -[group_83896] -[group_83897] -[group_83898] -[group_83899] -[group_83900] -[group_83901] -[group_83902] -[group_83903] -[group_83904] -[group_83905] -[group_83906] -[group_83907] -[group_83908] -[group_83909] -[group_83910] -[group_83911] -[group_83912] -[group_83913] -[group_83914] -[group_83915] -[group_83916] -[group_83917] -[group_83918] -[group_83919] -[group_83920] -[group_83921] -[group_83922] -[group_83923] -[group_83924] -[group_83925] -[group_83926] -[group_83927] -[group_83928] -[group_83929] -[group_83930] -[group_83931] -[group_83932] -[group_83933] -[group_83934] -[group_83935] -[group_83936] -[group_83937] -[group_83938] -[group_83939] -[group_83940] -[group_83941] -[group_83942] -[group_83943] -[group_83944] -[group_83945] -[group_83946] -[group_83947] -[group_83948] -[group_83949] -[group_83950] -[group_83951] -[group_83952] -[group_83953] -[group_83954] -[group_83955] -[group_83956] -[group_83957] -[group_83958] -[group_83959] -[group_83960] -[group_83961] -[group_83962] -[group_83963] -[group_83964] -[group_83965] -[group_83966] -[group_83967] -[group_83968] -[group_83969] -[group_83970] -[group_83971] -[group_83972] -[group_83973] -[group_83974] -[group_83975] -[group_83976] -[group_83977] -[group_83978] -[group_83979] -[group_83980] -[group_83981] -[group_83982] -[group_83983] -[group_83984] -[group_83985] -[group_83986] -[group_83987] -[group_83988] -[group_83989] -[group_83990] -[group_83991] -[group_83992] -[group_83993] -[group_83994] -[group_83995] -[group_83996] -[group_83997] -[group_83998] -[group_83999] -[group_84000] -[group_84001] -[group_84002] -[group_84003] -[group_84004] -[group_84005] -[group_84006] -[group_84007] -[group_84008] -[group_84009] -[group_84010] -[group_84011] -[group_84012] -[group_84013] -[group_84014] -[group_84015] -[group_84016] -[group_84017] -[group_84018] -[group_84019] -[group_84020] -[group_84021] -[group_84022] -[group_84023] -[group_84024] -[group_84025] -[group_84026] -[group_84027] -[group_84028] -[group_84029] -[group_84030] -[group_84031] -[group_84032] -[group_84033] -[group_84034] -[group_84035] -[group_84036] -[group_84037] -[group_84038] -[group_84039] -[group_84040] -[group_84041] -[group_84042] -[group_84043] -[group_84044] -[group_84045] -[group_84046] -[group_84047] -[group_84048] -[group_84049] -[group_84050] -[group_84051] -[group_84052] -[group_84053] -[group_84054] -[group_84055] -[group_84056] -[group_84057] -[group_84058] -[group_84059] -[group_84060] -[group_84061] -[group_84062] -[group_84063] -[group_84064] -[group_84065] -[group_84066] -[group_84067] -[group_84068] -[group_84069] -[group_84070] -[group_84071] -[group_84072] -[group_84073] -[group_84074] -[group_84075] -[group_84076] -[group_84077] -[group_84078] -[group_84079] -[group_84080] -[group_84081] -[group_84082] -[group_84083] -[group_84084] -[group_84085] -[group_84086] -[group_84087] -[group_84088] -[group_84089] -[group_84090] -[group_84091] -[group_84092] -[group_84093] -[group_84094] -[group_84095] -[group_84096] -[group_84097] -[group_84098] -[group_84099] -[group_84100] -[group_84101] -[group_84102] -[group_84103] -[group_84104] -[group_84105] -[group_84106] -[group_84107] -[group_84108] -[group_84109] -[group_84110] -[group_84111] -[group_84112] -[group_84113] -[group_84114] -[group_84115] -[group_84116] -[group_84117] -[group_84118] -[group_84119] -[group_84120] -[group_84121] -[group_84122] -[group_84123] -[group_84124] -[group_84125] -[group_84126] -[group_84127] -[group_84128] -[group_84129] -[group_84130] -[group_84131] -[group_84132] -[group_84133] -[group_84134] -[group_84135] -[group_84136] -[group_84137] -[group_84138] -[group_84139] -[group_84140] -[group_84141] -[group_84142] -[group_84143] -[group_84144] -[group_84145] -[group_84146] -[group_84147] -[group_84148] -[group_84149] -[group_84150] -[group_84151] -[group_84152] -[group_84153] -[group_84154] -[group_84155] -[group_84156] -[group_84157] -[group_84158] -[group_84159] -[group_84160] -[group_84161] -[group_84162] -[group_84163] -[group_84164] -[group_84165] -[group_84166] -[group_84167] -[group_84168] -[group_84169] -[group_84170] -[group_84171] -[group_84172] -[group_84173] -[group_84174] -[group_84175] -[group_84176] -[group_84177] -[group_84178] -[group_84179] -[group_84180] -[group_84181] -[group_84182] -[group_84183] -[group_84184] -[group_84185] -[group_84186] -[group_84187] -[group_84188] -[group_84189] -[group_84190] -[group_84191] -[group_84192] -[group_84193] -[group_84194] -[group_84195] -[group_84196] -[group_84197] -[group_84198] -[group_84199] -[group_84200] -[group_84201] -[group_84202] -[group_84203] -[group_84204] -[group_84205] -[group_84206] -[group_84207] -[group_84208] -[group_84209] -[group_84210] -[group_84211] -[group_84212] -[group_84213] -[group_84214] -[group_84215] -[group_84216] -[group_84217] -[group_84218] -[group_84219] -[group_84220] -[group_84221] -[group_84222] -[group_84223] -[group_84224] -[group_84225] -[group_84226] -[group_84227] -[group_84228] -[group_84229] -[group_84230] -[group_84231] -[group_84232] -[group_84233] -[group_84234] -[group_84235] -[group_84236] -[group_84237] -[group_84238] -[group_84239] -[group_84240] -[group_84241] -[group_84242] -[group_84243] -[group_84244] -[group_84245] -[group_84246] -[group_84247] -[group_84248] -[group_84249] -[group_84250] -[group_84251] -[group_84252] -[group_84253] -[group_84254] -[group_84255] -[group_84256] -[group_84257] -[group_84258] -[group_84259] -[group_84260] -[group_84261] -[group_84262] -[group_84263] -[group_84264] -[group_84265] -[group_84266] -[group_84267] -[group_84268] -[group_84269] -[group_84270] -[group_84271] -[group_84272] -[group_84273] -[group_84274] -[group_84275] -[group_84276] -[group_84277] -[group_84278] -[group_84279] -[group_84280] -[group_84281] -[group_84282] -[group_84283] -[group_84284] -[group_84285] -[group_84286] -[group_84287] -[group_84288] -[group_84289] -[group_84290] -[group_84291] -[group_84292] -[group_84293] -[group_84294] -[group_84295] -[group_84296] -[group_84297] -[group_84298] -[group_84299] -[group_84300] -[group_84301] -[group_84302] -[group_84303] -[group_84304] -[group_84305] -[group_84306] -[group_84307] -[group_84308] -[group_84309] -[group_84310] -[group_84311] -[group_84312] -[group_84313] -[group_84314] -[group_84315] -[group_84316] -[group_84317] -[group_84318] -[group_84319] -[group_84320] -[group_84321] -[group_84322] -[group_84323] -[group_84324] -[group_84325] -[group_84326] -[group_84327] -[group_84328] -[group_84329] -[group_84330] -[group_84331] -[group_84332] -[group_84333] -[group_84334] -[group_84335] -[group_84336] -[group_84337] -[group_84338] -[group_84339] -[group_84340] -[group_84341] -[group_84342] -[group_84343] -[group_84344] -[group_84345] -[group_84346] -[group_84347] -[group_84348] -[group_84349] -[group_84350] -[group_84351] -[group_84352] -[group_84353] -[group_84354] -[group_84355] -[group_84356] -[group_84357] -[group_84358] -[group_84359] -[group_84360] -[group_84361] -[group_84362] -[group_84363] -[group_84364] -[group_84365] -[group_84366] -[group_84367] -[group_84368] -[group_84369] -[group_84370] -[group_84371] -[group_84372] -[group_84373] -[group_84374] -[group_84375] -[group_84376] -[group_84377] -[group_84378] -[group_84379] -[group_84380] -[group_84381] -[group_84382] -[group_84383] -[group_84384] -[group_84385] -[group_84386] -[group_84387] -[group_84388] -[group_84389] -[group_84390] -[group_84391] -[group_84392] -[group_84393] -[group_84394] -[group_84395] -[group_84396] -[group_84397] -[group_84398] -[group_84399] -[group_84400] -[group_84401] -[group_84402] -[group_84403] -[group_84404] -[group_84405] -[group_84406] -[group_84407] -[group_84408] -[group_84409] -[group_84410] -[group_84411] -[group_84412] -[group_84413] -[group_84414] -[group_84415] -[group_84416] -[group_84417] -[group_84418] -[group_84419] -[group_84420] -[group_84421] -[group_84422] -[group_84423] -[group_84424] -[group_84425] -[group_84426] -[group_84427] -[group_84428] -[group_84429] -[group_84430] -[group_84431] -[group_84432] -[group_84433] -[group_84434] -[group_84435] -[group_84436] -[group_84437] -[group_84438] -[group_84439] -[group_84440] -[group_84441] -[group_84442] -[group_84443] -[group_84444] -[group_84445] -[group_84446] -[group_84447] -[group_84448] -[group_84449] -[group_84450] -[group_84451] -[group_84452] -[group_84453] -[group_84454] -[group_84455] -[group_84456] -[group_84457] -[group_84458] -[group_84459] -[group_84460] -[group_84461] -[group_84462] -[group_84463] -[group_84464] -[group_84465] -[group_84466] -[group_84467] -[group_84468] -[group_84469] -[group_84470] -[group_84471] -[group_84472] -[group_84473] -[group_84474] -[group_84475] -[group_84476] -[group_84477] -[group_84478] -[group_84479] -[group_84480] -[group_84481] -[group_84482] -[group_84483] -[group_84484] -[group_84485] -[group_84486] -[group_84487] -[group_84488] -[group_84489] -[group_84490] -[group_84491] -[group_84492] -[group_84493] -[group_84494] -[group_84495] -[group_84496] -[group_84497] -[group_84498] -[group_84499] -[group_84500] -[group_84501] -[group_84502] -[group_84503] -[group_84504] -[group_84505] -[group_84506] -[group_84507] -[group_84508] -[group_84509] -[group_84510] -[group_84511] -[group_84512] -[group_84513] -[group_84514] -[group_84515] -[group_84516] -[group_84517] -[group_84518] -[group_84519] -[group_84520] -[group_84521] -[group_84522] -[group_84523] -[group_84524] -[group_84525] -[group_84526] -[group_84527] -[group_84528] -[group_84529] -[group_84530] -[group_84531] -[group_84532] -[group_84533] -[group_84534] -[group_84535] -[group_84536] -[group_84537] -[group_84538] -[group_84539] -[group_84540] -[group_84541] -[group_84542] -[group_84543] -[group_84544] -[group_84545] -[group_84546] -[group_84547] -[group_84548] -[group_84549] -[group_84550] -[group_84551] -[group_84552] -[group_84553] -[group_84554] -[group_84555] -[group_84556] -[group_84557] -[group_84558] -[group_84559] -[group_84560] -[group_84561] -[group_84562] -[group_84563] -[group_84564] -[group_84565] -[group_84566] -[group_84567] -[group_84568] -[group_84569] -[group_84570] -[group_84571] -[group_84572] -[group_84573] -[group_84574] -[group_84575] -[group_84576] -[group_84577] -[group_84578] -[group_84579] -[group_84580] -[group_84581] -[group_84582] -[group_84583] -[group_84584] -[group_84585] -[group_84586] -[group_84587] -[group_84588] -[group_84589] -[group_84590] -[group_84591] -[group_84592] -[group_84593] -[group_84594] -[group_84595] -[group_84596] -[group_84597] -[group_84598] -[group_84599] -[group_84600] -[group_84601] -[group_84602] -[group_84603] -[group_84604] -[group_84605] -[group_84606] -[group_84607] -[group_84608] -[group_84609] -[group_84610] -[group_84611] -[group_84612] -[group_84613] -[group_84614] -[group_84615] -[group_84616] -[group_84617] -[group_84618] -[group_84619] -[group_84620] -[group_84621] -[group_84622] -[group_84623] -[group_84624] -[group_84625] -[group_84626] -[group_84627] -[group_84628] -[group_84629] -[group_84630] -[group_84631] -[group_84632] -[group_84633] -[group_84634] -[group_84635] -[group_84636] -[group_84637] -[group_84638] -[group_84639] -[group_84640] -[group_84641] -[group_84642] -[group_84643] -[group_84644] -[group_84645] -[group_84646] -[group_84647] -[group_84648] -[group_84649] -[group_84650] -[group_84651] -[group_84652] -[group_84653] -[group_84654] -[group_84655] -[group_84656] -[group_84657] -[group_84658] -[group_84659] -[group_84660] -[group_84661] -[group_84662] -[group_84663] -[group_84664] -[group_84665] -[group_84666] -[group_84667] -[group_84668] -[group_84669] -[group_84670] -[group_84671] -[group_84672] -[group_84673] -[group_84674] -[group_84675] -[group_84676] -[group_84677] -[group_84678] -[group_84679] -[group_84680] -[group_84681] -[group_84682] -[group_84683] -[group_84684] -[group_84685] -[group_84686] -[group_84687] -[group_84688] -[group_84689] -[group_84690] -[group_84691] -[group_84692] -[group_84693] -[group_84694] -[group_84695] -[group_84696] -[group_84697] -[group_84698] -[group_84699] -[group_84700] -[group_84701] -[group_84702] -[group_84703] -[group_84704] -[group_84705] -[group_84706] -[group_84707] -[group_84708] -[group_84709] -[group_84710] -[group_84711] -[group_84712] -[group_84713] -[group_84714] -[group_84715] -[group_84716] -[group_84717] -[group_84718] -[group_84719] -[group_84720] -[group_84721] -[group_84722] -[group_84723] -[group_84724] -[group_84725] -[group_84726] -[group_84727] -[group_84728] -[group_84729] -[group_84730] -[group_84731] -[group_84732] -[group_84733] -[group_84734] -[group_84735] -[group_84736] -[group_84737] -[group_84738] -[group_84739] -[group_84740] -[group_84741] -[group_84742] -[group_84743] -[group_84744] -[group_84745] -[group_84746] -[group_84747] -[group_84748] -[group_84749] -[group_84750] -[group_84751] -[group_84752] -[group_84753] -[group_84754] -[group_84755] -[group_84756] -[group_84757] -[group_84758] -[group_84759] -[group_84760] -[group_84761] -[group_84762] -[group_84763] -[group_84764] -[group_84765] -[group_84766] -[group_84767] -[group_84768] -[group_84769] -[group_84770] -[group_84771] -[group_84772] -[group_84773] -[group_84774] -[group_84775] -[group_84776] -[group_84777] -[group_84778] -[group_84779] -[group_84780] -[group_84781] -[group_84782] -[group_84783] -[group_84784] -[group_84785] -[group_84786] -[group_84787] -[group_84788] -[group_84789] -[group_84790] -[group_84791] -[group_84792] -[group_84793] -[group_84794] -[group_84795] -[group_84796] -[group_84797] -[group_84798] -[group_84799] -[group_84800] -[group_84801] -[group_84802] -[group_84803] -[group_84804] -[group_84805] -[group_84806] -[group_84807] -[group_84808] -[group_84809] -[group_84810] -[group_84811] -[group_84812] -[group_84813] -[group_84814] -[group_84815] -[group_84816] -[group_84817] -[group_84818] -[group_84819] -[group_84820] -[group_84821] -[group_84822] -[group_84823] -[group_84824] -[group_84825] -[group_84826] -[group_84827] -[group_84828] -[group_84829] -[group_84830] -[group_84831] -[group_84832] -[group_84833] -[group_84834] -[group_84835] -[group_84836] -[group_84837] -[group_84838] -[group_84839] -[group_84840] -[group_84841] -[group_84842] -[group_84843] -[group_84844] -[group_84845] -[group_84846] -[group_84847] -[group_84848] -[group_84849] -[group_84850] -[group_84851] -[group_84852] -[group_84853] -[group_84854] -[group_84855] -[group_84856] -[group_84857] -[group_84858] -[group_84859] -[group_84860] -[group_84861] -[group_84862] -[group_84863] -[group_84864] -[group_84865] -[group_84866] -[group_84867] -[group_84868] -[group_84869] -[group_84870] -[group_84871] -[group_84872] -[group_84873] -[group_84874] -[group_84875] -[group_84876] -[group_84877] -[group_84878] -[group_84879] -[group_84880] -[group_84881] -[group_84882] -[group_84883] -[group_84884] -[group_84885] -[group_84886] -[group_84887] -[group_84888] -[group_84889] -[group_84890] -[group_84891] -[group_84892] -[group_84893] -[group_84894] -[group_84895] -[group_84896] -[group_84897] -[group_84898] -[group_84899] -[group_84900] -[group_84901] -[group_84902] -[group_84903] -[group_84904] -[group_84905] -[group_84906] -[group_84907] -[group_84908] -[group_84909] -[group_84910] -[group_84911] -[group_84912] -[group_84913] -[group_84914] -[group_84915] -[group_84916] -[group_84917] -[group_84918] -[group_84919] -[group_84920] -[group_84921] -[group_84922] -[group_84923] -[group_84924] -[group_84925] -[group_84926] -[group_84927] -[group_84928] -[group_84929] -[group_84930] -[group_84931] -[group_84932] -[group_84933] -[group_84934] -[group_84935] -[group_84936] -[group_84937] -[group_84938] -[group_84939] -[group_84940] -[group_84941] -[group_84942] -[group_84943] -[group_84944] -[group_84945] -[group_84946] -[group_84947] -[group_84948] -[group_84949] -[group_84950] -[group_84951] -[group_84952] -[group_84953] -[group_84954] -[group_84955] -[group_84956] -[group_84957] -[group_84958] -[group_84959] -[group_84960] -[group_84961] -[group_84962] -[group_84963] -[group_84964] -[group_84965] -[group_84966] -[group_84967] -[group_84968] -[group_84969] -[group_84970] -[group_84971] -[group_84972] -[group_84973] -[group_84974] -[group_84975] -[group_84976] -[group_84977] -[group_84978] -[group_84979] -[group_84980] -[group_84981] -[group_84982] -[group_84983] -[group_84984] -[group_84985] -[group_84986] -[group_84987] -[group_84988] -[group_84989] -[group_84990] -[group_84991] -[group_84992] -[group_84993] -[group_84994] -[group_84995] -[group_84996] -[group_84997] -[group_84998] -[group_84999] -[group_85000] -[group_85001] -[group_85002] -[group_85003] -[group_85004] -[group_85005] -[group_85006] -[group_85007] -[group_85008] -[group_85009] -[group_85010] -[group_85011] -[group_85012] -[group_85013] -[group_85014] -[group_85015] -[group_85016] -[group_85017] -[group_85018] -[group_85019] -[group_85020] -[group_85021] -[group_85022] -[group_85023] -[group_85024] -[group_85025] -[group_85026] -[group_85027] -[group_85028] -[group_85029] -[group_85030] -[group_85031] -[group_85032] -[group_85033] -[group_85034] -[group_85035] -[group_85036] -[group_85037] -[group_85038] -[group_85039] -[group_85040] -[group_85041] -[group_85042] -[group_85043] -[group_85044] -[group_85045] -[group_85046] -[group_85047] -[group_85048] -[group_85049] -[group_85050] -[group_85051] -[group_85052] -[group_85053] -[group_85054] -[group_85055] -[group_85056] -[group_85057] -[group_85058] -[group_85059] -[group_85060] -[group_85061] -[group_85062] -[group_85063] -[group_85064] -[group_85065] -[group_85066] -[group_85067] -[group_85068] -[group_85069] -[group_85070] -[group_85071] -[group_85072] -[group_85073] -[group_85074] -[group_85075] -[group_85076] -[group_85077] -[group_85078] -[group_85079] -[group_85080] -[group_85081] -[group_85082] -[group_85083] -[group_85084] -[group_85085] -[group_85086] -[group_85087] -[group_85088] -[group_85089] -[group_85090] -[group_85091] -[group_85092] -[group_85093] -[group_85094] -[group_85095] -[group_85096] -[group_85097] -[group_85098] -[group_85099] -[group_85100] -[group_85101] -[group_85102] -[group_85103] -[group_85104] -[group_85105] -[group_85106] -[group_85107] -[group_85108] -[group_85109] -[group_85110] -[group_85111] -[group_85112] -[group_85113] -[group_85114] -[group_85115] -[group_85116] -[group_85117] -[group_85118] -[group_85119] -[group_85120] -[group_85121] -[group_85122] -[group_85123] -[group_85124] -[group_85125] -[group_85126] -[group_85127] -[group_85128] -[group_85129] -[group_85130] -[group_85131] -[group_85132] -[group_85133] -[group_85134] -[group_85135] -[group_85136] -[group_85137] -[group_85138] -[group_85139] -[group_85140] -[group_85141] -[group_85142] -[group_85143] -[group_85144] -[group_85145] -[group_85146] -[group_85147] -[group_85148] -[group_85149] -[group_85150] -[group_85151] -[group_85152] -[group_85153] -[group_85154] -[group_85155] -[group_85156] -[group_85157] -[group_85158] -[group_85159] -[group_85160] -[group_85161] -[group_85162] -[group_85163] -[group_85164] -[group_85165] -[group_85166] -[group_85167] -[group_85168] -[group_85169] -[group_85170] -[group_85171] -[group_85172] -[group_85173] -[group_85174] -[group_85175] -[group_85176] -[group_85177] -[group_85178] -[group_85179] -[group_85180] -[group_85181] -[group_85182] -[group_85183] -[group_85184] -[group_85185] -[group_85186] -[group_85187] -[group_85188] -[group_85189] -[group_85190] -[group_85191] -[group_85192] -[group_85193] -[group_85194] -[group_85195] -[group_85196] -[group_85197] -[group_85198] -[group_85199] -[group_85200] -[group_85201] -[group_85202] -[group_85203] -[group_85204] -[group_85205] -[group_85206] -[group_85207] -[group_85208] -[group_85209] -[group_85210] -[group_85211] -[group_85212] -[group_85213] -[group_85214] -[group_85215] -[group_85216] -[group_85217] -[group_85218] -[group_85219] -[group_85220] -[group_85221] -[group_85222] -[group_85223] -[group_85224] -[group_85225] -[group_85226] -[group_85227] -[group_85228] -[group_85229] -[group_85230] -[group_85231] -[group_85232] -[group_85233] -[group_85234] -[group_85235] -[group_85236] -[group_85237] -[group_85238] -[group_85239] -[group_85240] -[group_85241] -[group_85242] -[group_85243] -[group_85244] -[group_85245] -[group_85246] -[group_85247] -[group_85248] -[group_85249] -[group_85250] -[group_85251] -[group_85252] -[group_85253] -[group_85254] -[group_85255] -[group_85256] -[group_85257] -[group_85258] -[group_85259] -[group_85260] -[group_85261] -[group_85262] -[group_85263] -[group_85264] -[group_85265] -[group_85266] -[group_85267] -[group_85268] -[group_85269] -[group_85270] -[group_85271] -[group_85272] -[group_85273] -[group_85274] -[group_85275] -[group_85276] -[group_85277] -[group_85278] -[group_85279] -[group_85280] -[group_85281] -[group_85282] -[group_85283] -[group_85284] -[group_85285] -[group_85286] -[group_85287] -[group_85288] -[group_85289] -[group_85290] -[group_85291] -[group_85292] -[group_85293] -[group_85294] -[group_85295] -[group_85296] -[group_85297] -[group_85298] -[group_85299] -[group_85300] -[group_85301] -[group_85302] -[group_85303] -[group_85304] -[group_85305] -[group_85306] -[group_85307] -[group_85308] -[group_85309] -[group_85310] -[group_85311] -[group_85312] -[group_85313] -[group_85314] -[group_85315] -[group_85316] -[group_85317] -[group_85318] -[group_85319] -[group_85320] -[group_85321] -[group_85322] -[group_85323] -[group_85324] -[group_85325] -[group_85326] -[group_85327] -[group_85328] -[group_85329] -[group_85330] -[group_85331] -[group_85332] -[group_85333] -[group_85334] -[group_85335] -[group_85336] -[group_85337] -[group_85338] -[group_85339] -[group_85340] -[group_85341] -[group_85342] -[group_85343] -[group_85344] -[group_85345] -[group_85346] -[group_85347] -[group_85348] -[group_85349] -[group_85350] -[group_85351] -[group_85352] -[group_85353] -[group_85354] -[group_85355] -[group_85356] -[group_85357] -[group_85358] -[group_85359] -[group_85360] -[group_85361] -[group_85362] -[group_85363] -[group_85364] -[group_85365] -[group_85366] -[group_85367] -[group_85368] -[group_85369] -[group_85370] -[group_85371] -[group_85372] -[group_85373] -[group_85374] -[group_85375] -[group_85376] -[group_85377] -[group_85378] -[group_85379] -[group_85380] -[group_85381] -[group_85382] -[group_85383] -[group_85384] -[group_85385] -[group_85386] -[group_85387] -[group_85388] -[group_85389] -[group_85390] -[group_85391] -[group_85392] -[group_85393] -[group_85394] -[group_85395] -[group_85396] -[group_85397] -[group_85398] -[group_85399] -[group_85400] -[group_85401] -[group_85402] -[group_85403] -[group_85404] -[group_85405] -[group_85406] -[group_85407] -[group_85408] -[group_85409] -[group_85410] -[group_85411] -[group_85412] -[group_85413] -[group_85414] -[group_85415] -[group_85416] -[group_85417] -[group_85418] -[group_85419] -[group_85420] -[group_85421] -[group_85422] -[group_85423] -[group_85424] -[group_85425] -[group_85426] -[group_85427] -[group_85428] -[group_85429] -[group_85430] -[group_85431] -[group_85432] -[group_85433] -[group_85434] -[group_85435] -[group_85436] -[group_85437] -[group_85438] -[group_85439] -[group_85440] -[group_85441] -[group_85442] -[group_85443] -[group_85444] -[group_85445] -[group_85446] -[group_85447] -[group_85448] -[group_85449] -[group_85450] -[group_85451] -[group_85452] -[group_85453] -[group_85454] -[group_85455] -[group_85456] -[group_85457] -[group_85458] -[group_85459] -[group_85460] -[group_85461] -[group_85462] -[group_85463] -[group_85464] -[group_85465] -[group_85466] -[group_85467] -[group_85468] -[group_85469] -[group_85470] -[group_85471] -[group_85472] -[group_85473] -[group_85474] -[group_85475] -[group_85476] -[group_85477] -[group_85478] -[group_85479] -[group_85480] -[group_85481] -[group_85482] -[group_85483] -[group_85484] -[group_85485] -[group_85486] -[group_85487] -[group_85488] -[group_85489] -[group_85490] -[group_85491] -[group_85492] -[group_85493] -[group_85494] -[group_85495] -[group_85496] -[group_85497] -[group_85498] -[group_85499] -[group_85500] -[group_85501] -[group_85502] -[group_85503] -[group_85504] -[group_85505] -[group_85506] -[group_85507] -[group_85508] -[group_85509] -[group_85510] -[group_85511] -[group_85512] -[group_85513] -[group_85514] -[group_85515] -[group_85516] -[group_85517] -[group_85518] -[group_85519] -[group_85520] -[group_85521] -[group_85522] -[group_85523] -[group_85524] -[group_85525] -[group_85526] -[group_85527] -[group_85528] -[group_85529] -[group_85530] -[group_85531] -[group_85532] -[group_85533] -[group_85534] -[group_85535] -[group_85536] -[group_85537] -[group_85538] -[group_85539] -[group_85540] -[group_85541] -[group_85542] -[group_85543] -[group_85544] -[group_85545] -[group_85546] -[group_85547] -[group_85548] -[group_85549] -[group_85550] -[group_85551] -[group_85552] -[group_85553] -[group_85554] -[group_85555] -[group_85556] -[group_85557] -[group_85558] -[group_85559] -[group_85560] -[group_85561] -[group_85562] -[group_85563] -[group_85564] -[group_85565] -[group_85566] -[group_85567] -[group_85568] -[group_85569] -[group_85570] -[group_85571] -[group_85572] -[group_85573] -[group_85574] -[group_85575] -[group_85576] -[group_85577] -[group_85578] -[group_85579] -[group_85580] -[group_85581] -[group_85582] -[group_85583] -[group_85584] -[group_85585] -[group_85586] -[group_85587] -[group_85588] -[group_85589] -[group_85590] -[group_85591] -[group_85592] -[group_85593] -[group_85594] -[group_85595] -[group_85596] -[group_85597] -[group_85598] -[group_85599] -[group_85600] -[group_85601] -[group_85602] -[group_85603] -[group_85604] -[group_85605] -[group_85606] -[group_85607] -[group_85608] -[group_85609] -[group_85610] -[group_85611] -[group_85612] -[group_85613] -[group_85614] -[group_85615] -[group_85616] -[group_85617] -[group_85618] -[group_85619] -[group_85620] -[group_85621] -[group_85622] -[group_85623] -[group_85624] -[group_85625] -[group_85626] -[group_85627] -[group_85628] -[group_85629] -[group_85630] -[group_85631] -[group_85632] -[group_85633] -[group_85634] -[group_85635] -[group_85636] -[group_85637] -[group_85638] -[group_85639] -[group_85640] -[group_85641] -[group_85642] -[group_85643] -[group_85644] -[group_85645] -[group_85646] -[group_85647] -[group_85648] -[group_85649] -[group_85650] -[group_85651] -[group_85652] -[group_85653] -[group_85654] -[group_85655] -[group_85656] -[group_85657] -[group_85658] -[group_85659] -[group_85660] -[group_85661] -[group_85662] -[group_85663] -[group_85664] -[group_85665] -[group_85666] -[group_85667] -[group_85668] -[group_85669] -[group_85670] -[group_85671] -[group_85672] -[group_85673] -[group_85674] -[group_85675] -[group_85676] -[group_85677] -[group_85678] -[group_85679] -[group_85680] -[group_85681] -[group_85682] -[group_85683] -[group_85684] -[group_85685] -[group_85686] -[group_85687] -[group_85688] -[group_85689] -[group_85690] -[group_85691] -[group_85692] -[group_85693] -[group_85694] -[group_85695] -[group_85696] -[group_85697] -[group_85698] -[group_85699] -[group_85700] -[group_85701] -[group_85702] -[group_85703] -[group_85704] -[group_85705] -[group_85706] -[group_85707] -[group_85708] -[group_85709] -[group_85710] -[group_85711] -[group_85712] -[group_85713] -[group_85714] -[group_85715] -[group_85716] -[group_85717] -[group_85718] -[group_85719] -[group_85720] -[group_85721] -[group_85722] -[group_85723] -[group_85724] -[group_85725] -[group_85726] -[group_85727] -[group_85728] -[group_85729] -[group_85730] -[group_85731] -[group_85732] -[group_85733] -[group_85734] -[group_85735] -[group_85736] -[group_85737] -[group_85738] -[group_85739] -[group_85740] -[group_85741] -[group_85742] -[group_85743] -[group_85744] -[group_85745] -[group_85746] -[group_85747] -[group_85748] -[group_85749] -[group_85750] -[group_85751] -[group_85752] -[group_85753] -[group_85754] -[group_85755] -[group_85756] -[group_85757] -[group_85758] -[group_85759] -[group_85760] -[group_85761] -[group_85762] -[group_85763] -[group_85764] -[group_85765] -[group_85766] -[group_85767] -[group_85768] -[group_85769] -[group_85770] -[group_85771] -[group_85772] -[group_85773] -[group_85774] -[group_85775] -[group_85776] -[group_85777] -[group_85778] -[group_85779] -[group_85780] -[group_85781] -[group_85782] -[group_85783] -[group_85784] -[group_85785] -[group_85786] -[group_85787] -[group_85788] -[group_85789] -[group_85790] -[group_85791] -[group_85792] -[group_85793] -[group_85794] -[group_85795] -[group_85796] -[group_85797] -[group_85798] -[group_85799] -[group_85800] -[group_85801] -[group_85802] -[group_85803] -[group_85804] -[group_85805] -[group_85806] -[group_85807] -[group_85808] -[group_85809] -[group_85810] -[group_85811] -[group_85812] -[group_85813] -[group_85814] -[group_85815] -[group_85816] -[group_85817] -[group_85818] -[group_85819] -[group_85820] -[group_85821] -[group_85822] -[group_85823] -[group_85824] -[group_85825] -[group_85826] -[group_85827] -[group_85828] -[group_85829] -[group_85830] -[group_85831] -[group_85832] -[group_85833] -[group_85834] -[group_85835] -[group_85836] -[group_85837] -[group_85838] -[group_85839] -[group_85840] -[group_85841] -[group_85842] -[group_85843] -[group_85844] -[group_85845] -[group_85846] -[group_85847] -[group_85848] -[group_85849] -[group_85850] -[group_85851] -[group_85852] -[group_85853] -[group_85854] -[group_85855] -[group_85856] -[group_85857] -[group_85858] -[group_85859] -[group_85860] -[group_85861] -[group_85862] -[group_85863] -[group_85864] -[group_85865] -[group_85866] -[group_85867] -[group_85868] -[group_85869] -[group_85870] -[group_85871] -[group_85872] -[group_85873] -[group_85874] -[group_85875] -[group_85876] -[group_85877] -[group_85878] -[group_85879] -[group_85880] -[group_85881] -[group_85882] -[group_85883] -[group_85884] -[group_85885] -[group_85886] -[group_85887] -[group_85888] -[group_85889] -[group_85890] -[group_85891] -[group_85892] -[group_85893] -[group_85894] -[group_85895] -[group_85896] -[group_85897] -[group_85898] -[group_85899] -[group_85900] -[group_85901] -[group_85902] -[group_85903] -[group_85904] -[group_85905] -[group_85906] -[group_85907] -[group_85908] -[group_85909] -[group_85910] -[group_85911] -[group_85912] -[group_85913] -[group_85914] -[group_85915] -[group_85916] -[group_85917] -[group_85918] -[group_85919] -[group_85920] -[group_85921] -[group_85922] -[group_85923] -[group_85924] -[group_85925] -[group_85926] -[group_85927] -[group_85928] -[group_85929] -[group_85930] -[group_85931] -[group_85932] -[group_85933] -[group_85934] -[group_85935] -[group_85936] -[group_85937] -[group_85938] -[group_85939] -[group_85940] -[group_85941] -[group_85942] -[group_85943] -[group_85944] -[group_85945] -[group_85946] -[group_85947] -[group_85948] -[group_85949] -[group_85950] -[group_85951] -[group_85952] -[group_85953] -[group_85954] -[group_85955] -[group_85956] -[group_85957] -[group_85958] -[group_85959] -[group_85960] -[group_85961] -[group_85962] -[group_85963] -[group_85964] -[group_85965] -[group_85966] -[group_85967] -[group_85968] -[group_85969] -[group_85970] -[group_85971] -[group_85972] -[group_85973] -[group_85974] -[group_85975] -[group_85976] -[group_85977] -[group_85978] -[group_85979] -[group_85980] -[group_85981] -[group_85982] -[group_85983] -[group_85984] -[group_85985] -[group_85986] -[group_85987] -[group_85988] -[group_85989] -[group_85990] -[group_85991] -[group_85992] -[group_85993] -[group_85994] -[group_85995] -[group_85996] -[group_85997] -[group_85998] -[group_85999] -[group_86000] -[group_86001] -[group_86002] -[group_86003] -[group_86004] -[group_86005] -[group_86006] -[group_86007] -[group_86008] -[group_86009] -[group_86010] -[group_86011] -[group_86012] -[group_86013] -[group_86014] -[group_86015] -[group_86016] -[group_86017] -[group_86018] -[group_86019] -[group_86020] -[group_86021] -[group_86022] -[group_86023] -[group_86024] -[group_86025] -[group_86026] -[group_86027] -[group_86028] -[group_86029] -[group_86030] -[group_86031] -[group_86032] -[group_86033] -[group_86034] -[group_86035] -[group_86036] -[group_86037] -[group_86038] -[group_86039] -[group_86040] -[group_86041] -[group_86042] -[group_86043] -[group_86044] -[group_86045] -[group_86046] -[group_86047] -[group_86048] -[group_86049] -[group_86050] -[group_86051] -[group_86052] -[group_86053] -[group_86054] -[group_86055] -[group_86056] -[group_86057] -[group_86058] -[group_86059] -[group_86060] -[group_86061] -[group_86062] -[group_86063] -[group_86064] -[group_86065] -[group_86066] -[group_86067] -[group_86068] -[group_86069] -[group_86070] -[group_86071] -[group_86072] -[group_86073] -[group_86074] -[group_86075] -[group_86076] -[group_86077] -[group_86078] -[group_86079] -[group_86080] -[group_86081] -[group_86082] -[group_86083] -[group_86084] -[group_86085] -[group_86086] -[group_86087] -[group_86088] -[group_86089] -[group_86090] -[group_86091] -[group_86092] -[group_86093] -[group_86094] -[group_86095] -[group_86096] -[group_86097] -[group_86098] -[group_86099] -[group_86100] -[group_86101] -[group_86102] -[group_86103] -[group_86104] -[group_86105] -[group_86106] -[group_86107] -[group_86108] -[group_86109] -[group_86110] -[group_86111] -[group_86112] -[group_86113] -[group_86114] -[group_86115] -[group_86116] -[group_86117] -[group_86118] -[group_86119] -[group_86120] -[group_86121] -[group_86122] -[group_86123] -[group_86124] -[group_86125] -[group_86126] -[group_86127] -[group_86128] -[group_86129] -[group_86130] -[group_86131] -[group_86132] -[group_86133] -[group_86134] -[group_86135] -[group_86136] -[group_86137] -[group_86138] -[group_86139] -[group_86140] -[group_86141] -[group_86142] -[group_86143] -[group_86144] -[group_86145] -[group_86146] -[group_86147] -[group_86148] -[group_86149] -[group_86150] -[group_86151] -[group_86152] -[group_86153] -[group_86154] -[group_86155] -[group_86156] -[group_86157] -[group_86158] -[group_86159] -[group_86160] -[group_86161] -[group_86162] -[group_86163] -[group_86164] -[group_86165] -[group_86166] -[group_86167] -[group_86168] -[group_86169] -[group_86170] -[group_86171] -[group_86172] -[group_86173] -[group_86174] -[group_86175] -[group_86176] -[group_86177] -[group_86178] -[group_86179] -[group_86180] -[group_86181] -[group_86182] -[group_86183] -[group_86184] -[group_86185] -[group_86186] -[group_86187] -[group_86188] -[group_86189] -[group_86190] -[group_86191] -[group_86192] -[group_86193] -[group_86194] -[group_86195] -[group_86196] -[group_86197] -[group_86198] -[group_86199] -[group_86200] -[group_86201] -[group_86202] -[group_86203] -[group_86204] -[group_86205] -[group_86206] -[group_86207] -[group_86208] -[group_86209] -[group_86210] -[group_86211] -[group_86212] -[group_86213] -[group_86214] -[group_86215] -[group_86216] -[group_86217] -[group_86218] -[group_86219] -[group_86220] -[group_86221] -[group_86222] -[group_86223] -[group_86224] -[group_86225] -[group_86226] -[group_86227] -[group_86228] -[group_86229] -[group_86230] -[group_86231] -[group_86232] -[group_86233] -[group_86234] -[group_86235] -[group_86236] -[group_86237] -[group_86238] -[group_86239] -[group_86240] -[group_86241] -[group_86242] -[group_86243] -[group_86244] -[group_86245] -[group_86246] -[group_86247] -[group_86248] -[group_86249] -[group_86250] -[group_86251] -[group_86252] -[group_86253] -[group_86254] -[group_86255] -[group_86256] -[group_86257] -[group_86258] -[group_86259] -[group_86260] -[group_86261] -[group_86262] -[group_86263] -[group_86264] -[group_86265] -[group_86266] -[group_86267] -[group_86268] -[group_86269] -[group_86270] -[group_86271] -[group_86272] -[group_86273] -[group_86274] -[group_86275] -[group_86276] -[group_86277] -[group_86278] -[group_86279] -[group_86280] -[group_86281] -[group_86282] -[group_86283] -[group_86284] -[group_86285] -[group_86286] -[group_86287] -[group_86288] -[group_86289] -[group_86290] -[group_86291] -[group_86292] -[group_86293] -[group_86294] -[group_86295] -[group_86296] -[group_86297] -[group_86298] -[group_86299] -[group_86300] -[group_86301] -[group_86302] -[group_86303] -[group_86304] -[group_86305] -[group_86306] -[group_86307] -[group_86308] -[group_86309] -[group_86310] -[group_86311] -[group_86312] -[group_86313] -[group_86314] -[group_86315] -[group_86316] -[group_86317] -[group_86318] -[group_86319] -[group_86320] -[group_86321] -[group_86322] -[group_86323] -[group_86324] -[group_86325] -[group_86326] -[group_86327] -[group_86328] -[group_86329] -[group_86330] -[group_86331] -[group_86332] -[group_86333] -[group_86334] -[group_86335] -[group_86336] -[group_86337] -[group_86338] -[group_86339] -[group_86340] -[group_86341] -[group_86342] -[group_86343] -[group_86344] -[group_86345] -[group_86346] -[group_86347] -[group_86348] -[group_86349] -[group_86350] -[group_86351] -[group_86352] -[group_86353] -[group_86354] -[group_86355] -[group_86356] -[group_86357] -[group_86358] -[group_86359] -[group_86360] -[group_86361] -[group_86362] -[group_86363] -[group_86364] -[group_86365] -[group_86366] -[group_86367] -[group_86368] -[group_86369] -[group_86370] -[group_86371] -[group_86372] -[group_86373] -[group_86374] -[group_86375] -[group_86376] -[group_86377] -[group_86378] -[group_86379] -[group_86380] -[group_86381] -[group_86382] -[group_86383] -[group_86384] -[group_86385] -[group_86386] -[group_86387] -[group_86388] -[group_86389] -[group_86390] -[group_86391] -[group_86392] -[group_86393] -[group_86394] -[group_86395] -[group_86396] -[group_86397] -[group_86398] -[group_86399] -[group_86400] -[group_86401] -[group_86402] -[group_86403] -[group_86404] -[group_86405] -[group_86406] -[group_86407] -[group_86408] -[group_86409] -[group_86410] -[group_86411] -[group_86412] -[group_86413] -[group_86414] -[group_86415] -[group_86416] -[group_86417] -[group_86418] -[group_86419] -[group_86420] -[group_86421] -[group_86422] -[group_86423] -[group_86424] -[group_86425] -[group_86426] -[group_86427] -[group_86428] -[group_86429] -[group_86430] -[group_86431] -[group_86432] -[group_86433] -[group_86434] -[group_86435] -[group_86436] -[group_86437] -[group_86438] -[group_86439] -[group_86440] -[group_86441] -[group_86442] -[group_86443] -[group_86444] -[group_86445] -[group_86446] -[group_86447] -[group_86448] -[group_86449] -[group_86450] -[group_86451] -[group_86452] -[group_86453] -[group_86454] -[group_86455] -[group_86456] -[group_86457] -[group_86458] -[group_86459] -[group_86460] -[group_86461] -[group_86462] -[group_86463] -[group_86464] -[group_86465] -[group_86466] -[group_86467] -[group_86468] -[group_86469] -[group_86470] -[group_86471] -[group_86472] -[group_86473] -[group_86474] -[group_86475] -[group_86476] -[group_86477] -[group_86478] -[group_86479] -[group_86480] -[group_86481] -[group_86482] -[group_86483] -[group_86484] -[group_86485] -[group_86486] -[group_86487] -[group_86488] -[group_86489] -[group_86490] -[group_86491] -[group_86492] -[group_86493] -[group_86494] -[group_86495] -[group_86496] -[group_86497] -[group_86498] -[group_86499] -[group_86500] -[group_86501] -[group_86502] -[group_86503] -[group_86504] -[group_86505] -[group_86506] -[group_86507] -[group_86508] -[group_86509] -[group_86510] -[group_86511] -[group_86512] -[group_86513] -[group_86514] -[group_86515] -[group_86516] -[group_86517] -[group_86518] -[group_86519] -[group_86520] -[group_86521] -[group_86522] -[group_86523] -[group_86524] -[group_86525] -[group_86526] -[group_86527] -[group_86528] -[group_86529] -[group_86530] -[group_86531] -[group_86532] -[group_86533] -[group_86534] -[group_86535] -[group_86536] -[group_86537] -[group_86538] -[group_86539] -[group_86540] -[group_86541] -[group_86542] -[group_86543] -[group_86544] -[group_86545] -[group_86546] -[group_86547] -[group_86548] -[group_86549] -[group_86550] -[group_86551] -[group_86552] -[group_86553] -[group_86554] -[group_86555] -[group_86556] -[group_86557] -[group_86558] -[group_86559] -[group_86560] -[group_86561] -[group_86562] -[group_86563] -[group_86564] -[group_86565] -[group_86566] -[group_86567] -[group_86568] -[group_86569] -[group_86570] -[group_86571] -[group_86572] -[group_86573] -[group_86574] -[group_86575] -[group_86576] -[group_86577] -[group_86578] -[group_86579] -[group_86580] -[group_86581] -[group_86582] -[group_86583] -[group_86584] -[group_86585] -[group_86586] -[group_86587] -[group_86588] -[group_86589] -[group_86590] -[group_86591] -[group_86592] -[group_86593] -[group_86594] -[group_86595] -[group_86596] -[group_86597] -[group_86598] -[group_86599] -[group_86600] -[group_86601] -[group_86602] -[group_86603] -[group_86604] -[group_86605] -[group_86606] -[group_86607] -[group_86608] -[group_86609] -[group_86610] -[group_86611] -[group_86612] -[group_86613] -[group_86614] -[group_86615] -[group_86616] -[group_86617] -[group_86618] -[group_86619] -[group_86620] -[group_86621] -[group_86622] -[group_86623] -[group_86624] -[group_86625] -[group_86626] -[group_86627] -[group_86628] -[group_86629] -[group_86630] -[group_86631] -[group_86632] -[group_86633] -[group_86634] -[group_86635] -[group_86636] -[group_86637] -[group_86638] -[group_86639] -[group_86640] -[group_86641] -[group_86642] -[group_86643] -[group_86644] -[group_86645] -[group_86646] -[group_86647] -[group_86648] -[group_86649] -[group_86650] -[group_86651] -[group_86652] -[group_86653] -[group_86654] -[group_86655] -[group_86656] -[group_86657] -[group_86658] -[group_86659] -[group_86660] -[group_86661] -[group_86662] -[group_86663] -[group_86664] -[group_86665] -[group_86666] -[group_86667] -[group_86668] -[group_86669] -[group_86670] -[group_86671] -[group_86672] -[group_86673] -[group_86674] -[group_86675] -[group_86676] -[group_86677] -[group_86678] -[group_86679] -[group_86680] -[group_86681] -[group_86682] -[group_86683] -[group_86684] -[group_86685] -[group_86686] -[group_86687] -[group_86688] -[group_86689] -[group_86690] -[group_86691] -[group_86692] -[group_86693] -[group_86694] -[group_86695] -[group_86696] -[group_86697] -[group_86698] -[group_86699] -[group_86700] -[group_86701] -[group_86702] -[group_86703] -[group_86704] -[group_86705] -[group_86706] -[group_86707] -[group_86708] -[group_86709] -[group_86710] -[group_86711] -[group_86712] -[group_86713] -[group_86714] -[group_86715] -[group_86716] -[group_86717] -[group_86718] -[group_86719] -[group_86720] -[group_86721] -[group_86722] -[group_86723] -[group_86724] -[group_86725] -[group_86726] -[group_86727] -[group_86728] -[group_86729] -[group_86730] -[group_86731] -[group_86732] -[group_86733] -[group_86734] -[group_86735] -[group_86736] -[group_86737] -[group_86738] -[group_86739] -[group_86740] -[group_86741] -[group_86742] -[group_86743] -[group_86744] -[group_86745] -[group_86746] -[group_86747] -[group_86748] -[group_86749] -[group_86750] -[group_86751] -[group_86752] -[group_86753] -[group_86754] -[group_86755] -[group_86756] -[group_86757] -[group_86758] -[group_86759] -[group_86760] -[group_86761] -[group_86762] -[group_86763] -[group_86764] -[group_86765] -[group_86766] -[group_86767] -[group_86768] -[group_86769] -[group_86770] -[group_86771] -[group_86772] -[group_86773] -[group_86774] -[group_86775] -[group_86776] -[group_86777] -[group_86778] -[group_86779] -[group_86780] -[group_86781] -[group_86782] -[group_86783] -[group_86784] -[group_86785] -[group_86786] -[group_86787] -[group_86788] -[group_86789] -[group_86790] -[group_86791] -[group_86792] -[group_86793] -[group_86794] -[group_86795] -[group_86796] -[group_86797] -[group_86798] -[group_86799] -[group_86800] -[group_86801] -[group_86802] -[group_86803] -[group_86804] -[group_86805] -[group_86806] -[group_86807] -[group_86808] -[group_86809] -[group_86810] -[group_86811] -[group_86812] -[group_86813] -[group_86814] -[group_86815] -[group_86816] -[group_86817] -[group_86818] -[group_86819] -[group_86820] -[group_86821] -[group_86822] -[group_86823] -[group_86824] -[group_86825] -[group_86826] -[group_86827] -[group_86828] -[group_86829] -[group_86830] -[group_86831] -[group_86832] -[group_86833] -[group_86834] -[group_86835] -[group_86836] -[group_86837] -[group_86838] -[group_86839] -[group_86840] -[group_86841] -[group_86842] -[group_86843] -[group_86844] -[group_86845] -[group_86846] -[group_86847] -[group_86848] -[group_86849] -[group_86850] -[group_86851] -[group_86852] -[group_86853] -[group_86854] -[group_86855] -[group_86856] -[group_86857] -[group_86858] -[group_86859] -[group_86860] -[group_86861] -[group_86862] -[group_86863] -[group_86864] -[group_86865] -[group_86866] -[group_86867] -[group_86868] -[group_86869] -[group_86870] -[group_86871] -[group_86872] -[group_86873] -[group_86874] -[group_86875] -[group_86876] -[group_86877] -[group_86878] -[group_86879] -[group_86880] -[group_86881] -[group_86882] -[group_86883] -[group_86884] -[group_86885] -[group_86886] -[group_86887] -[group_86888] -[group_86889] -[group_86890] -[group_86891] -[group_86892] -[group_86893] -[group_86894] -[group_86895] -[group_86896] -[group_86897] -[group_86898] -[group_86899] -[group_86900] -[group_86901] -[group_86902] -[group_86903] -[group_86904] -[group_86905] -[group_86906] -[group_86907] -[group_86908] -[group_86909] -[group_86910] -[group_86911] -[group_86912] -[group_86913] -[group_86914] -[group_86915] -[group_86916] -[group_86917] -[group_86918] -[group_86919] -[group_86920] -[group_86921] -[group_86922] -[group_86923] -[group_86924] -[group_86925] -[group_86926] -[group_86927] -[group_86928] -[group_86929] -[group_86930] -[group_86931] -[group_86932] -[group_86933] -[group_86934] -[group_86935] -[group_86936] -[group_86937] -[group_86938] -[group_86939] -[group_86940] -[group_86941] -[group_86942] -[group_86943] -[group_86944] -[group_86945] -[group_86946] -[group_86947] -[group_86948] -[group_86949] -[group_86950] -[group_86951] -[group_86952] -[group_86953] -[group_86954] -[group_86955] -[group_86956] -[group_86957] -[group_86958] -[group_86959] -[group_86960] -[group_86961] -[group_86962] -[group_86963] -[group_86964] -[group_86965] -[group_86966] -[group_86967] -[group_86968] -[group_86969] -[group_86970] -[group_86971] -[group_86972] -[group_86973] -[group_86974] -[group_86975] -[group_86976] -[group_86977] -[group_86978] -[group_86979] -[group_86980] -[group_86981] -[group_86982] -[group_86983] -[group_86984] -[group_86985] -[group_86986] -[group_86987] -[group_86988] -[group_86989] -[group_86990] -[group_86991] -[group_86992] -[group_86993] -[group_86994] -[group_86995] -[group_86996] -[group_86997] -[group_86998] -[group_86999] -[group_87000] -[group_87001] -[group_87002] -[group_87003] -[group_87004] -[group_87005] -[group_87006] -[group_87007] -[group_87008] -[group_87009] -[group_87010] -[group_87011] -[group_87012] -[group_87013] -[group_87014] -[group_87015] -[group_87016] -[group_87017] -[group_87018] -[group_87019] -[group_87020] -[group_87021] -[group_87022] -[group_87023] -[group_87024] -[group_87025] -[group_87026] -[group_87027] -[group_87028] -[group_87029] -[group_87030] -[group_87031] -[group_87032] -[group_87033] -[group_87034] -[group_87035] -[group_87036] -[group_87037] -[group_87038] -[group_87039] -[group_87040] -[group_87041] -[group_87042] -[group_87043] -[group_87044] -[group_87045] -[group_87046] -[group_87047] -[group_87048] -[group_87049] -[group_87050] -[group_87051] -[group_87052] -[group_87053] -[group_87054] -[group_87055] -[group_87056] -[group_87057] -[group_87058] -[group_87059] -[group_87060] -[group_87061] -[group_87062] -[group_87063] -[group_87064] -[group_87065] -[group_87066] -[group_87067] -[group_87068] -[group_87069] -[group_87070] -[group_87071] -[group_87072] -[group_87073] -[group_87074] -[group_87075] -[group_87076] -[group_87077] -[group_87078] -[group_87079] -[group_87080] -[group_87081] -[group_87082] -[group_87083] -[group_87084] -[group_87085] -[group_87086] -[group_87087] -[group_87088] -[group_87089] -[group_87090] -[group_87091] -[group_87092] -[group_87093] -[group_87094] -[group_87095] -[group_87096] -[group_87097] -[group_87098] -[group_87099] -[group_87100] -[group_87101] -[group_87102] -[group_87103] -[group_87104] -[group_87105] -[group_87106] -[group_87107] -[group_87108] -[group_87109] -[group_87110] -[group_87111] -[group_87112] -[group_87113] -[group_87114] -[group_87115] -[group_87116] -[group_87117] -[group_87118] -[group_87119] -[group_87120] -[group_87121] -[group_87122] -[group_87123] -[group_87124] -[group_87125] -[group_87126] -[group_87127] -[group_87128] -[group_87129] -[group_87130] -[group_87131] -[group_87132] -[group_87133] -[group_87134] -[group_87135] -[group_87136] -[group_87137] -[group_87138] -[group_87139] -[group_87140] -[group_87141] -[group_87142] -[group_87143] -[group_87144] -[group_87145] -[group_87146] -[group_87147] -[group_87148] -[group_87149] -[group_87150] -[group_87151] -[group_87152] -[group_87153] -[group_87154] -[group_87155] -[group_87156] -[group_87157] -[group_87158] -[group_87159] -[group_87160] -[group_87161] -[group_87162] -[group_87163] -[group_87164] -[group_87165] -[group_87166] -[group_87167] -[group_87168] -[group_87169] -[group_87170] -[group_87171] -[group_87172] -[group_87173] -[group_87174] -[group_87175] -[group_87176] -[group_87177] -[group_87178] -[group_87179] -[group_87180] -[group_87181] -[group_87182] -[group_87183] -[group_87184] -[group_87185] -[group_87186] -[group_87187] -[group_87188] -[group_87189] -[group_87190] -[group_87191] -[group_87192] -[group_87193] -[group_87194] -[group_87195] -[group_87196] -[group_87197] -[group_87198] -[group_87199] -[group_87200] -[group_87201] -[group_87202] -[group_87203] -[group_87204] -[group_87205] -[group_87206] -[group_87207] -[group_87208] -[group_87209] -[group_87210] -[group_87211] -[group_87212] -[group_87213] -[group_87214] -[group_87215] -[group_87216] -[group_87217] -[group_87218] -[group_87219] -[group_87220] -[group_87221] -[group_87222] -[group_87223] -[group_87224] -[group_87225] -[group_87226] -[group_87227] -[group_87228] -[group_87229] -[group_87230] -[group_87231] -[group_87232] -[group_87233] -[group_87234] -[group_87235] -[group_87236] -[group_87237] -[group_87238] -[group_87239] -[group_87240] -[group_87241] -[group_87242] -[group_87243] -[group_87244] -[group_87245] -[group_87246] -[group_87247] -[group_87248] -[group_87249] -[group_87250] -[group_87251] -[group_87252] -[group_87253] -[group_87254] -[group_87255] -[group_87256] -[group_87257] -[group_87258] -[group_87259] -[group_87260] -[group_87261] -[group_87262] -[group_87263] -[group_87264] -[group_87265] -[group_87266] -[group_87267] -[group_87268] -[group_87269] -[group_87270] -[group_87271] -[group_87272] -[group_87273] -[group_87274] -[group_87275] -[group_87276] -[group_87277] -[group_87278] -[group_87279] -[group_87280] -[group_87281] -[group_87282] -[group_87283] -[group_87284] -[group_87285] -[group_87286] -[group_87287] -[group_87288] -[group_87289] -[group_87290] -[group_87291] -[group_87292] -[group_87293] -[group_87294] -[group_87295] -[group_87296] -[group_87297] -[group_87298] -[group_87299] -[group_87300] -[group_87301] -[group_87302] -[group_87303] -[group_87304] -[group_87305] -[group_87306] -[group_87307] -[group_87308] -[group_87309] -[group_87310] -[group_87311] -[group_87312] -[group_87313] -[group_87314] -[group_87315] -[group_87316] -[group_87317] -[group_87318] -[group_87319] -[group_87320] -[group_87321] -[group_87322] -[group_87323] -[group_87324] -[group_87325] -[group_87326] -[group_87327] -[group_87328] -[group_87329] -[group_87330] -[group_87331] -[group_87332] -[group_87333] -[group_87334] -[group_87335] -[group_87336] -[group_87337] -[group_87338] -[group_87339] -[group_87340] -[group_87341] -[group_87342] -[group_87343] -[group_87344] -[group_87345] -[group_87346] -[group_87347] -[group_87348] -[group_87349] -[group_87350] -[group_87351] -[group_87352] -[group_87353] -[group_87354] -[group_87355] -[group_87356] -[group_87357] -[group_87358] -[group_87359] -[group_87360] -[group_87361] -[group_87362] -[group_87363] -[group_87364] -[group_87365] -[group_87366] -[group_87367] -[group_87368] -[group_87369] -[group_87370] -[group_87371] -[group_87372] -[group_87373] -[group_87374] -[group_87375] -[group_87376] -[group_87377] -[group_87378] -[group_87379] -[group_87380] -[group_87381] -[group_87382] -[group_87383] -[group_87384] -[group_87385] -[group_87386] -[group_87387] -[group_87388] -[group_87389] -[group_87390] -[group_87391] -[group_87392] -[group_87393] -[group_87394] -[group_87395] -[group_87396] -[group_87397] -[group_87398] -[group_87399] -[group_87400] -[group_87401] -[group_87402] -[group_87403] -[group_87404] -[group_87405] -[group_87406] -[group_87407] -[group_87408] -[group_87409] -[group_87410] -[group_87411] -[group_87412] -[group_87413] -[group_87414] -[group_87415] -[group_87416] -[group_87417] -[group_87418] -[group_87419] -[group_87420] -[group_87421] -[group_87422] -[group_87423] -[group_87424] -[group_87425] -[group_87426] -[group_87427] -[group_87428] -[group_87429] -[group_87430] -[group_87431] -[group_87432] -[group_87433] -[group_87434] -[group_87435] -[group_87436] -[group_87437] -[group_87438] -[group_87439] -[group_87440] -[group_87441] -[group_87442] -[group_87443] -[group_87444] -[group_87445] -[group_87446] -[group_87447] -[group_87448] -[group_87449] -[group_87450] -[group_87451] -[group_87452] -[group_87453] -[group_87454] -[group_87455] -[group_87456] -[group_87457] -[group_87458] -[group_87459] -[group_87460] -[group_87461] -[group_87462] -[group_87463] -[group_87464] -[group_87465] -[group_87466] -[group_87467] -[group_87468] -[group_87469] -[group_87470] -[group_87471] -[group_87472] -[group_87473] -[group_87474] -[group_87475] -[group_87476] -[group_87477] -[group_87478] -[group_87479] -[group_87480] -[group_87481] -[group_87482] -[group_87483] -[group_87484] -[group_87485] -[group_87486] -[group_87487] -[group_87488] -[group_87489] -[group_87490] -[group_87491] -[group_87492] -[group_87493] -[group_87494] -[group_87495] -[group_87496] -[group_87497] -[group_87498] -[group_87499] -[group_87500] -[group_87501] -[group_87502] -[group_87503] -[group_87504] -[group_87505] -[group_87506] -[group_87507] -[group_87508] -[group_87509] -[group_87510] -[group_87511] -[group_87512] -[group_87513] -[group_87514] -[group_87515] -[group_87516] -[group_87517] -[group_87518] -[group_87519] -[group_87520] -[group_87521] -[group_87522] -[group_87523] -[group_87524] -[group_87525] -[group_87526] -[group_87527] -[group_87528] -[group_87529] -[group_87530] -[group_87531] -[group_87532] -[group_87533] -[group_87534] -[group_87535] -[group_87536] -[group_87537] -[group_87538] -[group_87539] -[group_87540] -[group_87541] -[group_87542] -[group_87543] -[group_87544] -[group_87545] -[group_87546] -[group_87547] -[group_87548] -[group_87549] -[group_87550] -[group_87551] -[group_87552] -[group_87553] -[group_87554] -[group_87555] -[group_87556] -[group_87557] -[group_87558] -[group_87559] -[group_87560] -[group_87561] -[group_87562] -[group_87563] -[group_87564] -[group_87565] -[group_87566] -[group_87567] -[group_87568] -[group_87569] -[group_87570] -[group_87571] -[group_87572] -[group_87573] -[group_87574] -[group_87575] -[group_87576] -[group_87577] -[group_87578] -[group_87579] -[group_87580] -[group_87581] -[group_87582] -[group_87583] -[group_87584] -[group_87585] -[group_87586] -[group_87587] -[group_87588] -[group_87589] -[group_87590] -[group_87591] -[group_87592] -[group_87593] -[group_87594] -[group_87595] -[group_87596] -[group_87597] -[group_87598] -[group_87599] -[group_87600] -[group_87601] -[group_87602] -[group_87603] -[group_87604] -[group_87605] -[group_87606] -[group_87607] -[group_87608] -[group_87609] -[group_87610] -[group_87611] -[group_87612] -[group_87613] -[group_87614] -[group_87615] -[group_87616] -[group_87617] -[group_87618] -[group_87619] -[group_87620] -[group_87621] -[group_87622] -[group_87623] -[group_87624] -[group_87625] -[group_87626] -[group_87627] -[group_87628] -[group_87629] -[group_87630] -[group_87631] -[group_87632] -[group_87633] -[group_87634] -[group_87635] -[group_87636] -[group_87637] -[group_87638] -[group_87639] -[group_87640] -[group_87641] -[group_87642] -[group_87643] -[group_87644] -[group_87645] -[group_87646] -[group_87647] -[group_87648] -[group_87649] -[group_87650] -[group_87651] -[group_87652] -[group_87653] -[group_87654] -[group_87655] -[group_87656] -[group_87657] -[group_87658] -[group_87659] -[group_87660] -[group_87661] -[group_87662] -[group_87663] -[group_87664] -[group_87665] -[group_87666] -[group_87667] -[group_87668] -[group_87669] -[group_87670] -[group_87671] -[group_87672] -[group_87673] -[group_87674] -[group_87675] -[group_87676] -[group_87677] -[group_87678] -[group_87679] -[group_87680] -[group_87681] -[group_87682] -[group_87683] -[group_87684] -[group_87685] -[group_87686] -[group_87687] -[group_87688] -[group_87689] -[group_87690] -[group_87691] -[group_87692] -[group_87693] -[group_87694] -[group_87695] -[group_87696] -[group_87697] -[group_87698] -[group_87699] -[group_87700] -[group_87701] -[group_87702] -[group_87703] -[group_87704] -[group_87705] -[group_87706] -[group_87707] -[group_87708] -[group_87709] -[group_87710] -[group_87711] -[group_87712] -[group_87713] -[group_87714] -[group_87715] -[group_87716] -[group_87717] -[group_87718] -[group_87719] -[group_87720] -[group_87721] -[group_87722] -[group_87723] -[group_87724] -[group_87725] -[group_87726] -[group_87727] -[group_87728] -[group_87729] -[group_87730] -[group_87731] -[group_87732] -[group_87733] -[group_87734] -[group_87735] -[group_87736] -[group_87737] -[group_87738] -[group_87739] -[group_87740] -[group_87741] -[group_87742] -[group_87743] -[group_87744] -[group_87745] -[group_87746] -[group_87747] -[group_87748] -[group_87749] -[group_87750] -[group_87751] -[group_87752] -[group_87753] -[group_87754] -[group_87755] -[group_87756] -[group_87757] -[group_87758] -[group_87759] -[group_87760] -[group_87761] -[group_87762] -[group_87763] -[group_87764] -[group_87765] -[group_87766] -[group_87767] -[group_87768] -[group_87769] -[group_87770] -[group_87771] -[group_87772] -[group_87773] -[group_87774] -[group_87775] -[group_87776] -[group_87777] -[group_87778] -[group_87779] -[group_87780] -[group_87781] -[group_87782] -[group_87783] -[group_87784] -[group_87785] -[group_87786] -[group_87787] -[group_87788] -[group_87789] -[group_87790] -[group_87791] -[group_87792] -[group_87793] -[group_87794] -[group_87795] -[group_87796] -[group_87797] -[group_87798] -[group_87799] -[group_87800] -[group_87801] -[group_87802] -[group_87803] -[group_87804] -[group_87805] -[group_87806] -[group_87807] -[group_87808] -[group_87809] -[group_87810] -[group_87811] -[group_87812] -[group_87813] -[group_87814] -[group_87815] -[group_87816] -[group_87817] -[group_87818] -[group_87819] -[group_87820] -[group_87821] -[group_87822] -[group_87823] -[group_87824] -[group_87825] -[group_87826] -[group_87827] -[group_87828] -[group_87829] -[group_87830] -[group_87831] -[group_87832] -[group_87833] -[group_87834] -[group_87835] -[group_87836] -[group_87837] -[group_87838] -[group_87839] -[group_87840] -[group_87841] -[group_87842] -[group_87843] -[group_87844] -[group_87845] -[group_87846] -[group_87847] -[group_87848] -[group_87849] -[group_87850] -[group_87851] -[group_87852] -[group_87853] -[group_87854] -[group_87855] -[group_87856] -[group_87857] -[group_87858] -[group_87859] -[group_87860] -[group_87861] -[group_87862] -[group_87863] -[group_87864] -[group_87865] -[group_87866] -[group_87867] -[group_87868] -[group_87869] -[group_87870] -[group_87871] -[group_87872] -[group_87873] -[group_87874] -[group_87875] -[group_87876] -[group_87877] -[group_87878] -[group_87879] -[group_87880] -[group_87881] -[group_87882] -[group_87883] -[group_87884] -[group_87885] -[group_87886] -[group_87887] -[group_87888] -[group_87889] -[group_87890] -[group_87891] -[group_87892] -[group_87893] -[group_87894] -[group_87895] -[group_87896] -[group_87897] -[group_87898] -[group_87899] -[group_87900] -[group_87901] -[group_87902] -[group_87903] -[group_87904] -[group_87905] -[group_87906] -[group_87907] -[group_87908] -[group_87909] -[group_87910] -[group_87911] -[group_87912] -[group_87913] -[group_87914] -[group_87915] -[group_87916] -[group_87917] -[group_87918] -[group_87919] -[group_87920] -[group_87921] -[group_87922] -[group_87923] -[group_87924] -[group_87925] -[group_87926] -[group_87927] -[group_87928] -[group_87929] -[group_87930] -[group_87931] -[group_87932] -[group_87933] -[group_87934] -[group_87935] -[group_87936] -[group_87937] -[group_87938] -[group_87939] -[group_87940] -[group_87941] -[group_87942] -[group_87943] -[group_87944] -[group_87945] -[group_87946] -[group_87947] -[group_87948] -[group_87949] -[group_87950] -[group_87951] -[group_87952] -[group_87953] -[group_87954] -[group_87955] -[group_87956] -[group_87957] -[group_87958] -[group_87959] -[group_87960] -[group_87961] -[group_87962] -[group_87963] -[group_87964] -[group_87965] -[group_87966] -[group_87967] -[group_87968] -[group_87969] -[group_87970] -[group_87971] -[group_87972] -[group_87973] -[group_87974] -[group_87975] -[group_87976] -[group_87977] -[group_87978] -[group_87979] -[group_87980] -[group_87981] -[group_87982] -[group_87983] -[group_87984] -[group_87985] -[group_87986] -[group_87987] -[group_87988] -[group_87989] -[group_87990] -[group_87991] -[group_87992] -[group_87993] -[group_87994] -[group_87995] -[group_87996] -[group_87997] -[group_87998] -[group_87999] -[group_88000] -[group_88001] -[group_88002] -[group_88003] -[group_88004] -[group_88005] -[group_88006] -[group_88007] -[group_88008] -[group_88009] -[group_88010] -[group_88011] -[group_88012] -[group_88013] -[group_88014] -[group_88015] -[group_88016] -[group_88017] -[group_88018] -[group_88019] -[group_88020] -[group_88021] -[group_88022] -[group_88023] -[group_88024] -[group_88025] -[group_88026] -[group_88027] -[group_88028] -[group_88029] -[group_88030] -[group_88031] -[group_88032] -[group_88033] -[group_88034] -[group_88035] -[group_88036] -[group_88037] -[group_88038] -[group_88039] -[group_88040] -[group_88041] -[group_88042] -[group_88043] -[group_88044] -[group_88045] -[group_88046] -[group_88047] -[group_88048] -[group_88049] -[group_88050] -[group_88051] -[group_88052] -[group_88053] -[group_88054] -[group_88055] -[group_88056] -[group_88057] -[group_88058] -[group_88059] -[group_88060] -[group_88061] -[group_88062] -[group_88063] -[group_88064] -[group_88065] -[group_88066] -[group_88067] -[group_88068] -[group_88069] -[group_88070] -[group_88071] -[group_88072] -[group_88073] -[group_88074] -[group_88075] -[group_88076] -[group_88077] -[group_88078] -[group_88079] -[group_88080] -[group_88081] -[group_88082] -[group_88083] -[group_88084] -[group_88085] -[group_88086] -[group_88087] -[group_88088] -[group_88089] -[group_88090] -[group_88091] -[group_88092] -[group_88093] -[group_88094] -[group_88095] -[group_88096] -[group_88097] -[group_88098] -[group_88099] -[group_88100] -[group_88101] -[group_88102] -[group_88103] -[group_88104] -[group_88105] -[group_88106] -[group_88107] -[group_88108] -[group_88109] -[group_88110] -[group_88111] -[group_88112] -[group_88113] -[group_88114] -[group_88115] -[group_88116] -[group_88117] -[group_88118] -[group_88119] -[group_88120] -[group_88121] -[group_88122] -[group_88123] -[group_88124] -[group_88125] -[group_88126] -[group_88127] -[group_88128] -[group_88129] -[group_88130] -[group_88131] -[group_88132] -[group_88133] -[group_88134] -[group_88135] -[group_88136] -[group_88137] -[group_88138] -[group_88139] -[group_88140] -[group_88141] -[group_88142] -[group_88143] -[group_88144] -[group_88145] -[group_88146] -[group_88147] -[group_88148] -[group_88149] -[group_88150] -[group_88151] -[group_88152] -[group_88153] -[group_88154] -[group_88155] -[group_88156] -[group_88157] -[group_88158] -[group_88159] -[group_88160] -[group_88161] -[group_88162] -[group_88163] -[group_88164] -[group_88165] -[group_88166] -[group_88167] -[group_88168] -[group_88169] -[group_88170] -[group_88171] -[group_88172] -[group_88173] -[group_88174] -[group_88175] -[group_88176] -[group_88177] -[group_88178] -[group_88179] -[group_88180] -[group_88181] -[group_88182] -[group_88183] -[group_88184] -[group_88185] -[group_88186] -[group_88187] -[group_88188] -[group_88189] -[group_88190] -[group_88191] -[group_88192] -[group_88193] -[group_88194] -[group_88195] -[group_88196] -[group_88197] -[group_88198] -[group_88199] -[group_88200] -[group_88201] -[group_88202] -[group_88203] -[group_88204] -[group_88205] -[group_88206] -[group_88207] -[group_88208] -[group_88209] -[group_88210] -[group_88211] -[group_88212] -[group_88213] -[group_88214] -[group_88215] -[group_88216] -[group_88217] -[group_88218] -[group_88219] -[group_88220] -[group_88221] -[group_88222] -[group_88223] -[group_88224] -[group_88225] -[group_88226] -[group_88227] -[group_88228] -[group_88229] -[group_88230] -[group_88231] -[group_88232] -[group_88233] -[group_88234] -[group_88235] -[group_88236] -[group_88237] -[group_88238] -[group_88239] -[group_88240] -[group_88241] -[group_88242] -[group_88243] -[group_88244] -[group_88245] -[group_88246] -[group_88247] -[group_88248] -[group_88249] -[group_88250] -[group_88251] -[group_88252] -[group_88253] -[group_88254] -[group_88255] -[group_88256] -[group_88257] -[group_88258] -[group_88259] -[group_88260] -[group_88261] -[group_88262] -[group_88263] -[group_88264] -[group_88265] -[group_88266] -[group_88267] -[group_88268] -[group_88269] -[group_88270] -[group_88271] -[group_88272] -[group_88273] -[group_88274] -[group_88275] -[group_88276] -[group_88277] -[group_88278] -[group_88279] -[group_88280] -[group_88281] -[group_88282] -[group_88283] -[group_88284] -[group_88285] -[group_88286] -[group_88287] -[group_88288] -[group_88289] -[group_88290] -[group_88291] -[group_88292] -[group_88293] -[group_88294] -[group_88295] -[group_88296] -[group_88297] -[group_88298] -[group_88299] -[group_88300] -[group_88301] -[group_88302] -[group_88303] -[group_88304] -[group_88305] -[group_88306] -[group_88307] -[group_88308] -[group_88309] -[group_88310] -[group_88311] -[group_88312] -[group_88313] -[group_88314] -[group_88315] -[group_88316] -[group_88317] -[group_88318] -[group_88319] -[group_88320] -[group_88321] -[group_88322] -[group_88323] -[group_88324] -[group_88325] -[group_88326] -[group_88327] -[group_88328] -[group_88329] -[group_88330] -[group_88331] -[group_88332] -[group_88333] -[group_88334] -[group_88335] -[group_88336] -[group_88337] -[group_88338] -[group_88339] -[group_88340] -[group_88341] -[group_88342] -[group_88343] -[group_88344] -[group_88345] -[group_88346] -[group_88347] -[group_88348] -[group_88349] -[group_88350] -[group_88351] -[group_88352] -[group_88353] -[group_88354] -[group_88355] -[group_88356] -[group_88357] -[group_88358] -[group_88359] -[group_88360] -[group_88361] -[group_88362] -[group_88363] -[group_88364] -[group_88365] -[group_88366] -[group_88367] -[group_88368] -[group_88369] -[group_88370] -[group_88371] -[group_88372] -[group_88373] -[group_88374] -[group_88375] -[group_88376] -[group_88377] -[group_88378] -[group_88379] -[group_88380] -[group_88381] -[group_88382] -[group_88383] -[group_88384] -[group_88385] -[group_88386] -[group_88387] -[group_88388] -[group_88389] -[group_88390] -[group_88391] -[group_88392] -[group_88393] -[group_88394] -[group_88395] -[group_88396] -[group_88397] -[group_88398] -[group_88399] -[group_88400] -[group_88401] -[group_88402] -[group_88403] -[group_88404] -[group_88405] -[group_88406] -[group_88407] -[group_88408] -[group_88409] -[group_88410] -[group_88411] -[group_88412] -[group_88413] -[group_88414] -[group_88415] -[group_88416] -[group_88417] -[group_88418] -[group_88419] -[group_88420] -[group_88421] -[group_88422] -[group_88423] -[group_88424] -[group_88425] -[group_88426] -[group_88427] -[group_88428] -[group_88429] -[group_88430] -[group_88431] -[group_88432] -[group_88433] -[group_88434] -[group_88435] -[group_88436] -[group_88437] -[group_88438] -[group_88439] -[group_88440] -[group_88441] -[group_88442] -[group_88443] -[group_88444] -[group_88445] -[group_88446] -[group_88447] -[group_88448] -[group_88449] -[group_88450] -[group_88451] -[group_88452] -[group_88453] -[group_88454] -[group_88455] -[group_88456] -[group_88457] -[group_88458] -[group_88459] -[group_88460] -[group_88461] -[group_88462] -[group_88463] -[group_88464] -[group_88465] -[group_88466] -[group_88467] -[group_88468] -[group_88469] -[group_88470] -[group_88471] -[group_88472] -[group_88473] -[group_88474] -[group_88475] -[group_88476] -[group_88477] -[group_88478] -[group_88479] -[group_88480] -[group_88481] -[group_88482] -[group_88483] -[group_88484] -[group_88485] -[group_88486] -[group_88487] -[group_88488] -[group_88489] -[group_88490] -[group_88491] -[group_88492] -[group_88493] -[group_88494] -[group_88495] -[group_88496] -[group_88497] -[group_88498] -[group_88499] -[group_88500] -[group_88501] -[group_88502] -[group_88503] -[group_88504] -[group_88505] -[group_88506] -[group_88507] -[group_88508] -[group_88509] -[group_88510] -[group_88511] -[group_88512] -[group_88513] -[group_88514] -[group_88515] -[group_88516] -[group_88517] -[group_88518] -[group_88519] -[group_88520] -[group_88521] -[group_88522] -[group_88523] -[group_88524] -[group_88525] -[group_88526] -[group_88527] -[group_88528] -[group_88529] -[group_88530] -[group_88531] -[group_88532] -[group_88533] -[group_88534] -[group_88535] -[group_88536] -[group_88537] -[group_88538] -[group_88539] -[group_88540] -[group_88541] -[group_88542] -[group_88543] -[group_88544] -[group_88545] -[group_88546] -[group_88547] -[group_88548] -[group_88549] -[group_88550] -[group_88551] -[group_88552] -[group_88553] -[group_88554] -[group_88555] -[group_88556] -[group_88557] -[group_88558] -[group_88559] -[group_88560] -[group_88561] -[group_88562] -[group_88563] -[group_88564] -[group_88565] -[group_88566] -[group_88567] -[group_88568] -[group_88569] -[group_88570] -[group_88571] -[group_88572] -[group_88573] -[group_88574] -[group_88575] -[group_88576] -[group_88577] -[group_88578] -[group_88579] -[group_88580] -[group_88581] -[group_88582] -[group_88583] -[group_88584] -[group_88585] -[group_88586] -[group_88587] -[group_88588] -[group_88589] -[group_88590] -[group_88591] -[group_88592] -[group_88593] -[group_88594] -[group_88595] -[group_88596] -[group_88597] -[group_88598] -[group_88599] -[group_88600] -[group_88601] -[group_88602] -[group_88603] -[group_88604] -[group_88605] -[group_88606] -[group_88607] -[group_88608] -[group_88609] -[group_88610] -[group_88611] -[group_88612] -[group_88613] -[group_88614] -[group_88615] -[group_88616] -[group_88617] -[group_88618] -[group_88619] -[group_88620] -[group_88621] -[group_88622] -[group_88623] -[group_88624] -[group_88625] -[group_88626] -[group_88627] -[group_88628] -[group_88629] -[group_88630] -[group_88631] -[group_88632] -[group_88633] -[group_88634] -[group_88635] -[group_88636] -[group_88637] -[group_88638] -[group_88639] -[group_88640] -[group_88641] -[group_88642] -[group_88643] -[group_88644] -[group_88645] -[group_88646] -[group_88647] -[group_88648] -[group_88649] -[group_88650] -[group_88651] -[group_88652] -[group_88653] -[group_88654] -[group_88655] -[group_88656] -[group_88657] -[group_88658] -[group_88659] -[group_88660] -[group_88661] -[group_88662] -[group_88663] -[group_88664] -[group_88665] -[group_88666] -[group_88667] -[group_88668] -[group_88669] -[group_88670] -[group_88671] -[group_88672] -[group_88673] -[group_88674] -[group_88675] -[group_88676] -[group_88677] -[group_88678] -[group_88679] -[group_88680] -[group_88681] -[group_88682] -[group_88683] -[group_88684] -[group_88685] -[group_88686] -[group_88687] -[group_88688] -[group_88689] -[group_88690] -[group_88691] -[group_88692] -[group_88693] -[group_88694] -[group_88695] -[group_88696] -[group_88697] -[group_88698] -[group_88699] -[group_88700] -[group_88701] -[group_88702] -[group_88703] -[group_88704] -[group_88705] -[group_88706] -[group_88707] -[group_88708] -[group_88709] -[group_88710] -[group_88711] -[group_88712] -[group_88713] -[group_88714] -[group_88715] -[group_88716] -[group_88717] -[group_88718] -[group_88719] -[group_88720] -[group_88721] -[group_88722] -[group_88723] -[group_88724] -[group_88725] -[group_88726] -[group_88727] -[group_88728] -[group_88729] -[group_88730] -[group_88731] -[group_88732] -[group_88733] -[group_88734] -[group_88735] -[group_88736] -[group_88737] -[group_88738] -[group_88739] -[group_88740] -[group_88741] -[group_88742] -[group_88743] -[group_88744] -[group_88745] -[group_88746] -[group_88747] -[group_88748] -[group_88749] -[group_88750] -[group_88751] -[group_88752] -[group_88753] -[group_88754] -[group_88755] -[group_88756] -[group_88757] -[group_88758] -[group_88759] -[group_88760] -[group_88761] -[group_88762] -[group_88763] -[group_88764] -[group_88765] -[group_88766] -[group_88767] -[group_88768] -[group_88769] -[group_88770] -[group_88771] -[group_88772] -[group_88773] -[group_88774] -[group_88775] -[group_88776] -[group_88777] -[group_88778] -[group_88779] -[group_88780] -[group_88781] -[group_88782] -[group_88783] -[group_88784] -[group_88785] -[group_88786] -[group_88787] -[group_88788] -[group_88789] -[group_88790] -[group_88791] -[group_88792] -[group_88793] -[group_88794] -[group_88795] -[group_88796] -[group_88797] -[group_88798] -[group_88799] -[group_88800] -[group_88801] -[group_88802] -[group_88803] -[group_88804] -[group_88805] -[group_88806] -[group_88807] -[group_88808] -[group_88809] -[group_88810] -[group_88811] -[group_88812] -[group_88813] -[group_88814] -[group_88815] -[group_88816] -[group_88817] -[group_88818] -[group_88819] -[group_88820] -[group_88821] -[group_88822] -[group_88823] -[group_88824] -[group_88825] -[group_88826] -[group_88827] -[group_88828] -[group_88829] -[group_88830] -[group_88831] -[group_88832] -[group_88833] -[group_88834] -[group_88835] -[group_88836] -[group_88837] -[group_88838] -[group_88839] -[group_88840] -[group_88841] -[group_88842] -[group_88843] -[group_88844] -[group_88845] -[group_88846] -[group_88847] -[group_88848] -[group_88849] -[group_88850] -[group_88851] -[group_88852] -[group_88853] -[group_88854] -[group_88855] -[group_88856] -[group_88857] -[group_88858] -[group_88859] -[group_88860] -[group_88861] -[group_88862] -[group_88863] -[group_88864] -[group_88865] -[group_88866] -[group_88867] -[group_88868] -[group_88869] -[group_88870] -[group_88871] -[group_88872] -[group_88873] -[group_88874] -[group_88875] -[group_88876] -[group_88877] -[group_88878] -[group_88879] -[group_88880] -[group_88881] -[group_88882] -[group_88883] -[group_88884] -[group_88885] -[group_88886] -[group_88887] -[group_88888] -[group_88889] -[group_88890] -[group_88891] -[group_88892] -[group_88893] -[group_88894] -[group_88895] -[group_88896] -[group_88897] -[group_88898] -[group_88899] -[group_88900] -[group_88901] -[group_88902] -[group_88903] -[group_88904] -[group_88905] -[group_88906] -[group_88907] -[group_88908] -[group_88909] -[group_88910] -[group_88911] -[group_88912] -[group_88913] -[group_88914] -[group_88915] -[group_88916] -[group_88917] -[group_88918] -[group_88919] -[group_88920] -[group_88921] -[group_88922] -[group_88923] -[group_88924] -[group_88925] -[group_88926] -[group_88927] -[group_88928] -[group_88929] -[group_88930] -[group_88931] -[group_88932] -[group_88933] -[group_88934] -[group_88935] -[group_88936] -[group_88937] -[group_88938] -[group_88939] -[group_88940] -[group_88941] -[group_88942] -[group_88943] -[group_88944] -[group_88945] -[group_88946] -[group_88947] -[group_88948] -[group_88949] -[group_88950] -[group_88951] -[group_88952] -[group_88953] -[group_88954] -[group_88955] -[group_88956] -[group_88957] -[group_88958] -[group_88959] -[group_88960] -[group_88961] -[group_88962] -[group_88963] -[group_88964] -[group_88965] -[group_88966] -[group_88967] -[group_88968] -[group_88969] -[group_88970] -[group_88971] -[group_88972] -[group_88973] -[group_88974] -[group_88975] -[group_88976] -[group_88977] -[group_88978] -[group_88979] -[group_88980] -[group_88981] -[group_88982] -[group_88983] -[group_88984] -[group_88985] -[group_88986] -[group_88987] -[group_88988] -[group_88989] -[group_88990] -[group_88991] -[group_88992] -[group_88993] -[group_88994] -[group_88995] -[group_88996] -[group_88997] -[group_88998] -[group_88999] -[group_89000] -[group_89001] -[group_89002] -[group_89003] -[group_89004] -[group_89005] -[group_89006] -[group_89007] -[group_89008] -[group_89009] -[group_89010] -[group_89011] -[group_89012] -[group_89013] -[group_89014] -[group_89015] -[group_89016] -[group_89017] -[group_89018] -[group_89019] -[group_89020] -[group_89021] -[group_89022] -[group_89023] -[group_89024] -[group_89025] -[group_89026] -[group_89027] -[group_89028] -[group_89029] -[group_89030] -[group_89031] -[group_89032] -[group_89033] -[group_89034] -[group_89035] -[group_89036] -[group_89037] -[group_89038] -[group_89039] -[group_89040] -[group_89041] -[group_89042] -[group_89043] -[group_89044] -[group_89045] -[group_89046] -[group_89047] -[group_89048] -[group_89049] -[group_89050] -[group_89051] -[group_89052] -[group_89053] -[group_89054] -[group_89055] -[group_89056] -[group_89057] -[group_89058] -[group_89059] -[group_89060] -[group_89061] -[group_89062] -[group_89063] -[group_89064] -[group_89065] -[group_89066] -[group_89067] -[group_89068] -[group_89069] -[group_89070] -[group_89071] -[group_89072] -[group_89073] -[group_89074] -[group_89075] -[group_89076] -[group_89077] -[group_89078] -[group_89079] -[group_89080] -[group_89081] -[group_89082] -[group_89083] -[group_89084] -[group_89085] -[group_89086] -[group_89087] -[group_89088] -[group_89089] -[group_89090] -[group_89091] -[group_89092] -[group_89093] -[group_89094] -[group_89095] -[group_89096] -[group_89097] -[group_89098] -[group_89099] -[group_89100] -[group_89101] -[group_89102] -[group_89103] -[group_89104] -[group_89105] -[group_89106] -[group_89107] -[group_89108] -[group_89109] -[group_89110] -[group_89111] -[group_89112] -[group_89113] -[group_89114] -[group_89115] -[group_89116] -[group_89117] -[group_89118] -[group_89119] -[group_89120] -[group_89121] -[group_89122] -[group_89123] -[group_89124] -[group_89125] -[group_89126] -[group_89127] -[group_89128] -[group_89129] -[group_89130] -[group_89131] -[group_89132] -[group_89133] -[group_89134] -[group_89135] -[group_89136] -[group_89137] -[group_89138] -[group_89139] -[group_89140] -[group_89141] -[group_89142] -[group_89143] -[group_89144] -[group_89145] -[group_89146] -[group_89147] -[group_89148] -[group_89149] -[group_89150] -[group_89151] -[group_89152] -[group_89153] -[group_89154] -[group_89155] -[group_89156] -[group_89157] -[group_89158] -[group_89159] -[group_89160] -[group_89161] -[group_89162] -[group_89163] -[group_89164] -[group_89165] -[group_89166] -[group_89167] -[group_89168] -[group_89169] -[group_89170] -[group_89171] -[group_89172] -[group_89173] -[group_89174] -[group_89175] -[group_89176] -[group_89177] -[group_89178] -[group_89179] -[group_89180] -[group_89181] -[group_89182] -[group_89183] -[group_89184] -[group_89185] -[group_89186] -[group_89187] -[group_89188] -[group_89189] -[group_89190] -[group_89191] -[group_89192] -[group_89193] -[group_89194] -[group_89195] -[group_89196] -[group_89197] -[group_89198] -[group_89199] -[group_89200] -[group_89201] -[group_89202] -[group_89203] -[group_89204] -[group_89205] -[group_89206] -[group_89207] -[group_89208] -[group_89209] -[group_89210] -[group_89211] -[group_89212] -[group_89213] -[group_89214] -[group_89215] -[group_89216] -[group_89217] -[group_89218] -[group_89219] -[group_89220] -[group_89221] -[group_89222] -[group_89223] -[group_89224] -[group_89225] -[group_89226] -[group_89227] -[group_89228] -[group_89229] -[group_89230] -[group_89231] -[group_89232] -[group_89233] -[group_89234] -[group_89235] -[group_89236] -[group_89237] -[group_89238] -[group_89239] -[group_89240] -[group_89241] -[group_89242] -[group_89243] -[group_89244] -[group_89245] -[group_89246] -[group_89247] -[group_89248] -[group_89249] -[group_89250] -[group_89251] -[group_89252] -[group_89253] -[group_89254] -[group_89255] -[group_89256] -[group_89257] -[group_89258] -[group_89259] -[group_89260] -[group_89261] -[group_89262] -[group_89263] -[group_89264] -[group_89265] -[group_89266] -[group_89267] -[group_89268] -[group_89269] -[group_89270] -[group_89271] -[group_89272] -[group_89273] -[group_89274] -[group_89275] -[group_89276] -[group_89277] -[group_89278] -[group_89279] -[group_89280] -[group_89281] -[group_89282] -[group_89283] -[group_89284] -[group_89285] -[group_89286] -[group_89287] -[group_89288] -[group_89289] -[group_89290] -[group_89291] -[group_89292] -[group_89293] -[group_89294] -[group_89295] -[group_89296] -[group_89297] -[group_89298] -[group_89299] -[group_89300] -[group_89301] -[group_89302] -[group_89303] -[group_89304] -[group_89305] -[group_89306] -[group_89307] -[group_89308] -[group_89309] -[group_89310] -[group_89311] -[group_89312] -[group_89313] -[group_89314] -[group_89315] -[group_89316] -[group_89317] -[group_89318] -[group_89319] -[group_89320] -[group_89321] -[group_89322] -[group_89323] -[group_89324] -[group_89325] -[group_89326] -[group_89327] -[group_89328] -[group_89329] -[group_89330] -[group_89331] -[group_89332] -[group_89333] -[group_89334] -[group_89335] -[group_89336] -[group_89337] -[group_89338] -[group_89339] -[group_89340] -[group_89341] -[group_89342] -[group_89343] -[group_89344] -[group_89345] -[group_89346] -[group_89347] -[group_89348] -[group_89349] -[group_89350] -[group_89351] -[group_89352] -[group_89353] -[group_89354] -[group_89355] -[group_89356] -[group_89357] -[group_89358] -[group_89359] -[group_89360] -[group_89361] -[group_89362] -[group_89363] -[group_89364] -[group_89365] -[group_89366] -[group_89367] -[group_89368] -[group_89369] -[group_89370] -[group_89371] -[group_89372] -[group_89373] -[group_89374] -[group_89375] -[group_89376] -[group_89377] -[group_89378] -[group_89379] -[group_89380] -[group_89381] -[group_89382] -[group_89383] -[group_89384] -[group_89385] -[group_89386] -[group_89387] -[group_89388] -[group_89389] -[group_89390] -[group_89391] -[group_89392] -[group_89393] -[group_89394] -[group_89395] -[group_89396] -[group_89397] -[group_89398] -[group_89399] -[group_89400] -[group_89401] -[group_89402] -[group_89403] -[group_89404] -[group_89405] -[group_89406] -[group_89407] -[group_89408] -[group_89409] -[group_89410] -[group_89411] -[group_89412] -[group_89413] -[group_89414] -[group_89415] -[group_89416] -[group_89417] -[group_89418] -[group_89419] -[group_89420] -[group_89421] -[group_89422] -[group_89423] -[group_89424] -[group_89425] -[group_89426] -[group_89427] -[group_89428] -[group_89429] -[group_89430] -[group_89431] -[group_89432] -[group_89433] -[group_89434] -[group_89435] -[group_89436] -[group_89437] -[group_89438] -[group_89439] -[group_89440] -[group_89441] -[group_89442] -[group_89443] -[group_89444] -[group_89445] -[group_89446] -[group_89447] -[group_89448] -[group_89449] -[group_89450] -[group_89451] -[group_89452] -[group_89453] -[group_89454] -[group_89455] -[group_89456] -[group_89457] -[group_89458] -[group_89459] -[group_89460] -[group_89461] -[group_89462] -[group_89463] -[group_89464] -[group_89465] -[group_89466] -[group_89467] -[group_89468] -[group_89469] -[group_89470] -[group_89471] -[group_89472] -[group_89473] -[group_89474] -[group_89475] -[group_89476] -[group_89477] -[group_89478] -[group_89479] -[group_89480] -[group_89481] -[group_89482] -[group_89483] -[group_89484] -[group_89485] -[group_89486] -[group_89487] -[group_89488] -[group_89489] -[group_89490] -[group_89491] -[group_89492] -[group_89493] -[group_89494] -[group_89495] -[group_89496] -[group_89497] -[group_89498] -[group_89499] -[group_89500] -[group_89501] -[group_89502] -[group_89503] -[group_89504] -[group_89505] -[group_89506] -[group_89507] -[group_89508] -[group_89509] -[group_89510] -[group_89511] -[group_89512] -[group_89513] -[group_89514] -[group_89515] -[group_89516] -[group_89517] -[group_89518] -[group_89519] -[group_89520] -[group_89521] -[group_89522] -[group_89523] -[group_89524] -[group_89525] -[group_89526] -[group_89527] -[group_89528] -[group_89529] -[group_89530] -[group_89531] -[group_89532] -[group_89533] -[group_89534] -[group_89535] -[group_89536] -[group_89537] -[group_89538] -[group_89539] -[group_89540] -[group_89541] -[group_89542] -[group_89543] -[group_89544] -[group_89545] -[group_89546] -[group_89547] -[group_89548] -[group_89549] -[group_89550] -[group_89551] -[group_89552] -[group_89553] -[group_89554] -[group_89555] -[group_89556] -[group_89557] -[group_89558] -[group_89559] -[group_89560] -[group_89561] -[group_89562] -[group_89563] -[group_89564] -[group_89565] -[group_89566] -[group_89567] -[group_89568] -[group_89569] -[group_89570] -[group_89571] -[group_89572] -[group_89573] -[group_89574] -[group_89575] -[group_89576] -[group_89577] -[group_89578] -[group_89579] -[group_89580] -[group_89581] -[group_89582] -[group_89583] -[group_89584] -[group_89585] -[group_89586] -[group_89587] -[group_89588] -[group_89589] -[group_89590] -[group_89591] -[group_89592] -[group_89593] -[group_89594] -[group_89595] -[group_89596] -[group_89597] -[group_89598] -[group_89599] -[group_89600] -[group_89601] -[group_89602] -[group_89603] -[group_89604] -[group_89605] -[group_89606] -[group_89607] -[group_89608] -[group_89609] -[group_89610] -[group_89611] -[group_89612] -[group_89613] -[group_89614] -[group_89615] -[group_89616] -[group_89617] -[group_89618] -[group_89619] -[group_89620] -[group_89621] -[group_89622] -[group_89623] -[group_89624] -[group_89625] -[group_89626] -[group_89627] -[group_89628] -[group_89629] -[group_89630] -[group_89631] -[group_89632] -[group_89633] -[group_89634] -[group_89635] -[group_89636] -[group_89637] -[group_89638] -[group_89639] -[group_89640] -[group_89641] -[group_89642] -[group_89643] -[group_89644] -[group_89645] -[group_89646] -[group_89647] -[group_89648] -[group_89649] -[group_89650] -[group_89651] -[group_89652] -[group_89653] -[group_89654] -[group_89655] -[group_89656] -[group_89657] -[group_89658] -[group_89659] -[group_89660] -[group_89661] -[group_89662] -[group_89663] -[group_89664] -[group_89665] -[group_89666] -[group_89667] -[group_89668] -[group_89669] -[group_89670] -[group_89671] -[group_89672] -[group_89673] -[group_89674] -[group_89675] -[group_89676] -[group_89677] -[group_89678] -[group_89679] -[group_89680] -[group_89681] -[group_89682] -[group_89683] -[group_89684] -[group_89685] -[group_89686] -[group_89687] -[group_89688] -[group_89689] -[group_89690] -[group_89691] -[group_89692] -[group_89693] -[group_89694] -[group_89695] -[group_89696] -[group_89697] -[group_89698] -[group_89699] -[group_89700] -[group_89701] -[group_89702] -[group_89703] -[group_89704] -[group_89705] -[group_89706] -[group_89707] -[group_89708] -[group_89709] -[group_89710] -[group_89711] -[group_89712] -[group_89713] -[group_89714] -[group_89715] -[group_89716] -[group_89717] -[group_89718] -[group_89719] -[group_89720] -[group_89721] -[group_89722] -[group_89723] -[group_89724] -[group_89725] -[group_89726] -[group_89727] -[group_89728] -[group_89729] -[group_89730] -[group_89731] -[group_89732] -[group_89733] -[group_89734] -[group_89735] -[group_89736] -[group_89737] -[group_89738] -[group_89739] -[group_89740] -[group_89741] -[group_89742] -[group_89743] -[group_89744] -[group_89745] -[group_89746] -[group_89747] -[group_89748] -[group_89749] -[group_89750] -[group_89751] -[group_89752] -[group_89753] -[group_89754] -[group_89755] -[group_89756] -[group_89757] -[group_89758] -[group_89759] -[group_89760] -[group_89761] -[group_89762] -[group_89763] -[group_89764] -[group_89765] -[group_89766] -[group_89767] -[group_89768] -[group_89769] -[group_89770] -[group_89771] -[group_89772] -[group_89773] -[group_89774] -[group_89775] -[group_89776] -[group_89777] -[group_89778] -[group_89779] -[group_89780] -[group_89781] -[group_89782] -[group_89783] -[group_89784] -[group_89785] -[group_89786] -[group_89787] -[group_89788] -[group_89789] -[group_89790] -[group_89791] -[group_89792] -[group_89793] -[group_89794] -[group_89795] -[group_89796] -[group_89797] -[group_89798] -[group_89799] -[group_89800] -[group_89801] -[group_89802] -[group_89803] -[group_89804] -[group_89805] -[group_89806] -[group_89807] -[group_89808] -[group_89809] -[group_89810] -[group_89811] -[group_89812] -[group_89813] -[group_89814] -[group_89815] -[group_89816] -[group_89817] -[group_89818] -[group_89819] -[group_89820] -[group_89821] -[group_89822] -[group_89823] -[group_89824] -[group_89825] -[group_89826] -[group_89827] -[group_89828] -[group_89829] -[group_89830] -[group_89831] -[group_89832] -[group_89833] -[group_89834] -[group_89835] -[group_89836] -[group_89837] -[group_89838] -[group_89839] -[group_89840] -[group_89841] -[group_89842] -[group_89843] -[group_89844] -[group_89845] -[group_89846] -[group_89847] -[group_89848] -[group_89849] -[group_89850] -[group_89851] -[group_89852] -[group_89853] -[group_89854] -[group_89855] -[group_89856] -[group_89857] -[group_89858] -[group_89859] -[group_89860] -[group_89861] -[group_89862] -[group_89863] -[group_89864] -[group_89865] -[group_89866] -[group_89867] -[group_89868] -[group_89869] -[group_89870] -[group_89871] -[group_89872] -[group_89873] -[group_89874] -[group_89875] -[group_89876] -[group_89877] -[group_89878] -[group_89879] -[group_89880] -[group_89881] -[group_89882] -[group_89883] -[group_89884] -[group_89885] -[group_89886] -[group_89887] -[group_89888] -[group_89889] -[group_89890] -[group_89891] -[group_89892] -[group_89893] -[group_89894] -[group_89895] -[group_89896] -[group_89897] -[group_89898] -[group_89899] -[group_89900] -[group_89901] -[group_89902] -[group_89903] -[group_89904] -[group_89905] -[group_89906] -[group_89907] -[group_89908] -[group_89909] -[group_89910] -[group_89911] -[group_89912] -[group_89913] -[group_89914] -[group_89915] -[group_89916] -[group_89917] -[group_89918] -[group_89919] -[group_89920] -[group_89921] -[group_89922] -[group_89923] -[group_89924] -[group_89925] -[group_89926] -[group_89927] -[group_89928] -[group_89929] -[group_89930] -[group_89931] -[group_89932] -[group_89933] -[group_89934] -[group_89935] -[group_89936] -[group_89937] -[group_89938] -[group_89939] -[group_89940] -[group_89941] -[group_89942] -[group_89943] -[group_89944] -[group_89945] -[group_89946] -[group_89947] -[group_89948] -[group_89949] -[group_89950] -[group_89951] -[group_89952] -[group_89953] -[group_89954] -[group_89955] -[group_89956] -[group_89957] -[group_89958] -[group_89959] -[group_89960] -[group_89961] -[group_89962] -[group_89963] -[group_89964] -[group_89965] -[group_89966] -[group_89967] -[group_89968] -[group_89969] -[group_89970] -[group_89971] -[group_89972] -[group_89973] -[group_89974] -[group_89975] -[group_89976] -[group_89977] -[group_89978] -[group_89979] -[group_89980] -[group_89981] -[group_89982] -[group_89983] -[group_89984] -[group_89985] -[group_89986] -[group_89987] -[group_89988] -[group_89989] -[group_89990] -[group_89991] -[group_89992] -[group_89993] -[group_89994] -[group_89995] -[group_89996] -[group_89997] -[group_89998] -[group_89999] -[group_90000] -[group_90001] -[group_90002] -[group_90003] -[group_90004] -[group_90005] -[group_90006] -[group_90007] -[group_90008] -[group_90009] -[group_90010] -[group_90011] -[group_90012] -[group_90013] -[group_90014] -[group_90015] -[group_90016] -[group_90017] -[group_90018] -[group_90019] -[group_90020] -[group_90021] -[group_90022] -[group_90023] -[group_90024] -[group_90025] -[group_90026] -[group_90027] -[group_90028] -[group_90029] -[group_90030] -[group_90031] -[group_90032] -[group_90033] -[group_90034] -[group_90035] -[group_90036] -[group_90037] -[group_90038] -[group_90039] -[group_90040] -[group_90041] -[group_90042] -[group_90043] -[group_90044] -[group_90045] -[group_90046] -[group_90047] -[group_90048] -[group_90049] -[group_90050] -[group_90051] -[group_90052] -[group_90053] -[group_90054] -[group_90055] -[group_90056] -[group_90057] -[group_90058] -[group_90059] -[group_90060] -[group_90061] -[group_90062] -[group_90063] -[group_90064] -[group_90065] -[group_90066] -[group_90067] -[group_90068] -[group_90069] -[group_90070] -[group_90071] -[group_90072] -[group_90073] -[group_90074] -[group_90075] -[group_90076] -[group_90077] -[group_90078] -[group_90079] -[group_90080] -[group_90081] -[group_90082] -[group_90083] -[group_90084] -[group_90085] -[group_90086] -[group_90087] -[group_90088] -[group_90089] -[group_90090] -[group_90091] -[group_90092] -[group_90093] -[group_90094] -[group_90095] -[group_90096] -[group_90097] -[group_90098] -[group_90099] -[group_90100] -[group_90101] -[group_90102] -[group_90103] -[group_90104] -[group_90105] -[group_90106] -[group_90107] -[group_90108] -[group_90109] -[group_90110] -[group_90111] -[group_90112] -[group_90113] -[group_90114] -[group_90115] -[group_90116] -[group_90117] -[group_90118] -[group_90119] -[group_90120] -[group_90121] -[group_90122] -[group_90123] -[group_90124] -[group_90125] -[group_90126] -[group_90127] -[group_90128] -[group_90129] -[group_90130] -[group_90131] -[group_90132] -[group_90133] -[group_90134] -[group_90135] -[group_90136] -[group_90137] -[group_90138] -[group_90139] -[group_90140] -[group_90141] -[group_90142] -[group_90143] -[group_90144] -[group_90145] -[group_90146] -[group_90147] -[group_90148] -[group_90149] -[group_90150] -[group_90151] -[group_90152] -[group_90153] -[group_90154] -[group_90155] -[group_90156] -[group_90157] -[group_90158] -[group_90159] -[group_90160] -[group_90161] -[group_90162] -[group_90163] -[group_90164] -[group_90165] -[group_90166] -[group_90167] -[group_90168] -[group_90169] -[group_90170] -[group_90171] -[group_90172] -[group_90173] -[group_90174] -[group_90175] -[group_90176] -[group_90177] -[group_90178] -[group_90179] -[group_90180] -[group_90181] -[group_90182] -[group_90183] -[group_90184] -[group_90185] -[group_90186] -[group_90187] -[group_90188] -[group_90189] -[group_90190] -[group_90191] -[group_90192] -[group_90193] -[group_90194] -[group_90195] -[group_90196] -[group_90197] -[group_90198] -[group_90199] -[group_90200] -[group_90201] -[group_90202] -[group_90203] -[group_90204] -[group_90205] -[group_90206] -[group_90207] -[group_90208] -[group_90209] -[group_90210] -[group_90211] -[group_90212] -[group_90213] -[group_90214] -[group_90215] -[group_90216] -[group_90217] -[group_90218] -[group_90219] -[group_90220] -[group_90221] -[group_90222] -[group_90223] -[group_90224] -[group_90225] -[group_90226] -[group_90227] -[group_90228] -[group_90229] -[group_90230] -[group_90231] -[group_90232] -[group_90233] -[group_90234] -[group_90235] -[group_90236] -[group_90237] -[group_90238] -[group_90239] -[group_90240] -[group_90241] -[group_90242] -[group_90243] -[group_90244] -[group_90245] -[group_90246] -[group_90247] -[group_90248] -[group_90249] -[group_90250] -[group_90251] -[group_90252] -[group_90253] -[group_90254] -[group_90255] -[group_90256] -[group_90257] -[group_90258] -[group_90259] -[group_90260] -[group_90261] -[group_90262] -[group_90263] -[group_90264] -[group_90265] -[group_90266] -[group_90267] -[group_90268] -[group_90269] -[group_90270] -[group_90271] -[group_90272] -[group_90273] -[group_90274] -[group_90275] -[group_90276] -[group_90277] -[group_90278] -[group_90279] -[group_90280] -[group_90281] -[group_90282] -[group_90283] -[group_90284] -[group_90285] -[group_90286] -[group_90287] -[group_90288] -[group_90289] -[group_90290] -[group_90291] -[group_90292] -[group_90293] -[group_90294] -[group_90295] -[group_90296] -[group_90297] -[group_90298] -[group_90299] -[group_90300] -[group_90301] -[group_90302] -[group_90303] -[group_90304] -[group_90305] -[group_90306] -[group_90307] -[group_90308] -[group_90309] -[group_90310] -[group_90311] -[group_90312] -[group_90313] -[group_90314] -[group_90315] -[group_90316] -[group_90317] -[group_90318] -[group_90319] -[group_90320] -[group_90321] -[group_90322] -[group_90323] -[group_90324] -[group_90325] -[group_90326] -[group_90327] -[group_90328] -[group_90329] -[group_90330] -[group_90331] -[group_90332] -[group_90333] -[group_90334] -[group_90335] -[group_90336] -[group_90337] -[group_90338] -[group_90339] -[group_90340] -[group_90341] -[group_90342] -[group_90343] -[group_90344] -[group_90345] -[group_90346] -[group_90347] -[group_90348] -[group_90349] -[group_90350] -[group_90351] -[group_90352] -[group_90353] -[group_90354] -[group_90355] -[group_90356] -[group_90357] -[group_90358] -[group_90359] -[group_90360] -[group_90361] -[group_90362] -[group_90363] -[group_90364] -[group_90365] -[group_90366] -[group_90367] -[group_90368] -[group_90369] -[group_90370] -[group_90371] -[group_90372] -[group_90373] -[group_90374] -[group_90375] -[group_90376] -[group_90377] -[group_90378] -[group_90379] -[group_90380] -[group_90381] -[group_90382] -[group_90383] -[group_90384] -[group_90385] -[group_90386] -[group_90387] -[group_90388] -[group_90389] -[group_90390] -[group_90391] -[group_90392] -[group_90393] -[group_90394] -[group_90395] -[group_90396] -[group_90397] -[group_90398] -[group_90399] -[group_90400] -[group_90401] -[group_90402] -[group_90403] -[group_90404] -[group_90405] -[group_90406] -[group_90407] -[group_90408] -[group_90409] -[group_90410] -[group_90411] -[group_90412] -[group_90413] -[group_90414] -[group_90415] -[group_90416] -[group_90417] -[group_90418] -[group_90419] -[group_90420] -[group_90421] -[group_90422] -[group_90423] -[group_90424] -[group_90425] -[group_90426] -[group_90427] -[group_90428] -[group_90429] -[group_90430] -[group_90431] -[group_90432] -[group_90433] -[group_90434] -[group_90435] -[group_90436] -[group_90437] -[group_90438] -[group_90439] -[group_90440] -[group_90441] -[group_90442] -[group_90443] -[group_90444] -[group_90445] -[group_90446] -[group_90447] -[group_90448] -[group_90449] -[group_90450] -[group_90451] -[group_90452] -[group_90453] -[group_90454] -[group_90455] -[group_90456] -[group_90457] -[group_90458] -[group_90459] -[group_90460] -[group_90461] -[group_90462] -[group_90463] -[group_90464] -[group_90465] -[group_90466] -[group_90467] -[group_90468] -[group_90469] -[group_90470] -[group_90471] -[group_90472] -[group_90473] -[group_90474] -[group_90475] -[group_90476] -[group_90477] -[group_90478] -[group_90479] -[group_90480] -[group_90481] -[group_90482] -[group_90483] -[group_90484] -[group_90485] -[group_90486] -[group_90487] -[group_90488] -[group_90489] -[group_90490] -[group_90491] -[group_90492] -[group_90493] -[group_90494] -[group_90495] -[group_90496] -[group_90497] -[group_90498] -[group_90499] -[group_90500] -[group_90501] -[group_90502] -[group_90503] -[group_90504] -[group_90505] -[group_90506] -[group_90507] -[group_90508] -[group_90509] -[group_90510] -[group_90511] -[group_90512] -[group_90513] -[group_90514] -[group_90515] -[group_90516] -[group_90517] -[group_90518] -[group_90519] -[group_90520] -[group_90521] -[group_90522] -[group_90523] -[group_90524] -[group_90525] -[group_90526] -[group_90527] -[group_90528] -[group_90529] -[group_90530] -[group_90531] -[group_90532] -[group_90533] -[group_90534] -[group_90535] -[group_90536] -[group_90537] -[group_90538] -[group_90539] -[group_90540] -[group_90541] -[group_90542] -[group_90543] -[group_90544] -[group_90545] -[group_90546] -[group_90547] -[group_90548] -[group_90549] -[group_90550] -[group_90551] -[group_90552] -[group_90553] -[group_90554] -[group_90555] -[group_90556] -[group_90557] -[group_90558] -[group_90559] -[group_90560] -[group_90561] -[group_90562] -[group_90563] -[group_90564] -[group_90565] -[group_90566] -[group_90567] -[group_90568] -[group_90569] -[group_90570] -[group_90571] -[group_90572] -[group_90573] -[group_90574] -[group_90575] -[group_90576] -[group_90577] -[group_90578] -[group_90579] -[group_90580] -[group_90581] -[group_90582] -[group_90583] -[group_90584] -[group_90585] -[group_90586] -[group_90587] -[group_90588] -[group_90589] -[group_90590] -[group_90591] -[group_90592] -[group_90593] -[group_90594] -[group_90595] -[group_90596] -[group_90597] -[group_90598] -[group_90599] -[group_90600] -[group_90601] -[group_90602] -[group_90603] -[group_90604] -[group_90605] -[group_90606] -[group_90607] -[group_90608] -[group_90609] -[group_90610] -[group_90611] -[group_90612] -[group_90613] -[group_90614] -[group_90615] -[group_90616] -[group_90617] -[group_90618] -[group_90619] -[group_90620] -[group_90621] -[group_90622] -[group_90623] -[group_90624] -[group_90625] -[group_90626] -[group_90627] -[group_90628] -[group_90629] -[group_90630] -[group_90631] -[group_90632] -[group_90633] -[group_90634] -[group_90635] -[group_90636] -[group_90637] -[group_90638] -[group_90639] -[group_90640] -[group_90641] -[group_90642] -[group_90643] -[group_90644] -[group_90645] -[group_90646] -[group_90647] -[group_90648] -[group_90649] -[group_90650] -[group_90651] -[group_90652] -[group_90653] -[group_90654] -[group_90655] -[group_90656] -[group_90657] -[group_90658] -[group_90659] -[group_90660] -[group_90661] -[group_90662] -[group_90663] -[group_90664] -[group_90665] -[group_90666] -[group_90667] -[group_90668] -[group_90669] -[group_90670] -[group_90671] -[group_90672] -[group_90673] -[group_90674] -[group_90675] -[group_90676] -[group_90677] -[group_90678] -[group_90679] -[group_90680] -[group_90681] -[group_90682] -[group_90683] -[group_90684] -[group_90685] -[group_90686] -[group_90687] -[group_90688] -[group_90689] -[group_90690] -[group_90691] -[group_90692] -[group_90693] -[group_90694] -[group_90695] -[group_90696] -[group_90697] -[group_90698] -[group_90699] -[group_90700] -[group_90701] -[group_90702] -[group_90703] -[group_90704] -[group_90705] -[group_90706] -[group_90707] -[group_90708] -[group_90709] -[group_90710] -[group_90711] -[group_90712] -[group_90713] -[group_90714] -[group_90715] -[group_90716] -[group_90717] -[group_90718] -[group_90719] -[group_90720] -[group_90721] -[group_90722] -[group_90723] -[group_90724] -[group_90725] -[group_90726] -[group_90727] -[group_90728] -[group_90729] -[group_90730] -[group_90731] -[group_90732] -[group_90733] -[group_90734] -[group_90735] -[group_90736] -[group_90737] -[group_90738] -[group_90739] -[group_90740] -[group_90741] -[group_90742] -[group_90743] -[group_90744] -[group_90745] -[group_90746] -[group_90747] -[group_90748] -[group_90749] -[group_90750] -[group_90751] -[group_90752] -[group_90753] -[group_90754] -[group_90755] -[group_90756] -[group_90757] -[group_90758] -[group_90759] -[group_90760] -[group_90761] -[group_90762] -[group_90763] -[group_90764] -[group_90765] -[group_90766] -[group_90767] -[group_90768] -[group_90769] -[group_90770] -[group_90771] -[group_90772] -[group_90773] -[group_90774] -[group_90775] -[group_90776] -[group_90777] -[group_90778] -[group_90779] -[group_90780] -[group_90781] -[group_90782] -[group_90783] -[group_90784] -[group_90785] -[group_90786] -[group_90787] -[group_90788] -[group_90789] -[group_90790] -[group_90791] -[group_90792] -[group_90793] -[group_90794] -[group_90795] -[group_90796] -[group_90797] -[group_90798] -[group_90799] -[group_90800] -[group_90801] -[group_90802] -[group_90803] -[group_90804] -[group_90805] -[group_90806] -[group_90807] -[group_90808] -[group_90809] -[group_90810] -[group_90811] -[group_90812] -[group_90813] -[group_90814] -[group_90815] -[group_90816] -[group_90817] -[group_90818] -[group_90819] -[group_90820] -[group_90821] -[group_90822] -[group_90823] -[group_90824] -[group_90825] -[group_90826] -[group_90827] -[group_90828] -[group_90829] -[group_90830] -[group_90831] -[group_90832] -[group_90833] -[group_90834] -[group_90835] -[group_90836] -[group_90837] -[group_90838] -[group_90839] -[group_90840] -[group_90841] -[group_90842] -[group_90843] -[group_90844] -[group_90845] -[group_90846] -[group_90847] -[group_90848] -[group_90849] -[group_90850] -[group_90851] -[group_90852] -[group_90853] -[group_90854] -[group_90855] -[group_90856] -[group_90857] -[group_90858] -[group_90859] -[group_90860] -[group_90861] -[group_90862] -[group_90863] -[group_90864] -[group_90865] -[group_90866] -[group_90867] -[group_90868] -[group_90869] -[group_90870] -[group_90871] -[group_90872] -[group_90873] -[group_90874] -[group_90875] -[group_90876] -[group_90877] -[group_90878] -[group_90879] -[group_90880] -[group_90881] -[group_90882] -[group_90883] -[group_90884] -[group_90885] -[group_90886] -[group_90887] -[group_90888] -[group_90889] -[group_90890] -[group_90891] -[group_90892] -[group_90893] -[group_90894] -[group_90895] -[group_90896] -[group_90897] -[group_90898] -[group_90899] -[group_90900] -[group_90901] -[group_90902] -[group_90903] -[group_90904] -[group_90905] -[group_90906] -[group_90907] -[group_90908] -[group_90909] -[group_90910] -[group_90911] -[group_90912] -[group_90913] -[group_90914] -[group_90915] -[group_90916] -[group_90917] -[group_90918] -[group_90919] -[group_90920] -[group_90921] -[group_90922] -[group_90923] -[group_90924] -[group_90925] -[group_90926] -[group_90927] -[group_90928] -[group_90929] -[group_90930] -[group_90931] -[group_90932] -[group_90933] -[group_90934] -[group_90935] -[group_90936] -[group_90937] -[group_90938] -[group_90939] -[group_90940] -[group_90941] -[group_90942] -[group_90943] -[group_90944] -[group_90945] -[group_90946] -[group_90947] -[group_90948] -[group_90949] -[group_90950] -[group_90951] -[group_90952] -[group_90953] -[group_90954] -[group_90955] -[group_90956] -[group_90957] -[group_90958] -[group_90959] -[group_90960] -[group_90961] -[group_90962] -[group_90963] -[group_90964] -[group_90965] -[group_90966] -[group_90967] -[group_90968] -[group_90969] -[group_90970] -[group_90971] -[group_90972] -[group_90973] -[group_90974] -[group_90975] -[group_90976] -[group_90977] -[group_90978] -[group_90979] -[group_90980] -[group_90981] -[group_90982] -[group_90983] -[group_90984] -[group_90985] -[group_90986] -[group_90987] -[group_90988] -[group_90989] -[group_90990] -[group_90991] -[group_90992] -[group_90993] -[group_90994] -[group_90995] -[group_90996] -[group_90997] -[group_90998] -[group_90999] -[group_91000] -[group_91001] -[group_91002] -[group_91003] -[group_91004] -[group_91005] -[group_91006] -[group_91007] -[group_91008] -[group_91009] -[group_91010] -[group_91011] -[group_91012] -[group_91013] -[group_91014] -[group_91015] -[group_91016] -[group_91017] -[group_91018] -[group_91019] -[group_91020] -[group_91021] -[group_91022] -[group_91023] -[group_91024] -[group_91025] -[group_91026] -[group_91027] -[group_91028] -[group_91029] -[group_91030] -[group_91031] -[group_91032] -[group_91033] -[group_91034] -[group_91035] -[group_91036] -[group_91037] -[group_91038] -[group_91039] -[group_91040] -[group_91041] -[group_91042] -[group_91043] -[group_91044] -[group_91045] -[group_91046] -[group_91047] -[group_91048] -[group_91049] -[group_91050] -[group_91051] -[group_91052] -[group_91053] -[group_91054] -[group_91055] -[group_91056] -[group_91057] -[group_91058] -[group_91059] -[group_91060] -[group_91061] -[group_91062] -[group_91063] -[group_91064] -[group_91065] -[group_91066] -[group_91067] -[group_91068] -[group_91069] -[group_91070] -[group_91071] -[group_91072] -[group_91073] -[group_91074] -[group_91075] -[group_91076] -[group_91077] -[group_91078] -[group_91079] -[group_91080] -[group_91081] -[group_91082] -[group_91083] -[group_91084] -[group_91085] -[group_91086] -[group_91087] -[group_91088] -[group_91089] -[group_91090] -[group_91091] -[group_91092] -[group_91093] -[group_91094] -[group_91095] -[group_91096] -[group_91097] -[group_91098] -[group_91099] -[group_91100] -[group_91101] -[group_91102] -[group_91103] -[group_91104] -[group_91105] -[group_91106] -[group_91107] -[group_91108] -[group_91109] -[group_91110] -[group_91111] -[group_91112] -[group_91113] -[group_91114] -[group_91115] -[group_91116] -[group_91117] -[group_91118] -[group_91119] -[group_91120] -[group_91121] -[group_91122] -[group_91123] -[group_91124] -[group_91125] -[group_91126] -[group_91127] -[group_91128] -[group_91129] -[group_91130] -[group_91131] -[group_91132] -[group_91133] -[group_91134] -[group_91135] -[group_91136] -[group_91137] -[group_91138] -[group_91139] -[group_91140] -[group_91141] -[group_91142] -[group_91143] -[group_91144] -[group_91145] -[group_91146] -[group_91147] -[group_91148] -[group_91149] -[group_91150] -[group_91151] -[group_91152] -[group_91153] -[group_91154] -[group_91155] -[group_91156] -[group_91157] -[group_91158] -[group_91159] -[group_91160] -[group_91161] -[group_91162] -[group_91163] -[group_91164] -[group_91165] -[group_91166] -[group_91167] -[group_91168] -[group_91169] -[group_91170] -[group_91171] -[group_91172] -[group_91173] -[group_91174] -[group_91175] -[group_91176] -[group_91177] -[group_91178] -[group_91179] -[group_91180] -[group_91181] -[group_91182] -[group_91183] -[group_91184] -[group_91185] -[group_91186] -[group_91187] -[group_91188] -[group_91189] -[group_91190] -[group_91191] -[group_91192] -[group_91193] -[group_91194] -[group_91195] -[group_91196] -[group_91197] -[group_91198] -[group_91199] -[group_91200] -[group_91201] -[group_91202] -[group_91203] -[group_91204] -[group_91205] -[group_91206] -[group_91207] -[group_91208] -[group_91209] -[group_91210] -[group_91211] -[group_91212] -[group_91213] -[group_91214] -[group_91215] -[group_91216] -[group_91217] -[group_91218] -[group_91219] -[group_91220] -[group_91221] -[group_91222] -[group_91223] -[group_91224] -[group_91225] -[group_91226] -[group_91227] -[group_91228] -[group_91229] -[group_91230] -[group_91231] -[group_91232] -[group_91233] -[group_91234] -[group_91235] -[group_91236] -[group_91237] -[group_91238] -[group_91239] -[group_91240] -[group_91241] -[group_91242] -[group_91243] -[group_91244] -[group_91245] -[group_91246] -[group_91247] -[group_91248] -[group_91249] -[group_91250] -[group_91251] -[group_91252] -[group_91253] -[group_91254] -[group_91255] -[group_91256] -[group_91257] -[group_91258] -[group_91259] -[group_91260] -[group_91261] -[group_91262] -[group_91263] -[group_91264] -[group_91265] -[group_91266] -[group_91267] -[group_91268] -[group_91269] -[group_91270] -[group_91271] -[group_91272] -[group_91273] -[group_91274] -[group_91275] -[group_91276] -[group_91277] -[group_91278] -[group_91279] -[group_91280] -[group_91281] -[group_91282] -[group_91283] -[group_91284] -[group_91285] -[group_91286] -[group_91287] -[group_91288] -[group_91289] -[group_91290] -[group_91291] -[group_91292] -[group_91293] -[group_91294] -[group_91295] -[group_91296] -[group_91297] -[group_91298] -[group_91299] -[group_91300] -[group_91301] -[group_91302] -[group_91303] -[group_91304] -[group_91305] -[group_91306] -[group_91307] -[group_91308] -[group_91309] -[group_91310] -[group_91311] -[group_91312] -[group_91313] -[group_91314] -[group_91315] -[group_91316] -[group_91317] -[group_91318] -[group_91319] -[group_91320] -[group_91321] -[group_91322] -[group_91323] -[group_91324] -[group_91325] -[group_91326] -[group_91327] -[group_91328] -[group_91329] -[group_91330] -[group_91331] -[group_91332] -[group_91333] -[group_91334] -[group_91335] -[group_91336] -[group_91337] -[group_91338] -[group_91339] -[group_91340] -[group_91341] -[group_91342] -[group_91343] -[group_91344] -[group_91345] -[group_91346] -[group_91347] -[group_91348] -[group_91349] -[group_91350] -[group_91351] -[group_91352] -[group_91353] -[group_91354] -[group_91355] -[group_91356] -[group_91357] -[group_91358] -[group_91359] -[group_91360] -[group_91361] -[group_91362] -[group_91363] -[group_91364] -[group_91365] -[group_91366] -[group_91367] -[group_91368] -[group_91369] -[group_91370] -[group_91371] -[group_91372] -[group_91373] -[group_91374] -[group_91375] -[group_91376] -[group_91377] -[group_91378] -[group_91379] -[group_91380] -[group_91381] -[group_91382] -[group_91383] -[group_91384] -[group_91385] -[group_91386] -[group_91387] -[group_91388] -[group_91389] -[group_91390] -[group_91391] -[group_91392] -[group_91393] -[group_91394] -[group_91395] -[group_91396] -[group_91397] -[group_91398] -[group_91399] -[group_91400] -[group_91401] -[group_91402] -[group_91403] -[group_91404] -[group_91405] -[group_91406] -[group_91407] -[group_91408] -[group_91409] -[group_91410] -[group_91411] -[group_91412] -[group_91413] -[group_91414] -[group_91415] -[group_91416] -[group_91417] -[group_91418] -[group_91419] -[group_91420] -[group_91421] -[group_91422] -[group_91423] -[group_91424] -[group_91425] -[group_91426] -[group_91427] -[group_91428] -[group_91429] -[group_91430] -[group_91431] -[group_91432] -[group_91433] -[group_91434] -[group_91435] -[group_91436] -[group_91437] -[group_91438] -[group_91439] -[group_91440] -[group_91441] -[group_91442] -[group_91443] -[group_91444] -[group_91445] -[group_91446] -[group_91447] -[group_91448] -[group_91449] -[group_91450] -[group_91451] -[group_91452] -[group_91453] -[group_91454] -[group_91455] -[group_91456] -[group_91457] -[group_91458] -[group_91459] -[group_91460] -[group_91461] -[group_91462] -[group_91463] -[group_91464] -[group_91465] -[group_91466] -[group_91467] -[group_91468] -[group_91469] -[group_91470] -[group_91471] -[group_91472] -[group_91473] -[group_91474] -[group_91475] -[group_91476] -[group_91477] -[group_91478] -[group_91479] -[group_91480] -[group_91481] -[group_91482] -[group_91483] -[group_91484] -[group_91485] -[group_91486] -[group_91487] -[group_91488] -[group_91489] -[group_91490] -[group_91491] -[group_91492] -[group_91493] -[group_91494] -[group_91495] -[group_91496] -[group_91497] -[group_91498] -[group_91499] -[group_91500] -[group_91501] -[group_91502] -[group_91503] -[group_91504] -[group_91505] -[group_91506] -[group_91507] -[group_91508] -[group_91509] -[group_91510] -[group_91511] -[group_91512] -[group_91513] -[group_91514] -[group_91515] -[group_91516] -[group_91517] -[group_91518] -[group_91519] -[group_91520] -[group_91521] -[group_91522] -[group_91523] -[group_91524] -[group_91525] -[group_91526] -[group_91527] -[group_91528] -[group_91529] -[group_91530] -[group_91531] -[group_91532] -[group_91533] -[group_91534] -[group_91535] -[group_91536] -[group_91537] -[group_91538] -[group_91539] -[group_91540] -[group_91541] -[group_91542] -[group_91543] -[group_91544] -[group_91545] -[group_91546] -[group_91547] -[group_91548] -[group_91549] -[group_91550] -[group_91551] -[group_91552] -[group_91553] -[group_91554] -[group_91555] -[group_91556] -[group_91557] -[group_91558] -[group_91559] -[group_91560] -[group_91561] -[group_91562] -[group_91563] -[group_91564] -[group_91565] -[group_91566] -[group_91567] -[group_91568] -[group_91569] -[group_91570] -[group_91571] -[group_91572] -[group_91573] -[group_91574] -[group_91575] -[group_91576] -[group_91577] -[group_91578] -[group_91579] -[group_91580] -[group_91581] -[group_91582] -[group_91583] -[group_91584] -[group_91585] -[group_91586] -[group_91587] -[group_91588] -[group_91589] -[group_91590] -[group_91591] -[group_91592] -[group_91593] -[group_91594] -[group_91595] -[group_91596] -[group_91597] -[group_91598] -[group_91599] -[group_91600] -[group_91601] -[group_91602] -[group_91603] -[group_91604] -[group_91605] -[group_91606] -[group_91607] -[group_91608] -[group_91609] -[group_91610] -[group_91611] -[group_91612] -[group_91613] -[group_91614] -[group_91615] -[group_91616] -[group_91617] -[group_91618] -[group_91619] -[group_91620] -[group_91621] -[group_91622] -[group_91623] -[group_91624] -[group_91625] -[group_91626] -[group_91627] -[group_91628] -[group_91629] -[group_91630] -[group_91631] -[group_91632] -[group_91633] -[group_91634] -[group_91635] -[group_91636] -[group_91637] -[group_91638] -[group_91639] -[group_91640] -[group_91641] -[group_91642] -[group_91643] -[group_91644] -[group_91645] -[group_91646] -[group_91647] -[group_91648] -[group_91649] -[group_91650] -[group_91651] -[group_91652] -[group_91653] -[group_91654] -[group_91655] -[group_91656] -[group_91657] -[group_91658] -[group_91659] -[group_91660] -[group_91661] -[group_91662] -[group_91663] -[group_91664] -[group_91665] -[group_91666] -[group_91667] -[group_91668] -[group_91669] -[group_91670] -[group_91671] -[group_91672] -[group_91673] -[group_91674] -[group_91675] -[group_91676] -[group_91677] -[group_91678] -[group_91679] -[group_91680] -[group_91681] -[group_91682] -[group_91683] -[group_91684] -[group_91685] -[group_91686] -[group_91687] -[group_91688] -[group_91689] -[group_91690] -[group_91691] -[group_91692] -[group_91693] -[group_91694] -[group_91695] -[group_91696] -[group_91697] -[group_91698] -[group_91699] -[group_91700] -[group_91701] -[group_91702] -[group_91703] -[group_91704] -[group_91705] -[group_91706] -[group_91707] -[group_91708] -[group_91709] -[group_91710] -[group_91711] -[group_91712] -[group_91713] -[group_91714] -[group_91715] -[group_91716] -[group_91717] -[group_91718] -[group_91719] -[group_91720] -[group_91721] -[group_91722] -[group_91723] -[group_91724] -[group_91725] -[group_91726] -[group_91727] -[group_91728] -[group_91729] -[group_91730] -[group_91731] -[group_91732] -[group_91733] -[group_91734] -[group_91735] -[group_91736] -[group_91737] -[group_91738] -[group_91739] -[group_91740] -[group_91741] -[group_91742] -[group_91743] -[group_91744] -[group_91745] -[group_91746] -[group_91747] -[group_91748] -[group_91749] -[group_91750] -[group_91751] -[group_91752] -[group_91753] -[group_91754] -[group_91755] -[group_91756] -[group_91757] -[group_91758] -[group_91759] -[group_91760] -[group_91761] -[group_91762] -[group_91763] -[group_91764] -[group_91765] -[group_91766] -[group_91767] -[group_91768] -[group_91769] -[group_91770] -[group_91771] -[group_91772] -[group_91773] -[group_91774] -[group_91775] -[group_91776] -[group_91777] -[group_91778] -[group_91779] -[group_91780] -[group_91781] -[group_91782] -[group_91783] -[group_91784] -[group_91785] -[group_91786] -[group_91787] -[group_91788] -[group_91789] -[group_91790] -[group_91791] -[group_91792] -[group_91793] -[group_91794] -[group_91795] -[group_91796] -[group_91797] -[group_91798] -[group_91799] -[group_91800] -[group_91801] -[group_91802] -[group_91803] -[group_91804] -[group_91805] -[group_91806] -[group_91807] -[group_91808] -[group_91809] -[group_91810] -[group_91811] -[group_91812] -[group_91813] -[group_91814] -[group_91815] -[group_91816] -[group_91817] -[group_91818] -[group_91819] -[group_91820] -[group_91821] -[group_91822] -[group_91823] -[group_91824] -[group_91825] -[group_91826] -[group_91827] -[group_91828] -[group_91829] -[group_91830] -[group_91831] -[group_91832] -[group_91833] -[group_91834] -[group_91835] -[group_91836] -[group_91837] -[group_91838] -[group_91839] -[group_91840] -[group_91841] -[group_91842] -[group_91843] -[group_91844] -[group_91845] -[group_91846] -[group_91847] -[group_91848] -[group_91849] -[group_91850] -[group_91851] -[group_91852] -[group_91853] -[group_91854] -[group_91855] -[group_91856] -[group_91857] -[group_91858] -[group_91859] -[group_91860] -[group_91861] -[group_91862] -[group_91863] -[group_91864] -[group_91865] -[group_91866] -[group_91867] -[group_91868] -[group_91869] -[group_91870] -[group_91871] -[group_91872] -[group_91873] -[group_91874] -[group_91875] -[group_91876] -[group_91877] -[group_91878] -[group_91879] -[group_91880] -[group_91881] -[group_91882] -[group_91883] -[group_91884] -[group_91885] -[group_91886] -[group_91887] -[group_91888] -[group_91889] -[group_91890] -[group_91891] -[group_91892] -[group_91893] -[group_91894] -[group_91895] -[group_91896] -[group_91897] -[group_91898] -[group_91899] -[group_91900] -[group_91901] -[group_91902] -[group_91903] -[group_91904] -[group_91905] -[group_91906] -[group_91907] -[group_91908] -[group_91909] -[group_91910] -[group_91911] -[group_91912] -[group_91913] -[group_91914] -[group_91915] -[group_91916] -[group_91917] -[group_91918] -[group_91919] -[group_91920] -[group_91921] -[group_91922] -[group_91923] -[group_91924] -[group_91925] -[group_91926] -[group_91927] -[group_91928] -[group_91929] -[group_91930] -[group_91931] -[group_91932] -[group_91933] -[group_91934] -[group_91935] -[group_91936] -[group_91937] -[group_91938] -[group_91939] -[group_91940] -[group_91941] -[group_91942] -[group_91943] -[group_91944] -[group_91945] -[group_91946] -[group_91947] -[group_91948] -[group_91949] -[group_91950] -[group_91951] -[group_91952] -[group_91953] -[group_91954] -[group_91955] -[group_91956] -[group_91957] -[group_91958] -[group_91959] -[group_91960] -[group_91961] -[group_91962] -[group_91963] -[group_91964] -[group_91965] -[group_91966] -[group_91967] -[group_91968] -[group_91969] -[group_91970] -[group_91971] -[group_91972] -[group_91973] -[group_91974] -[group_91975] -[group_91976] -[group_91977] -[group_91978] -[group_91979] -[group_91980] -[group_91981] -[group_91982] -[group_91983] -[group_91984] -[group_91985] -[group_91986] -[group_91987] -[group_91988] -[group_91989] -[group_91990] -[group_91991] -[group_91992] -[group_91993] -[group_91994] -[group_91995] -[group_91996] -[group_91997] -[group_91998] -[group_91999] -[group_92000] -[group_92001] -[group_92002] -[group_92003] -[group_92004] -[group_92005] -[group_92006] -[group_92007] -[group_92008] -[group_92009] -[group_92010] -[group_92011] -[group_92012] -[group_92013] -[group_92014] -[group_92015] -[group_92016] -[group_92017] -[group_92018] -[group_92019] -[group_92020] -[group_92021] -[group_92022] -[group_92023] -[group_92024] -[group_92025] -[group_92026] -[group_92027] -[group_92028] -[group_92029] -[group_92030] -[group_92031] -[group_92032] -[group_92033] -[group_92034] -[group_92035] -[group_92036] -[group_92037] -[group_92038] -[group_92039] -[group_92040] -[group_92041] -[group_92042] -[group_92043] -[group_92044] -[group_92045] -[group_92046] -[group_92047] -[group_92048] -[group_92049] -[group_92050] -[group_92051] -[group_92052] -[group_92053] -[group_92054] -[group_92055] -[group_92056] -[group_92057] -[group_92058] -[group_92059] -[group_92060] -[group_92061] -[group_92062] -[group_92063] -[group_92064] -[group_92065] -[group_92066] -[group_92067] -[group_92068] -[group_92069] -[group_92070] -[group_92071] -[group_92072] -[group_92073] -[group_92074] -[group_92075] -[group_92076] -[group_92077] -[group_92078] -[group_92079] -[group_92080] -[group_92081] -[group_92082] -[group_92083] -[group_92084] -[group_92085] -[group_92086] -[group_92087] -[group_92088] -[group_92089] -[group_92090] -[group_92091] -[group_92092] -[group_92093] -[group_92094] -[group_92095] -[group_92096] -[group_92097] -[group_92098] -[group_92099] -[group_92100] -[group_92101] -[group_92102] -[group_92103] -[group_92104] -[group_92105] -[group_92106] -[group_92107] -[group_92108] -[group_92109] -[group_92110] -[group_92111] -[group_92112] -[group_92113] -[group_92114] -[group_92115] -[group_92116] -[group_92117] -[group_92118] -[group_92119] -[group_92120] -[group_92121] -[group_92122] -[group_92123] -[group_92124] -[group_92125] -[group_92126] -[group_92127] -[group_92128] -[group_92129] -[group_92130] -[group_92131] -[group_92132] -[group_92133] -[group_92134] -[group_92135] -[group_92136] -[group_92137] -[group_92138] -[group_92139] -[group_92140] -[group_92141] -[group_92142] -[group_92143] -[group_92144] -[group_92145] -[group_92146] -[group_92147] -[group_92148] -[group_92149] -[group_92150] -[group_92151] -[group_92152] -[group_92153] -[group_92154] -[group_92155] -[group_92156] -[group_92157] -[group_92158] -[group_92159] -[group_92160] -[group_92161] -[group_92162] -[group_92163] -[group_92164] -[group_92165] -[group_92166] -[group_92167] -[group_92168] -[group_92169] -[group_92170] -[group_92171] -[group_92172] -[group_92173] -[group_92174] -[group_92175] -[group_92176] -[group_92177] -[group_92178] -[group_92179] -[group_92180] -[group_92181] -[group_92182] -[group_92183] -[group_92184] -[group_92185] -[group_92186] -[group_92187] -[group_92188] -[group_92189] -[group_92190] -[group_92191] -[group_92192] -[group_92193] -[group_92194] -[group_92195] -[group_92196] -[group_92197] -[group_92198] -[group_92199] -[group_92200] -[group_92201] -[group_92202] -[group_92203] -[group_92204] -[group_92205] -[group_92206] -[group_92207] -[group_92208] -[group_92209] -[group_92210] -[group_92211] -[group_92212] -[group_92213] -[group_92214] -[group_92215] -[group_92216] -[group_92217] -[group_92218] -[group_92219] -[group_92220] -[group_92221] -[group_92222] -[group_92223] -[group_92224] -[group_92225] -[group_92226] -[group_92227] -[group_92228] -[group_92229] -[group_92230] -[group_92231] -[group_92232] -[group_92233] -[group_92234] -[group_92235] -[group_92236] -[group_92237] -[group_92238] -[group_92239] -[group_92240] -[group_92241] -[group_92242] -[group_92243] -[group_92244] -[group_92245] -[group_92246] -[group_92247] -[group_92248] -[group_92249] -[group_92250] -[group_92251] -[group_92252] -[group_92253] -[group_92254] -[group_92255] -[group_92256] -[group_92257] -[group_92258] -[group_92259] -[group_92260] -[group_92261] -[group_92262] -[group_92263] -[group_92264] -[group_92265] -[group_92266] -[group_92267] -[group_92268] -[group_92269] -[group_92270] -[group_92271] -[group_92272] -[group_92273] -[group_92274] -[group_92275] -[group_92276] -[group_92277] -[group_92278] -[group_92279] -[group_92280] -[group_92281] -[group_92282] -[group_92283] -[group_92284] -[group_92285] -[group_92286] -[group_92287] -[group_92288] -[group_92289] -[group_92290] -[group_92291] -[group_92292] -[group_92293] -[group_92294] -[group_92295] -[group_92296] -[group_92297] -[group_92298] -[group_92299] -[group_92300] -[group_92301] -[group_92302] -[group_92303] -[group_92304] -[group_92305] -[group_92306] -[group_92307] -[group_92308] -[group_92309] -[group_92310] -[group_92311] -[group_92312] -[group_92313] -[group_92314] -[group_92315] -[group_92316] -[group_92317] -[group_92318] -[group_92319] -[group_92320] -[group_92321] -[group_92322] -[group_92323] -[group_92324] -[group_92325] -[group_92326] -[group_92327] -[group_92328] -[group_92329] -[group_92330] -[group_92331] -[group_92332] -[group_92333] -[group_92334] -[group_92335] -[group_92336] -[group_92337] -[group_92338] -[group_92339] -[group_92340] -[group_92341] -[group_92342] -[group_92343] -[group_92344] -[group_92345] -[group_92346] -[group_92347] -[group_92348] -[group_92349] -[group_92350] -[group_92351] -[group_92352] -[group_92353] -[group_92354] -[group_92355] -[group_92356] -[group_92357] -[group_92358] -[group_92359] -[group_92360] -[group_92361] -[group_92362] -[group_92363] -[group_92364] -[group_92365] -[group_92366] -[group_92367] -[group_92368] -[group_92369] -[group_92370] -[group_92371] -[group_92372] -[group_92373] -[group_92374] -[group_92375] -[group_92376] -[group_92377] -[group_92378] -[group_92379] -[group_92380] -[group_92381] -[group_92382] -[group_92383] -[group_92384] -[group_92385] -[group_92386] -[group_92387] -[group_92388] -[group_92389] -[group_92390] -[group_92391] -[group_92392] -[group_92393] -[group_92394] -[group_92395] -[group_92396] -[group_92397] -[group_92398] -[group_92399] -[group_92400] -[group_92401] -[group_92402] -[group_92403] -[group_92404] -[group_92405] -[group_92406] -[group_92407] -[group_92408] -[group_92409] -[group_92410] -[group_92411] -[group_92412] -[group_92413] -[group_92414] -[group_92415] -[group_92416] -[group_92417] -[group_92418] -[group_92419] -[group_92420] -[group_92421] -[group_92422] -[group_92423] -[group_92424] -[group_92425] -[group_92426] -[group_92427] -[group_92428] -[group_92429] -[group_92430] -[group_92431] -[group_92432] -[group_92433] -[group_92434] -[group_92435] -[group_92436] -[group_92437] -[group_92438] -[group_92439] -[group_92440] -[group_92441] -[group_92442] -[group_92443] -[group_92444] -[group_92445] -[group_92446] -[group_92447] -[group_92448] -[group_92449] -[group_92450] -[group_92451] -[group_92452] -[group_92453] -[group_92454] -[group_92455] -[group_92456] -[group_92457] -[group_92458] -[group_92459] -[group_92460] -[group_92461] -[group_92462] -[group_92463] -[group_92464] -[group_92465] -[group_92466] -[group_92467] -[group_92468] -[group_92469] -[group_92470] -[group_92471] -[group_92472] -[group_92473] -[group_92474] -[group_92475] -[group_92476] -[group_92477] -[group_92478] -[group_92479] -[group_92480] -[group_92481] -[group_92482] -[group_92483] -[group_92484] -[group_92485] -[group_92486] -[group_92487] -[group_92488] -[group_92489] -[group_92490] -[group_92491] -[group_92492] -[group_92493] -[group_92494] -[group_92495] -[group_92496] -[group_92497] -[group_92498] -[group_92499] -[group_92500] -[group_92501] -[group_92502] -[group_92503] -[group_92504] -[group_92505] -[group_92506] -[group_92507] -[group_92508] -[group_92509] -[group_92510] -[group_92511] -[group_92512] -[group_92513] -[group_92514] -[group_92515] -[group_92516] -[group_92517] -[group_92518] -[group_92519] -[group_92520] -[group_92521] -[group_92522] -[group_92523] -[group_92524] -[group_92525] -[group_92526] -[group_92527] -[group_92528] -[group_92529] -[group_92530] -[group_92531] -[group_92532] -[group_92533] -[group_92534] -[group_92535] -[group_92536] -[group_92537] -[group_92538] -[group_92539] -[group_92540] -[group_92541] -[group_92542] -[group_92543] -[group_92544] -[group_92545] -[group_92546] -[group_92547] -[group_92548] -[group_92549] -[group_92550] -[group_92551] -[group_92552] -[group_92553] -[group_92554] -[group_92555] -[group_92556] -[group_92557] -[group_92558] -[group_92559] -[group_92560] -[group_92561] -[group_92562] -[group_92563] -[group_92564] -[group_92565] -[group_92566] -[group_92567] -[group_92568] -[group_92569] -[group_92570] -[group_92571] -[group_92572] -[group_92573] -[group_92574] -[group_92575] -[group_92576] -[group_92577] -[group_92578] -[group_92579] -[group_92580] -[group_92581] -[group_92582] -[group_92583] -[group_92584] -[group_92585] -[group_92586] -[group_92587] -[group_92588] -[group_92589] -[group_92590] -[group_92591] -[group_92592] -[group_92593] -[group_92594] -[group_92595] -[group_92596] -[group_92597] -[group_92598] -[group_92599] -[group_92600] -[group_92601] -[group_92602] -[group_92603] -[group_92604] -[group_92605] -[group_92606] -[group_92607] -[group_92608] -[group_92609] -[group_92610] -[group_92611] -[group_92612] -[group_92613] -[group_92614] -[group_92615] -[group_92616] -[group_92617] -[group_92618] -[group_92619] -[group_92620] -[group_92621] -[group_92622] -[group_92623] -[group_92624] -[group_92625] -[group_92626] -[group_92627] -[group_92628] -[group_92629] -[group_92630] -[group_92631] -[group_92632] -[group_92633] -[group_92634] -[group_92635] -[group_92636] -[group_92637] -[group_92638] -[group_92639] -[group_92640] -[group_92641] -[group_92642] -[group_92643] -[group_92644] -[group_92645] -[group_92646] -[group_92647] -[group_92648] -[group_92649] -[group_92650] -[group_92651] -[group_92652] -[group_92653] -[group_92654] -[group_92655] -[group_92656] -[group_92657] -[group_92658] -[group_92659] -[group_92660] -[group_92661] -[group_92662] -[group_92663] -[group_92664] -[group_92665] -[group_92666] -[group_92667] -[group_92668] -[group_92669] -[group_92670] -[group_92671] -[group_92672] -[group_92673] -[group_92674] -[group_92675] -[group_92676] -[group_92677] -[group_92678] -[group_92679] -[group_92680] -[group_92681] -[group_92682] -[group_92683] -[group_92684] -[group_92685] -[group_92686] -[group_92687] -[group_92688] -[group_92689] -[group_92690] -[group_92691] -[group_92692] -[group_92693] -[group_92694] -[group_92695] -[group_92696] -[group_92697] -[group_92698] -[group_92699] -[group_92700] -[group_92701] -[group_92702] -[group_92703] -[group_92704] -[group_92705] -[group_92706] -[group_92707] -[group_92708] -[group_92709] -[group_92710] -[group_92711] -[group_92712] -[group_92713] -[group_92714] -[group_92715] -[group_92716] -[group_92717] -[group_92718] -[group_92719] -[group_92720] -[group_92721] -[group_92722] -[group_92723] -[group_92724] -[group_92725] -[group_92726] -[group_92727] -[group_92728] -[group_92729] -[group_92730] -[group_92731] -[group_92732] -[group_92733] -[group_92734] -[group_92735] -[group_92736] -[group_92737] -[group_92738] -[group_92739] -[group_92740] -[group_92741] -[group_92742] -[group_92743] -[group_92744] -[group_92745] -[group_92746] -[group_92747] -[group_92748] -[group_92749] -[group_92750] -[group_92751] -[group_92752] -[group_92753] -[group_92754] -[group_92755] -[group_92756] -[group_92757] -[group_92758] -[group_92759] -[group_92760] -[group_92761] -[group_92762] -[group_92763] -[group_92764] -[group_92765] -[group_92766] -[group_92767] -[group_92768] -[group_92769] -[group_92770] -[group_92771] -[group_92772] -[group_92773] -[group_92774] -[group_92775] -[group_92776] -[group_92777] -[group_92778] -[group_92779] -[group_92780] -[group_92781] -[group_92782] -[group_92783] -[group_92784] -[group_92785] -[group_92786] -[group_92787] -[group_92788] -[group_92789] -[group_92790] -[group_92791] -[group_92792] -[group_92793] -[group_92794] -[group_92795] -[group_92796] -[group_92797] -[group_92798] -[group_92799] -[group_92800] -[group_92801] -[group_92802] -[group_92803] -[group_92804] -[group_92805] -[group_92806] -[group_92807] -[group_92808] -[group_92809] -[group_92810] -[group_92811] -[group_92812] -[group_92813] -[group_92814] -[group_92815] -[group_92816] -[group_92817] -[group_92818] -[group_92819] -[group_92820] -[group_92821] -[group_92822] -[group_92823] -[group_92824] -[group_92825] -[group_92826] -[group_92827] -[group_92828] -[group_92829] -[group_92830] -[group_92831] -[group_92832] -[group_92833] -[group_92834] -[group_92835] -[group_92836] -[group_92837] -[group_92838] -[group_92839] -[group_92840] -[group_92841] -[group_92842] -[group_92843] -[group_92844] -[group_92845] -[group_92846] -[group_92847] -[group_92848] -[group_92849] -[group_92850] -[group_92851] -[group_92852] -[group_92853] -[group_92854] -[group_92855] -[group_92856] -[group_92857] -[group_92858] -[group_92859] -[group_92860] -[group_92861] -[group_92862] -[group_92863] -[group_92864] -[group_92865] -[group_92866] -[group_92867] -[group_92868] -[group_92869] -[group_92870] -[group_92871] -[group_92872] -[group_92873] -[group_92874] -[group_92875] -[group_92876] -[group_92877] -[group_92878] -[group_92879] -[group_92880] -[group_92881] -[group_92882] -[group_92883] -[group_92884] -[group_92885] -[group_92886] -[group_92887] -[group_92888] -[group_92889] -[group_92890] -[group_92891] -[group_92892] -[group_92893] -[group_92894] -[group_92895] -[group_92896] -[group_92897] -[group_92898] -[group_92899] -[group_92900] -[group_92901] -[group_92902] -[group_92903] -[group_92904] -[group_92905] -[group_92906] -[group_92907] -[group_92908] -[group_92909] -[group_92910] -[group_92911] -[group_92912] -[group_92913] -[group_92914] -[group_92915] -[group_92916] -[group_92917] -[group_92918] -[group_92919] -[group_92920] -[group_92921] -[group_92922] -[group_92923] -[group_92924] -[group_92925] -[group_92926] -[group_92927] -[group_92928] -[group_92929] -[group_92930] -[group_92931] -[group_92932] -[group_92933] -[group_92934] -[group_92935] -[group_92936] -[group_92937] -[group_92938] -[group_92939] -[group_92940] -[group_92941] -[group_92942] -[group_92943] -[group_92944] -[group_92945] -[group_92946] -[group_92947] -[group_92948] -[group_92949] -[group_92950] -[group_92951] -[group_92952] -[group_92953] -[group_92954] -[group_92955] -[group_92956] -[group_92957] -[group_92958] -[group_92959] -[group_92960] -[group_92961] -[group_92962] -[group_92963] -[group_92964] -[group_92965] -[group_92966] -[group_92967] -[group_92968] -[group_92969] -[group_92970] -[group_92971] -[group_92972] -[group_92973] -[group_92974] -[group_92975] -[group_92976] -[group_92977] -[group_92978] -[group_92979] -[group_92980] -[group_92981] -[group_92982] -[group_92983] -[group_92984] -[group_92985] -[group_92986] -[group_92987] -[group_92988] -[group_92989] -[group_92990] -[group_92991] -[group_92992] -[group_92993] -[group_92994] -[group_92995] -[group_92996] -[group_92997] -[group_92998] -[group_92999] -[group_93000] -[group_93001] -[group_93002] -[group_93003] -[group_93004] -[group_93005] -[group_93006] -[group_93007] -[group_93008] -[group_93009] -[group_93010] -[group_93011] -[group_93012] -[group_93013] -[group_93014] -[group_93015] -[group_93016] -[group_93017] -[group_93018] -[group_93019] -[group_93020] -[group_93021] -[group_93022] -[group_93023] -[group_93024] -[group_93025] -[group_93026] -[group_93027] -[group_93028] -[group_93029] -[group_93030] -[group_93031] -[group_93032] -[group_93033] -[group_93034] -[group_93035] -[group_93036] -[group_93037] -[group_93038] -[group_93039] -[group_93040] -[group_93041] -[group_93042] -[group_93043] -[group_93044] -[group_93045] -[group_93046] -[group_93047] -[group_93048] -[group_93049] -[group_93050] -[group_93051] -[group_93052] -[group_93053] -[group_93054] -[group_93055] -[group_93056] -[group_93057] -[group_93058] -[group_93059] -[group_93060] -[group_93061] -[group_93062] -[group_93063] -[group_93064] -[group_93065] -[group_93066] -[group_93067] -[group_93068] -[group_93069] -[group_93070] -[group_93071] -[group_93072] -[group_93073] -[group_93074] -[group_93075] -[group_93076] -[group_93077] -[group_93078] -[group_93079] -[group_93080] -[group_93081] -[group_93082] -[group_93083] -[group_93084] -[group_93085] -[group_93086] -[group_93087] -[group_93088] -[group_93089] -[group_93090] -[group_93091] -[group_93092] -[group_93093] -[group_93094] -[group_93095] -[group_93096] -[group_93097] -[group_93098] -[group_93099] -[group_93100] -[group_93101] -[group_93102] -[group_93103] -[group_93104] -[group_93105] -[group_93106] -[group_93107] -[group_93108] -[group_93109] -[group_93110] -[group_93111] -[group_93112] -[group_93113] -[group_93114] -[group_93115] -[group_93116] -[group_93117] -[group_93118] -[group_93119] -[group_93120] -[group_93121] -[group_93122] -[group_93123] -[group_93124] -[group_93125] -[group_93126] -[group_93127] -[group_93128] -[group_93129] -[group_93130] -[group_93131] -[group_93132] -[group_93133] -[group_93134] -[group_93135] -[group_93136] -[group_93137] -[group_93138] -[group_93139] -[group_93140] -[group_93141] -[group_93142] -[group_93143] -[group_93144] -[group_93145] -[group_93146] -[group_93147] -[group_93148] -[group_93149] -[group_93150] -[group_93151] -[group_93152] -[group_93153] -[group_93154] -[group_93155] -[group_93156] -[group_93157] -[group_93158] -[group_93159] -[group_93160] -[group_93161] -[group_93162] -[group_93163] -[group_93164] -[group_93165] -[group_93166] -[group_93167] -[group_93168] -[group_93169] -[group_93170] -[group_93171] -[group_93172] -[group_93173] -[group_93174] -[group_93175] -[group_93176] -[group_93177] -[group_93178] -[group_93179] -[group_93180] -[group_93181] -[group_93182] -[group_93183] -[group_93184] -[group_93185] -[group_93186] -[group_93187] -[group_93188] -[group_93189] -[group_93190] -[group_93191] -[group_93192] -[group_93193] -[group_93194] -[group_93195] -[group_93196] -[group_93197] -[group_93198] -[group_93199] -[group_93200] -[group_93201] -[group_93202] -[group_93203] -[group_93204] -[group_93205] -[group_93206] -[group_93207] -[group_93208] -[group_93209] -[group_93210] -[group_93211] -[group_93212] -[group_93213] -[group_93214] -[group_93215] -[group_93216] -[group_93217] -[group_93218] -[group_93219] -[group_93220] -[group_93221] -[group_93222] -[group_93223] -[group_93224] -[group_93225] -[group_93226] -[group_93227] -[group_93228] -[group_93229] -[group_93230] -[group_93231] -[group_93232] -[group_93233] -[group_93234] -[group_93235] -[group_93236] -[group_93237] -[group_93238] -[group_93239] -[group_93240] -[group_93241] -[group_93242] -[group_93243] -[group_93244] -[group_93245] -[group_93246] -[group_93247] -[group_93248] -[group_93249] -[group_93250] -[group_93251] -[group_93252] -[group_93253] -[group_93254] -[group_93255] -[group_93256] -[group_93257] -[group_93258] -[group_93259] -[group_93260] -[group_93261] -[group_93262] -[group_93263] -[group_93264] -[group_93265] -[group_93266] -[group_93267] -[group_93268] -[group_93269] -[group_93270] -[group_93271] -[group_93272] -[group_93273] -[group_93274] -[group_93275] -[group_93276] -[group_93277] -[group_93278] -[group_93279] -[group_93280] -[group_93281] -[group_93282] -[group_93283] -[group_93284] -[group_93285] -[group_93286] -[group_93287] -[group_93288] -[group_93289] -[group_93290] -[group_93291] -[group_93292] -[group_93293] -[group_93294] -[group_93295] -[group_93296] -[group_93297] -[group_93298] -[group_93299] -[group_93300] -[group_93301] -[group_93302] -[group_93303] -[group_93304] -[group_93305] -[group_93306] -[group_93307] -[group_93308] -[group_93309] -[group_93310] -[group_93311] -[group_93312] -[group_93313] -[group_93314] -[group_93315] -[group_93316] -[group_93317] -[group_93318] -[group_93319] -[group_93320] -[group_93321] -[group_93322] -[group_93323] -[group_93324] -[group_93325] -[group_93326] -[group_93327] -[group_93328] -[group_93329] -[group_93330] -[group_93331] -[group_93332] -[group_93333] -[group_93334] -[group_93335] -[group_93336] -[group_93337] -[group_93338] -[group_93339] -[group_93340] -[group_93341] -[group_93342] -[group_93343] -[group_93344] -[group_93345] -[group_93346] -[group_93347] -[group_93348] -[group_93349] -[group_93350] -[group_93351] -[group_93352] -[group_93353] -[group_93354] -[group_93355] -[group_93356] -[group_93357] -[group_93358] -[group_93359] -[group_93360] -[group_93361] -[group_93362] -[group_93363] -[group_93364] -[group_93365] -[group_93366] -[group_93367] -[group_93368] -[group_93369] -[group_93370] -[group_93371] -[group_93372] -[group_93373] -[group_93374] -[group_93375] -[group_93376] -[group_93377] -[group_93378] -[group_93379] -[group_93380] -[group_93381] -[group_93382] -[group_93383] -[group_93384] -[group_93385] -[group_93386] -[group_93387] -[group_93388] -[group_93389] -[group_93390] -[group_93391] -[group_93392] -[group_93393] -[group_93394] -[group_93395] -[group_93396] -[group_93397] -[group_93398] -[group_93399] -[group_93400] -[group_93401] -[group_93402] -[group_93403] -[group_93404] -[group_93405] -[group_93406] -[group_93407] -[group_93408] -[group_93409] -[group_93410] -[group_93411] -[group_93412] -[group_93413] -[group_93414] -[group_93415] -[group_93416] -[group_93417] -[group_93418] -[group_93419] -[group_93420] -[group_93421] -[group_93422] -[group_93423] -[group_93424] -[group_93425] -[group_93426] -[group_93427] -[group_93428] -[group_93429] -[group_93430] -[group_93431] -[group_93432] -[group_93433] -[group_93434] -[group_93435] -[group_93436] -[group_93437] -[group_93438] -[group_93439] -[group_93440] -[group_93441] -[group_93442] -[group_93443] -[group_93444] -[group_93445] -[group_93446] -[group_93447] -[group_93448] -[group_93449] -[group_93450] -[group_93451] -[group_93452] -[group_93453] -[group_93454] -[group_93455] -[group_93456] -[group_93457] -[group_93458] -[group_93459] -[group_93460] -[group_93461] -[group_93462] -[group_93463] -[group_93464] -[group_93465] -[group_93466] -[group_93467] -[group_93468] -[group_93469] -[group_93470] -[group_93471] -[group_93472] -[group_93473] -[group_93474] -[group_93475] -[group_93476] -[group_93477] -[group_93478] -[group_93479] -[group_93480] -[group_93481] -[group_93482] -[group_93483] -[group_93484] -[group_93485] -[group_93486] -[group_93487] -[group_93488] -[group_93489] -[group_93490] -[group_93491] -[group_93492] -[group_93493] -[group_93494] -[group_93495] -[group_93496] -[group_93497] -[group_93498] -[group_93499] -[group_93500] -[group_93501] -[group_93502] -[group_93503] -[group_93504] -[group_93505] -[group_93506] -[group_93507] -[group_93508] -[group_93509] -[group_93510] -[group_93511] -[group_93512] -[group_93513] -[group_93514] -[group_93515] -[group_93516] -[group_93517] -[group_93518] -[group_93519] -[group_93520] -[group_93521] -[group_93522] -[group_93523] -[group_93524] -[group_93525] -[group_93526] -[group_93527] -[group_93528] -[group_93529] -[group_93530] -[group_93531] -[group_93532] -[group_93533] -[group_93534] -[group_93535] -[group_93536] -[group_93537] -[group_93538] -[group_93539] -[group_93540] -[group_93541] -[group_93542] -[group_93543] -[group_93544] -[group_93545] -[group_93546] -[group_93547] -[group_93548] -[group_93549] -[group_93550] -[group_93551] -[group_93552] -[group_93553] -[group_93554] -[group_93555] -[group_93556] -[group_93557] -[group_93558] -[group_93559] -[group_93560] -[group_93561] -[group_93562] -[group_93563] -[group_93564] -[group_93565] -[group_93566] -[group_93567] -[group_93568] -[group_93569] -[group_93570] -[group_93571] -[group_93572] -[group_93573] -[group_93574] -[group_93575] -[group_93576] -[group_93577] -[group_93578] -[group_93579] -[group_93580] -[group_93581] -[group_93582] -[group_93583] -[group_93584] -[group_93585] -[group_93586] -[group_93587] -[group_93588] -[group_93589] -[group_93590] -[group_93591] -[group_93592] -[group_93593] -[group_93594] -[group_93595] -[group_93596] -[group_93597] -[group_93598] -[group_93599] -[group_93600] -[group_93601] -[group_93602] -[group_93603] -[group_93604] -[group_93605] -[group_93606] -[group_93607] -[group_93608] -[group_93609] -[group_93610] -[group_93611] -[group_93612] -[group_93613] -[group_93614] -[group_93615] -[group_93616] -[group_93617] -[group_93618] -[group_93619] -[group_93620] -[group_93621] -[group_93622] -[group_93623] -[group_93624] -[group_93625] -[group_93626] -[group_93627] -[group_93628] -[group_93629] -[group_93630] -[group_93631] -[group_93632] -[group_93633] -[group_93634] -[group_93635] -[group_93636] -[group_93637] -[group_93638] -[group_93639] -[group_93640] -[group_93641] -[group_93642] -[group_93643] -[group_93644] -[group_93645] -[group_93646] -[group_93647] -[group_93648] -[group_93649] -[group_93650] -[group_93651] -[group_93652] -[group_93653] -[group_93654] -[group_93655] -[group_93656] -[group_93657] -[group_93658] -[group_93659] -[group_93660] -[group_93661] -[group_93662] -[group_93663] -[group_93664] -[group_93665] -[group_93666] -[group_93667] -[group_93668] -[group_93669] -[group_93670] -[group_93671] -[group_93672] -[group_93673] -[group_93674] -[group_93675] -[group_93676] -[group_93677] -[group_93678] -[group_93679] -[group_93680] -[group_93681] -[group_93682] -[group_93683] -[group_93684] -[group_93685] -[group_93686] -[group_93687] -[group_93688] -[group_93689] -[group_93690] -[group_93691] -[group_93692] -[group_93693] -[group_93694] -[group_93695] -[group_93696] -[group_93697] -[group_93698] -[group_93699] -[group_93700] -[group_93701] -[group_93702] -[group_93703] -[group_93704] -[group_93705] -[group_93706] -[group_93707] -[group_93708] -[group_93709] -[group_93710] -[group_93711] -[group_93712] -[group_93713] -[group_93714] -[group_93715] -[group_93716] -[group_93717] -[group_93718] -[group_93719] -[group_93720] -[group_93721] -[group_93722] -[group_93723] -[group_93724] -[group_93725] -[group_93726] -[group_93727] -[group_93728] -[group_93729] -[group_93730] -[group_93731] -[group_93732] -[group_93733] -[group_93734] -[group_93735] -[group_93736] -[group_93737] -[group_93738] -[group_93739] -[group_93740] -[group_93741] -[group_93742] -[group_93743] -[group_93744] -[group_93745] -[group_93746] -[group_93747] -[group_93748] -[group_93749] -[group_93750] -[group_93751] -[group_93752] -[group_93753] -[group_93754] -[group_93755] -[group_93756] -[group_93757] -[group_93758] -[group_93759] -[group_93760] -[group_93761] -[group_93762] -[group_93763] -[group_93764] -[group_93765] -[group_93766] -[group_93767] -[group_93768] -[group_93769] -[group_93770] -[group_93771] -[group_93772] -[group_93773] -[group_93774] -[group_93775] -[group_93776] -[group_93777] -[group_93778] -[group_93779] -[group_93780] -[group_93781] -[group_93782] -[group_93783] -[group_93784] -[group_93785] -[group_93786] -[group_93787] -[group_93788] -[group_93789] -[group_93790] -[group_93791] -[group_93792] -[group_93793] -[group_93794] -[group_93795] -[group_93796] -[group_93797] -[group_93798] -[group_93799] -[group_93800] -[group_93801] -[group_93802] -[group_93803] -[group_93804] -[group_93805] -[group_93806] -[group_93807] -[group_93808] -[group_93809] -[group_93810] -[group_93811] -[group_93812] -[group_93813] -[group_93814] -[group_93815] -[group_93816] -[group_93817] -[group_93818] -[group_93819] -[group_93820] -[group_93821] -[group_93822] -[group_93823] -[group_93824] -[group_93825] -[group_93826] -[group_93827] -[group_93828] -[group_93829] -[group_93830] -[group_93831] -[group_93832] -[group_93833] -[group_93834] -[group_93835] -[group_93836] -[group_93837] -[group_93838] -[group_93839] -[group_93840] -[group_93841] -[group_93842] -[group_93843] -[group_93844] -[group_93845] -[group_93846] -[group_93847] -[group_93848] -[group_93849] -[group_93850] -[group_93851] -[group_93852] -[group_93853] -[group_93854] -[group_93855] -[group_93856] -[group_93857] -[group_93858] -[group_93859] -[group_93860] -[group_93861] -[group_93862] -[group_93863] -[group_93864] -[group_93865] -[group_93866] -[group_93867] -[group_93868] -[group_93869] -[group_93870] -[group_93871] -[group_93872] -[group_93873] -[group_93874] -[group_93875] -[group_93876] -[group_93877] -[group_93878] -[group_93879] -[group_93880] -[group_93881] -[group_93882] -[group_93883] -[group_93884] -[group_93885] -[group_93886] -[group_93887] -[group_93888] -[group_93889] -[group_93890] -[group_93891] -[group_93892] -[group_93893] -[group_93894] -[group_93895] -[group_93896] -[group_93897] -[group_93898] -[group_93899] -[group_93900] -[group_93901] -[group_93902] -[group_93903] -[group_93904] -[group_93905] -[group_93906] -[group_93907] -[group_93908] -[group_93909] -[group_93910] -[group_93911] -[group_93912] -[group_93913] -[group_93914] -[group_93915] -[group_93916] -[group_93917] -[group_93918] -[group_93919] -[group_93920] -[group_93921] -[group_93922] -[group_93923] -[group_93924] -[group_93925] -[group_93926] -[group_93927] -[group_93928] -[group_93929] -[group_93930] -[group_93931] -[group_93932] -[group_93933] -[group_93934] -[group_93935] -[group_93936] -[group_93937] -[group_93938] -[group_93939] -[group_93940] -[group_93941] -[group_93942] -[group_93943] -[group_93944] -[group_93945] -[group_93946] -[group_93947] -[group_93948] -[group_93949] -[group_93950] -[group_93951] -[group_93952] -[group_93953] -[group_93954] -[group_93955] -[group_93956] -[group_93957] -[group_93958] -[group_93959] -[group_93960] -[group_93961] -[group_93962] -[group_93963] -[group_93964] -[group_93965] -[group_93966] -[group_93967] -[group_93968] -[group_93969] -[group_93970] -[group_93971] -[group_93972] -[group_93973] -[group_93974] -[group_93975] -[group_93976] -[group_93977] -[group_93978] -[group_93979] -[group_93980] -[group_93981] -[group_93982] -[group_93983] -[group_93984] -[group_93985] -[group_93986] -[group_93987] -[group_93988] -[group_93989] -[group_93990] -[group_93991] -[group_93992] -[group_93993] -[group_93994] -[group_93995] -[group_93996] -[group_93997] -[group_93998] -[group_93999] -[group_94000] -[group_94001] -[group_94002] -[group_94003] -[group_94004] -[group_94005] -[group_94006] -[group_94007] -[group_94008] -[group_94009] -[group_94010] -[group_94011] -[group_94012] -[group_94013] -[group_94014] -[group_94015] -[group_94016] -[group_94017] -[group_94018] -[group_94019] -[group_94020] -[group_94021] -[group_94022] -[group_94023] -[group_94024] -[group_94025] -[group_94026] -[group_94027] -[group_94028] -[group_94029] -[group_94030] -[group_94031] -[group_94032] -[group_94033] -[group_94034] -[group_94035] -[group_94036] -[group_94037] -[group_94038] -[group_94039] -[group_94040] -[group_94041] -[group_94042] -[group_94043] -[group_94044] -[group_94045] -[group_94046] -[group_94047] -[group_94048] -[group_94049] -[group_94050] -[group_94051] -[group_94052] -[group_94053] -[group_94054] -[group_94055] -[group_94056] -[group_94057] -[group_94058] -[group_94059] -[group_94060] -[group_94061] -[group_94062] -[group_94063] -[group_94064] -[group_94065] -[group_94066] -[group_94067] -[group_94068] -[group_94069] -[group_94070] -[group_94071] -[group_94072] -[group_94073] -[group_94074] -[group_94075] -[group_94076] -[group_94077] -[group_94078] -[group_94079] -[group_94080] -[group_94081] -[group_94082] -[group_94083] -[group_94084] -[group_94085] -[group_94086] -[group_94087] -[group_94088] -[group_94089] -[group_94090] -[group_94091] -[group_94092] -[group_94093] -[group_94094] -[group_94095] -[group_94096] -[group_94097] -[group_94098] -[group_94099] -[group_94100] -[group_94101] -[group_94102] -[group_94103] -[group_94104] -[group_94105] -[group_94106] -[group_94107] -[group_94108] -[group_94109] -[group_94110] -[group_94111] -[group_94112] -[group_94113] -[group_94114] -[group_94115] -[group_94116] -[group_94117] -[group_94118] -[group_94119] -[group_94120] -[group_94121] -[group_94122] -[group_94123] -[group_94124] -[group_94125] -[group_94126] -[group_94127] -[group_94128] -[group_94129] -[group_94130] -[group_94131] -[group_94132] -[group_94133] -[group_94134] -[group_94135] -[group_94136] -[group_94137] -[group_94138] -[group_94139] -[group_94140] -[group_94141] -[group_94142] -[group_94143] -[group_94144] -[group_94145] -[group_94146] -[group_94147] -[group_94148] -[group_94149] -[group_94150] -[group_94151] -[group_94152] -[group_94153] -[group_94154] -[group_94155] -[group_94156] -[group_94157] -[group_94158] -[group_94159] -[group_94160] -[group_94161] -[group_94162] -[group_94163] -[group_94164] -[group_94165] -[group_94166] -[group_94167] -[group_94168] -[group_94169] -[group_94170] -[group_94171] -[group_94172] -[group_94173] -[group_94174] -[group_94175] -[group_94176] -[group_94177] -[group_94178] -[group_94179] -[group_94180] -[group_94181] -[group_94182] -[group_94183] -[group_94184] -[group_94185] -[group_94186] -[group_94187] -[group_94188] -[group_94189] -[group_94190] -[group_94191] -[group_94192] -[group_94193] -[group_94194] -[group_94195] -[group_94196] -[group_94197] -[group_94198] -[group_94199] -[group_94200] -[group_94201] -[group_94202] -[group_94203] -[group_94204] -[group_94205] -[group_94206] -[group_94207] -[group_94208] -[group_94209] -[group_94210] -[group_94211] -[group_94212] -[group_94213] -[group_94214] -[group_94215] -[group_94216] -[group_94217] -[group_94218] -[group_94219] -[group_94220] -[group_94221] -[group_94222] -[group_94223] -[group_94224] -[group_94225] -[group_94226] -[group_94227] -[group_94228] -[group_94229] -[group_94230] -[group_94231] -[group_94232] -[group_94233] -[group_94234] -[group_94235] -[group_94236] -[group_94237] -[group_94238] -[group_94239] -[group_94240] -[group_94241] -[group_94242] -[group_94243] -[group_94244] -[group_94245] -[group_94246] -[group_94247] -[group_94248] -[group_94249] -[group_94250] -[group_94251] -[group_94252] -[group_94253] -[group_94254] -[group_94255] -[group_94256] -[group_94257] -[group_94258] -[group_94259] -[group_94260] -[group_94261] -[group_94262] -[group_94263] -[group_94264] -[group_94265] -[group_94266] -[group_94267] -[group_94268] -[group_94269] -[group_94270] -[group_94271] -[group_94272] -[group_94273] -[group_94274] -[group_94275] -[group_94276] -[group_94277] -[group_94278] -[group_94279] -[group_94280] -[group_94281] -[group_94282] -[group_94283] -[group_94284] -[group_94285] -[group_94286] -[group_94287] -[group_94288] -[group_94289] -[group_94290] -[group_94291] -[group_94292] -[group_94293] -[group_94294] -[group_94295] -[group_94296] -[group_94297] -[group_94298] -[group_94299] -[group_94300] -[group_94301] -[group_94302] -[group_94303] -[group_94304] -[group_94305] -[group_94306] -[group_94307] -[group_94308] -[group_94309] -[group_94310] -[group_94311] -[group_94312] -[group_94313] -[group_94314] -[group_94315] -[group_94316] -[group_94317] -[group_94318] -[group_94319] -[group_94320] -[group_94321] -[group_94322] -[group_94323] -[group_94324] -[group_94325] -[group_94326] -[group_94327] -[group_94328] -[group_94329] -[group_94330] -[group_94331] -[group_94332] -[group_94333] -[group_94334] -[group_94335] -[group_94336] -[group_94337] -[group_94338] -[group_94339] -[group_94340] -[group_94341] -[group_94342] -[group_94343] -[group_94344] -[group_94345] -[group_94346] -[group_94347] -[group_94348] -[group_94349] -[group_94350] -[group_94351] -[group_94352] -[group_94353] -[group_94354] -[group_94355] -[group_94356] -[group_94357] -[group_94358] -[group_94359] -[group_94360] -[group_94361] -[group_94362] -[group_94363] -[group_94364] -[group_94365] -[group_94366] -[group_94367] -[group_94368] -[group_94369] -[group_94370] -[group_94371] -[group_94372] -[group_94373] -[group_94374] -[group_94375] -[group_94376] -[group_94377] -[group_94378] -[group_94379] -[group_94380] -[group_94381] -[group_94382] -[group_94383] -[group_94384] -[group_94385] -[group_94386] -[group_94387] -[group_94388] -[group_94389] -[group_94390] -[group_94391] -[group_94392] -[group_94393] -[group_94394] -[group_94395] -[group_94396] -[group_94397] -[group_94398] -[group_94399] -[group_94400] -[group_94401] -[group_94402] -[group_94403] -[group_94404] -[group_94405] -[group_94406] -[group_94407] -[group_94408] -[group_94409] -[group_94410] -[group_94411] -[group_94412] -[group_94413] -[group_94414] -[group_94415] -[group_94416] -[group_94417] -[group_94418] -[group_94419] -[group_94420] -[group_94421] -[group_94422] -[group_94423] -[group_94424] -[group_94425] -[group_94426] -[group_94427] -[group_94428] -[group_94429] -[group_94430] -[group_94431] -[group_94432] -[group_94433] -[group_94434] -[group_94435] -[group_94436] -[group_94437] -[group_94438] -[group_94439] -[group_94440] -[group_94441] -[group_94442] -[group_94443] -[group_94444] -[group_94445] -[group_94446] -[group_94447] -[group_94448] -[group_94449] -[group_94450] -[group_94451] -[group_94452] -[group_94453] -[group_94454] -[group_94455] -[group_94456] -[group_94457] -[group_94458] -[group_94459] -[group_94460] -[group_94461] -[group_94462] -[group_94463] -[group_94464] -[group_94465] -[group_94466] -[group_94467] -[group_94468] -[group_94469] -[group_94470] -[group_94471] -[group_94472] -[group_94473] -[group_94474] -[group_94475] -[group_94476] -[group_94477] -[group_94478] -[group_94479] -[group_94480] -[group_94481] -[group_94482] -[group_94483] -[group_94484] -[group_94485] -[group_94486] -[group_94487] -[group_94488] -[group_94489] -[group_94490] -[group_94491] -[group_94492] -[group_94493] -[group_94494] -[group_94495] -[group_94496] -[group_94497] -[group_94498] -[group_94499] -[group_94500] -[group_94501] -[group_94502] -[group_94503] -[group_94504] -[group_94505] -[group_94506] -[group_94507] -[group_94508] -[group_94509] -[group_94510] -[group_94511] -[group_94512] -[group_94513] -[group_94514] -[group_94515] -[group_94516] -[group_94517] -[group_94518] -[group_94519] -[group_94520] -[group_94521] -[group_94522] -[group_94523] -[group_94524] -[group_94525] -[group_94526] -[group_94527] -[group_94528] -[group_94529] -[group_94530] -[group_94531] -[group_94532] -[group_94533] -[group_94534] -[group_94535] -[group_94536] -[group_94537] -[group_94538] -[group_94539] -[group_94540] -[group_94541] -[group_94542] -[group_94543] -[group_94544] -[group_94545] -[group_94546] -[group_94547] -[group_94548] -[group_94549] -[group_94550] -[group_94551] -[group_94552] -[group_94553] -[group_94554] -[group_94555] -[group_94556] -[group_94557] -[group_94558] -[group_94559] -[group_94560] -[group_94561] -[group_94562] -[group_94563] -[group_94564] -[group_94565] -[group_94566] -[group_94567] -[group_94568] -[group_94569] -[group_94570] -[group_94571] -[group_94572] -[group_94573] -[group_94574] -[group_94575] -[group_94576] -[group_94577] -[group_94578] -[group_94579] -[group_94580] -[group_94581] -[group_94582] -[group_94583] -[group_94584] -[group_94585] -[group_94586] -[group_94587] -[group_94588] -[group_94589] -[group_94590] -[group_94591] -[group_94592] -[group_94593] -[group_94594] -[group_94595] -[group_94596] -[group_94597] -[group_94598] -[group_94599] -[group_94600] -[group_94601] -[group_94602] -[group_94603] -[group_94604] -[group_94605] -[group_94606] -[group_94607] -[group_94608] -[group_94609] -[group_94610] -[group_94611] -[group_94612] -[group_94613] -[group_94614] -[group_94615] -[group_94616] -[group_94617] -[group_94618] -[group_94619] -[group_94620] -[group_94621] -[group_94622] -[group_94623] -[group_94624] -[group_94625] -[group_94626] -[group_94627] -[group_94628] -[group_94629] -[group_94630] -[group_94631] -[group_94632] -[group_94633] -[group_94634] -[group_94635] -[group_94636] -[group_94637] -[group_94638] -[group_94639] -[group_94640] -[group_94641] -[group_94642] -[group_94643] -[group_94644] -[group_94645] -[group_94646] -[group_94647] -[group_94648] -[group_94649] -[group_94650] -[group_94651] -[group_94652] -[group_94653] -[group_94654] -[group_94655] -[group_94656] -[group_94657] -[group_94658] -[group_94659] -[group_94660] -[group_94661] -[group_94662] -[group_94663] -[group_94664] -[group_94665] -[group_94666] -[group_94667] -[group_94668] -[group_94669] -[group_94670] -[group_94671] -[group_94672] -[group_94673] -[group_94674] -[group_94675] -[group_94676] -[group_94677] -[group_94678] -[group_94679] -[group_94680] -[group_94681] -[group_94682] -[group_94683] -[group_94684] -[group_94685] -[group_94686] -[group_94687] -[group_94688] -[group_94689] -[group_94690] -[group_94691] -[group_94692] -[group_94693] -[group_94694] -[group_94695] -[group_94696] -[group_94697] -[group_94698] -[group_94699] -[group_94700] -[group_94701] -[group_94702] -[group_94703] -[group_94704] -[group_94705] -[group_94706] -[group_94707] -[group_94708] -[group_94709] -[group_94710] -[group_94711] -[group_94712] -[group_94713] -[group_94714] -[group_94715] -[group_94716] -[group_94717] -[group_94718] -[group_94719] -[group_94720] -[group_94721] -[group_94722] -[group_94723] -[group_94724] -[group_94725] -[group_94726] -[group_94727] -[group_94728] -[group_94729] -[group_94730] -[group_94731] -[group_94732] -[group_94733] -[group_94734] -[group_94735] -[group_94736] -[group_94737] -[group_94738] -[group_94739] -[group_94740] -[group_94741] -[group_94742] -[group_94743] -[group_94744] -[group_94745] -[group_94746] -[group_94747] -[group_94748] -[group_94749] -[group_94750] -[group_94751] -[group_94752] -[group_94753] -[group_94754] -[group_94755] -[group_94756] -[group_94757] -[group_94758] -[group_94759] -[group_94760] -[group_94761] -[group_94762] -[group_94763] -[group_94764] -[group_94765] -[group_94766] -[group_94767] -[group_94768] -[group_94769] -[group_94770] -[group_94771] -[group_94772] -[group_94773] -[group_94774] -[group_94775] -[group_94776] -[group_94777] -[group_94778] -[group_94779] -[group_94780] -[group_94781] -[group_94782] -[group_94783] -[group_94784] -[group_94785] -[group_94786] -[group_94787] -[group_94788] -[group_94789] -[group_94790] -[group_94791] -[group_94792] -[group_94793] -[group_94794] -[group_94795] -[group_94796] -[group_94797] -[group_94798] -[group_94799] -[group_94800] -[group_94801] -[group_94802] -[group_94803] -[group_94804] -[group_94805] -[group_94806] -[group_94807] -[group_94808] -[group_94809] -[group_94810] -[group_94811] -[group_94812] -[group_94813] -[group_94814] -[group_94815] -[group_94816] -[group_94817] -[group_94818] -[group_94819] -[group_94820] -[group_94821] -[group_94822] -[group_94823] -[group_94824] -[group_94825] -[group_94826] -[group_94827] -[group_94828] -[group_94829] -[group_94830] -[group_94831] -[group_94832] -[group_94833] -[group_94834] -[group_94835] -[group_94836] -[group_94837] -[group_94838] -[group_94839] -[group_94840] -[group_94841] -[group_94842] -[group_94843] -[group_94844] -[group_94845] -[group_94846] -[group_94847] -[group_94848] -[group_94849] -[group_94850] -[group_94851] -[group_94852] -[group_94853] -[group_94854] -[group_94855] -[group_94856] -[group_94857] -[group_94858] -[group_94859] -[group_94860] -[group_94861] -[group_94862] -[group_94863] -[group_94864] -[group_94865] -[group_94866] -[group_94867] -[group_94868] -[group_94869] -[group_94870] -[group_94871] -[group_94872] -[group_94873] -[group_94874] -[group_94875] -[group_94876] -[group_94877] -[group_94878] -[group_94879] -[group_94880] -[group_94881] -[group_94882] -[group_94883] -[group_94884] -[group_94885] -[group_94886] -[group_94887] -[group_94888] -[group_94889] -[group_94890] -[group_94891] -[group_94892] -[group_94893] -[group_94894] -[group_94895] -[group_94896] -[group_94897] -[group_94898] -[group_94899] -[group_94900] -[group_94901] -[group_94902] -[group_94903] -[group_94904] -[group_94905] -[group_94906] -[group_94907] -[group_94908] -[group_94909] -[group_94910] -[group_94911] -[group_94912] -[group_94913] -[group_94914] -[group_94915] -[group_94916] -[group_94917] -[group_94918] -[group_94919] -[group_94920] -[group_94921] -[group_94922] -[group_94923] -[group_94924] -[group_94925] -[group_94926] -[group_94927] -[group_94928] -[group_94929] -[group_94930] -[group_94931] -[group_94932] -[group_94933] -[group_94934] -[group_94935] -[group_94936] -[group_94937] -[group_94938] -[group_94939] -[group_94940] -[group_94941] -[group_94942] -[group_94943] -[group_94944] -[group_94945] -[group_94946] -[group_94947] -[group_94948] -[group_94949] -[group_94950] -[group_94951] -[group_94952] -[group_94953] -[group_94954] -[group_94955] -[group_94956] -[group_94957] -[group_94958] -[group_94959] -[group_94960] -[group_94961] -[group_94962] -[group_94963] -[group_94964] -[group_94965] -[group_94966] -[group_94967] -[group_94968] -[group_94969] -[group_94970] -[group_94971] -[group_94972] -[group_94973] -[group_94974] -[group_94975] -[group_94976] -[group_94977] -[group_94978] -[group_94979] -[group_94980] -[group_94981] -[group_94982] -[group_94983] -[group_94984] -[group_94985] -[group_94986] -[group_94987] -[group_94988] -[group_94989] -[group_94990] -[group_94991] -[group_94992] -[group_94993] -[group_94994] -[group_94995] -[group_94996] -[group_94997] -[group_94998] -[group_94999] -[group_95000] -[group_95001] -[group_95002] -[group_95003] -[group_95004] -[group_95005] -[group_95006] -[group_95007] -[group_95008] -[group_95009] -[group_95010] -[group_95011] -[group_95012] -[group_95013] -[group_95014] -[group_95015] -[group_95016] -[group_95017] -[group_95018] -[group_95019] -[group_95020] -[group_95021] -[group_95022] -[group_95023] -[group_95024] -[group_95025] -[group_95026] -[group_95027] -[group_95028] -[group_95029] -[group_95030] -[group_95031] -[group_95032] -[group_95033] -[group_95034] -[group_95035] -[group_95036] -[group_95037] -[group_95038] -[group_95039] -[group_95040] -[group_95041] -[group_95042] -[group_95043] -[group_95044] -[group_95045] -[group_95046] -[group_95047] -[group_95048] -[group_95049] -[group_95050] -[group_95051] -[group_95052] -[group_95053] -[group_95054] -[group_95055] -[group_95056] -[group_95057] -[group_95058] -[group_95059] -[group_95060] -[group_95061] -[group_95062] -[group_95063] -[group_95064] -[group_95065] -[group_95066] -[group_95067] -[group_95068] -[group_95069] -[group_95070] -[group_95071] -[group_95072] -[group_95073] -[group_95074] -[group_95075] -[group_95076] -[group_95077] -[group_95078] -[group_95079] -[group_95080] -[group_95081] -[group_95082] -[group_95083] -[group_95084] -[group_95085] -[group_95086] -[group_95087] -[group_95088] -[group_95089] -[group_95090] -[group_95091] -[group_95092] -[group_95093] -[group_95094] -[group_95095] -[group_95096] -[group_95097] -[group_95098] -[group_95099] -[group_95100] -[group_95101] -[group_95102] -[group_95103] -[group_95104] -[group_95105] -[group_95106] -[group_95107] -[group_95108] -[group_95109] -[group_95110] -[group_95111] -[group_95112] -[group_95113] -[group_95114] -[group_95115] -[group_95116] -[group_95117] -[group_95118] -[group_95119] -[group_95120] -[group_95121] -[group_95122] -[group_95123] -[group_95124] -[group_95125] -[group_95126] -[group_95127] -[group_95128] -[group_95129] -[group_95130] -[group_95131] -[group_95132] -[group_95133] -[group_95134] -[group_95135] -[group_95136] -[group_95137] -[group_95138] -[group_95139] -[group_95140] -[group_95141] -[group_95142] -[group_95143] -[group_95144] -[group_95145] -[group_95146] -[group_95147] -[group_95148] -[group_95149] -[group_95150] -[group_95151] -[group_95152] -[group_95153] -[group_95154] -[group_95155] -[group_95156] -[group_95157] -[group_95158] -[group_95159] -[group_95160] -[group_95161] -[group_95162] -[group_95163] -[group_95164] -[group_95165] -[group_95166] -[group_95167] -[group_95168] -[group_95169] -[group_95170] -[group_95171] -[group_95172] -[group_95173] -[group_95174] -[group_95175] -[group_95176] -[group_95177] -[group_95178] -[group_95179] -[group_95180] -[group_95181] -[group_95182] -[group_95183] -[group_95184] -[group_95185] -[group_95186] -[group_95187] -[group_95188] -[group_95189] -[group_95190] -[group_95191] -[group_95192] -[group_95193] -[group_95194] -[group_95195] -[group_95196] -[group_95197] -[group_95198] -[group_95199] -[group_95200] -[group_95201] -[group_95202] -[group_95203] -[group_95204] -[group_95205] -[group_95206] -[group_95207] -[group_95208] -[group_95209] -[group_95210] -[group_95211] -[group_95212] -[group_95213] -[group_95214] -[group_95215] -[group_95216] -[group_95217] -[group_95218] -[group_95219] -[group_95220] -[group_95221] -[group_95222] -[group_95223] -[group_95224] -[group_95225] -[group_95226] -[group_95227] -[group_95228] -[group_95229] -[group_95230] -[group_95231] -[group_95232] -[group_95233] -[group_95234] -[group_95235] -[group_95236] -[group_95237] -[group_95238] -[group_95239] -[group_95240] -[group_95241] -[group_95242] -[group_95243] -[group_95244] -[group_95245] -[group_95246] -[group_95247] -[group_95248] -[group_95249] -[group_95250] -[group_95251] -[group_95252] -[group_95253] -[group_95254] -[group_95255] -[group_95256] -[group_95257] -[group_95258] -[group_95259] -[group_95260] -[group_95261] -[group_95262] -[group_95263] -[group_95264] -[group_95265] -[group_95266] -[group_95267] -[group_95268] -[group_95269] -[group_95270] -[group_95271] -[group_95272] -[group_95273] -[group_95274] -[group_95275] -[group_95276] -[group_95277] -[group_95278] -[group_95279] -[group_95280] -[group_95281] -[group_95282] -[group_95283] -[group_95284] -[group_95285] -[group_95286] -[group_95287] -[group_95288] -[group_95289] -[group_95290] -[group_95291] -[group_95292] -[group_95293] -[group_95294] -[group_95295] -[group_95296] -[group_95297] -[group_95298] -[group_95299] -[group_95300] -[group_95301] -[group_95302] -[group_95303] -[group_95304] -[group_95305] -[group_95306] -[group_95307] -[group_95308] -[group_95309] -[group_95310] -[group_95311] -[group_95312] -[group_95313] -[group_95314] -[group_95315] -[group_95316] -[group_95317] -[group_95318] -[group_95319] -[group_95320] -[group_95321] -[group_95322] -[group_95323] -[group_95324] -[group_95325] -[group_95326] -[group_95327] -[group_95328] -[group_95329] -[group_95330] -[group_95331] -[group_95332] -[group_95333] -[group_95334] -[group_95335] -[group_95336] -[group_95337] -[group_95338] -[group_95339] -[group_95340] -[group_95341] -[group_95342] -[group_95343] -[group_95344] -[group_95345] -[group_95346] -[group_95347] -[group_95348] -[group_95349] -[group_95350] -[group_95351] -[group_95352] -[group_95353] -[group_95354] -[group_95355] -[group_95356] -[group_95357] -[group_95358] -[group_95359] -[group_95360] -[group_95361] -[group_95362] -[group_95363] -[group_95364] -[group_95365] -[group_95366] -[group_95367] -[group_95368] -[group_95369] -[group_95370] -[group_95371] -[group_95372] -[group_95373] -[group_95374] -[group_95375] -[group_95376] -[group_95377] -[group_95378] -[group_95379] -[group_95380] -[group_95381] -[group_95382] -[group_95383] -[group_95384] -[group_95385] -[group_95386] -[group_95387] -[group_95388] -[group_95389] -[group_95390] -[group_95391] -[group_95392] -[group_95393] -[group_95394] -[group_95395] -[group_95396] -[group_95397] -[group_95398] -[group_95399] -[group_95400] -[group_95401] -[group_95402] -[group_95403] -[group_95404] -[group_95405] -[group_95406] -[group_95407] -[group_95408] -[group_95409] -[group_95410] -[group_95411] -[group_95412] -[group_95413] -[group_95414] -[group_95415] -[group_95416] -[group_95417] -[group_95418] -[group_95419] -[group_95420] -[group_95421] -[group_95422] -[group_95423] -[group_95424] -[group_95425] -[group_95426] -[group_95427] -[group_95428] -[group_95429] -[group_95430] -[group_95431] -[group_95432] -[group_95433] -[group_95434] -[group_95435] -[group_95436] -[group_95437] -[group_95438] -[group_95439] -[group_95440] -[group_95441] -[group_95442] -[group_95443] -[group_95444] -[group_95445] -[group_95446] -[group_95447] -[group_95448] -[group_95449] -[group_95450] -[group_95451] -[group_95452] -[group_95453] -[group_95454] -[group_95455] -[group_95456] -[group_95457] -[group_95458] -[group_95459] -[group_95460] -[group_95461] -[group_95462] -[group_95463] -[group_95464] -[group_95465] -[group_95466] -[group_95467] -[group_95468] -[group_95469] -[group_95470] -[group_95471] -[group_95472] -[group_95473] -[group_95474] -[group_95475] -[group_95476] -[group_95477] -[group_95478] -[group_95479] -[group_95480] -[group_95481] -[group_95482] -[group_95483] -[group_95484] -[group_95485] -[group_95486] -[group_95487] -[group_95488] -[group_95489] -[group_95490] -[group_95491] -[group_95492] -[group_95493] -[group_95494] -[group_95495] -[group_95496] -[group_95497] -[group_95498] -[group_95499] -[group_95500] -[group_95501] -[group_95502] -[group_95503] -[group_95504] -[group_95505] -[group_95506] -[group_95507] -[group_95508] -[group_95509] -[group_95510] -[group_95511] -[group_95512] -[group_95513] -[group_95514] -[group_95515] -[group_95516] -[group_95517] -[group_95518] -[group_95519] -[group_95520] -[group_95521] -[group_95522] -[group_95523] -[group_95524] -[group_95525] -[group_95526] -[group_95527] -[group_95528] -[group_95529] -[group_95530] -[group_95531] -[group_95532] -[group_95533] -[group_95534] -[group_95535] -[group_95536] -[group_95537] -[group_95538] -[group_95539] -[group_95540] -[group_95541] -[group_95542] -[group_95543] -[group_95544] -[group_95545] -[group_95546] -[group_95547] -[group_95548] -[group_95549] -[group_95550] -[group_95551] -[group_95552] -[group_95553] -[group_95554] -[group_95555] -[group_95556] -[group_95557] -[group_95558] -[group_95559] -[group_95560] -[group_95561] -[group_95562] -[group_95563] -[group_95564] -[group_95565] -[group_95566] -[group_95567] -[group_95568] -[group_95569] -[group_95570] -[group_95571] -[group_95572] -[group_95573] -[group_95574] -[group_95575] -[group_95576] -[group_95577] -[group_95578] -[group_95579] -[group_95580] -[group_95581] -[group_95582] -[group_95583] -[group_95584] -[group_95585] -[group_95586] -[group_95587] -[group_95588] -[group_95589] -[group_95590] -[group_95591] -[group_95592] -[group_95593] -[group_95594] -[group_95595] -[group_95596] -[group_95597] -[group_95598] -[group_95599] -[group_95600] -[group_95601] -[group_95602] -[group_95603] -[group_95604] -[group_95605] -[group_95606] -[group_95607] -[group_95608] -[group_95609] -[group_95610] -[group_95611] -[group_95612] -[group_95613] -[group_95614] -[group_95615] -[group_95616] -[group_95617] -[group_95618] -[group_95619] -[group_95620] -[group_95621] -[group_95622] -[group_95623] -[group_95624] -[group_95625] -[group_95626] -[group_95627] -[group_95628] -[group_95629] -[group_95630] -[group_95631] -[group_95632] -[group_95633] -[group_95634] -[group_95635] -[group_95636] -[group_95637] -[group_95638] -[group_95639] -[group_95640] -[group_95641] -[group_95642] -[group_95643] -[group_95644] -[group_95645] -[group_95646] -[group_95647] -[group_95648] -[group_95649] -[group_95650] -[group_95651] -[group_95652] -[group_95653] -[group_95654] -[group_95655] -[group_95656] -[group_95657] -[group_95658] -[group_95659] -[group_95660] -[group_95661] -[group_95662] -[group_95663] -[group_95664] -[group_95665] -[group_95666] -[group_95667] -[group_95668] -[group_95669] -[group_95670] -[group_95671] -[group_95672] -[group_95673] -[group_95674] -[group_95675] -[group_95676] -[group_95677] -[group_95678] -[group_95679] -[group_95680] -[group_95681] -[group_95682] -[group_95683] -[group_95684] -[group_95685] -[group_95686] -[group_95687] -[group_95688] -[group_95689] -[group_95690] -[group_95691] -[group_95692] -[group_95693] -[group_95694] -[group_95695] -[group_95696] -[group_95697] -[group_95698] -[group_95699] -[group_95700] -[group_95701] -[group_95702] -[group_95703] -[group_95704] -[group_95705] -[group_95706] -[group_95707] -[group_95708] -[group_95709] -[group_95710] -[group_95711] -[group_95712] -[group_95713] -[group_95714] -[group_95715] -[group_95716] -[group_95717] -[group_95718] -[group_95719] -[group_95720] -[group_95721] -[group_95722] -[group_95723] -[group_95724] -[group_95725] -[group_95726] -[group_95727] -[group_95728] -[group_95729] -[group_95730] -[group_95731] -[group_95732] -[group_95733] -[group_95734] -[group_95735] -[group_95736] -[group_95737] -[group_95738] -[group_95739] -[group_95740] -[group_95741] -[group_95742] -[group_95743] -[group_95744] -[group_95745] -[group_95746] -[group_95747] -[group_95748] -[group_95749] -[group_95750] -[group_95751] -[group_95752] -[group_95753] -[group_95754] -[group_95755] -[group_95756] -[group_95757] -[group_95758] -[group_95759] -[group_95760] -[group_95761] -[group_95762] -[group_95763] -[group_95764] -[group_95765] -[group_95766] -[group_95767] -[group_95768] -[group_95769] -[group_95770] -[group_95771] -[group_95772] -[group_95773] -[group_95774] -[group_95775] -[group_95776] -[group_95777] -[group_95778] -[group_95779] -[group_95780] -[group_95781] -[group_95782] -[group_95783] -[group_95784] -[group_95785] -[group_95786] -[group_95787] -[group_95788] -[group_95789] -[group_95790] -[group_95791] -[group_95792] -[group_95793] -[group_95794] -[group_95795] -[group_95796] -[group_95797] -[group_95798] -[group_95799] -[group_95800] -[group_95801] -[group_95802] -[group_95803] -[group_95804] -[group_95805] -[group_95806] -[group_95807] -[group_95808] -[group_95809] -[group_95810] -[group_95811] -[group_95812] -[group_95813] -[group_95814] -[group_95815] -[group_95816] -[group_95817] -[group_95818] -[group_95819] -[group_95820] -[group_95821] -[group_95822] -[group_95823] -[group_95824] -[group_95825] -[group_95826] -[group_95827] -[group_95828] -[group_95829] -[group_95830] -[group_95831] -[group_95832] -[group_95833] -[group_95834] -[group_95835] -[group_95836] -[group_95837] -[group_95838] -[group_95839] -[group_95840] -[group_95841] -[group_95842] -[group_95843] -[group_95844] -[group_95845] -[group_95846] -[group_95847] -[group_95848] -[group_95849] -[group_95850] -[group_95851] -[group_95852] -[group_95853] -[group_95854] -[group_95855] -[group_95856] -[group_95857] -[group_95858] -[group_95859] -[group_95860] -[group_95861] -[group_95862] -[group_95863] -[group_95864] -[group_95865] -[group_95866] -[group_95867] -[group_95868] -[group_95869] -[group_95870] -[group_95871] -[group_95872] -[group_95873] -[group_95874] -[group_95875] -[group_95876] -[group_95877] -[group_95878] -[group_95879] -[group_95880] -[group_95881] -[group_95882] -[group_95883] -[group_95884] -[group_95885] -[group_95886] -[group_95887] -[group_95888] -[group_95889] -[group_95890] -[group_95891] -[group_95892] -[group_95893] -[group_95894] -[group_95895] -[group_95896] -[group_95897] -[group_95898] -[group_95899] -[group_95900] -[group_95901] -[group_95902] -[group_95903] -[group_95904] -[group_95905] -[group_95906] -[group_95907] -[group_95908] -[group_95909] -[group_95910] -[group_95911] -[group_95912] -[group_95913] -[group_95914] -[group_95915] -[group_95916] -[group_95917] -[group_95918] -[group_95919] -[group_95920] -[group_95921] -[group_95922] -[group_95923] -[group_95924] -[group_95925] -[group_95926] -[group_95927] -[group_95928] -[group_95929] -[group_95930] -[group_95931] -[group_95932] -[group_95933] -[group_95934] -[group_95935] -[group_95936] -[group_95937] -[group_95938] -[group_95939] -[group_95940] -[group_95941] -[group_95942] -[group_95943] -[group_95944] -[group_95945] -[group_95946] -[group_95947] -[group_95948] -[group_95949] -[group_95950] -[group_95951] -[group_95952] -[group_95953] -[group_95954] -[group_95955] -[group_95956] -[group_95957] -[group_95958] -[group_95959] -[group_95960] -[group_95961] -[group_95962] -[group_95963] -[group_95964] -[group_95965] -[group_95966] -[group_95967] -[group_95968] -[group_95969] -[group_95970] -[group_95971] -[group_95972] -[group_95973] -[group_95974] -[group_95975] -[group_95976] -[group_95977] -[group_95978] -[group_95979] -[group_95980] -[group_95981] -[group_95982] -[group_95983] -[group_95984] -[group_95985] -[group_95986] -[group_95987] -[group_95988] -[group_95989] -[group_95990] -[group_95991] -[group_95992] -[group_95993] -[group_95994] -[group_95995] -[group_95996] -[group_95997] -[group_95998] -[group_95999] -[group_96000] -[group_96001] -[group_96002] -[group_96003] -[group_96004] -[group_96005] -[group_96006] -[group_96007] -[group_96008] -[group_96009] -[group_96010] -[group_96011] -[group_96012] -[group_96013] -[group_96014] -[group_96015] -[group_96016] -[group_96017] -[group_96018] -[group_96019] -[group_96020] -[group_96021] -[group_96022] -[group_96023] -[group_96024] -[group_96025] -[group_96026] -[group_96027] -[group_96028] -[group_96029] -[group_96030] -[group_96031] -[group_96032] -[group_96033] -[group_96034] -[group_96035] -[group_96036] -[group_96037] -[group_96038] -[group_96039] -[group_96040] -[group_96041] -[group_96042] -[group_96043] -[group_96044] -[group_96045] -[group_96046] -[group_96047] -[group_96048] -[group_96049] -[group_96050] -[group_96051] -[group_96052] -[group_96053] -[group_96054] -[group_96055] -[group_96056] -[group_96057] -[group_96058] -[group_96059] -[group_96060] -[group_96061] -[group_96062] -[group_96063] -[group_96064] -[group_96065] -[group_96066] -[group_96067] -[group_96068] -[group_96069] -[group_96070] -[group_96071] -[group_96072] -[group_96073] -[group_96074] -[group_96075] -[group_96076] -[group_96077] -[group_96078] -[group_96079] -[group_96080] -[group_96081] -[group_96082] -[group_96083] -[group_96084] -[group_96085] -[group_96086] -[group_96087] -[group_96088] -[group_96089] -[group_96090] -[group_96091] -[group_96092] -[group_96093] -[group_96094] -[group_96095] -[group_96096] -[group_96097] -[group_96098] -[group_96099] -[group_96100] -[group_96101] -[group_96102] -[group_96103] -[group_96104] -[group_96105] -[group_96106] -[group_96107] -[group_96108] -[group_96109] -[group_96110] -[group_96111] -[group_96112] -[group_96113] -[group_96114] -[group_96115] -[group_96116] -[group_96117] -[group_96118] -[group_96119] -[group_96120] -[group_96121] -[group_96122] -[group_96123] -[group_96124] -[group_96125] -[group_96126] -[group_96127] -[group_96128] -[group_96129] -[group_96130] -[group_96131] -[group_96132] -[group_96133] -[group_96134] -[group_96135] -[group_96136] -[group_96137] -[group_96138] -[group_96139] -[group_96140] -[group_96141] -[group_96142] -[group_96143] -[group_96144] -[group_96145] -[group_96146] -[group_96147] -[group_96148] -[group_96149] -[group_96150] -[group_96151] -[group_96152] -[group_96153] -[group_96154] -[group_96155] -[group_96156] -[group_96157] -[group_96158] -[group_96159] -[group_96160] -[group_96161] -[group_96162] -[group_96163] -[group_96164] -[group_96165] -[group_96166] -[group_96167] -[group_96168] -[group_96169] -[group_96170] -[group_96171] -[group_96172] -[group_96173] -[group_96174] -[group_96175] -[group_96176] -[group_96177] -[group_96178] -[group_96179] -[group_96180] -[group_96181] -[group_96182] -[group_96183] -[group_96184] -[group_96185] -[group_96186] -[group_96187] -[group_96188] -[group_96189] -[group_96190] -[group_96191] -[group_96192] -[group_96193] -[group_96194] -[group_96195] -[group_96196] -[group_96197] -[group_96198] -[group_96199] -[group_96200] -[group_96201] -[group_96202] -[group_96203] -[group_96204] -[group_96205] -[group_96206] -[group_96207] -[group_96208] -[group_96209] -[group_96210] -[group_96211] -[group_96212] -[group_96213] -[group_96214] -[group_96215] -[group_96216] -[group_96217] -[group_96218] -[group_96219] -[group_96220] -[group_96221] -[group_96222] -[group_96223] -[group_96224] -[group_96225] -[group_96226] -[group_96227] -[group_96228] -[group_96229] -[group_96230] -[group_96231] -[group_96232] -[group_96233] -[group_96234] -[group_96235] -[group_96236] -[group_96237] -[group_96238] -[group_96239] -[group_96240] -[group_96241] -[group_96242] -[group_96243] -[group_96244] -[group_96245] -[group_96246] -[group_96247] -[group_96248] -[group_96249] -[group_96250] -[group_96251] -[group_96252] -[group_96253] -[group_96254] -[group_96255] -[group_96256] -[group_96257] -[group_96258] -[group_96259] -[group_96260] -[group_96261] -[group_96262] -[group_96263] -[group_96264] -[group_96265] -[group_96266] -[group_96267] -[group_96268] -[group_96269] -[group_96270] -[group_96271] -[group_96272] -[group_96273] -[group_96274] -[group_96275] -[group_96276] -[group_96277] -[group_96278] -[group_96279] -[group_96280] -[group_96281] -[group_96282] -[group_96283] -[group_96284] -[group_96285] -[group_96286] -[group_96287] -[group_96288] -[group_96289] -[group_96290] -[group_96291] -[group_96292] -[group_96293] -[group_96294] -[group_96295] -[group_96296] -[group_96297] -[group_96298] -[group_96299] -[group_96300] -[group_96301] -[group_96302] -[group_96303] -[group_96304] -[group_96305] -[group_96306] -[group_96307] -[group_96308] -[group_96309] -[group_96310] -[group_96311] -[group_96312] -[group_96313] -[group_96314] -[group_96315] -[group_96316] -[group_96317] -[group_96318] -[group_96319] -[group_96320] -[group_96321] -[group_96322] -[group_96323] -[group_96324] -[group_96325] -[group_96326] -[group_96327] -[group_96328] -[group_96329] -[group_96330] -[group_96331] -[group_96332] -[group_96333] -[group_96334] -[group_96335] -[group_96336] -[group_96337] -[group_96338] -[group_96339] -[group_96340] -[group_96341] -[group_96342] -[group_96343] -[group_96344] -[group_96345] -[group_96346] -[group_96347] -[group_96348] -[group_96349] -[group_96350] -[group_96351] -[group_96352] -[group_96353] -[group_96354] -[group_96355] -[group_96356] -[group_96357] -[group_96358] -[group_96359] -[group_96360] -[group_96361] -[group_96362] -[group_96363] -[group_96364] -[group_96365] -[group_96366] -[group_96367] -[group_96368] -[group_96369] -[group_96370] -[group_96371] -[group_96372] -[group_96373] -[group_96374] -[group_96375] -[group_96376] -[group_96377] -[group_96378] -[group_96379] -[group_96380] -[group_96381] -[group_96382] -[group_96383] -[group_96384] -[group_96385] -[group_96386] -[group_96387] -[group_96388] -[group_96389] -[group_96390] -[group_96391] -[group_96392] -[group_96393] -[group_96394] -[group_96395] -[group_96396] -[group_96397] -[group_96398] -[group_96399] -[group_96400] -[group_96401] -[group_96402] -[group_96403] -[group_96404] -[group_96405] -[group_96406] -[group_96407] -[group_96408] -[group_96409] -[group_96410] -[group_96411] -[group_96412] -[group_96413] -[group_96414] -[group_96415] -[group_96416] -[group_96417] -[group_96418] -[group_96419] -[group_96420] -[group_96421] -[group_96422] -[group_96423] -[group_96424] -[group_96425] -[group_96426] -[group_96427] -[group_96428] -[group_96429] -[group_96430] -[group_96431] -[group_96432] -[group_96433] -[group_96434] -[group_96435] -[group_96436] -[group_96437] -[group_96438] -[group_96439] -[group_96440] -[group_96441] -[group_96442] -[group_96443] -[group_96444] -[group_96445] -[group_96446] -[group_96447] -[group_96448] -[group_96449] -[group_96450] -[group_96451] -[group_96452] -[group_96453] -[group_96454] -[group_96455] -[group_96456] -[group_96457] -[group_96458] -[group_96459] -[group_96460] -[group_96461] -[group_96462] -[group_96463] -[group_96464] -[group_96465] -[group_96466] -[group_96467] -[group_96468] -[group_96469] -[group_96470] -[group_96471] -[group_96472] -[group_96473] -[group_96474] -[group_96475] -[group_96476] -[group_96477] -[group_96478] -[group_96479] -[group_96480] -[group_96481] -[group_96482] -[group_96483] -[group_96484] -[group_96485] -[group_96486] -[group_96487] -[group_96488] -[group_96489] -[group_96490] -[group_96491] -[group_96492] -[group_96493] -[group_96494] -[group_96495] -[group_96496] -[group_96497] -[group_96498] -[group_96499] -[group_96500] -[group_96501] -[group_96502] -[group_96503] -[group_96504] -[group_96505] -[group_96506] -[group_96507] -[group_96508] -[group_96509] -[group_96510] -[group_96511] -[group_96512] -[group_96513] -[group_96514] -[group_96515] -[group_96516] -[group_96517] -[group_96518] -[group_96519] -[group_96520] -[group_96521] -[group_96522] -[group_96523] -[group_96524] -[group_96525] -[group_96526] -[group_96527] -[group_96528] -[group_96529] -[group_96530] -[group_96531] -[group_96532] -[group_96533] -[group_96534] -[group_96535] -[group_96536] -[group_96537] -[group_96538] -[group_96539] -[group_96540] -[group_96541] -[group_96542] -[group_96543] -[group_96544] -[group_96545] -[group_96546] -[group_96547] -[group_96548] -[group_96549] -[group_96550] -[group_96551] -[group_96552] -[group_96553] -[group_96554] -[group_96555] -[group_96556] -[group_96557] -[group_96558] -[group_96559] -[group_96560] -[group_96561] -[group_96562] -[group_96563] -[group_96564] -[group_96565] -[group_96566] -[group_96567] -[group_96568] -[group_96569] -[group_96570] -[group_96571] -[group_96572] -[group_96573] -[group_96574] -[group_96575] -[group_96576] -[group_96577] -[group_96578] -[group_96579] -[group_96580] -[group_96581] -[group_96582] -[group_96583] -[group_96584] -[group_96585] -[group_96586] -[group_96587] -[group_96588] -[group_96589] -[group_96590] -[group_96591] -[group_96592] -[group_96593] -[group_96594] -[group_96595] -[group_96596] -[group_96597] -[group_96598] -[group_96599] -[group_96600] -[group_96601] -[group_96602] -[group_96603] -[group_96604] -[group_96605] -[group_96606] -[group_96607] -[group_96608] -[group_96609] -[group_96610] -[group_96611] -[group_96612] -[group_96613] -[group_96614] -[group_96615] -[group_96616] -[group_96617] -[group_96618] -[group_96619] -[group_96620] -[group_96621] -[group_96622] -[group_96623] -[group_96624] -[group_96625] -[group_96626] -[group_96627] -[group_96628] -[group_96629] -[group_96630] -[group_96631] -[group_96632] -[group_96633] -[group_96634] -[group_96635] -[group_96636] -[group_96637] -[group_96638] -[group_96639] -[group_96640] -[group_96641] -[group_96642] -[group_96643] -[group_96644] -[group_96645] -[group_96646] -[group_96647] -[group_96648] -[group_96649] -[group_96650] -[group_96651] -[group_96652] -[group_96653] -[group_96654] -[group_96655] -[group_96656] -[group_96657] -[group_96658] -[group_96659] -[group_96660] -[group_96661] -[group_96662] -[group_96663] -[group_96664] -[group_96665] -[group_96666] -[group_96667] -[group_96668] -[group_96669] -[group_96670] -[group_96671] -[group_96672] -[group_96673] -[group_96674] -[group_96675] -[group_96676] -[group_96677] -[group_96678] -[group_96679] -[group_96680] -[group_96681] -[group_96682] -[group_96683] -[group_96684] -[group_96685] -[group_96686] -[group_96687] -[group_96688] -[group_96689] -[group_96690] -[group_96691] -[group_96692] -[group_96693] -[group_96694] -[group_96695] -[group_96696] -[group_96697] -[group_96698] -[group_96699] -[group_96700] -[group_96701] -[group_96702] -[group_96703] -[group_96704] -[group_96705] -[group_96706] -[group_96707] -[group_96708] -[group_96709] -[group_96710] -[group_96711] -[group_96712] -[group_96713] -[group_96714] -[group_96715] -[group_96716] -[group_96717] -[group_96718] -[group_96719] -[group_96720] -[group_96721] -[group_96722] -[group_96723] -[group_96724] -[group_96725] -[group_96726] -[group_96727] -[group_96728] -[group_96729] -[group_96730] -[group_96731] -[group_96732] -[group_96733] -[group_96734] -[group_96735] -[group_96736] -[group_96737] -[group_96738] -[group_96739] -[group_96740] -[group_96741] -[group_96742] -[group_96743] -[group_96744] -[group_96745] -[group_96746] -[group_96747] -[group_96748] -[group_96749] -[group_96750] -[group_96751] -[group_96752] -[group_96753] -[group_96754] -[group_96755] -[group_96756] -[group_96757] -[group_96758] -[group_96759] -[group_96760] -[group_96761] -[group_96762] -[group_96763] -[group_96764] -[group_96765] -[group_96766] -[group_96767] -[group_96768] -[group_96769] -[group_96770] -[group_96771] -[group_96772] -[group_96773] -[group_96774] -[group_96775] -[group_96776] -[group_96777] -[group_96778] -[group_96779] -[group_96780] -[group_96781] -[group_96782] -[group_96783] -[group_96784] -[group_96785] -[group_96786] -[group_96787] -[group_96788] -[group_96789] -[group_96790] -[group_96791] -[group_96792] -[group_96793] -[group_96794] -[group_96795] -[group_96796] -[group_96797] -[group_96798] -[group_96799] -[group_96800] -[group_96801] -[group_96802] -[group_96803] -[group_96804] -[group_96805] -[group_96806] -[group_96807] -[group_96808] -[group_96809] -[group_96810] -[group_96811] -[group_96812] -[group_96813] -[group_96814] -[group_96815] -[group_96816] -[group_96817] -[group_96818] -[group_96819] -[group_96820] -[group_96821] -[group_96822] -[group_96823] -[group_96824] -[group_96825] -[group_96826] -[group_96827] -[group_96828] -[group_96829] -[group_96830] -[group_96831] -[group_96832] -[group_96833] -[group_96834] -[group_96835] -[group_96836] -[group_96837] -[group_96838] -[group_96839] -[group_96840] -[group_96841] -[group_96842] -[group_96843] -[group_96844] -[group_96845] -[group_96846] -[group_96847] -[group_96848] -[group_96849] -[group_96850] -[group_96851] -[group_96852] -[group_96853] -[group_96854] -[group_96855] -[group_96856] -[group_96857] -[group_96858] -[group_96859] -[group_96860] -[group_96861] -[group_96862] -[group_96863] -[group_96864] -[group_96865] -[group_96866] -[group_96867] -[group_96868] -[group_96869] -[group_96870] -[group_96871] -[group_96872] -[group_96873] -[group_96874] -[group_96875] -[group_96876] -[group_96877] -[group_96878] -[group_96879] -[group_96880] -[group_96881] -[group_96882] -[group_96883] -[group_96884] -[group_96885] -[group_96886] -[group_96887] -[group_96888] -[group_96889] -[group_96890] -[group_96891] -[group_96892] -[group_96893] -[group_96894] -[group_96895] -[group_96896] -[group_96897] -[group_96898] -[group_96899] -[group_96900] -[group_96901] -[group_96902] -[group_96903] -[group_96904] -[group_96905] -[group_96906] -[group_96907] -[group_96908] -[group_96909] -[group_96910] -[group_96911] -[group_96912] -[group_96913] -[group_96914] -[group_96915] -[group_96916] -[group_96917] -[group_96918] -[group_96919] -[group_96920] -[group_96921] -[group_96922] -[group_96923] -[group_96924] -[group_96925] -[group_96926] -[group_96927] -[group_96928] -[group_96929] -[group_96930] -[group_96931] -[group_96932] -[group_96933] -[group_96934] -[group_96935] -[group_96936] -[group_96937] -[group_96938] -[group_96939] -[group_96940] -[group_96941] -[group_96942] -[group_96943] -[group_96944] -[group_96945] -[group_96946] -[group_96947] -[group_96948] -[group_96949] -[group_96950] -[group_96951] -[group_96952] -[group_96953] -[group_96954] -[group_96955] -[group_96956] -[group_96957] -[group_96958] -[group_96959] -[group_96960] -[group_96961] -[group_96962] -[group_96963] -[group_96964] -[group_96965] -[group_96966] -[group_96967] -[group_96968] -[group_96969] -[group_96970] -[group_96971] -[group_96972] -[group_96973] -[group_96974] -[group_96975] -[group_96976] -[group_96977] -[group_96978] -[group_96979] -[group_96980] -[group_96981] -[group_96982] -[group_96983] -[group_96984] -[group_96985] -[group_96986] -[group_96987] -[group_96988] -[group_96989] -[group_96990] -[group_96991] -[group_96992] -[group_96993] -[group_96994] -[group_96995] -[group_96996] -[group_96997] -[group_96998] -[group_96999] -[group_97000] -[group_97001] -[group_97002] -[group_97003] -[group_97004] -[group_97005] -[group_97006] -[group_97007] -[group_97008] -[group_97009] -[group_97010] -[group_97011] -[group_97012] -[group_97013] -[group_97014] -[group_97015] -[group_97016] -[group_97017] -[group_97018] -[group_97019] -[group_97020] -[group_97021] -[group_97022] -[group_97023] -[group_97024] -[group_97025] -[group_97026] -[group_97027] -[group_97028] -[group_97029] -[group_97030] -[group_97031] -[group_97032] -[group_97033] -[group_97034] -[group_97035] -[group_97036] -[group_97037] -[group_97038] -[group_97039] -[group_97040] -[group_97041] -[group_97042] -[group_97043] -[group_97044] -[group_97045] -[group_97046] -[group_97047] -[group_97048] -[group_97049] -[group_97050] -[group_97051] -[group_97052] -[group_97053] -[group_97054] -[group_97055] -[group_97056] -[group_97057] -[group_97058] -[group_97059] -[group_97060] -[group_97061] -[group_97062] -[group_97063] -[group_97064] -[group_97065] -[group_97066] -[group_97067] -[group_97068] -[group_97069] -[group_97070] -[group_97071] -[group_97072] -[group_97073] -[group_97074] -[group_97075] -[group_97076] -[group_97077] -[group_97078] -[group_97079] -[group_97080] -[group_97081] -[group_97082] -[group_97083] -[group_97084] -[group_97085] -[group_97086] -[group_97087] -[group_97088] -[group_97089] -[group_97090] -[group_97091] -[group_97092] -[group_97093] -[group_97094] -[group_97095] -[group_97096] -[group_97097] -[group_97098] -[group_97099] -[group_97100] -[group_97101] -[group_97102] -[group_97103] -[group_97104] -[group_97105] -[group_97106] -[group_97107] -[group_97108] -[group_97109] -[group_97110] -[group_97111] -[group_97112] -[group_97113] -[group_97114] -[group_97115] -[group_97116] -[group_97117] -[group_97118] -[group_97119] -[group_97120] -[group_97121] -[group_97122] -[group_97123] -[group_97124] -[group_97125] -[group_97126] -[group_97127] -[group_97128] -[group_97129] -[group_97130] -[group_97131] -[group_97132] -[group_97133] -[group_97134] -[group_97135] -[group_97136] -[group_97137] -[group_97138] -[group_97139] -[group_97140] -[group_97141] -[group_97142] -[group_97143] -[group_97144] -[group_97145] -[group_97146] -[group_97147] -[group_97148] -[group_97149] -[group_97150] -[group_97151] -[group_97152] -[group_97153] -[group_97154] -[group_97155] -[group_97156] -[group_97157] -[group_97158] -[group_97159] -[group_97160] -[group_97161] -[group_97162] -[group_97163] -[group_97164] -[group_97165] -[group_97166] -[group_97167] -[group_97168] -[group_97169] -[group_97170] -[group_97171] -[group_97172] -[group_97173] -[group_97174] -[group_97175] -[group_97176] -[group_97177] -[group_97178] -[group_97179] -[group_97180] -[group_97181] -[group_97182] -[group_97183] -[group_97184] -[group_97185] -[group_97186] -[group_97187] -[group_97188] -[group_97189] -[group_97190] -[group_97191] -[group_97192] -[group_97193] -[group_97194] -[group_97195] -[group_97196] -[group_97197] -[group_97198] -[group_97199] -[group_97200] -[group_97201] -[group_97202] -[group_97203] -[group_97204] -[group_97205] -[group_97206] -[group_97207] -[group_97208] -[group_97209] -[group_97210] -[group_97211] -[group_97212] -[group_97213] -[group_97214] -[group_97215] -[group_97216] -[group_97217] -[group_97218] -[group_97219] -[group_97220] -[group_97221] -[group_97222] -[group_97223] -[group_97224] -[group_97225] -[group_97226] -[group_97227] -[group_97228] -[group_97229] -[group_97230] -[group_97231] -[group_97232] -[group_97233] -[group_97234] -[group_97235] -[group_97236] -[group_97237] -[group_97238] -[group_97239] -[group_97240] -[group_97241] -[group_97242] -[group_97243] -[group_97244] -[group_97245] -[group_97246] -[group_97247] -[group_97248] -[group_97249] -[group_97250] -[group_97251] -[group_97252] -[group_97253] -[group_97254] -[group_97255] -[group_97256] -[group_97257] -[group_97258] -[group_97259] -[group_97260] -[group_97261] -[group_97262] -[group_97263] -[group_97264] -[group_97265] -[group_97266] -[group_97267] -[group_97268] -[group_97269] -[group_97270] -[group_97271] -[group_97272] -[group_97273] -[group_97274] -[group_97275] -[group_97276] -[group_97277] -[group_97278] -[group_97279] -[group_97280] -[group_97281] -[group_97282] -[group_97283] -[group_97284] -[group_97285] -[group_97286] -[group_97287] -[group_97288] -[group_97289] -[group_97290] -[group_97291] -[group_97292] -[group_97293] -[group_97294] -[group_97295] -[group_97296] -[group_97297] -[group_97298] -[group_97299] -[group_97300] -[group_97301] -[group_97302] -[group_97303] -[group_97304] -[group_97305] -[group_97306] -[group_97307] -[group_97308] -[group_97309] -[group_97310] -[group_97311] -[group_97312] -[group_97313] -[group_97314] -[group_97315] -[group_97316] -[group_97317] -[group_97318] -[group_97319] -[group_97320] -[group_97321] -[group_97322] -[group_97323] -[group_97324] -[group_97325] -[group_97326] -[group_97327] -[group_97328] -[group_97329] -[group_97330] -[group_97331] -[group_97332] -[group_97333] -[group_97334] -[group_97335] -[group_97336] -[group_97337] -[group_97338] -[group_97339] -[group_97340] -[group_97341] -[group_97342] -[group_97343] -[group_97344] -[group_97345] -[group_97346] -[group_97347] -[group_97348] -[group_97349] -[group_97350] -[group_97351] -[group_97352] -[group_97353] -[group_97354] -[group_97355] -[group_97356] -[group_97357] -[group_97358] -[group_97359] -[group_97360] -[group_97361] -[group_97362] -[group_97363] -[group_97364] -[group_97365] -[group_97366] -[group_97367] -[group_97368] -[group_97369] -[group_97370] -[group_97371] -[group_97372] -[group_97373] -[group_97374] -[group_97375] -[group_97376] -[group_97377] -[group_97378] -[group_97379] -[group_97380] -[group_97381] -[group_97382] -[group_97383] -[group_97384] -[group_97385] -[group_97386] -[group_97387] -[group_97388] -[group_97389] -[group_97390] -[group_97391] -[group_97392] -[group_97393] -[group_97394] -[group_97395] -[group_97396] -[group_97397] -[group_97398] -[group_97399] -[group_97400] -[group_97401] -[group_97402] -[group_97403] -[group_97404] -[group_97405] -[group_97406] -[group_97407] -[group_97408] -[group_97409] -[group_97410] -[group_97411] -[group_97412] -[group_97413] -[group_97414] -[group_97415] -[group_97416] -[group_97417] -[group_97418] -[group_97419] -[group_97420] -[group_97421] -[group_97422] -[group_97423] -[group_97424] -[group_97425] -[group_97426] -[group_97427] -[group_97428] -[group_97429] -[group_97430] -[group_97431] -[group_97432] -[group_97433] -[group_97434] -[group_97435] -[group_97436] -[group_97437] -[group_97438] -[group_97439] -[group_97440] -[group_97441] -[group_97442] -[group_97443] -[group_97444] -[group_97445] -[group_97446] -[group_97447] -[group_97448] -[group_97449] -[group_97450] -[group_97451] -[group_97452] -[group_97453] -[group_97454] -[group_97455] -[group_97456] -[group_97457] -[group_97458] -[group_97459] -[group_97460] -[group_97461] -[group_97462] -[group_97463] -[group_97464] -[group_97465] -[group_97466] -[group_97467] -[group_97468] -[group_97469] -[group_97470] -[group_97471] -[group_97472] -[group_97473] -[group_97474] -[group_97475] -[group_97476] -[group_97477] -[group_97478] -[group_97479] -[group_97480] -[group_97481] -[group_97482] -[group_97483] -[group_97484] -[group_97485] -[group_97486] -[group_97487] -[group_97488] -[group_97489] -[group_97490] -[group_97491] -[group_97492] -[group_97493] -[group_97494] -[group_97495] -[group_97496] -[group_97497] -[group_97498] -[group_97499] -[group_97500] -[group_97501] -[group_97502] -[group_97503] -[group_97504] -[group_97505] -[group_97506] -[group_97507] -[group_97508] -[group_97509] -[group_97510] -[group_97511] -[group_97512] -[group_97513] -[group_97514] -[group_97515] -[group_97516] -[group_97517] -[group_97518] -[group_97519] -[group_97520] -[group_97521] -[group_97522] -[group_97523] -[group_97524] -[group_97525] -[group_97526] -[group_97527] -[group_97528] -[group_97529] -[group_97530] -[group_97531] -[group_97532] -[group_97533] -[group_97534] -[group_97535] -[group_97536] -[group_97537] -[group_97538] -[group_97539] -[group_97540] -[group_97541] -[group_97542] -[group_97543] -[group_97544] -[group_97545] -[group_97546] -[group_97547] -[group_97548] -[group_97549] -[group_97550] -[group_97551] -[group_97552] -[group_97553] -[group_97554] -[group_97555] -[group_97556] -[group_97557] -[group_97558] -[group_97559] -[group_97560] -[group_97561] -[group_97562] -[group_97563] -[group_97564] -[group_97565] -[group_97566] -[group_97567] -[group_97568] -[group_97569] -[group_97570] -[group_97571] -[group_97572] -[group_97573] -[group_97574] -[group_97575] -[group_97576] -[group_97577] -[group_97578] -[group_97579] -[group_97580] -[group_97581] -[group_97582] -[group_97583] -[group_97584] -[group_97585] -[group_97586] -[group_97587] -[group_97588] -[group_97589] -[group_97590] -[group_97591] -[group_97592] -[group_97593] -[group_97594] -[group_97595] -[group_97596] -[group_97597] -[group_97598] -[group_97599] -[group_97600] -[group_97601] -[group_97602] -[group_97603] -[group_97604] -[group_97605] -[group_97606] -[group_97607] -[group_97608] -[group_97609] -[group_97610] -[group_97611] -[group_97612] -[group_97613] -[group_97614] -[group_97615] -[group_97616] -[group_97617] -[group_97618] -[group_97619] -[group_97620] -[group_97621] -[group_97622] -[group_97623] -[group_97624] -[group_97625] -[group_97626] -[group_97627] -[group_97628] -[group_97629] -[group_97630] -[group_97631] -[group_97632] -[group_97633] -[group_97634] -[group_97635] -[group_97636] -[group_97637] -[group_97638] -[group_97639] -[group_97640] -[group_97641] -[group_97642] -[group_97643] -[group_97644] -[group_97645] -[group_97646] -[group_97647] -[group_97648] -[group_97649] -[group_97650] -[group_97651] -[group_97652] -[group_97653] -[group_97654] -[group_97655] -[group_97656] -[group_97657] -[group_97658] -[group_97659] -[group_97660] -[group_97661] -[group_97662] -[group_97663] -[group_97664] -[group_97665] -[group_97666] -[group_97667] -[group_97668] -[group_97669] -[group_97670] -[group_97671] -[group_97672] -[group_97673] -[group_97674] -[group_97675] -[group_97676] -[group_97677] -[group_97678] -[group_97679] -[group_97680] -[group_97681] -[group_97682] -[group_97683] -[group_97684] -[group_97685] -[group_97686] -[group_97687] -[group_97688] -[group_97689] -[group_97690] -[group_97691] -[group_97692] -[group_97693] -[group_97694] -[group_97695] -[group_97696] -[group_97697] -[group_97698] -[group_97699] -[group_97700] -[group_97701] -[group_97702] -[group_97703] -[group_97704] -[group_97705] -[group_97706] -[group_97707] -[group_97708] -[group_97709] -[group_97710] -[group_97711] -[group_97712] -[group_97713] -[group_97714] -[group_97715] -[group_97716] -[group_97717] -[group_97718] -[group_97719] -[group_97720] -[group_97721] -[group_97722] -[group_97723] -[group_97724] -[group_97725] -[group_97726] -[group_97727] -[group_97728] -[group_97729] -[group_97730] -[group_97731] -[group_97732] -[group_97733] -[group_97734] -[group_97735] -[group_97736] -[group_97737] -[group_97738] -[group_97739] -[group_97740] -[group_97741] -[group_97742] -[group_97743] -[group_97744] -[group_97745] -[group_97746] -[group_97747] -[group_97748] -[group_97749] -[group_97750] -[group_97751] -[group_97752] -[group_97753] -[group_97754] -[group_97755] -[group_97756] -[group_97757] -[group_97758] -[group_97759] -[group_97760] -[group_97761] -[group_97762] -[group_97763] -[group_97764] -[group_97765] -[group_97766] -[group_97767] -[group_97768] -[group_97769] -[group_97770] -[group_97771] -[group_97772] -[group_97773] -[group_97774] -[group_97775] -[group_97776] -[group_97777] -[group_97778] -[group_97779] -[group_97780] -[group_97781] -[group_97782] -[group_97783] -[group_97784] -[group_97785] -[group_97786] -[group_97787] -[group_97788] -[group_97789] -[group_97790] -[group_97791] -[group_97792] -[group_97793] -[group_97794] -[group_97795] -[group_97796] -[group_97797] -[group_97798] -[group_97799] -[group_97800] -[group_97801] -[group_97802] -[group_97803] -[group_97804] -[group_97805] -[group_97806] -[group_97807] -[group_97808] -[group_97809] -[group_97810] -[group_97811] -[group_97812] -[group_97813] -[group_97814] -[group_97815] -[group_97816] -[group_97817] -[group_97818] -[group_97819] -[group_97820] -[group_97821] -[group_97822] -[group_97823] -[group_97824] -[group_97825] -[group_97826] -[group_97827] -[group_97828] -[group_97829] -[group_97830] -[group_97831] -[group_97832] -[group_97833] -[group_97834] -[group_97835] -[group_97836] -[group_97837] -[group_97838] -[group_97839] -[group_97840] -[group_97841] -[group_97842] -[group_97843] -[group_97844] -[group_97845] -[group_97846] -[group_97847] -[group_97848] -[group_97849] -[group_97850] -[group_97851] -[group_97852] -[group_97853] -[group_97854] -[group_97855] -[group_97856] -[group_97857] -[group_97858] -[group_97859] -[group_97860] -[group_97861] -[group_97862] -[group_97863] -[group_97864] -[group_97865] -[group_97866] -[group_97867] -[group_97868] -[group_97869] -[group_97870] -[group_97871] -[group_97872] -[group_97873] -[group_97874] -[group_97875] -[group_97876] -[group_97877] -[group_97878] -[group_97879] -[group_97880] -[group_97881] -[group_97882] -[group_97883] -[group_97884] -[group_97885] -[group_97886] -[group_97887] -[group_97888] -[group_97889] -[group_97890] -[group_97891] -[group_97892] -[group_97893] -[group_97894] -[group_97895] -[group_97896] -[group_97897] -[group_97898] -[group_97899] -[group_97900] -[group_97901] -[group_97902] -[group_97903] -[group_97904] -[group_97905] -[group_97906] -[group_97907] -[group_97908] -[group_97909] -[group_97910] -[group_97911] -[group_97912] -[group_97913] -[group_97914] -[group_97915] -[group_97916] -[group_97917] -[group_97918] -[group_97919] -[group_97920] -[group_97921] -[group_97922] -[group_97923] -[group_97924] -[group_97925] -[group_97926] -[group_97927] -[group_97928] -[group_97929] -[group_97930] -[group_97931] -[group_97932] -[group_97933] -[group_97934] -[group_97935] -[group_97936] -[group_97937] -[group_97938] -[group_97939] -[group_97940] -[group_97941] -[group_97942] -[group_97943] -[group_97944] -[group_97945] -[group_97946] -[group_97947] -[group_97948] -[group_97949] -[group_97950] -[group_97951] -[group_97952] -[group_97953] -[group_97954] -[group_97955] -[group_97956] -[group_97957] -[group_97958] -[group_97959] -[group_97960] -[group_97961] -[group_97962] -[group_97963] -[group_97964] -[group_97965] -[group_97966] -[group_97967] -[group_97968] -[group_97969] -[group_97970] -[group_97971] -[group_97972] -[group_97973] -[group_97974] -[group_97975] -[group_97976] -[group_97977] -[group_97978] -[group_97979] -[group_97980] -[group_97981] -[group_97982] -[group_97983] -[group_97984] -[group_97985] -[group_97986] -[group_97987] -[group_97988] -[group_97989] -[group_97990] -[group_97991] -[group_97992] -[group_97993] -[group_97994] -[group_97995] -[group_97996] -[group_97997] -[group_97998] -[group_97999] -[group_98000] -[group_98001] -[group_98002] -[group_98003] -[group_98004] -[group_98005] -[group_98006] -[group_98007] -[group_98008] -[group_98009] -[group_98010] -[group_98011] -[group_98012] -[group_98013] -[group_98014] -[group_98015] -[group_98016] -[group_98017] -[group_98018] -[group_98019] -[group_98020] -[group_98021] -[group_98022] -[group_98023] -[group_98024] -[group_98025] -[group_98026] -[group_98027] -[group_98028] -[group_98029] -[group_98030] -[group_98031] -[group_98032] -[group_98033] -[group_98034] -[group_98035] -[group_98036] -[group_98037] -[group_98038] -[group_98039] -[group_98040] -[group_98041] -[group_98042] -[group_98043] -[group_98044] -[group_98045] -[group_98046] -[group_98047] -[group_98048] -[group_98049] -[group_98050] -[group_98051] -[group_98052] -[group_98053] -[group_98054] -[group_98055] -[group_98056] -[group_98057] -[group_98058] -[group_98059] -[group_98060] -[group_98061] -[group_98062] -[group_98063] -[group_98064] -[group_98065] -[group_98066] -[group_98067] -[group_98068] -[group_98069] -[group_98070] -[group_98071] -[group_98072] -[group_98073] -[group_98074] -[group_98075] -[group_98076] -[group_98077] -[group_98078] -[group_98079] -[group_98080] -[group_98081] -[group_98082] -[group_98083] -[group_98084] -[group_98085] -[group_98086] -[group_98087] -[group_98088] -[group_98089] -[group_98090] -[group_98091] -[group_98092] -[group_98093] -[group_98094] -[group_98095] -[group_98096] -[group_98097] -[group_98098] -[group_98099] -[group_98100] -[group_98101] -[group_98102] -[group_98103] -[group_98104] -[group_98105] -[group_98106] -[group_98107] -[group_98108] -[group_98109] -[group_98110] -[group_98111] -[group_98112] -[group_98113] -[group_98114] -[group_98115] -[group_98116] -[group_98117] -[group_98118] -[group_98119] -[group_98120] -[group_98121] -[group_98122] -[group_98123] -[group_98124] -[group_98125] -[group_98126] -[group_98127] -[group_98128] -[group_98129] -[group_98130] -[group_98131] -[group_98132] -[group_98133] -[group_98134] -[group_98135] -[group_98136] -[group_98137] -[group_98138] -[group_98139] -[group_98140] -[group_98141] -[group_98142] -[group_98143] -[group_98144] -[group_98145] -[group_98146] -[group_98147] -[group_98148] -[group_98149] -[group_98150] -[group_98151] -[group_98152] -[group_98153] -[group_98154] -[group_98155] -[group_98156] -[group_98157] -[group_98158] -[group_98159] -[group_98160] -[group_98161] -[group_98162] -[group_98163] -[group_98164] -[group_98165] -[group_98166] -[group_98167] -[group_98168] -[group_98169] -[group_98170] -[group_98171] -[group_98172] -[group_98173] -[group_98174] -[group_98175] -[group_98176] -[group_98177] -[group_98178] -[group_98179] -[group_98180] -[group_98181] -[group_98182] -[group_98183] -[group_98184] -[group_98185] -[group_98186] -[group_98187] -[group_98188] -[group_98189] -[group_98190] -[group_98191] -[group_98192] -[group_98193] -[group_98194] -[group_98195] -[group_98196] -[group_98197] -[group_98198] -[group_98199] -[group_98200] -[group_98201] -[group_98202] -[group_98203] -[group_98204] -[group_98205] -[group_98206] -[group_98207] -[group_98208] -[group_98209] -[group_98210] -[group_98211] -[group_98212] -[group_98213] -[group_98214] -[group_98215] -[group_98216] -[group_98217] -[group_98218] -[group_98219] -[group_98220] -[group_98221] -[group_98222] -[group_98223] -[group_98224] -[group_98225] -[group_98226] -[group_98227] -[group_98228] -[group_98229] -[group_98230] -[group_98231] -[group_98232] -[group_98233] -[group_98234] -[group_98235] -[group_98236] -[group_98237] -[group_98238] -[group_98239] -[group_98240] -[group_98241] -[group_98242] -[group_98243] -[group_98244] -[group_98245] -[group_98246] -[group_98247] -[group_98248] -[group_98249] -[group_98250] -[group_98251] -[group_98252] -[group_98253] -[group_98254] -[group_98255] -[group_98256] -[group_98257] -[group_98258] -[group_98259] -[group_98260] -[group_98261] -[group_98262] -[group_98263] -[group_98264] -[group_98265] -[group_98266] -[group_98267] -[group_98268] -[group_98269] -[group_98270] -[group_98271] -[group_98272] -[group_98273] -[group_98274] -[group_98275] -[group_98276] -[group_98277] -[group_98278] -[group_98279] -[group_98280] -[group_98281] -[group_98282] -[group_98283] -[group_98284] -[group_98285] -[group_98286] -[group_98287] -[group_98288] -[group_98289] -[group_98290] -[group_98291] -[group_98292] -[group_98293] -[group_98294] -[group_98295] -[group_98296] -[group_98297] -[group_98298] -[group_98299] -[group_98300] -[group_98301] -[group_98302] -[group_98303] -[group_98304] -[group_98305] -[group_98306] -[group_98307] -[group_98308] -[group_98309] -[group_98310] -[group_98311] -[group_98312] -[group_98313] -[group_98314] -[group_98315] -[group_98316] -[group_98317] -[group_98318] -[group_98319] -[group_98320] -[group_98321] -[group_98322] -[group_98323] -[group_98324] -[group_98325] -[group_98326] -[group_98327] -[group_98328] -[group_98329] -[group_98330] -[group_98331] -[group_98332] -[group_98333] -[group_98334] -[group_98335] -[group_98336] -[group_98337] -[group_98338] -[group_98339] -[group_98340] -[group_98341] -[group_98342] -[group_98343] -[group_98344] -[group_98345] -[group_98346] -[group_98347] -[group_98348] -[group_98349] -[group_98350] -[group_98351] -[group_98352] -[group_98353] -[group_98354] -[group_98355] -[group_98356] -[group_98357] -[group_98358] -[group_98359] -[group_98360] -[group_98361] -[group_98362] -[group_98363] -[group_98364] -[group_98365] -[group_98366] -[group_98367] -[group_98368] -[group_98369] -[group_98370] -[group_98371] -[group_98372] -[group_98373] -[group_98374] -[group_98375] -[group_98376] -[group_98377] -[group_98378] -[group_98379] -[group_98380] -[group_98381] -[group_98382] -[group_98383] -[group_98384] -[group_98385] -[group_98386] -[group_98387] -[group_98388] -[group_98389] -[group_98390] -[group_98391] -[group_98392] -[group_98393] -[group_98394] -[group_98395] -[group_98396] -[group_98397] -[group_98398] -[group_98399] -[group_98400] -[group_98401] -[group_98402] -[group_98403] -[group_98404] -[group_98405] -[group_98406] -[group_98407] -[group_98408] -[group_98409] -[group_98410] -[group_98411] -[group_98412] -[group_98413] -[group_98414] -[group_98415] -[group_98416] -[group_98417] -[group_98418] -[group_98419] -[group_98420] -[group_98421] -[group_98422] -[group_98423] -[group_98424] -[group_98425] -[group_98426] -[group_98427] -[group_98428] -[group_98429] -[group_98430] -[group_98431] -[group_98432] -[group_98433] -[group_98434] -[group_98435] -[group_98436] -[group_98437] -[group_98438] -[group_98439] -[group_98440] -[group_98441] -[group_98442] -[group_98443] -[group_98444] -[group_98445] -[group_98446] -[group_98447] -[group_98448] -[group_98449] -[group_98450] -[group_98451] -[group_98452] -[group_98453] -[group_98454] -[group_98455] -[group_98456] -[group_98457] -[group_98458] -[group_98459] -[group_98460] -[group_98461] -[group_98462] -[group_98463] -[group_98464] -[group_98465] -[group_98466] -[group_98467] -[group_98468] -[group_98469] -[group_98470] -[group_98471] -[group_98472] -[group_98473] -[group_98474] -[group_98475] -[group_98476] -[group_98477] -[group_98478] -[group_98479] -[group_98480] -[group_98481] -[group_98482] -[group_98483] -[group_98484] -[group_98485] -[group_98486] -[group_98487] -[group_98488] -[group_98489] -[group_98490] -[group_98491] -[group_98492] -[group_98493] -[group_98494] -[group_98495] -[group_98496] -[group_98497] -[group_98498] -[group_98499] -[group_98500] -[group_98501] -[group_98502] -[group_98503] -[group_98504] -[group_98505] -[group_98506] -[group_98507] -[group_98508] -[group_98509] -[group_98510] -[group_98511] -[group_98512] -[group_98513] -[group_98514] -[group_98515] -[group_98516] -[group_98517] -[group_98518] -[group_98519] -[group_98520] -[group_98521] -[group_98522] -[group_98523] -[group_98524] -[group_98525] -[group_98526] -[group_98527] -[group_98528] -[group_98529] -[group_98530] -[group_98531] -[group_98532] -[group_98533] -[group_98534] -[group_98535] -[group_98536] -[group_98537] -[group_98538] -[group_98539] -[group_98540] -[group_98541] -[group_98542] -[group_98543] -[group_98544] -[group_98545] -[group_98546] -[group_98547] -[group_98548] -[group_98549] -[group_98550] -[group_98551] -[group_98552] -[group_98553] -[group_98554] -[group_98555] -[group_98556] -[group_98557] -[group_98558] -[group_98559] -[group_98560] -[group_98561] -[group_98562] -[group_98563] -[group_98564] -[group_98565] -[group_98566] -[group_98567] -[group_98568] -[group_98569] -[group_98570] -[group_98571] -[group_98572] -[group_98573] -[group_98574] -[group_98575] -[group_98576] -[group_98577] -[group_98578] -[group_98579] -[group_98580] -[group_98581] -[group_98582] -[group_98583] -[group_98584] -[group_98585] -[group_98586] -[group_98587] -[group_98588] -[group_98589] -[group_98590] -[group_98591] -[group_98592] -[group_98593] -[group_98594] -[group_98595] -[group_98596] -[group_98597] -[group_98598] -[group_98599] -[group_98600] -[group_98601] -[group_98602] -[group_98603] -[group_98604] -[group_98605] -[group_98606] -[group_98607] -[group_98608] -[group_98609] -[group_98610] -[group_98611] -[group_98612] -[group_98613] -[group_98614] -[group_98615] -[group_98616] -[group_98617] -[group_98618] -[group_98619] -[group_98620] -[group_98621] -[group_98622] -[group_98623] -[group_98624] -[group_98625] -[group_98626] -[group_98627] -[group_98628] -[group_98629] -[group_98630] -[group_98631] -[group_98632] -[group_98633] -[group_98634] -[group_98635] -[group_98636] -[group_98637] -[group_98638] -[group_98639] -[group_98640] -[group_98641] -[group_98642] -[group_98643] -[group_98644] -[group_98645] -[group_98646] -[group_98647] -[group_98648] -[group_98649] -[group_98650] -[group_98651] -[group_98652] -[group_98653] -[group_98654] -[group_98655] -[group_98656] -[group_98657] -[group_98658] -[group_98659] -[group_98660] -[group_98661] -[group_98662] -[group_98663] -[group_98664] -[group_98665] -[group_98666] -[group_98667] -[group_98668] -[group_98669] -[group_98670] -[group_98671] -[group_98672] -[group_98673] -[group_98674] -[group_98675] -[group_98676] -[group_98677] -[group_98678] -[group_98679] -[group_98680] -[group_98681] -[group_98682] -[group_98683] -[group_98684] -[group_98685] -[group_98686] -[group_98687] -[group_98688] -[group_98689] -[group_98690] -[group_98691] -[group_98692] -[group_98693] -[group_98694] -[group_98695] -[group_98696] -[group_98697] -[group_98698] -[group_98699] -[group_98700] -[group_98701] -[group_98702] -[group_98703] -[group_98704] -[group_98705] -[group_98706] -[group_98707] -[group_98708] -[group_98709] -[group_98710] -[group_98711] -[group_98712] -[group_98713] -[group_98714] -[group_98715] -[group_98716] -[group_98717] -[group_98718] -[group_98719] -[group_98720] -[group_98721] -[group_98722] -[group_98723] -[group_98724] -[group_98725] -[group_98726] -[group_98727] -[group_98728] -[group_98729] -[group_98730] -[group_98731] -[group_98732] -[group_98733] -[group_98734] -[group_98735] -[group_98736] -[group_98737] -[group_98738] -[group_98739] -[group_98740] -[group_98741] -[group_98742] -[group_98743] -[group_98744] -[group_98745] -[group_98746] -[group_98747] -[group_98748] -[group_98749] -[group_98750] -[group_98751] -[group_98752] -[group_98753] -[group_98754] -[group_98755] -[group_98756] -[group_98757] -[group_98758] -[group_98759] -[group_98760] -[group_98761] -[group_98762] -[group_98763] -[group_98764] -[group_98765] -[group_98766] -[group_98767] -[group_98768] -[group_98769] -[group_98770] -[group_98771] -[group_98772] -[group_98773] -[group_98774] -[group_98775] -[group_98776] -[group_98777] -[group_98778] -[group_98779] -[group_98780] -[group_98781] -[group_98782] -[group_98783] -[group_98784] -[group_98785] -[group_98786] -[group_98787] -[group_98788] -[group_98789] -[group_98790] -[group_98791] -[group_98792] -[group_98793] -[group_98794] -[group_98795] -[group_98796] -[group_98797] -[group_98798] -[group_98799] -[group_98800] -[group_98801] -[group_98802] -[group_98803] -[group_98804] -[group_98805] -[group_98806] -[group_98807] -[group_98808] -[group_98809] -[group_98810] -[group_98811] -[group_98812] -[group_98813] -[group_98814] -[group_98815] -[group_98816] -[group_98817] -[group_98818] -[group_98819] -[group_98820] -[group_98821] -[group_98822] -[group_98823] -[group_98824] -[group_98825] -[group_98826] -[group_98827] -[group_98828] -[group_98829] -[group_98830] -[group_98831] -[group_98832] -[group_98833] -[group_98834] -[group_98835] -[group_98836] -[group_98837] -[group_98838] -[group_98839] -[group_98840] -[group_98841] -[group_98842] -[group_98843] -[group_98844] -[group_98845] -[group_98846] -[group_98847] -[group_98848] -[group_98849] -[group_98850] -[group_98851] -[group_98852] -[group_98853] -[group_98854] -[group_98855] -[group_98856] -[group_98857] -[group_98858] -[group_98859] -[group_98860] -[group_98861] -[group_98862] -[group_98863] -[group_98864] -[group_98865] -[group_98866] -[group_98867] -[group_98868] -[group_98869] -[group_98870] -[group_98871] -[group_98872] -[group_98873] -[group_98874] -[group_98875] -[group_98876] -[group_98877] -[group_98878] -[group_98879] -[group_98880] -[group_98881] -[group_98882] -[group_98883] -[group_98884] -[group_98885] -[group_98886] -[group_98887] -[group_98888] -[group_98889] -[group_98890] -[group_98891] -[group_98892] -[group_98893] -[group_98894] -[group_98895] -[group_98896] -[group_98897] -[group_98898] -[group_98899] -[group_98900] -[group_98901] -[group_98902] -[group_98903] -[group_98904] -[group_98905] -[group_98906] -[group_98907] -[group_98908] -[group_98909] -[group_98910] -[group_98911] -[group_98912] -[group_98913] -[group_98914] -[group_98915] -[group_98916] -[group_98917] -[group_98918] -[group_98919] -[group_98920] -[group_98921] -[group_98922] -[group_98923] -[group_98924] -[group_98925] -[group_98926] -[group_98927] -[group_98928] -[group_98929] -[group_98930] -[group_98931] -[group_98932] -[group_98933] -[group_98934] -[group_98935] -[group_98936] -[group_98937] -[group_98938] -[group_98939] -[group_98940] -[group_98941] -[group_98942] -[group_98943] -[group_98944] -[group_98945] -[group_98946] -[group_98947] -[group_98948] -[group_98949] -[group_98950] -[group_98951] -[group_98952] -[group_98953] -[group_98954] -[group_98955] -[group_98956] -[group_98957] -[group_98958] -[group_98959] -[group_98960] -[group_98961] -[group_98962] -[group_98963] -[group_98964] -[group_98965] -[group_98966] -[group_98967] -[group_98968] -[group_98969] -[group_98970] -[group_98971] -[group_98972] -[group_98973] -[group_98974] -[group_98975] -[group_98976] -[group_98977] -[group_98978] -[group_98979] -[group_98980] -[group_98981] -[group_98982] -[group_98983] -[group_98984] -[group_98985] -[group_98986] -[group_98987] -[group_98988] -[group_98989] -[group_98990] -[group_98991] -[group_98992] -[group_98993] -[group_98994] -[group_98995] -[group_98996] -[group_98997] -[group_98998] -[group_98999] -[group_99000] -[group_99001] -[group_99002] -[group_99003] -[group_99004] -[group_99005] -[group_99006] -[group_99007] -[group_99008] -[group_99009] -[group_99010] -[group_99011] -[group_99012] -[group_99013] -[group_99014] -[group_99015] -[group_99016] -[group_99017] -[group_99018] -[group_99019] -[group_99020] -[group_99021] -[group_99022] -[group_99023] -[group_99024] -[group_99025] -[group_99026] -[group_99027] -[group_99028] -[group_99029] -[group_99030] -[group_99031] -[group_99032] -[group_99033] -[group_99034] -[group_99035] -[group_99036] -[group_99037] -[group_99038] -[group_99039] -[group_99040] -[group_99041] -[group_99042] -[group_99043] -[group_99044] -[group_99045] -[group_99046] -[group_99047] -[group_99048] -[group_99049] -[group_99050] -[group_99051] -[group_99052] -[group_99053] -[group_99054] -[group_99055] -[group_99056] -[group_99057] -[group_99058] -[group_99059] -[group_99060] -[group_99061] -[group_99062] -[group_99063] -[group_99064] -[group_99065] -[group_99066] -[group_99067] -[group_99068] -[group_99069] -[group_99070] -[group_99071] -[group_99072] -[group_99073] -[group_99074] -[group_99075] -[group_99076] -[group_99077] -[group_99078] -[group_99079] -[group_99080] -[group_99081] -[group_99082] -[group_99083] -[group_99084] -[group_99085] -[group_99086] -[group_99087] -[group_99088] -[group_99089] -[group_99090] -[group_99091] -[group_99092] -[group_99093] -[group_99094] -[group_99095] -[group_99096] -[group_99097] -[group_99098] -[group_99099] -[group_99100] -[group_99101] -[group_99102] -[group_99103] -[group_99104] -[group_99105] -[group_99106] -[group_99107] -[group_99108] -[group_99109] -[group_99110] -[group_99111] -[group_99112] -[group_99113] -[group_99114] -[group_99115] -[group_99116] -[group_99117] -[group_99118] -[group_99119] -[group_99120] -[group_99121] -[group_99122] -[group_99123] -[group_99124] -[group_99125] -[group_99126] -[group_99127] -[group_99128] -[group_99129] -[group_99130] -[group_99131] -[group_99132] -[group_99133] -[group_99134] -[group_99135] -[group_99136] -[group_99137] -[group_99138] -[group_99139] -[group_99140] -[group_99141] -[group_99142] -[group_99143] -[group_99144] -[group_99145] -[group_99146] -[group_99147] -[group_99148] -[group_99149] -[group_99150] -[group_99151] -[group_99152] -[group_99153] -[group_99154] -[group_99155] -[group_99156] -[group_99157] -[group_99158] -[group_99159] -[group_99160] -[group_99161] -[group_99162] -[group_99163] -[group_99164] -[group_99165] -[group_99166] -[group_99167] -[group_99168] -[group_99169] -[group_99170] -[group_99171] -[group_99172] -[group_99173] -[group_99174] -[group_99175] -[group_99176] -[group_99177] -[group_99178] -[group_99179] -[group_99180] -[group_99181] -[group_99182] -[group_99183] -[group_99184] -[group_99185] -[group_99186] -[group_99187] -[group_99188] -[group_99189] -[group_99190] -[group_99191] -[group_99192] -[group_99193] -[group_99194] -[group_99195] -[group_99196] -[group_99197] -[group_99198] -[group_99199] -[group_99200] -[group_99201] -[group_99202] -[group_99203] -[group_99204] -[group_99205] -[group_99206] -[group_99207] -[group_99208] -[group_99209] -[group_99210] -[group_99211] -[group_99212] -[group_99213] -[group_99214] -[group_99215] -[group_99216] -[group_99217] -[group_99218] -[group_99219] -[group_99220] -[group_99221] -[group_99222] -[group_99223] -[group_99224] -[group_99225] -[group_99226] -[group_99227] -[group_99228] -[group_99229] -[group_99230] -[group_99231] -[group_99232] -[group_99233] -[group_99234] -[group_99235] -[group_99236] -[group_99237] -[group_99238] -[group_99239] -[group_99240] -[group_99241] -[group_99242] -[group_99243] -[group_99244] -[group_99245] -[group_99246] -[group_99247] -[group_99248] -[group_99249] -[group_99250] -[group_99251] -[group_99252] -[group_99253] -[group_99254] -[group_99255] -[group_99256] -[group_99257] -[group_99258] -[group_99259] -[group_99260] -[group_99261] -[group_99262] -[group_99263] -[group_99264] -[group_99265] -[group_99266] -[group_99267] -[group_99268] -[group_99269] -[group_99270] -[group_99271] -[group_99272] -[group_99273] -[group_99274] -[group_99275] -[group_99276] -[group_99277] -[group_99278] -[group_99279] -[group_99280] -[group_99281] -[group_99282] -[group_99283] -[group_99284] -[group_99285] -[group_99286] -[group_99287] -[group_99288] -[group_99289] -[group_99290] -[group_99291] -[group_99292] -[group_99293] -[group_99294] -[group_99295] -[group_99296] -[group_99297] -[group_99298] -[group_99299] -[group_99300] -[group_99301] -[group_99302] -[group_99303] -[group_99304] -[group_99305] -[group_99306] -[group_99307] -[group_99308] -[group_99309] -[group_99310] -[group_99311] -[group_99312] -[group_99313] -[group_99314] -[group_99315] -[group_99316] -[group_99317] -[group_99318] -[group_99319] -[group_99320] -[group_99321] -[group_99322] -[group_99323] -[group_99324] -[group_99325] -[group_99326] -[group_99327] -[group_99328] -[group_99329] -[group_99330] -[group_99331] -[group_99332] -[group_99333] -[group_99334] -[group_99335] -[group_99336] -[group_99337] -[group_99338] -[group_99339] -[group_99340] -[group_99341] -[group_99342] -[group_99343] -[group_99344] -[group_99345] -[group_99346] -[group_99347] -[group_99348] -[group_99349] -[group_99350] -[group_99351] -[group_99352] -[group_99353] -[group_99354] -[group_99355] -[group_99356] -[group_99357] -[group_99358] -[group_99359] -[group_99360] -[group_99361] -[group_99362] -[group_99363] -[group_99364] -[group_99365] -[group_99366] -[group_99367] -[group_99368] -[group_99369] -[group_99370] -[group_99371] -[group_99372] -[group_99373] -[group_99374] -[group_99375] -[group_99376] -[group_99377] -[group_99378] -[group_99379] -[group_99380] -[group_99381] -[group_99382] -[group_99383] -[group_99384] -[group_99385] -[group_99386] -[group_99387] -[group_99388] -[group_99389] -[group_99390] -[group_99391] -[group_99392] -[group_99393] -[group_99394] -[group_99395] -[group_99396] -[group_99397] -[group_99398] -[group_99399] -[group_99400] -[group_99401] -[group_99402] -[group_99403] -[group_99404] -[group_99405] -[group_99406] -[group_99407] -[group_99408] -[group_99409] -[group_99410] -[group_99411] -[group_99412] -[group_99413] -[group_99414] -[group_99415] -[group_99416] -[group_99417] -[group_99418] -[group_99419] -[group_99420] -[group_99421] -[group_99422] -[group_99423] -[group_99424] -[group_99425] -[group_99426] -[group_99427] -[group_99428] -[group_99429] -[group_99430] -[group_99431] -[group_99432] -[group_99433] -[group_99434] -[group_99435] -[group_99436] -[group_99437] -[group_99438] -[group_99439] -[group_99440] -[group_99441] -[group_99442] -[group_99443] -[group_99444] -[group_99445] -[group_99446] -[group_99447] -[group_99448] -[group_99449] -[group_99450] -[group_99451] -[group_99452] -[group_99453] -[group_99454] -[group_99455] -[group_99456] -[group_99457] -[group_99458] -[group_99459] -[group_99460] -[group_99461] -[group_99462] -[group_99463] -[group_99464] -[group_99465] -[group_99466] -[group_99467] -[group_99468] -[group_99469] -[group_99470] -[group_99471] -[group_99472] -[group_99473] -[group_99474] -[group_99475] -[group_99476] -[group_99477] -[group_99478] -[group_99479] -[group_99480] -[group_99481] -[group_99482] -[group_99483] -[group_99484] -[group_99485] -[group_99486] -[group_99487] -[group_99488] -[group_99489] -[group_99490] -[group_99491] -[group_99492] -[group_99493] -[group_99494] -[group_99495] -[group_99496] -[group_99497] -[group_99498] -[group_99499] -[group_99500] -[group_99501] -[group_99502] -[group_99503] -[group_99504] -[group_99505] -[group_99506] -[group_99507] -[group_99508] -[group_99509] -[group_99510] -[group_99511] -[group_99512] -[group_99513] -[group_99514] -[group_99515] -[group_99516] -[group_99517] -[group_99518] -[group_99519] -[group_99520] -[group_99521] -[group_99522] -[group_99523] -[group_99524] -[group_99525] -[group_99526] -[group_99527] -[group_99528] -[group_99529] -[group_99530] -[group_99531] -[group_99532] -[group_99533] -[group_99534] -[group_99535] -[group_99536] -[group_99537] -[group_99538] -[group_99539] -[group_99540] -[group_99541] -[group_99542] -[group_99543] -[group_99544] -[group_99545] -[group_99546] -[group_99547] -[group_99548] -[group_99549] -[group_99550] -[group_99551] -[group_99552] -[group_99553] -[group_99554] -[group_99555] -[group_99556] -[group_99557] -[group_99558] -[group_99559] -[group_99560] -[group_99561] -[group_99562] -[group_99563] -[group_99564] -[group_99565] -[group_99566] -[group_99567] -[group_99568] -[group_99569] -[group_99570] -[group_99571] -[group_99572] -[group_99573] -[group_99574] -[group_99575] -[group_99576] -[group_99577] -[group_99578] -[group_99579] -[group_99580] -[group_99581] -[group_99582] -[group_99583] -[group_99584] -[group_99585] -[group_99586] -[group_99587] -[group_99588] -[group_99589] -[group_99590] -[group_99591] -[group_99592] -[group_99593] -[group_99594] -[group_99595] -[group_99596] -[group_99597] -[group_99598] -[group_99599] -[group_99600] -[group_99601] -[group_99602] -[group_99603] -[group_99604] -[group_99605] -[group_99606] -[group_99607] -[group_99608] -[group_99609] -[group_99610] -[group_99611] -[group_99612] -[group_99613] -[group_99614] -[group_99615] -[group_99616] -[group_99617] -[group_99618] -[group_99619] -[group_99620] -[group_99621] -[group_99622] -[group_99623] -[group_99624] -[group_99625] -[group_99626] -[group_99627] -[group_99628] -[group_99629] -[group_99630] -[group_99631] -[group_99632] -[group_99633] -[group_99634] -[group_99635] -[group_99636] -[group_99637] -[group_99638] -[group_99639] -[group_99640] -[group_99641] -[group_99642] -[group_99643] -[group_99644] -[group_99645] -[group_99646] -[group_99647] -[group_99648] -[group_99649] -[group_99650] -[group_99651] -[group_99652] -[group_99653] -[group_99654] -[group_99655] -[group_99656] -[group_99657] -[group_99658] -[group_99659] -[group_99660] -[group_99661] -[group_99662] -[group_99663] -[group_99664] -[group_99665] -[group_99666] -[group_99667] -[group_99668] -[group_99669] -[group_99670] -[group_99671] -[group_99672] -[group_99673] -[group_99674] -[group_99675] -[group_99676] -[group_99677] -[group_99678] -[group_99679] -[group_99680] -[group_99681] -[group_99682] -[group_99683] -[group_99684] -[group_99685] -[group_99686] -[group_99687] -[group_99688] -[group_99689] -[group_99690] -[group_99691] -[group_99692] -[group_99693] -[group_99694] -[group_99695] -[group_99696] -[group_99697] -[group_99698] -[group_99699] -[group_99700] -[group_99701] -[group_99702] -[group_99703] -[group_99704] -[group_99705] -[group_99706] -[group_99707] -[group_99708] -[group_99709] -[group_99710] -[group_99711] -[group_99712] -[group_99713] -[group_99714] -[group_99715] -[group_99716] -[group_99717] -[group_99718] -[group_99719] -[group_99720] -[group_99721] -[group_99722] -[group_99723] -[group_99724] -[group_99725] -[group_99726] -[group_99727] -[group_99728] -[group_99729] -[group_99730] -[group_99731] -[group_99732] -[group_99733] -[group_99734] -[group_99735] -[group_99736] -[group_99737] -[group_99738] -[group_99739] -[group_99740] -[group_99741] -[group_99742] -[group_99743] -[group_99744] -[group_99745] -[group_99746] -[group_99747] -[group_99748] -[group_99749] -[group_99750] -[group_99751] -[group_99752] -[group_99753] -[group_99754] -[group_99755] -[group_99756] -[group_99757] -[group_99758] -[group_99759] -[group_99760] -[group_99761] -[group_99762] -[group_99763] -[group_99764] -[group_99765] -[group_99766] -[group_99767] -[group_99768] -[group_99769] -[group_99770] -[group_99771] -[group_99772] -[group_99773] -[group_99774] -[group_99775] -[group_99776] -[group_99777] -[group_99778] -[group_99779] -[group_99780] -[group_99781] -[group_99782] -[group_99783] -[group_99784] -[group_99785] -[group_99786] -[group_99787] -[group_99788] -[group_99789] -[group_99790] -[group_99791] -[group_99792] -[group_99793] -[group_99794] -[group_99795] -[group_99796] -[group_99797] -[group_99798] -[group_99799] -[group_99800] -[group_99801] -[group_99802] -[group_99803] -[group_99804] -[group_99805] -[group_99806] -[group_99807] -[group_99808] -[group_99809] -[group_99810] -[group_99811] -[group_99812] -[group_99813] -[group_99814] -[group_99815] -[group_99816] -[group_99817] -[group_99818] -[group_99819] -[group_99820] -[group_99821] -[group_99822] -[group_99823] -[group_99824] -[group_99825] -[group_99826] -[group_99827] -[group_99828] -[group_99829] -[group_99830] -[group_99831] -[group_99832] -[group_99833] -[group_99834] -[group_99835] -[group_99836] -[group_99837] -[group_99838] -[group_99839] -[group_99840] -[group_99841] -[group_99842] -[group_99843] -[group_99844] -[group_99845] -[group_99846] -[group_99847] -[group_99848] -[group_99849] -[group_99850] -[group_99851] -[group_99852] -[group_99853] -[group_99854] -[group_99855] -[group_99856] -[group_99857] -[group_99858] -[group_99859] -[group_99860] -[group_99861] -[group_99862] -[group_99863] -[group_99864] -[group_99865] -[group_99866] -[group_99867] -[group_99868] -[group_99869] -[group_99870] -[group_99871] -[group_99872] -[group_99873] -[group_99874] -[group_99875] -[group_99876] -[group_99877] -[group_99878] -[group_99879] -[group_99880] -[group_99881] -[group_99882] -[group_99883] -[group_99884] -[group_99885] -[group_99886] -[group_99887] -[group_99888] -[group_99889] -[group_99890] -[group_99891] -[group_99892] -[group_99893] -[group_99894] -[group_99895] -[group_99896] -[group_99897] -[group_99898] -[group_99899] -[group_99900] -[group_99901] -[group_99902] -[group_99903] -[group_99904] -[group_99905] -[group_99906] -[group_99907] -[group_99908] -[group_99909] -[group_99910] -[group_99911] -[group_99912] -[group_99913] -[group_99914] -[group_99915] -[group_99916] -[group_99917] -[group_99918] -[group_99919] -[group_99920] -[group_99921] -[group_99922] -[group_99923] -[group_99924] -[group_99925] -[group_99926] -[group_99927] -[group_99928] -[group_99929] -[group_99930] -[group_99931] -[group_99932] -[group_99933] -[group_99934] -[group_99935] -[group_99936] -[group_99937] -[group_99938] -[group_99939] -[group_99940] -[group_99941] -[group_99942] -[group_99943] -[group_99944] -[group_99945] -[group_99946] -[group_99947] -[group_99948] -[group_99949] -[group_99950] -[group_99951] -[group_99952] -[group_99953] -[group_99954] -[group_99955] -[group_99956] -[group_99957] -[group_99958] -[group_99959] -[group_99960] -[group_99961] -[group_99962] -[group_99963] -[group_99964] -[group_99965] -[group_99966] -[group_99967] -[group_99968] -[group_99969] -[group_99970] -[group_99971] -[group_99972] -[group_99973] -[group_99974] -[group_99975] -[group_99976] -[group_99977] -[group_99978] -[group_99979] -[group_99980] -[group_99981] -[group_99982] -[group_99983] -[group_99984] -[group_99985] -[group_99986] -[group_99987] -[group_99988] -[group_99989] -[group_99990] -[group_99991] -[group_99992] -[group_99993] -[group_99994] -[group_99995] -[group_99996] -[group_99997] -[group_99998] -[group_99999] -[group_100000] diff --git a/configure/test/test_group/conf/dupgroup.conf b/configure/test/test_group/conf/dupgroup.conf deleted file mode 100644 index 22243f143b1f73bf2e7d5f40d318057e52df6ee1..0000000000000000000000000000000000000000 --- a/configure/test/test_group/conf/dupgroup.conf +++ /dev/null @@ -1,28 +0,0 @@ -[aaa] -sda:1223 -[.xfs] -[.xfs.xes] -[bbb] -asdf:122 -[ccc] -[.xfs] -[.xsas] -[aaa] -[.xfs.xes] -[ggg] -[.asdqq] -dsfa:132 -[ccc] -qwer:3612 -[.xsas] -[ccc] -[ccc.xsas] -adf:2221 -[bbb] - -#4 top groups, 2 of them are duplicate -#5 lower groups, 2 of them are duplicate -#9 all groups, 4 of them... - - -#level1 4, level2 4, level3 9 diff --git a/configure/test/test_group/conf/genconf.sh b/configure/test/test_group/conf/genconf.sh deleted file mode 100755 index f2a32d162c9196dc26a1ed41f6c77fe078616273..0000000000000000000000000000000000000000 --- a/configure/test/test_group/conf/genconf.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /bin/sh - -times=10000 - -if [ $# == 1 ] -then - times=$1 -fi - -cat /dev/null > bigconf.conf - -for((i=1;i<=$times;i++)) -do - echo [group_$i] -done >> bigconf.conf diff --git a/configure/test/test_group/conf/nodupgroup.conf b/configure/test/test_group/conf/nodupgroup.conf deleted file mode 100644 index 802fee270af9b7f86ec2847338f64856202e8870..0000000000000000000000000000000000000000 --- a/configure/test/test_group/conf/nodupgroup.conf +++ /dev/null @@ -1,11 +0,0 @@ -[a] -[a.b] -xxx:123 -yy:2312 -[.c] -[b] -zzz:2222 -[c] -dd:45324 -[a.d] -asd:22234 diff --git a/configure/test/test_group/conf/nullgroup.conf b/configure/test/test_group/conf/nullgroup.conf deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/configure/test/test_group/conf/vecgroup.conf b/configure/test/test_group/conf/vecgroup.conf deleted file mode 100644 index 6d5d8a53df72d3dcc5a52c31e3a528b8904cff40..0000000000000000000000000000000000000000 --- a/configure/test/test_group/conf/vecgroup.conf +++ /dev/null @@ -1,13 +0,0 @@ -[@abc] -[love] -[@bbb] -[@abc] -[here] -[.is] -[here.is.baidu] -[@abc] -[.i] -[..@love] -[..@love] -[...baidu] -[@bbb] diff --git a/configure/test/test_group/test_Configure.cpp b/configure/test/test_group/test_Configure.cpp deleted file mode 100644 index 7874257cfef1a5aee360e37db10dab7cc29799ca..0000000000000000000000000000000000000000 --- a/configure/test/test_group/test_Configure.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include -#include -#include - - -int main(int argc, char **argv) -{ - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -/** - * @brief -**/ -class test_load_ex_suite : public ::testing::Test{ - protected: - test_load_ex_suite(){}; - virtual ~test_load_ex_suite(){}; - virtual void SetUp() { - //Called befor every TEST_F(test_load_ex_suite, *) - }; - virtual void TearDown() { - //Called after every TEST_F(test_load_ex_suite, *) - }; -}; - - -/** - * @brief check invalid @dupLevel - * @begin_version - **/ -TEST_F(test_load_ex_suite, case_invalidParam) -{ - //TODO - comcfg::Configure conf[3]; - int ret = conf[0].load_ex("conf/", "nullgroup.conf", NULL, -1); - ASSERT_NE(0, ret); - ret = conf[1].load_ex("conf/", "nullgroup.conf", NULL, 4); - ASSERT_NE(0, ret); - ret = conf[2].load_ex("conf/", "nullgroup.conf", NULL, 999); - ASSERT_NE(0, ret); -} - - /** - * @brief check return value with non-duplicate conf - * @begin_version - **/ - TEST_F(test_load_ex_suite, case_nodupGroup) - { - //TODO - comcfg::Configure conf[4]; - int ret = conf[0].load_ex("conf/", "nodupgroup.conf", NULL, 0); - ASSERT_EQ(0, ret); - ret = conf[1].load_ex("conf/", "nodupgroup.conf", NULL, 1); - ASSERT_EQ(0, ret); - ret = conf[2].load_ex("conf/", "nodupgroup.conf", NULL, 2); - ASSERT_EQ(0, ret); - ret = conf[3].load_ex("conf/", "nodupgroup.conf", NULL, 3); - ASSERT_EQ(0, ret); - } - - - /** - * @brief check return value with non-duplicate conf - * @begin_version - **/ - TEST_F(test_load_ex_suite, case_dupGroup) - { - //TODO - comcfg::Configure conf[4]; - int ret = conf[0].load_ex("conf/", "dupgroup.conf", NULL, 0); - ASSERT_EQ(0, ret); - ret = conf[1].load_ex("conf/", "dupgroup.conf", NULL, 1); - ASSERT_EQ(12, ret); - ret = conf[2].load_ex("conf/", "dupgroup.conf", NULL, 2); - ASSERT_EQ(12, ret); - ret = conf[3].load_ex("conf/", "dupgroup.conf", NULL, 3); - ASSERT_EQ(0, ret); - } - - /** - * @brief test big configure file - * @begin_version - **/ - TEST_F(test_load_ex_suite, case_bigConf) - { - //TODO - //call genconf.sh to generate a bigconf.conf - comcfg::Configure conf; - int ret = conf.load_ex("conf/", "bigconf.conf", NULL, 3); - ASSERT_EQ(0, ret); - } - - /** - * @brief test vector in configure file, which should not be regarded as duplicate groups, even not a group - * @begin_version - **/ - TEST_F(test_load_ex_suite, case_vectorInConf) - { - //TODO - comcfg::Configure conf[4]; - int ret = conf[0].load_ex("conf/", "vecgroup.conf", NULL, 0); - ASSERT_EQ(0, ret); - ret = conf[1].load_ex("conf/", "vecgroup.conf", NULL, 1); - ASSERT_EQ(0, ret); - ret = conf[2].load_ex("conf/", "vecgroup.conf", NULL, 2); - ASSERT_EQ(0, ret); - ret = conf[3].load_ex("conf/", "vecgroup.conf", NULL, 3); - ASSERT_EQ(0, ret); - } diff --git a/configure/test/test_ivar.cpp b/configure/test/test_ivar.cpp deleted file mode 100644 index d119cdb8d45ab7a32a908818d4adbd1e42fff871..0000000000000000000000000000000000000000 --- a/configure/test/test_ivar.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_ivar.cpp,v 1.3 2009/08/13 07:23:01 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file test_ivar.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/03/11 22:59:17 - * @version $Revision: 1.3 $ - * @brief - * - **/ - -#include "Configure.h" - -int main(){ - //comcfg::Log::openLowLevel(); - comcfg::Configure conf; - conf.load(".", "t1.conf"); - conf.print(); - bsl::ResourcePool rp; - bsl::var::IVar& ivar = conf.to_IVar(&rp); - //printf("\nivar to_string === \n%s\n\n", ivar.to_string(5).c_str()); - - comcfg::Configure cf2; - printf("\nloadIvar ===> %d \n", cf2.loadIVar(ivar)); - printf("\n=== conf2.dump ===\n%s\n\n", cf2.dump(NULL)); - printf("\n=== conf2.print ===\n"); - cf2.print(); - - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_option.cpp b/configure/test/test_option.cpp deleted file mode 100644 index c274e281ff9493b29d974b254823bc5fed3d54e2..0000000000000000000000000000000000000000 --- a/configure/test/test_option.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_option.cpp,v 1.2 2009/01/13 13:35:13 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_option.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 23:54:04 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include "CmdOption.h" - -int showVersion(comcfg::CmdOption * cmd){ - printf("Version : %g\n", (*cmd)["v"].to_float()); - return 0; -} - -int main(){ - char *s[] = {"-a", "-h", "-v1.0", "--port=80", "roba", "cnhawk", "-ccode", "wtommy", "-f"}; - - comcfg:: CmdOption cmd; - cmd.init(7, s, "a:hv::c::"); - cmd.registHook("v", showVersion); - cmd.runHook(); - return 0; -} - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_option.res b/configure/test/test_option.res deleted file mode 100644 index bb0b8cd56fb14286ae754369711731d19326c622..0000000000000000000000000000000000000000 --- a/configure/test/test_option.res +++ /dev/null @@ -1 +0,0 @@ -Version : 1 diff --git a/configure/test/test_rawdata.cpp b/configure/test/test_rawdata.cpp deleted file mode 100644 index 600b2f92153094fd1f91eeac411f54e6b22ab4a1..0000000000000000000000000000000000000000 --- a/configure/test/test_rawdata.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_rawdata.cpp,v 1.2 2009/01/13 13:35:13 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_rawdata.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/20 23:06:45 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include "reader/RawData.h" -#include - -int main(){ - comcfg::RawData rd; - rd.load("raw.conf"); - for(int i = 0; (size_t)i < rd.lineNum(); ++i){ - printf("%s\n", rd.getLine(i)); - } - return 0; -} - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_rawdata.res b/configure/test/test_rawdata.res deleted file mode 100644 index 56436034e4c0882d90ea0df42ee60995d38c15a9..0000000000000000000000000000000000000000 --- a/configure/test/test_rawdata.res +++ /dev/null @@ -1,57 +0,0 @@ -#进程名 -COMLOG_PROCNAME : test_others -COMLOG_LEVEL : 16 -#支持的设备数目 -COMLOG_DEVICE_NUM : 5 -#支持的自定义等级 -COMLOG_SELFDEFINE : xiaowei, hello -#支持的设备名 -COMLOG_DEVICE0 : FILE -COMLOG_DEVICE1 : AFILE -COMLOG_DEVICE2 : NET -COMLOG_DEVICE3 : ULLOG -COMLOG_DEVICE4 : ULNET - -#device 0: FILE -FILE_TYPE : FILE -FILE_NAME : test_others_file.log -FILE_PATH : ./log -FILE_SYSLEVEL : 16 -FILE_OPEN : 1 -FILE_SELFLEVEL : xiaowei, hello -FILE_SIZE : 2000 - -#device 1: AFILE -AFILE_TYPE : AFILE -AFILE_NAME : test_others_afile.log -AFILE_PATH : ./log -AFILE_SYSLEVEL : 16 -AFILE_OPEN : 1 -AFILE_SELFLEVEL : xiaowei, hello -AFILE_SIZE : 2000 - -#device 2: NET -NET_TYPE : NET -NET_NAME : test_others_net.log -NET_PATH : 127.0.0.1:9898/data -NET_OPEN : 1 -NET_SYSLEVEL : 16 -NET_SELFLEVEL : xiaowei, hello - -#device 3: ULLOG -ULLOG_TYPE : ULLOG -ULLOG_NAME : test_others_ullog.log -ULLOG_PATH : ./log -ULLOG_SYSLEVEL : 16 -ULLOG_OPEN : 1 -ULLOG_SELFLEVEL : xiaowei, hello -ULLOG_SIZE : 2000 - -#device 4: ULNET -ULNET_TYPE : ULNET -ULNET_NAME : test_others_ulnet.log -ULNET_PATH : 127.0.0.1:9898/log -ULNET_OPEN : 1 -ULNET_SYSLEVEL : 16 -ULNET_SELFLEVEL : xiaowei, hello - diff --git a/configure/test/test_reader.cpp b/configure/test/test_reader.cpp deleted file mode 100644 index d3c338b39d9b057e519230c289e6c7221f26bfb5..0000000000000000000000000000000000000000 --- a/configure/test/test_reader.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_reader.cpp,v 1.3 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_reader.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 20:14:22 - * @version $Revision: 1.3 $ - * @brief i - * - **/ - -#include "Configure.h" -#include "stdio.h" - -int main(){ - comcfg::Configure conf; - conf.load(".", "new.conf"); - return 0; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_reader.res b/configure/test/test_reader.res deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/configure/test/test_rebuild.cpp b/configure/test/test_rebuild.cpp deleted file mode 100644 index 069d6545883f9851d412c8092886361dfc461dea..0000000000000000000000000000000000000000 --- a/configure/test/test_rebuild.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_rebuild.cpp,v 1.3 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_rebuild.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/29 21:29:18 - * @version $Revision: 1.3 $ - * @brief i - * - **/ - -#include "Configure.h" - -int main(){ - comcfg :: Configure conf; - conf.load(".", "rebuild.conf"); - printf("key: %d\n", conf["all"]["xxx"]["key"].to_int32()); - size_t sz; - char * s = conf.dump(&sz); - comcfg :: Configure cf2; - char * buf = cf2.getRebuildBuffer(sz); - memcpy(buf, s, sz); - cf2.rebuild(); - printf("key: %d\n", cf2["all"]["xxx"]["key"].to_int32()); - return 0; -} - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_rebuild.res b/configure/test/test_rebuild.res deleted file mode 100644 index 7818de3e4d7a88aba1a2566f792f2c17b2248be8..0000000000000000000000000000000000000000 --- a/configure/test/test_rebuild.res +++ /dev/null @@ -1,2 +0,0 @@ -key: 10086 -key: 10086 diff --git a/configure/test/test_reloader.cpp b/configure/test/test_reloader.cpp deleted file mode 100644 index 76d01b9bdf63bd28b193e3916a10eefe15d57722..0000000000000000000000000000000000000000 --- a/configure/test/test_reloader.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_reloader.cpp,v 1.2 2010/02/09 01:58:01 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file test_conf.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 18:47:10 - * @version $Revision: 1.2 $ - * @brief - * - **/ - -#include "ul_conf.h" -#include "Configure.h" -#include -#include -#include "stdio.h" -#include - -using namespace comcfg; - -static int g_run = 0; - -static void * change_threadfun(void *param) -{ - ConfigReloader * prd = (ConfigReloader *)param; - while (g_run) { - printf("g_run:%d, monitor: %d\n",g_run, prd->monitor()); - sleep(10); - } - return NULL; -} - -int int_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("old:%d, new:%d\n", keyold.to_int32(), keynew.to_int32()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int int_string_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("old:%s, new:%s\n", keyold.to_bsl_string().c_str(), keynew.to_bsl_string().c_str()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int uint64_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("[%s]old:%llu, new:%llu\n",keynew.get_key_name().c_str(), keyold.to_uint64(), keynew.to_uint64()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int char_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("[%s]old:%c, new:%c\n",keynew.get_key_name().c_str(), keyold.to_char(), keynew.to_char()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int float_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("[%s]old:%f, new:%f\n",keynew.get_key_name().c_str(), keyold.to_double(), keynew.to_double()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int group_change(const ConfigUnit &, const ConfigUnit &keynew, void * ) { -// printf("[%s]\n",keynew.print()); - keynew.print(); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int file_change(const ConfigUnit &, const ConfigUnit &keynew, void * ) { - printf("file[ivar]:\n"); - keynew["ivar"].print(); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int main(){ - ConfigReloader rd; - if (0 != rd.init("./", "reload.conf","reload.range")) { - printf("init failed\n"); - return 1; - } - rd.add_key_char("ivar.b", char_key_change, NULL); - rd.add_key_char("ivar.b", int_key_change, NULL); - rd.add_key_char("ivar.b", char_key_change, NULL); - printf("add char:%c\n", rd.get_config()->deepGet("ivar.a").to_char()); - rd.add_key_int("ivar.a", char_key_change, NULL); - rd.add_key_int("ivar.a", int_key_change, NULL); - printf("add int:%d\n", rd.get_config()->deepGet("ivar.a").to_int32()); - rd.add_key_uint64("ivar.c", uint64_key_change, NULL); - printf("add int:%llu\n", rd.get_config()->deepGet("ivar.c").to_uint64()); - rd.add_key_float("ivar.d", float_key_change, NULL); - printf("add char:%c\n", rd.get_config()->deepGet("ivar.a").to_char()); - rd.add_key_string("ubclient.proto[4].method[5].name", int_string_change, NULL); - printf("add string:%s\n", rd.get_config()->deepGet("ubclient.proto[4].method[5].name").to_bsl_string().c_str()); - - rd.add_file_monitor(file_change, NULL); - rd.add_file_monitor(file_change, NULL); - printf("add file\n"); - - rd.add_group_monitor("ivar.g", group_change, NULL); - rd.add_group_monitor("ivar", group_change, NULL); - printf("\ngroup:\n");rd.get_config()->deepGet("ivar").print(); - g_run = 1; - pthread_t tid; - pthread_create(&tid, NULL, change_threadfun, &rd); - pthread_join(tid, NULL); - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_sigreload.cpp b/configure/test/test_sigreload.cpp deleted file mode 100644 index cdd6e5b0ea3c5026374495d552bb00986fd208c8..0000000000000000000000000000000000000000 --- a/configure/test/test_sigreload.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2010 Baidu.com, Inc. All Rights Reserved - * - **************************************************************************/ - - - -/** - * @file test_sigreload.cpp - * @author zhang_rui(com@baidu.com) - * @date 2010-1-28 - * @brief - * - **/ - - -#include "ul_conf.h" -#include "Configure.h" -#include -#include -#include -#include "stdio.h" -#include - -using namespace comcfg; - -static int g_run = 0; -static ConfigReloader rd; -static int selfpipe[2]; - - -static void * change_threadfun(void *param) -{ - ConfigReloader * prd = (ConfigReloader *)param; - while (g_run) { - char ch; - read(selfpipe[0],&ch,1); - printf("g_run:%d, monitor: %d\n",g_run, prd->monitor()); - } - return NULL; -} - -static void change_sig(int) -{ - write(selfpipe[1],"",1); -} - -int int_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("old:%d, new:%d\n", keyold.to_int32(), keynew.to_int32()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int int_string_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("old:%s, new:%s\n", keyold.to_bsl_string().c_str(), keynew.to_bsl_string().c_str()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int uint64_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("[%s]old:%llu, new:%llu\n",keynew.get_key_name().c_str(), keyold.to_uint64(), keynew.to_uint64()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int char_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("[%s]old:%c, new:%c\n",keynew.get_key_name().c_str(), keyold.to_char(), keynew.to_char()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int float_key_change(const ConfigUnit &keyold, const ConfigUnit &keynew, void * ) { - printf("[%s]old:%f, new:%f\n",keynew.get_key_name().c_str(), keyold.to_double(), keynew.to_double()); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int group_change(const ConfigUnit &, const ConfigUnit &keynew, void * ) { -// printf("[%s]\n",keynew.print()); - keynew.print(); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int file_change(const ConfigUnit &, const ConfigUnit &keynew, void * ) { - printf("file[ivar]:\n"); - keynew["ivar"].print(); - if (g_run) { - if (++g_run >3) { - g_run = 0; - } - } - return 0; -} - -int main(){ - - if (0 != rd.init("./", "reload.conf","reload.range")) { - printf("init failed\n"); - return 1; - } - rd.add_key_char("ivar.b", char_key_change, NULL); - printf("add char:%c\n", rd.get_config()->deepGet("ivar.a").to_char()); - rd.add_key_int("ivar.a", int_key_change, NULL); - printf("add int:%d\n", rd.get_config()->deepGet("ivar.a").to_int32()); - rd.add_key_uint64("ivar.c", uint64_key_change, NULL); - printf("add int:%llu\n", rd.get_config()->deepGet("ivar.c").to_uint64()); - rd.add_key_float("ivar.d", float_key_change, NULL); - printf("add char:%c\n", rd.get_config()->deepGet("ivar.a").to_char()); - rd.add_key_string("ubclient.proto[4].method[5].name", int_string_change, NULL); - printf("add string:%s\n", rd.get_config()->deepGet("ubclient.proto[4].method[5].name").to_bsl_string().c_str()); - - rd.add_file_monitor(file_change, NULL); - printf("add file\n"); - - rd.add_group_monitor("ivar", group_change, NULL); - printf("\ngroup:\n");rd.get_config()->deepGet("ivar").print(); - g_run = 1; - - if (pipe(selfpipe) == -1) { - printf("create pipe failed\n"); - return 1; - } - signal(SIGINT, change_sig); - sigset_t zm; - sigemptyset(&zm); - - pthread_t tid; - pthread_create(&tid, NULL, change_threadfun, &rd); - -// for (int i=0;i<3;++i) { -// sigsuspend(&zm); -// } - - pthread_join(tid, NULL); - return 0; -} - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_str.cpp b/configure/test/test_str.cpp deleted file mode 100644 index 5ed71c0bc81d7da07e0e15d2718601fbb7dbba86..0000000000000000000000000000000000000000 --- a/configure/test/test_str.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_str.cpp,v 1.5 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_str.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/30 00:57:26 - * @version $Revision: 1.5 $ - * @brief i - * - **/ - -#include "Configure.h" -#include - -int main(){ - comcfg :: Configure conf; - char buf[128]; - conf.load(".", "str.conf"); - - std::cout<<"str1 : to raw : "< -#include "bsl/var/implement.h" -int main(){ - comcfg::Configure conf, conf2; - conf.load(".", "r.conf", "r.cons"); - printf("=======conf1=========\n"); - conf.print(0); - bsl::var::Dict dict; - bsl::var::Int32 i32 = 1234; - dict["key"] = i32; - bsl :: ResourcePool rp; - conf2.loadIVar(dict);//conf.to_IVar(&rp) - printf("=======conf2=========\n"); - conf2.print(0); - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_t1.res b/configure/test/test_t1.res deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/configure/test/test_to_default.cpp b/configure/test/test_to_default.cpp deleted file mode 100644 index 78488e723174f372700baa2a43c9a85e762ea468..0000000000000000000000000000000000000000 --- a/configure/test/test_to_default.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_to_default.cpp,v 1.3 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file test_to_default.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/03/12 01:30:32 - * @version $Revision: 1.3 $ - * @brief - * - **/ - -#include "Configure.h" - - -#define ASSERT(x) do{\ - if(!(x))printf("Assert failed %s:%d\n", __FILE__, __LINE__);\ - else printf("Assertion Successful. %s:%d\n", __FILE__, __LINE__);\ -}while(0) - -int main(){ - using namespace comcfg; - system("touch Nothing.conf"); - system("echo A : B > Nothing.conf"); - comcfg::Configure conf; - int ret = conf.load(".", "Nothing.conf"); - ASSERT(ret == 0); - - int err=99; - char v0 = conf["xxx"].to_char(&err, '0') ; - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v0 == '0' ); - unsigned char v1 = conf["xxx"].to_uchar(&err, '1'); - ASSERT( comcfg::NOSUCHKEY == err ); - ASSERT( v1 == '1' ); - int16_t v2 =conf["xxx"].to_int16(&err, 2) ; - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v2 == 2 ); - u_int16_t v3 =conf["xxx"].to_uint16(&err, 3); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v3 == 3 ); - int v4=conf["xxx"].to_int32(&err, 4); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v4 == 4 ); - u_int32_t v5 =conf["xxx"].to_uint32(&err, 5); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v5 == 5 ); - long long v6 =conf["xxx"].to_int64(&err, 6); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v6 == 6 ); - unsigned long long v7 =conf["xxx"].to_uint64(&err, 7); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v7 == 7 ); - float v8 =conf["xxx"].to_float(&err, 8); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v8 == 8 ); - double v9 =conf["xxx"].to_double(&err, 9); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v9 == 9 ); - bsl_string v10 =conf["xxx"].to_bsl_string(&err, "10"); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v10 == str_t("10") ); - str_t v11 =conf["xxx"].to_raw_string(&err, "11"); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT( v11 == str_t("11") ); - const char * s =conf["xxx"].to_cstr(&err, "12"); - ASSERT( comcfg::NOSUCHKEY == err); - ASSERT(strcmp(s, "12") == 0); - const char * s2 =conf["xxx"].to_cstr(&err); - ASSERT( comcfg::NOSUCHKEY == err); - - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_trans_float.cpp b/configure/test/test_trans_float.cpp deleted file mode 100644 index 3aacff69ccd57d2c0664982bee49270810f9e254..0000000000000000000000000000000000000000 --- a/configure/test/test_trans_float.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_trans_float.cpp,v 1.3 2009/01/20 14:27:12 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_trans_float.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 16:17:34 - * @version $Revision: 1.3 $ - * @brief - * - **/ -#include "utils/cc_utils.h" -#include -#include - -void check(const char * s, bool is){ - bool tmp = comcfg::Trans::isFloat(comcfg::str_t(s)); - double k = 0.0; - if(tmp)sscanf(s, "%lf", &k); - printf("[%s] check [%s] %s a float[%g]\n", tmp==is?"OK":"Error", s, tmp?"IS":"ISNOT", k); -} - -int main(){ - check("3.1415926", 1); - check("3.1415926e100", 1); - check("3.1415926E-10", 1); - check("3.1415926e", 0); - check(".1415926", 1); - check("-.1415926", 1); - check("3.E", 0); - check("+-3.1", 0); - check("e103", 0); - check("3.1415926e1.1", 0); - check("3.1415926e-10", 1); - check("3.1415926E+0997", 1); - check("-.141e5926", 1); - check("3+.1415926", 0); - return 0; -} - - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_trans_float.res b/configure/test/test_trans_float.res deleted file mode 100644 index 0327fb74077adade86eeec7bc74117b7f84b270c..0000000000000000000000000000000000000000 --- a/configure/test/test_trans_float.res +++ /dev/null @@ -1,14 +0,0 @@ -[OK] check [3.1415926] IS a float[3.14159] -[OK] check [3.1415926e100] IS a float[3.14159e+100] -[OK] check [3.1415926E-10] IS a float[3.14159e-10] -[OK] check [3.1415926e] ISNOT a float[0] -[OK] check [.1415926] IS a float[0.141593] -[OK] check [-.1415926] IS a float[-0.141593] -[OK] check [3.E] ISNOT a float[0] -[OK] check [+-3.1] ISNOT a float[0] -[OK] check [e103] ISNOT a float[0] -[OK] check [3.1415926e1.1] ISNOT a float[0] -[OK] check [3.1415926e-10] IS a float[3.14159e-10] -[OK] check [3.1415926E+0997] IS a float[inf] -[OK] check [-.141e5926] IS a float[-inf] -[OK] check [3+.1415926] ISNOT a float[0] diff --git a/configure/test/test_trans_str2str.cpp b/configure/test/test_trans_str2str.cpp deleted file mode 100644 index fc39013ee9217c5c1372930ede13a1050ffe608a..0000000000000000000000000000000000000000 --- a/configure/test/test_trans_str2str.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: test_trans_str2str.cpp,v 1.3 2009/01/20 14:27:12 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_trans_str2str.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 18:08:20 - * @version $Revision: 1.3 $ - * @brief - * - **/ -#include "utils/cc_trans.h" -#include -#include - -int main(){ - FILE * fp = fopen("str2str", "r"); - assert(fp); - char buf[1024]; - while(fgets(buf, 1024, fp) != NULL){ - buf[strlen(buf) - 1] = 0; - comcfg::str_t str; - if(comcfg::Trans::str2str(comcfg::str_t(buf), &str) == 0){ - puts("----- Read -----"); - puts(buf); - puts("----- trans to -----"); - puts(str.c_str()); - puts("------ Finish -----"); - } - else { - puts("Error"); - } - } - return 0; -} - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/test_trans_str2str.res b/configure/test/test_trans_str2str.res deleted file mode 100644 index 21bd8bfefc8629bc20e300af87c3479d0f855ed0..0000000000000000000000000000000000000000 --- a/configure/test/test_trans_str2str.res +++ /dev/null @@ -1,31 +0,0 @@ ------ Read ----- -"test" ------ trans to ----- -test ------- Finish ----- ------ Read ----- -"Haha"ddd ------ trans to ----- -Haha ------- Finish ----- ------ Read ----- -"\tThis is \"Hawk\".\n"sadf ------ trans to ----- - This is "Hawk". - ------- Finish ----- ------ Read ----- -askdfj;aj jaskdfj;askf ------ trans to ----- -askdfj;aj jaskdfj;askf ------- Finish ----- ------ Read ----- -"\x41---" ------ trans to ----- -A--- ------- Finish ----- ------ Read ----- -"\101---" ------ trans to ----- -A--- ------- Finish ----- diff --git a/configure/test/test_value.conf b/configure/test/test_value.conf deleted file mode 100644 index 4a8b7d0dd652a2a49ceaf2a3976aaba8a7447a76..0000000000000000000000000000000000000000 --- a/configure/test/test_value.conf +++ /dev/null @@ -1,4 +0,0 @@ -test_int : 57 -test_float : -.01e-1 -test_str : "\"Hello world ~\"" - diff --git a/configure/test/test_vec_overflow/COMAKE b/configure/test/test_vec_overflow/COMAKE deleted file mode 100644 index d0de1b26d6c9a9451d849448b387a09bfbe7fbe4..0000000000000000000000000000000000000000 --- a/configure/test/test_vec_overflow/COMAKE +++ /dev/null @@ -1,60 +0,0 @@ -#edit-mode: -*- python -*- -#coding:gbk - -#工作路径. -WORKROOT('../../../../') - -#使用硬链接copy. -CopyUsingHardLink(True) - -#支持32位/64位平台编译 -#ENABLE_MULTI_LIBS(True) - -#C预处理器参数. -CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\\"1.9.8.7\\\"') -#为32位目标编译指定额外的预处理参数 -#CPPFLAGS_32('-D_XOPEN_SOURE=500') - -#C编译参数. -CFLAGS('-g -pipe -W -Wall -fPIC') - -#C++编译参数. -CXXFLAGS('-g -pipe -W -Wall -fPIC') - -#IDL编译参数 -IDLFLAGS('--compack') - -#UBRPC编译参数 -UBRPCFLAGS('--compack') - -#头文件路径. -INCPATHS('. ../../ ./include ./output ./output/include') - -#使用库 -LIBS('../../libconfig.a') - -#链接参数. -LDFLAGS('-lpthread -lcrypto -lrt') - -#依赖模块 -CONFIGS('lib2-64/ullib') -CONFIGS('lib2-64/bsl') -CONFIGS('public/spreg') -CONFIGS('com/btest/gtest') - -#为32位/64位指定不同的依赖路径. -#CONFIGS_32('lib2/ullib') -#CONFIGS_64('lib2-64/ullib') - -user_sources='' -user_headers='' - -#可执行文件 -Application('test_vec',Sources('test_vec.cpp')) -#静态库 -#StaticLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#共享库 -#SharedLibrary('test_group',Sources(user_sources),HeaderFiles(user_headers)) -#子目录 -#Directory('demo') - diff --git a/configure/test/test_vec_overflow/Makefile b/configure/test/test_vec_overflow/Makefile deleted file mode 100644 index 652cff2749ee9eaed76be6e01c836df20dc6f5ba..0000000000000000000000000000000000000000 --- a/configure/test/test_vec_overflow/Makefile +++ /dev/null @@ -1,137 +0,0 @@ -#COMAKE2 edit-mode: -*- Makefile -*- -####################64Bit Mode#################### -ifeq ($(shell uname -m),x86_64) -CC=gcc -CXX=g++ -CXXFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CFLAGS=-g \ - -pipe \ - -W \ - -Wall \ - -fPIC -CPPFLAGS=-D_GNU_SOURCE \ - -D__STDC_LIMIT_MACROS \ - -DVERSION=\"1.9.8.7\" -INCPATH=-I. \ - -I../../ \ - -I./include \ - -I./output \ - -I./output/include -DEP_INCPATH=-I../../../../com/btest/gtest \ - -I../../../../com/btest/gtest/include \ - -I../../../../com/btest/gtest/output \ - -I../../../../com/btest/gtest/output/include \ - -I../../../../lib2-64/bsl \ - -I../../../../lib2-64/bsl/include \ - -I../../../../lib2-64/bsl/output \ - -I../../../../lib2-64/bsl/output/include \ - -I../../../../lib2-64/ullib \ - -I../../../../lib2-64/ullib/include \ - -I../../../../lib2-64/ullib/output \ - -I../../../../lib2-64/ullib/output/include \ - -I../../../../public/spreg \ - -I../../../../public/spreg/include \ - -I../../../../public/spreg/output \ - -I../../../../public/spreg/output/include \ - -I../../../../quality/autotest/reportlib/cpp \ - -I../../../../quality/autotest/reportlib/cpp/include \ - -I../../../../quality/autotest/reportlib/cpp/output \ - -I../../../../quality/autotest/reportlib/cpp/output/include \ - -I../../../../third-64/pcre \ - -I../../../../third-64/pcre/include \ - -I../../../../third-64/pcre/output \ - -I../../../../third-64/pcre/output/include - -#============ CCP vars ============ -CCHECK=@ccheck.py -CCHECK_FLAGS= -PCLINT=@pclint -PCLINT_FLAGS= -CCP=@ccp.py -CCP_FLAGS= - - -#COMAKE UUID -COMAKE_MD5=ddd9a97bcbeb7916c2105aa8e4027ac1 COMAKE - - -.PHONY:all -all:comake2_makefile_check test_vec - @echo "[COMAKE:BUILD][Target:'all']" - @echo "make all done" - -.PHONY:comake2_makefile_check -comake2_makefile_check: - @echo "[COMAKE:BUILD][Target:'comake2_makefile_check']" - #in case of error, update 'Makefile' by 'comake2' - @echo "$(COMAKE_MD5)">comake2.md5 - @md5sum -c --status comake2.md5 - @rm -f comake2.md5 - -.PHONY:ccpclean -ccpclean: - @echo "[COMAKE:BUILD][Target:'ccpclean']" - @echo "make ccpclean done" - -.PHONY:clean -clean:ccpclean - @echo "[COMAKE:BUILD][Target:'clean']" - rm -rf test_vec - rm -rf ./output/bin/test_vec - rm -rf test_vec_test_vec.o - -.PHONY:dist -dist: - @echo "[COMAKE:BUILD][Target:'dist']" - tar czvf output.tar.gz output - @echo "make dist done" - -.PHONY:distclean -distclean:clean - @echo "[COMAKE:BUILD][Target:'distclean']" - rm -f output.tar.gz - @echo "make distclean done" - -.PHONY:love -love: - @echo "[COMAKE:BUILD][Target:'love']" - @echo "make love done" - -test_vec:test_vec_test_vec.o \ - ../../libconfig.a - @echo "[COMAKE:BUILD][Target:'test_vec']" - $(CXX) test_vec_test_vec.o -Xlinker "-(" ../../libconfig.a ../../../../com/btest/gtest/output/lib/libgtest.a \ - ../../../../com/btest/gtest/output/lib/libgtest_main.a \ - ../../../../lib2-64/bsl/lib/libbsl.a \ - ../../../../lib2-64/bsl/lib/libbsl_ResourcePool.a \ - ../../../../lib2-64/bsl/lib/libbsl_archive.a \ - ../../../../lib2-64/bsl/lib/libbsl_buffer.a \ - ../../../../lib2-64/bsl/lib/libbsl_check_cast.a \ - ../../../../lib2-64/bsl/lib/libbsl_exception.a \ - ../../../../lib2-64/bsl/lib/libbsl_pool.a \ - ../../../../lib2-64/bsl/lib/libbsl_utils.a \ - ../../../../lib2-64/bsl/lib/libbsl_var.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_implement.a \ - ../../../../lib2-64/bsl/lib/libbsl_var_utils.a \ - ../../../../lib2-64/ullib/lib/libullib.a \ - ../../../../public/spreg/libspreg.a \ - ../../../../quality/autotest/reportlib/cpp/libautotest.a \ - ../../../../third-64/pcre/lib/libpcre.a \ - ../../../../third-64/pcre/lib/libpcrecpp.a \ - ../../../../third-64/pcre/lib/libpcreposix.a -lpthread \ - -lcrypto \ - -lrt -Xlinker "-)" -o test_vec - mkdir -p ./output/bin - cp -f --link test_vec ./output/bin - -test_vec_test_vec.o:test_vec.cpp - @echo "[COMAKE:BUILD][Target:'test_vec_test_vec.o']" - $(CXX) -c $(INCPATH) $(DEP_INCPATH) $(CPPFLAGS) $(CXXFLAGS) -o test_vec_test_vec.o test_vec.cpp - -endif #ifeq ($(shell uname -m),x86_64) - - diff --git a/configure/test/test_vec_overflow/test_vec.cpp b/configure/test/test_vec_overflow/test_vec.cpp deleted file mode 100644 index eea245383d5307e1fc8247d4936290c0c7fdf13d..0000000000000000000000000000000000000000 --- a/configure/test/test_vec_overflow/test_vec.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include "plugin/plgcomlog.h" - -int main(int argc, char **argv) -{ - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} -/** - * @brief check if the lib reports the vector overflow situation -**/ -class test_vof_suite : public ::testing::Test{ - protected: - test_vof_suite(){}; - virtual ~test_vof_suite(){}; - virtual void SetUp() { - //Called befor every TEST_F(test_vof_suite, *) - }; - virtual void TearDown() { - //Called after every TEST_F(test_vof_suite, *) - }; -}; - - -/** - * @brief check the log to see the info, and the ret is always 0 - * @begin_version - **/ -TEST_F(test_vof_suite, case_vof) -{ - //TODO - //comcfg::Log::openLowLevel(); - const char *res_file = "vec.res"; - freopen(res_file, "w+", stderr); - comcfg::Configure conf; - int ret = conf.load("./", "vec.conf", "vec.range"); - ASSERT_NE(-1, ret); - - fflush(stderr); - fclose(stderr); - ASSERT_COMLOG_INCLUDE(res_file, "array has too many elements!"); - remove(res_file); -} diff --git a/configure/test/test_vec_overflow/vec.conf b/configure/test/test_vec_overflow/vec.conf deleted file mode 100644 index 5bf32d0a0e41fcc9e45408c8b195f91d07b97214..0000000000000000000000000000000000000000 --- a/configure/test/test_vec_overflow/vec.conf +++ /dev/null @@ -1,5 +0,0 @@ -[@v1] -[@v2] -[@v1] -[@v2] -[@v1] diff --git a/configure/test/test_vec_overflow/vec.range b/configure/test/test_vec_overflow/vec.range deleted file mode 100644 index e50ad3ea9316bb3aae706bb25f307b34ae3211ac..0000000000000000000000000000000000000000 --- a/configure/test/test_vec_overflow/vec.range +++ /dev/null @@ -1,9 +0,0 @@ -struct myvec1{ -}; - -struct myvec2{ -}; - -myvec1 v1[2]; - -myvec2 v2[2]; diff --git a/configure/test/test_xiaowei.cpp b/configure/test/test_xiaowei.cpp deleted file mode 100644 index 5ff3bee6c2f963d8dcc841c2347110c833984569..0000000000000000000000000000000000000000 --- a/configure/test/test_xiaowei.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2009 Baidu.com, Inc. All Rights Reserved - * $Id: test_xiaowei.cpp,v 1.4 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file test_xiaowei.cpp - * @author yingxiang(com@baidu.com) - * @date 2009/01/05 11:43:08 - * @version $Revision: 1.4 $ - * @brief i - * - **/ -#include "Configure.h" -#include -int main(){ - //comcfg :: Log :: closeLowLevel(); - comcfg :: Configure conf; - conf.load(".", "xiaowei.conf", NULL); - conf.print(); - std::cout<<"conf size = "< - -using namespace comcfg; -ENV_CHAR_DECL(MAC, 0); -ENV_UCHAR_DECL(MAC, 0); -ENV_INT16_DECL(MAC, 0); -ENV_UINT16_DECL(MAC, 0); -ENV_INT32_DECL(MAC, 0); -ENV_UINT32_DECL(MAC, 0); -ENV_INT64_DECL(MAC, 0); -ENV_UINT64_DECL(MAC, 0); -ENV_FLOAT_DECL(MAC, 0); -ENV_DOUBLE_DECL(MAC, 0); -ENV_BSLSTR_DECL(MAC, 0); - -int main(){ - comcfg::Configure conf; - // test Configure::getErrKeyPath() - conf.load("./", "new.conf"); - comcfg::str_t str; - if(conf["COMLOG"]["FILE"]["TYPE"].get_bsl_string(&str) == 0){ - printf("read = [%s]\n", str.c_str()); - }else{ - printf("No such key: %s\n", conf.getErrKeyPath()); - } - if(conf["COMLOG"]["FILEx"]["TYPE"][2].get_bsl_string(&str) == 0){ - printf("read = [%s]\n", str.c_str()); - }else{ - printf("No such key: %s\n", conf.getErrKeyPath()); - } - try{ - str = conf["COMLOG"]["FILE"]["TYPE"].to_bsl_string(); - printf("to bsl string: %s\n", str.c_str()); - } - catch(bsl::Exception e){ - printf("%s\n", e.what()); - printf("No such key: %s\n", conf.getErrKeyPath()); - } - try{ - conf["COMLOG"]["FILE"]["abc"].to_char(); - } - catch(bsl::Exception e){ - printf("%s\n", e.what()); - printf("No such key: %s\n", conf.getErrKeyPath()); - } - int err; - int tmp; - try { - tmp = conf["COMLOG"]["FILE"]["SIZE"].to_int32(); - printf("read = [%d]\n", tmp);} - catch (bsl::Exception e) { - printf("%s\n", e.what()); - } - - //test ConfigUnit::deepGet() - if(conf.deepGet("COMLOG.FILE.TYPE").get_bsl_string(&str) == 0){ - printf("deepGet(\"COMLOG.FILE.TYPE\") = [%s]\n", str.c_str()); - }else{ - printf("No such key: %s\n", conf.getErrKeyPath()); - } - if(conf.deepGet("COMLOG.DEVICE[2]").get_bsl_string(&str) == 0){ - printf("deepGet(\"COMLOG.DEVICE[2]\") = [%s]\n", str.c_str()); - }else{ - printf("No such key: %s\n", conf.getErrKeyPath()); - } - - printf("dump:%s\n%s\n\n", conf.dump(NULL)); - - comcfg::Configure nc; - bsl::ResourcePool rp; - nc.loadIVar(conf.to_IVar(&rp,&err)); - printf("new dump:%s\n%s\n\n", nc.dump(NULL)); - - //test enviroment macro - printf("ENV_CHAR: MAC= %c\n", g_char_MAC); - printf("ENV_UCHAR: MAC= %c\n", g_uchar_MAC); - printf("ENV_INT16: MAC= %d\n", g_int16_MAC); - printf("ENV_UINT16: MAC= %d\n", g_uint16_MAC); - printf("ENV_INT32: MAC= %d\n", g_int32_MAC); - printf("ENV_UINT32: MAC= %d\n", g_uint32_MAC); - printf("ENV_INT64: MAC= %lld\n", g_int64_MAC); - printf("ENV_UINT64: MAC= %lld\n", g_uint64_MAC); - printf("ENV_FLOAT: MAC= %f\n", g_float_MAC); - printf("ENV_DOUBLE: MAC= %f\n", g_double_MAC); - printf("ENV_BSLSTR: MAC= %s\n", g_bslstr_MAC.c_str()); - - bsl::string a; - printf("%s\n", a.c_str()); - if (a == "") printf("NULL STR\n"); - - - comcfg::Configure conf1; - conf1.load("./","zr.conf"); - const char * tstr; - try { - tstr = conf1["server"][1]["ip"].to_cstr(); - } - catch (bsl::Exception e){ - printf("%s\n", e.what()); - } - printf("to server[1].ip: %s\n", tstr); - printf("to server[1].ip: %s\n", conf1["server"][1]["ip"].to_bsl_string().c_str()); - printf("to person.name: %s\n", conf1["person"]["name"].to_bsl_string().c_str()); - printf("to person.age: %s\n", conf1["person"]["age"].to_bsl_string().c_str()); - printf("to int person.age: %d\n", conf1["person"]["age"].to_int32()); - - - - return 0; -} - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/test/xiaowei.conf b/configure/test/xiaowei.conf deleted file mode 100644 index 394c58f386232c101342f5f316f5e8473cfbb1b6..0000000000000000000000000000000000000000 --- a/configure/test/xiaowei.conf +++ /dev/null @@ -1,14 +0,0 @@ -[@server] -ip : 127.0.0.1 -port : 5123 -[@server] -ip : 127.0.0.2 -port : 1123 -[@server] -ip : 138.3.1.2 -port : 1234 - -[person] -name : xiaowei -age : 1 - diff --git a/configure/utils/cc_exception.h b/configure/utils/cc_exception.h deleted file mode 100644 index 55f25d0dd1efe6f507b891be4c099e81aad554c1..0000000000000000000000000000000000000000 --- a/configure/utils/cc_exception.h +++ /dev/null @@ -1,121 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_exception.h,v 1.12 2010/04/13 09:59:41 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file exception.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/10 17:49:16 - * @version $Revision: 1.12 $ - * @brief - * - **/ - - -#ifndef __CC_EXCEPTION_H_ -#define __CC_EXCEPTION_H_ - -#include "cc_struct.h" -#include "bsl/exception/bsl_exception.h" -#include "ul_error.h" - - -namespace comcfg{ - enum { - OK = 0, - ERROR,// other error - CONSTRAINT_ERROR, - CONFIG_ERROR, - UNKNOWN, - NOSUCHKEY, - FORMATERROR, - OUTOFRANGE,//超过范围 - NULLVALUE, //空值(get_string时不会返回此错误) - NULLBUFFER, //传入的buf为空 - GROUPTOUNIT, //访问group的to_xxx或get_xxx方法 - DUPLICATED_KEY, /**< 修改configure时,造成重复key */ - DUPLICATED_GROUP, - }; - /* - * @brief configure抛出的所有异常都是ConfigException的子类 - */ - class ConfigException : public bsl::BasicException{ - public: - ConfigException(){}; - ConfigException(const char * s){ - msg = s; - } - ConfigException(const str_t& s){ - msg = s; - } - virtual ~ConfigException() throw(){}; - const char *seeError() throw() { - return msg.c_str(); - } - void pushMsg(const str_t & s) throw(){ - msg.append(str_t(" | ")).append(s); - } - protected: - str_t msg; - }; - class NoSuchKeyException : public bsl::BasicException{}; - class FormatErrorException : public bsl::BasicException{}; - class UnknownException : public bsl::BasicException{}; - class OutOfRangeException : public bsl::BasicException{}; - class NullValueException : public bsl::BasicException{}; - class NullBufferException : public bsl::BasicException{}; - class GroupToUnitException : public bsl::BasicException{}; -#if 0 - class DebugException : protected ConfigException {}; - class TraceException : protected DebugException {}; - class NoticeException : protected TraceException {}; - class WarningException : protected NoticeException {}; - class FatalException : protected WarningException {}; -#endif - class ConfigThrower { - public: - static void throwException(const ErrCode & err){ - switch(err){ - case OK: - break; - case NOSUCHKEY: - throw NoSuchKeyException().pushf("ConfigException.NoSuchKey: %s", ul_geterrbuf()); - break; - case OUTOFRANGE: - throw OutOfRangeException().pushf("ConfigException.OutOfRange: %s", ul_geterrbuf()); - break; - case FORMATERROR: - throw FormatErrorException().pushf("ConfigException.FormatError: %s", ul_geterrbuf()); - break; - case NULLVALUE: - throw NullValueException().pushf("ConfigException.NullValue: %s", ul_geterrbuf()); - break; - case NULLBUFFER: - throw NullBufferException().pushf("ConfigException.NullBuffer: %s", ul_geterrbuf()); - break; - case GROUPTOUNIT: - throw GroupToUnitException().pushf("ConfigException.GroupToUnit: %s", ul_geterrbuf()); - break; - case UNKNOWN: - default: - throw UnknownException().push("ConfigException.Unknown"); - } - } - }; - -} - - - - - - - -#endif //__CC_EXCEPTION_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/utils/cc_log.h b/configure/utils/cc_log.h deleted file mode 100644 index fe2a1ba017705373f677fdd19ab4bc2fa1aa0f4d..0000000000000000000000000000000000000000 --- a/configure/utils/cc_log.h +++ /dev/null @@ -1,94 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_log.h,v 1.5 2009/03/23 03:14:53 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file cc_log.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 15:57:50 - * @version $Revision: 1.5 $ - * @brief - * - **/ - - -#ifndef __CC_LOG_H_ -#define __CC_LOG_H_ - -#include "ul_log.h" - -namespace comcfg{ - class Log{ - static int _fatal, - _warning, - _notice, - _trace, - _debug; - public: - - static void setFatal(int level){ - _fatal = level; - } - - static void setWarning(int level){ - _warning = level; - } - - static void setNotice(int level){ - _notice = level; - } - - static void setTrace(int level){ - _trace = level; - } - - static void setDebug(int level){ - _debug = level; - } - - /** - * @brief 打开低等级的日志 - * - * @return void - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:23:50 - **/ - static void openLowLevel(){ - _debug = UL_LOG_DEBUG; - _trace = UL_LOG_TRACE; - _notice = UL_LOG_NOTICE; - } - - static int fatal(){ return _fatal; } - static int warning(){ return _warning; } - static int notice(){ return _notice; } - static int trace(){ return _trace; } - static int debug(){ return _debug; } - }; -} - - - - - - - - - - - - - - - - -#endif //__CC_LOG_H_ - - /* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/utils/cc_struct.h b/configure/utils/cc_struct.h deleted file mode 100644 index a7dd07c353478a15719c2d3b27507f80f62bc1e5..0000000000000000000000000000000000000000 --- a/configure/utils/cc_struct.h +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_struct.h,v 1.6 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file cc_struct.h - * @author yingxiang(com@baidu.com) - * @date 2008/11/26 20:57:17 - * @version $Revision: 1.6 $ - * @brief - * - **/ - - -#ifndef __CC_STRUCT_H_ -#define __CC_STRUCT_H_ - -#include - -#include -#include -#include -#include "bsl/containers/string/bsl_string.h" - -namespace comcfg{ - - - - typedef unsigned char comcfg_type_uchar; /**< uchar */ - typedef signed short comcfg_type_int16; /**< int16 */ - typedef unsigned short comcfg_type_uint16; /**< uint16 */ - typedef signed int comcfg_type_int32; /**< int32 */ - typedef unsigned int comcfg_type_uint32; /**< uint32 */ - typedef signed long long comcfg_type_int64; /**< int64 */ - typedef unsigned long long comcfg_type_uint64; /**< uing64 */ - typedef std::string std_string; /**< std::string */ - typedef bsl::string bsl_string; /**< bsl::string */ -#define CC_CHAR "char" /**< char,出现在约束文件中的类型,下同 */ -#define CC_UCHAR "uchar" /**< uchar */ -#define CC_INT16 "int16_t" /**< int16 */ -#define CC_UINT16 "uint16_t" /**< uint16 */ -#define CC_INT32 "int32_t" /**< int32 */ -#define CC_UINT32 "uint32_t" /**< uint32 */ -#define CC_INT64 "int64_t" /**< int64 */ -#define CC_UINT64 "uint64_t" /**< uing64 */ -#define CC_FLOAT "float" /**< float */ -#define CC_DOUBLE "double" /**< double */ -#define CC_STRING "string" /**< 实际上是bsl::string */ - typedef bsl::string str_t; /**< 标准的内部string类型 */ - typedef int ErrCode; /**< 错误号 */ - -} - - - -#endif //__CC_STRUCT_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/utils/cc_trans.h b/configure/utils/cc_trans.h deleted file mode 100644 index c30c290858918e8aa927657a806eaf14559438aa..0000000000000000000000000000000000000000 --- a/configure/utils/cc_trans.h +++ /dev/null @@ -1,139 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_trans.h,v 1.5 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file cc_trans.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/10 17:48:14 - * @version $Revision: 1.5 $ - * @brief - * - **/ - - -#ifndef __CC_TRANS_H_ -#define __CC_TRANS_H_ - -#include "cc_struct.h" - -namespace comcfg{ - class Trans{ - public: -#if 0 - static const unsigned long long max_uint64 = 0xFFFFFFFFFFFFFFFF; - static const unsigned long long min_uint64 = 0x0; - static const unsigned long long max_int64 = 0x7FFFFFFFFFFFFFFF; - static const unsigned long long min_int64 = 0x8000000000000000; - static const unsigned long long max_uint32 = 0xFFFFFFFF; - static const unsigned long long min_uint32 = 0x0; - static const unsigned long long max_int32 = 0x7FFFFFFF; - static const unsigned long long min_int32 = 0x80000000; - static const unsigned long long max_uint16 = 0xFFFF; - static const unsigned long long min_uint16 = 0x0; - static const unsigned long long max_int16 = 0x7FFF; - static const unsigned long long min_int16 = 0x8000; -#endif - public: - /** - * @brief 判断一个字符串是否是整数格式 - * - * @param [in] str : const str_t& - * @return bool - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:36:03 - **/ - static bool isInteger(const str_t & str); - /** - * @brief 判断一个字符串是否是浮点数格式(不检查精度范围) - * - * @param [in] str : const str_t& - * @return bool - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:36:52 - **/ - static bool isFloat(const str_t & str); - /** - * @brief 把一个字符串转换成一个int64 - * - * @param [in] __str : const str_t& bsl::string类型的字符串 - * @param [out] buf : int64* 转换结果 - * @return int 0成功,失败:OUTOFRANGE, NULLVALUE, FORMATERROR - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:37:22 - **/ - static int str2int64(const str_t & __str, long long * buf); - /** - * @brief 把一个字符串转换成一个uint64 - * - * @param [in] __str : const str_t& bsl::string类型的字符串 - * @param [out] buf : uint64* 转换结果 - * @return int 0成功,失败:OUTOFRANGE, NULLVALUE, FORMATERROR - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:40:42 - **/ - static int str2uint64(const str_t & __str, unsigned long long * buf); - /** - * @brief 把一个带有转义字符的字符串进行解析(把\xFF, \022, \n之类的文本转换成实际的字符) - * 这个串必须是双引号开头、双引号结尾。 - * - * 【configure内部使用,如不熟悉内部行为,不推荐使用】 - * - * @param [in] __str : const str_t& bsl::string类型的字符串 - * @param [out] buf : uint64* 转换结果 - * @return int 0成功,失败:FORMATERROR - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:40:42 - **/ - static int str2str(const str_t & str, str_t * buf); - /** - * @brief 把一个字符串转换成一个double - * - * @param [in] __str : const str_t& bsl::string类型的字符串 - * @param [out] buf : double* 转换结果 - * @return int 0成功,失败:OUTOFRANGE, NULLVALUE, FORMATERROR - * @retval - * @see - * @author yingxiang - * @date 2009/03/19 22:45:33 - **/ - static int str2double(const str_t & str, double * buf); - - //仅限configure使用 - static str_t cutComment(const str_t & str); - }; -} - - - - - - - - - - - - - - - - -#endif //__CC_TRANS_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/utils/cc_utils.h b/configure/utils/cc_utils.h deleted file mode 100644 index accc8aaddfe24baffec4588bf63d755b23d8bc65..0000000000000000000000000000000000000000 --- a/configure/utils/cc_utils.h +++ /dev/null @@ -1,47 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: cc_utils.h,v 1.2 2009/08/13 07:23:01 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file cc_utils.h - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 17:55:49 - * @version $Revision: 1.2 $ - * @brief - * - **/ - - -#ifndef __CC_UTILS_H_ -#define __CC_UTILS_H_ - -//#include "cc_error.h" -#include "cc_exception.h" -// #include "cc_log.h" -#include "butil/logging.h" -#include "cc_struct.h" -#include "cc_trans.h" -#include "ul_error.h" - - - - - - - - - - - - - - - -#endif //__CC_UTILS_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/utils/init.cpp b/configure/utils/init.cpp deleted file mode 100644 index 67ba51d1910bc8666c790b236f4a59f41aa75db3..0000000000000000000000000000000000000000 --- a/configure/utils/init.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: init.cpp,v 1.3 2009/02/13 15:25:31 yingxiang Exp $ - * - **************************************************************************/ - - - -/** - * @file init.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/21 16:04:17 - * @version $Revision: 1.3 $ - * @brief - * - **/ - -#include "cc_log.h" -#include "ul_log.h" - -namespace comcfg{ - const int NO_LOG = 0x7fff; - int Log::_fatal = UL_LOG_FATAL; - int Log::_warning = UL_LOG_WARNING; - int Log::_notice = NO_LOG; - int Log::_trace = NO_LOG; - int Log::_debug = NO_LOG; -} - - - - - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/configure/utils/trans.cpp b/configure/utils/trans.cpp deleted file mode 100644 index 1e28affb7f9716dd0505d9e1c45fa0a1f31b17b3..0000000000000000000000000000000000000000 --- a/configure/utils/trans.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: trans.cpp,v 1.8 2009/11/10 04:50:30 scmpf Exp $ - * - **************************************************************************/ - - - -/** - * @file trans.cpp - * @author yingxiang(com@baidu.com) - * @date 2008/12/24 15:17:20 - * @version $Revision: 1.8 $ - * @brief - * - **/ -#include "cc_utils.h" - -namespace comcfg{ - - bool Trans :: isInteger(const str_t & str){ - for(int i = 0; i < (int)str.size(); ++i){ - if(isdigit(str[i]) || (str[i] == '-' && i == 0) || - (str[i] == '+' && i == 0)){ - continue; - } - else{ - return false; - } - } - return true; - } - - //Float状态机,检查某个字符串是否为float - //float的组成如下,第二行为状态号: - // [+-][digit][.][digit][Ee][+-][digit] '\0' -> true false - // 0 1 2 3 4 5 6 7 -1 -2 - enum{digit = 0, sig=1, dot=2, E=3, end=4}; - static int g_float_table[8][5] = { - //digit sig dot E end - {2, 1, 3, -2, -2}, // 0 - {2, -2, 3, -2, -2},// 1 - {2, -2, 3, 5, -1},//2 - {4, -2, -2, -2, -2},//3 - {4, -2, -2, 5, -1}, //4 - {7, 6, -2, -2, -2},//5 - {7, -2, -2, -2, -2},//6 - {7, -2, -2, -2, -1} //7 - }; - //举例:以g_float_table[2]为例: - //当前处于状态2 (digit),如果读到数字,仍然处于状态2.如果读到正负号,出错(-2) - //如果读到点,变为状态3,如果读到字母E,变为状态5,如果读到结尾,此时已经满足isFloat为true(-1) - bool floatAutoMachine(int status, const str_t & str, int nextpos){ - if(status == -1){ - return true; - }else if(status == -2){ - return false; - } - char nextchar = (int)str.size() > nextpos ? str[nextpos] : '\0'; - int next; - if(isdigit(nextchar)){ - next = digit; - }else if(nextchar == '+' || nextchar == '-'){ - next = sig; - }else if(nextchar == '.'){ - next = dot; - }else if(nextchar == 'E' || nextchar == 'e'){ - next = E; - }else if(nextchar == '\0'){ - next = end; - }else{ - return false; - } - return floatAutoMachine(g_float_table[status][next], str, nextpos+1); - } - - bool Trans :: isFloat(const str_t & str){ - return floatAutoMachine(0, str, 0); - } - - static str_t getFirstPart(const str_t & str){ - for(int i = 0; i < (int)str.size(); ++i){ - if(isspace(str[i]) || str[i] == '#'){ - return str.substr(0, i); - } - } - return str; - } - -#if 0 - int Trans :: str2double(const str_t & __str, double * buf){ - if(! __str.size()){ - ul_writelog(Log::notice(), "Config : Null value"); - return NULLVALUE; - } - str_t str = getFirstPart(__str); - if(isFloat(str)){ - if( sscanf(str.c_str(), "%lf", buf) == 1 ){ - ul_writelog(Log::trace(), "Read value [%s] as double/float = [%g]", __str.c_str(), *buf); - return 0; - } - } - ul_writelog(Log::notice(), "Config : Format error"); - return FORMATERROR; - } -#endif - int Trans :: str2double(const str_t & __str, double * buf){ - if(! __str.size()){ - LOG(INFO) << "Config : Null value"; - return NULLVALUE; - } - str_t str = getFirstPart(__str); - char *endptr = NULL; - errno = 0; - *buf = strtod(str.c_str(), &endptr); - if(errno == ERANGE){ - LOG(INFO) << "Config : str2double : out of range"; - return OUTOFRANGE; - } - if(*endptr != '\0'){ - LOG(INFO) << "Config : str2double : Format error char=[" << *endptr << "]"; - return FORMATERROR; - } - return 0; - } -#if 0 - static const str_t max_uint = "18446744073709551615"; - static bool uint64_range(str_t str){ - int i; - for(i = 0; i < (int)str.size(); ++i){ - if(str[i] != '0'){ - break; - } - } - if(i){ - str = str.substr(i); - } - if(str.size() > max_uint.size() || - (str.size() == max_uint.size() && max_uint < str)){ - return false; - } - return true; - } -#endif - int Trans :: str2uint64(const str_t & __str, unsigned long long * buf){ - if(! __str.size()){ - LOG(INFO) << "Config : Null value"; - return NULLVALUE; - } - str_t str = getFirstPart(__str); - char *endptr = NULL; - if(str[0] == '-'){ - //strtoull有一个问题,会将-1转化成0xFFFFFFFF - return FORMATERROR; - } - errno = 0; - *buf = strtoull(str.c_str(), &endptr, 0); - if(errno == ERANGE){ - LOG(INFO) << "Config : str2uint64 : Out of range"; - return OUTOFRANGE; - } - if(*endptr != '\0'){ - LOG(INFO) << "Config : str2uint64 : Format error char=[" << *endptr << "]"; - return FORMATERROR; - } - return 0; - } - - int Trans :: str2int64(const str_t & __str, long long * buf){ - if(! __str.size()){ - LOG(INFO) << "Config : Null value"; - return NULLVALUE; - } - str_t str = getFirstPart(__str); - char *endptr = NULL; - errno = 0; - *buf = strtoll(str.c_str(), &endptr, 0); - if(errno == ERANGE){ - LOG(INFO) << "Config : str2int64 : Out of range"; - return OUTOFRANGE; - } - if(*endptr != '\0'){ - LOG(INFO) << "Config : str2int64 : " << __str.c_str() << " Format error char=[" << *endptr << "]"; - return FORMATERROR; - } - return 0; - } -#if 0 - //废弃接口 - int Trans :: str2int(const str_t & __str, Trans :: Integer * buf){ - if(! __str.size()){ - ul_writelog(Log::notice(), "Config : Null value"); - return NULLVALUE; - } - str_t str = getFirstPart(__str); - if(isInteger(str)){ - if(str[0] == '-'){ - if(! uint64_range(str.substr(1))){ - ul_writelog(Log::notice(), "Config : Out of range"); - return OUTOFRANGE; - } - buf->negative = true; - if( sscanf(str.c_str(), "%llu", &buf->val) == 1){ - ul_writelog(Log::debug(), "Read value [%s] as Integer = [-%llu]", __str.c_str(), buf->val); - return 0; - } - } - else{ - if(! uint64_range(str)){ - ul_writelog(Log::notice(), "Config : Out of range"); - return OUTOFRANGE; - } - buf->negative = false; - if( sscanf(str.c_str(), "%llu", &buf->val) == 1){ - ul_writelog(Log::debug(), "Read value [%s] as Integer = [%llu]", __str.c_str(), buf->val); - return 0; - } - } - } - ul_writelog(Log::notice(), "Config : Format error"); - return FORMATERROR; - } -#endif - /** - * \0 空字符(NULL) 00H/0 - * \n 换行符(LF) 0AH/10 - * \r 回车符(CR) 0DH/13 - * \t 水平制表符(HT) 09H/9 - * \v 垂直制表(VT) 0B/11 - * \a 响铃(BEL) 07/7 - * \b 退格符(BS) 08H/8 - * \f 换页符(FF) 0CH/12 - * \’ 单引号 27H/39 - * \" 双引号 22H/34 - * \\ 反斜杠 5CH/92 - * \ddd 任意字符 三位八进制 - * \xhh 任意字符 二位十六进制 - */ - static int hex2int(char c){ - if(c >= 'A' && c <= 'F'){ - return int(c - 'A' + 10); - } - if(c >= 'a' && c <= 'f'){ - return int(c - 'a' + 10); - } - if(c >= '0' && c <= '9'){ - return int(c - '0'); - } - return -255; - } - int Trans :: str2str(const str_t & str, str_t * buf){ - if(str.size() == 0 || str[0] != '\"'){ - *buf = str; - return 0; - } - else{ - *buf = ""; - for(int i = 1; i < (int)str.size(); ++i){ - if( str[i] == '\"'){ - return 0; - } - else if(str[i] == '\\'){ - ++i; - if(i >= (int)str.size()){ - return FORMATERROR; - } - switch(str[i]){ - case '0': - buf->push_back('\0');break; - case 'n': - buf->push_back('\n');break; - case 'r': - buf->push_back('\r');break; - case 't': - buf->push_back('\t');break; - case 'v': - buf->push_back('\v');break; - case 'a': - buf->push_back('\a');break; - case 'b': - buf->push_back('\b');break; - case 'f': - buf->push_back('\f');break; - case '\'': - buf->push_back('\'');break; - case '\"': - buf->push_back('\"');break; - case '\\': - buf->push_back('\\');break; - case 'x': - default: - if(i+2 >= (int)str.size()){ - return FORMATERROR; - } - if(str[i] == 'x'){ - int c = hex2int(str[i+1]) * 16 + hex2int(str[i+2]); - if(c < 0){ - return FORMATERROR; - } - else{ - buf->push_back(char(c)); - } - } - else if(str[i] >= '0' && str[i] < '8'){ - int c = int(str[i] - '0') * 64 + int(str[i+1] - '0') * 8 + int(str[i+2] - '0'); - if(c > 255){ - return FORMATERROR; - } - else{ - buf->push_back(char(c)); - } - } - else{ - return FORMATERROR; - } - i += 2; - } - } - else{ - buf->push_back(str[i]); - } - } - } - return FORMATERROR; - } - - str_t Trans :: cutComment(const str_t & str){ - for(int i = 0; i < (int)str.size(); ++i){ - if(str[i] == '#'){ - return str.substr(0, i); - } - } - return str; - } - -} - - - - - - - - - - - - - - - -/* vim: set ts=4 sw=4 sts=4 tw=100 */ diff --git a/inferencer-fluid-cpu/CMakeLists.txt b/inferencer-fluid-cpu/CMakeLists.txt index 4ff3551054fa1cca37bc596f7f9f4c5c35c8e25a..b3805f14031bf449d82dd0691561235f09b2c999 100644 --- a/inferencer-fluid-cpu/CMakeLists.txt +++ b/inferencer-fluid-cpu/CMakeLists.txt @@ -4,6 +4,6 @@ target_include_directories(fluid_cpu_engine PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include ${PADDLE_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/Paddle/fluid_install_dir/) -add_dependencies(fluid_cpu_engine pdserving paddle_fluid) +add_dependencies(fluid_cpu_engine pdserving paddle_fluid proto_configure) target_link_libraries(fluid_cpu_engine pdserving -liomp5 -lmklml_intel -lpthread -lcrypto -lm -lrt -lssl -ldl -lz) diff --git a/inferencer-fluid-cpu/include/fluid_cpu_engine.h b/inferencer-fluid-cpu/include/fluid_cpu_engine.h index 09fc6f2ff6616afd0fb03303e9d3c5389cde5bf6..1339e28c7baf837cec987f2f13fb08b0f2c0567b 100644 --- a/inferencer-fluid-cpu/include/fluid_cpu_engine.h +++ b/inferencer-fluid-cpu/include/fluid_cpu_engine.h @@ -7,11 +7,15 @@ #include #include "framework/infer.h" #include "paddle/fluid/inference/paddle_inference_api.h" +#include "inferencer_configure.pb.h" +#include "configure_parser.h" namespace baidu { namespace paddle_serving { namespace fluid_cpu { +using configure::SigmoidConf; + class AutoLock { public: AutoLock(pthread_mutex_t& mutex) : _mut(mutex){ @@ -366,24 +370,24 @@ public: size_t pos = model_path.find_last_of("/\\"); std::string conf_path = model_path.substr(0, pos); std::string conf_file = model_path.substr(pos); - comcfg::Configure conf; - if (conf.load(conf_path.c_str(), conf_file.c_str()) != 0) { + configure::SigmoidConf conf; + if (configure::read_proto_conf(conf_path, conf_file, &conf) != 0) { LOG(FATAL) << "failed load model path: " << model_path; return -1; } _core.reset(new SigmoidFluidModel); - std::string fluid_model_data_path = conf["dnn_model_path"].to_cstr(); + std::string fluid_model_data_path = conf.dnn_model_path(); int ret = load_fluid_model(fluid_model_data_path); if (ret < 0) { LOG(FATAL) << "fail to load fluid model."; return -1; } - const char* sigmoid_w_file = conf["sigmoid_w_file"].to_cstr(); - const char* sigmoid_b_file = conf["sigmoid_b_file"].to_cstr(); - float exp_max = conf["exp_max_input"].to_float(); - float exp_min = conf["exp_min_input"].to_float(); + const char* sigmoid_w_file = conf.sigmoid_w_file().c_str(); + const char* sigmoid_b_file = conf.sigmoid_b_file().c_str(); + float exp_max = conf.exp_max_input(); + float exp_min = conf.exp_min_input(); _core->_sigmoid_core.reset(new SigmoidModel); LOG(INFO) << "create sigmoid core[" << _core->_sigmoid_core.get() << "], use count[" << _core->_sigmoid_core.use_count() << "]."; diff --git a/mempool/CMakeLists.txt b/mempool/CMakeLists.txt index 401e3dfe2e9d15ad59f862084d3183eb80dd1501..fe590099d4ad3c43264878175ca352e54bb6c6c4 100644 --- a/mempool/CMakeLists.txt +++ b/mempool/CMakeLists.txt @@ -2,3 +2,4 @@ add_library(mempool ${CMAKE_CURRENT_LIST_DIR}/mempool.cpp) add_dependencies(mempool brpc) target_include_directories(mempool PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) +target_link_libraries(mempool bsl) diff --git a/predictor/CMakeLists.txt b/predictor/CMakeLists.txt index d26aa66655314e62bcaf12ac7fbc468965b6fb9c..0e1b4d5113318b4f38d624bcf5da8cd81934e216 100644 --- a/predictor/CMakeLists.txt +++ b/predictor/CMakeLists.txt @@ -16,22 +16,19 @@ set_source_files_properties( ${pdserving_srcs} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing -Wno-unused-variable -Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor") -add_dependencies(pdserving protobuf boost brpc leveldb bsl pdcodegen configure +add_dependencies(pdserving protobuf boost brpc leveldb pdcodegen proto_configure - ullib spreg mempool) + ullib mempool) target_include_directories(pdserving PUBLIC ${CMAKE_CURRENT_LIST_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../mempool - ${CMAKE_CURRENT_LIST_DIR}/../spreg - ${CMAKE_CURRENT_LIST_DIR}/../ullib/include - ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) + ${CMAKE_CURRENT_LIST_DIR}/../ullib/include) target_link_libraries(pdserving - brpc protobuf boost leveldb bsl configure proto_configure ullib spreg + brpc protobuf boost leveldb proto_configure ullib mempool -lpthread -lcrypto -lm -lrt -lssl -ldl -lz) add_executable(pdserving_exe ${pdserving_srcs}) @@ -40,21 +37,18 @@ set_source_files_properties( PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing -Wno-unused-variable -Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor") add_dependencies(pdserving_exe - protobuf boost brpc leveldb bsl pdcodegen configure proto_configure - ullib spreg mempool) + protobuf boost brpc leveldb pdcodegen proto_configure bsl + ullib mempool) target_include_directories(pdserving_exe PUBLIC ${CMAKE_CURRENT_LIST_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../mempool - ${CMAKE_CURRENT_LIST_DIR}/../spreg - ${CMAKE_CURRENT_LIST_DIR}/../ullib/include - ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) -target_link_libraries(pdserving_exe brpc protobuf leveldb bsl configure - proto_configure ullib spreg mempool -lpthread -lcrypto -lm -lrt -lssl + ${CMAKE_CURRENT_LIST_DIR}/../ullib/include) +target_link_libraries(pdserving_exe brpc protobuf leveldb bsl + proto_configure ullib mempool -lpthread -lcrypto -lm -lrt -lssl -ldl -lz) add_library(pdclient ${pdclient_srcs}) @@ -68,11 +62,8 @@ target_include_directories(pdclient PUBLIC ${CMAKE_CURRENT_LIST_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../mempool - ${CMAKE_CURRENT_LIST_DIR}/../spreg - ${CMAKE_CURRENT_LIST_DIR}/../ullib/include - ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) + ${CMAKE_CURRENT_LIST_DIR}/../ullib/include) target_link_libraries(pdclient protobuf boost brpc -lpthread -lcrypto -lm -lrt -lssl -ldl -lz) diff --git a/predictor/common/inner_common.h b/predictor/common/inner_common.h index b1f4ec8ba6a8d79db5fbdf2e491804f6d39b052a..1bfcffb1a774799642ddbc9ccecc3a37e3abb74c 100644 --- a/predictor/common/inner_common.h +++ b/predictor/common/inner_common.h @@ -27,8 +27,6 @@ #include #include -#include "Configure.h" - #include "configure.pb.h" #include "configure_parser.h" diff --git a/predictor/framework/manager.h b/predictor/framework/manager.h index d1701c25d30fbce67734770b3c7d0e079264cb7d..1cb274369d4c6e3c6b6038bd6f0cea416b3c5c0a 100644 --- a/predictor/framework/manager.h +++ b/predictor/framework/manager.h @@ -77,11 +77,6 @@ public: << path << "/" << file << ", at:" << ii << "!"; } - } catch (comcfg::ConfigException e) { - LOG(FATAL) - << "Config[" << path << "/" << file << "] format " - << "invalid, err: " << e.what(); - return -1; } catch (...) { LOG(FATAL) << "Config[" << path << "/" << file << "] format " @@ -190,11 +185,6 @@ public: << path << "/" << file << ", at:" << ii << "!"; } - } catch (comcfg::ConfigException e) { - LOG(FATAL) - << "Config[" << path << "/" << file << "] format " - << "invalid, err: " << e.what(); - return -1; } catch (...) { LOG(FATAL) << "Config[" << path << "/" << file << "] format " diff --git a/proto_configure/CMakeLists.txt b/proto_configure/CMakeLists.txt index 89cf870d920af2c86ceea762ce50947dc7d56fa8..b67ae212e16cc6563bb9db3d7560f5a4d6e88d64 100644 --- a/proto_configure/CMakeLists.txt +++ b/proto_configure/CMakeLists.txt @@ -1,6 +1,7 @@ LIST(APPEND protofiles ${CMAKE_CURRENT_LIST_DIR}/proto/server_configure.proto ${CMAKE_CURRENT_LIST_DIR}/proto/sdk_configure.proto + ${CMAKE_CURRENT_LIST_DIR}/proto/inferencer_configure.proto ) PROTOBUF_GENERATE_CPP(configure_proto_srcs configure_proto_hdrs ${protofiles}) diff --git a/proto_configure/proto/inferencer_configure.proto b/proto_configure/proto/inferencer_configure.proto new file mode 100644 index 0000000000000000000000000000000000000000..168807d5cbd7cb3194f052ff9de199e84a2ca362 --- /dev/null +++ b/proto_configure/proto/inferencer_configure.proto @@ -0,0 +1,11 @@ +syntax="proto2"; +package baidu.paddle_serving.configure; + +message SigmoidConf { + required string dnn_model_path = 1; + required string sigmoid_w_file = 2; + required string sigmoid_b_file = 3; + required float exp_max_input = 4; + required float exp_min_input = 5; +}; + diff --git a/proto_configure/tests/test_configure.cpp b/proto_configure/tests/test_configure.cpp index d145a0f7cb8953437c85762d04b88c0089b66b0a..8adf52a16536367b90d7c706ef0c35bd25f6ec2a 100644 --- a/proto_configure/tests/test_configure.cpp +++ b/proto_configure/tests/test_configure.cpp @@ -4,6 +4,7 @@ #include #include "server_configure.pb.h" #include "sdk_configure.pb.h" +#include "inferencer_configure.pb.h" #include "configure_parser.h" using baidu::paddle_serving::configure::EngineDesc; @@ -25,15 +26,17 @@ using baidu::paddle_serving::configure::NamingConf; using baidu::paddle_serving::configure::RpcParameter; using baidu::paddle_serving::configure::Predictor; using baidu::paddle_serving::configure::VariantConf; - using baidu::paddle_serving::configure::SDKConf; +using baidu::paddle_serving::configure::SigmoidConf; + const std::string output_dir = "./conf/"; const std::string model_toolkit_conf_file = "model_toolkit.prototxt"; const std::string resource_conf_file = "resource.prototxt"; const std::string workflow_conf_file = "workflow.prototxt"; const std::string service_conf_file = "service.prototxt"; -const std::string sdk_conf_file = "predictors.protxt"; +const std::string sdk_conf_file = "predictors.prototxt"; +const std::string sigmoid_conf_file = "inferencer.prototxt"; int test_write_conf() { @@ -159,6 +162,18 @@ int test_write_conf() return ret; } + SigmoidConf sigmoid_conf; + sigmoid_conf.set_dnn_model_path("data/dnn_model"); + sigmoid_conf.set_sigmoid_w_file("data/dnn_model/_sigmoid_.w_0"); + sigmoid_conf.set_sigmoid_b_file("data/dnn_model/_sigmoid_.b_0"); + sigmoid_conf.set_exp_max_input(0.75); + sigmoid_conf.set_exp_min_input(0.25); + + ret = baidu::paddle_serving::configure::write_proto_conf(&sigmoid_conf, output_dir, sigmoid_conf_file); + if (ret != 0) { + return ret; + } + return 0; } @@ -201,6 +216,13 @@ int test_read_conf() return -1; } + SigmoidConf sigmoid_conf; + ret = baidu::paddle_serving::configure::read_proto_conf(output_dir, sigmoid_conf_file, &sigmoid_conf); + if (ret != 0) { + std::cout << "Read conf fail: " << sdk_conf_file << std::endl; + return -1; + } + return 0; } diff --git a/sdk-cpp/CMakeLists.txt b/sdk-cpp/CMakeLists.txt index c368059e5ccb1b140eec5e834364b56a44a0bfbf..2015a5fffc4d75e022386c4f49b516e3739bb225 100644 --- a/sdk-cpp/CMakeLists.txt +++ b/sdk-cpp/CMakeLists.txt @@ -1,24 +1,22 @@ include(src/CMakeLists.txt) include(proto/CMakeLists.txt) add_library(sdk-cpp ${sdk_cpp_srcs}) -add_dependencies(sdk-cpp configure proto_configure) +add_dependencies(sdk-cpp pdcodegen proto_configure) target_include_directories(sdk-cpp PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include ${CMKAE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../ullib/include ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include ) -target_link_libraries(sdk-cpp brpc configure proto_configure protobuf leveldb) +target_link_libraries(sdk-cpp brpc proto_configure protobuf leveldb) add_executable(ximage ${CMAKE_CURRENT_LIST_DIR}/demo/ximage.cpp) target_include_directories(ximage PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../ullib/include ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) @@ -30,7 +28,6 @@ target_include_directories(mapcnn_dense PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../ullib/include ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) @@ -42,7 +39,6 @@ target_include_directories(mapcnn_sparse PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../proto_configure - ${CMAKE_CURRENT_LIST_DIR}/../configure ${CMAKE_CURRENT_LIST_DIR}/../proto_configure/include ${CMAKE_CURRENT_LIST_DIR}/../ullib/include ${CMAKE_CURRENT_BINARY_DIR}/../bsl/include) diff --git a/sdk-cpp/conf/predictors.prototxt b/sdk-cpp/conf/predictors.prototxt new file mode 100644 index 0000000000000000000000000000000000000000..114d799efd004169350e7c457dcff6d280d19638 --- /dev/null +++ b/sdk-cpp/conf/predictors.prototxt @@ -0,0 +1,36 @@ +default_variant_conf { + tag: "default" + connection_conf { + connect_timeout_ms: 2000 + rpc_timeout_ms: 20000 + connect_retry_count: 2 + max_connection_per_host: 100 + hedge_request_timeout_ms: 4294967295 + hedge_fetch_retry_count: 2 + connection_type: "pooled" + } + naming_conf { + cluster_filter_strategy: "Default" + load_balance_strategy: "la" + } + rpc_parameter { + compress_type: 0 + package_size: 20 + protocol: "baidu_std" + max_channel_per_request: 3 + } +} +predictors { + name: "ximage" + service_name: "baidu.paddle_serving.predictor.image_classification.ImageClassifyService" + endpoint_router: "WeightedRandomRender" + weighted_random_render_conf { + variant_weight_list: "50" + } + variants { + tag: "var1" + naming_conf { + cluster: "list://127.0.0.1:8010" + } + } +} diff --git a/sdk-cpp/include/abtest.h b/sdk-cpp/include/abtest.h index 3e00097054bb81cf6a33f4e71d9e789226a4943d..2011167fe0779db4f32c6e9839299ce79f29b874 100644 --- a/sdk-cpp/include/abtest.h +++ b/sdk-cpp/include/abtest.h @@ -70,22 +70,6 @@ private: uint32_t _normalized_sum; }; -class VariantRouterBase { -public: - typedef std::map StubMap; - - virtual ~VariantRouterBase() {} - - virtual int initialize( - const comcfg::ConfigUnit& conf) = 0; - - virtual Stub* route(const StubMap&) = 0; - - virtual Stub* route( - const StubMap&, - const void*) = 0; -}; - } // sdk_cpp } // paddle_serving } // baidu diff --git a/sdk-cpp/include/common.h b/sdk-cpp/include/common.h index dfcd9108be849da1f30da3ef83df4b4a78a490cc..9ca75a876612e41a3cf08f300135631e50be6d50 100644 --- a/sdk-cpp/include/common.h +++ b/sdk-cpp/include/common.h @@ -41,7 +41,6 @@ #include #include -#include "Configure.h" #include "sdk_configure.pb.h" #include "configure_parser.h" diff --git a/sdk-cpp/include/endpoint_config.h b/sdk-cpp/include/endpoint_config.h index cca2f6f1b912252fd145e8c123949ac25442f69c..12b4012f1ed4570923726013784c213d1e3363d9 100644 --- a/sdk-cpp/include/endpoint_config.h +++ b/sdk-cpp/include/endpoint_config.h @@ -26,11 +26,11 @@ namespace sdk_cpp { #define PARSE_CONF_ITEM(conf, item, name, fail) \ do { \ - try { \ - item.set(conf.name()); \ - } catch (...) { \ - LOG(FATAL) << "Unkown error accurs when load config";\ - return fail; \ + if (conf.has_##name()) { \ + item.set(conf.name()); \ + } \ + else { \ + LOG(ERROR) << "Not found key in configue: " << #name;\ } \ } while (0) @@ -92,12 +92,11 @@ struct SplitParameters { }; struct VariantInfo { - VariantInfo() : ab_test(NULL) {} + VariantInfo() {} Connection connection; NamingInfo naminginfo; RpcParameters parameters; SplitParameters splitinfo; - void* ab_test; }; struct EndpointInfo { diff --git a/sdk-cpp/src/config_manager.cpp b/sdk-cpp/src/config_manager.cpp index e24bcaad32c9dd599e0fe44b71a2c1706c1f69c8..22de0c3326ef45119438bf98d35789ea9fc9e372 100644 --- a/sdk-cpp/src/config_manager.cpp +++ b/sdk-cpp/src/config_manager.cpp @@ -55,6 +55,9 @@ int EndpointConfigManager::load() { } uint32_t ep_size = sdk_conf.predictors_size(); +#if 1 + LOG(INFO) << "ep_size: " << ep_size; +#endif for (uint32_t ei = 0; ei < ep_size; ++ei) { EndpointInfo ep; if (init_one_endpoint(sdk_conf.predictors(ei), ep, @@ -80,8 +83,8 @@ int EndpointConfigManager::load() { } } - } catch (bsl::Exception& e) { - LOG(FATAL) << "Failed load configure, err: " << e.what(); + } catch (std::exception& e) { + LOG(FATAL) << "Failed load configure" << e.what(); return -1; } LOG(INFO) @@ -93,6 +96,9 @@ int EndpointConfigManager::load() { int EndpointConfigManager::init_one_endpoint( const configure::Predictor& conf, EndpointInfo& ep, const VariantInfo& dft_var) { +#if 1 + LOG(INFO) << "init_one_endpoint " << conf.name().c_str(); +#endif try { // name ep.endpoint_name = conf.name(); @@ -102,7 +108,7 @@ int EndpointConfigManager::init_one_endpoint( ConfigItem ep_router; PARSE_CONF_ITEM(conf, ep_router, endpoint_router, -1); if (ep_router.init) { - if (ep_router.value != "WeightedRandomRenderConf") { + if (ep_router.value != "WeightedRandomRender") { LOG(FATAL) << "endpointer_router unrecognized " << ep_router.value; return -1; } @@ -123,6 +129,9 @@ int EndpointConfigManager::init_one_endpoint( // varlist uint32_t var_size = conf.variants_size(); +#if 1 + LOG(INFO) << "Variant size: " << var_size; +#endif for (uint32_t vi = 0; vi < var_size; ++vi) { VariantInfo var; if (merge_variant(dft_var, conf.variants(vi), @@ -145,7 +154,7 @@ int EndpointConfigManager::init_one_endpoint( << "Succ load one endpoint, name: " << ep.endpoint_name << ", count of variants: " << ep.vars.size() << "."; - } catch (bsl::Exception& e) { + } catch (std::exception& e) { LOG(FATAL) << "Exception acccurs when load endpoint conf" << ", message: " << e.what(); return -1; @@ -189,6 +198,9 @@ int EndpointConfigManager::init_one_variant( PARSE_CONF_ITEM(params, var.parameters.protocol, protocol, -1); +#if 1 + LOG(WARNING) << var.parameters.protocol.value.c_str(); +#endif PARSE_CONF_ITEM(params, var.parameters.compress_type, compress_type, -1); PARSE_CONF_ITEM(params, var.parameters.package_size, @@ -212,22 +224,6 @@ int EndpointConfigManager::init_one_variant( PARSE_CONF_ITEM(conf, var.parameters.route_tag, tag, -1); - // router - ConfigItem var_router; - PARSE_CONF_ITEM(conf, var_router, variant_router, -1); - if (var_router.init) { - VariantRouterBase* router - = VariantRouterFactory::instance().generate_object( - var_router.value); - if (!router || router->initialize( - conf[var_router.value.c_str()]) != 0) { - LOG(FATAL) << "Failed fetch valid variant router" - << ", name:" << var_router.value; - return -1; - } - var.ab_test = router; - } - } catch (...) { LOG(FATAL) << "Failed load variant from configure unit"; return -1; @@ -242,8 +238,9 @@ int EndpointConfigManager::merge_variant( VariantInfo& merged_var) { merged_var = default_var; - // VariantRouter cannot be merged! - merged_var.ab_test = NULL; +#if 1 + LOG(INFO) << "merge_variant " << conf.tag().c_str(); +#endif return init_one_variant(conf, merged_var); } diff --git a/sdk-cpp/src/endpoint.cpp b/sdk-cpp/src/endpoint.cpp index 9f5ff61b67a8a63f9316f5711147af04526f328a..683873ab5dad9f2722a072e16cc91613fe496663 100644 --- a/sdk-cpp/src/endpoint.cpp +++ b/sdk-cpp/src/endpoint.cpp @@ -99,6 +99,9 @@ Predictor* Endpoint::get_predictor( } Predictor* Endpoint::get_predictor() { +#if 1 + LOG(INFO) << "Endpoint::get_predictor"; +#endif if (_variant_list.size() == 1) { if (_variant_list[0] == NULL) { LOG(FATAL) << "Not valid variant info"; diff --git a/serving/conf/model_toolkit.prototxt b/serving/conf/model_toolkit.prototxt new file mode 100644 index 0000000000000000000000000000000000000000..2693e35cc20efce9b4547b4724d41d21e5ae0716 --- /dev/null +++ b/serving/conf/model_toolkit.prototxt @@ -0,0 +1,10 @@ +engines { + name: "image_classification_resnet" + type: "FLUID_CPU_NATIVE_DIR" + reloadable_meta: "./data/model/paddle/fluid_time_file" + reloadable_type: "timestamp_ne" + model_data_path: "./data/model/paddle/fluid/SE_ResNeXt50_32x4d" + runtime_thread_num: 0 + batch_infer_size: 0 + enable_batch_align: 0 +} diff --git a/serving/conf/resource.prototxt b/serving/conf/resource.prototxt new file mode 100644 index 0000000000000000000000000000000000000000..dcf959ec9d56a82ebb699702d0dc960971fde67f --- /dev/null +++ b/serving/conf/resource.prototxt @@ -0,0 +1,2 @@ +model_toolkit_path: "./conf/" +model_toolkit_file: "model_toolkit.prototxt" diff --git a/serving/conf/service.prototxt b/serving/conf/service.prototxt new file mode 100644 index 0000000000000000000000000000000000000000..b3ccfdea834e3e089bf803e4602265483241a4f2 --- /dev/null +++ b/serving/conf/service.prototxt @@ -0,0 +1,8 @@ +services { + name: "ImageClassifyService" + workflows: "workflow1" +} +services { + name: "BuiltinDenseFormatService" + workflows: "workflow2" +} diff --git a/serving/conf/workflow.prototxt b/serving/conf/workflow.prototxt new file mode 100644 index 0000000000000000000000000000000000000000..b747e6b2c8c94ebd2eea53ffe0a2b3c84829e5ad --- /dev/null +++ b/serving/conf/workflow.prototxt @@ -0,0 +1,32 @@ +workflows { + name: "workflow1" + workflow_type: "Sequence" + nodes { + name: "image_reader_op" + type: "ReaderOp" + } + nodes { + name: "image_classify_op" + type: "ClassifyOp" + dependencies { + name: "image_reader_op" + mode: "RO" + } + } + nodes { + name: "write_json_op" + type: "WriteOp" + dependencies { + name: "image_classify_op" + mode: "RO" + } + } +} +workflows { + name: "workflow2" + workflow_type: "Sequence" + nodes { + name: "dense_op" + type: "DenseOp" + } +} diff --git a/spreg/CMakeLists.txt b/spreg/CMakeLists.txt deleted file mode 100644 index d466b6cf3323b8ed5cda02d9080609ffe2826ded..0000000000000000000000000000000000000000 --- a/spreg/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -FILE(GLOB spreg_srcs ${CMAKE_CURRENT_LIST_DIR}/*.cpp) -add_library(spreg ${spreg_srcs}) -add_dependencies(spreg pcre) -target_link_libraries(spreg pcre) -include_directories(${CMAKE_CURRENT_LIST_DIR}/include) diff --git a/spreg/spreg.cpp b/spreg/spreg.cpp deleted file mode 100644 index cc6d90a0e692f68bd1d0606ec952e767d5ec442b..0000000000000000000000000000000000000000 --- a/spreg/spreg.cpp +++ /dev/null @@ -1,475 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: spreg.cpp,v 1.9 2009/02/06 07:16:04 baonh Exp $ - * - **************************************************************************/ - - - -/** - * @file spreg.cpp - * @author baonh(baonenghui@baidu.com) - * @date 2008/05/27 20:03:06 - * @version $Revision: 1.9 $ - * @brief - * - **/ - -#include -#include -#include - -#include "spreg.h" - -struct _spreg_t { - pcre *_re; - pcre_extra *_extra; -}; - -static const char *const spreg_err_list[] = { - "", - "no match", - "bad argument", - "bad option", - "bad magic", - "unknown opcode", - "unknown node", - "no memory", - "no substring", - "match limit", - "callout", - "bad utf8", - "bad utf8 offset", - "partial", - "bad partial", - "internal error", - "bad count", - "dfa uitem", - "dfa ucond", - "dfa match limit", - "dfa recurse", - "recurse limit", - "null wslimit", - "bad newline" -}; - - - -spreg_match_t *spreg_match_init (int n) -{ - spreg_match_t *re_match; - re_match = (spreg_match_t *)malloc(sizeof(spreg_match_t)*((n/2)+1)*3); - return re_match; -} - -spreg_t * spreg_init(const char *reg, - const char **errinfo, - int option) -{ - static const char *memory_error = "failed to get memory"; - static const char *reg_null = "reg is NULL"; - char const *err = NULL; - int erroffset = 0; - spreg_t *re = NULL; - - if (NULL == reg) { - err = reg_null; - goto fail; - } - re = (spreg_t *)calloc(sizeof(spreg_t), 1); - if (NULL == re) { - err = memory_error; - goto fail; - } - re->_re = pcre_compile(reg, option, &err, &erroffset, NULL); - if (NULL == re->_re) { - goto fail; - } - re->_extra = pcre_study(re->_re, 0, &err); - if (err != NULL) { - goto fail; - } - if (errinfo != NULL) { - *errinfo = err; - } - return re; - -fail: - if (errinfo != NULL) { - *errinfo = err; - } - if (re != NULL) { - if (re->_re != NULL) { - pcre_free(re->_re); - } - if (re->_extra != NULL) { - pcre_free(re->_extra); - } - free(re); - } - return NULL; -} - - -int spreg_search(const spreg_t* re, - const char* src, - int src_size, - spreg_match_t *rmatch, - int n, - int option) -{ - if (NULL == re || NULL == src || src_size < 0) { - return SPREG_NULL; - } - - int ret = pcre_exec(re->_re, - re->_extra, - src, - src_size, - 0, - option, - (int*)rmatch, - 3*n); - - if (0 == ret) { - ret = n; - } - return ret; - -} - - - -int spreg_match(const spreg_t* re, - const char *src, - int src_size, - spreg_match_t *rmatch, - int n, - int option) -{ - spreg_match_t *res = rmatch; - int res_n = n; - int ret = 0; - if (NULL == re || NULL == src || src_size < 0) { - return SPREG_NULL; - } - if (NULL == rmatch || 0 == n) { - int capturecount = 0; - pcre_fullinfo(re->_re, NULL, PCRE_INFO_CAPTURECOUNT, &capturecount); - res_n = capturecount + 1; - res = spreg_match_init(res_n); - if (NULL == res) { - return SPREG_NOMEMORY; - } - } - ret = spreg_search(re, src, src_size, res, res_n, option); - - - if (!(ret > 0 && 0 == res[0].match_begin && src_size == res[0].match_end)) { - ret = SPREG_NOMATCH; - } - if (NULL == rmatch || 0 == n) { - spreg_match_destroy(res); - } - return ret; - -} - - -int spreg_search_all(const spreg_t *re, - const char *src, - int src_size, - spreg_callback_t *callback, - void *arg, - int option) -{ - if (NULL == re || NULL == callback || src_size < 0) { - return SPREG_NULL; - } - int n = 0; - spreg_match_t *res = NULL; - int capturecount = 0; - int offset = 0; - int ret = 0; - int capn = 0; - spreg_callback_param_t callback_match; - - pcre_fullinfo(re->_re, NULL, PCRE_INFO_CAPTURECOUNT, &capturecount); - n = capturecount + 1; - res = spreg_match_init(n); - if (NULL == res) { - return SPREG_NOMEMORY; - } - callback_match.src = src; - callback_match.src_size = src_size; - callback_match.rmatch = res; - callback_match.arg = arg; - do { - capn = spreg_search(re, src + offset, - src_size - offset, res, n, option); - - if (capn > 0) { - ret ++; - callback_match.nrmatch = capn; - for (int i = 0; i < callback_match.nrmatch; ++i) { - res[i].match_begin += offset; - res[i].match_end += offset; - } - - if (res[0].match_end == res[0].match_begin) { - offset = res[0].match_end + 1; - } else { - offset = res[0].match_end; - } - if (callback(&callback_match) < 0) { - break; - } - if (offset >= src_size) break; - } - } while (capn > 0); - - spreg_match_destroy(res); - return ret; -} - -int spreg_split(const spreg_t* re, - const char* src, - int src_size, - spreg_callback_t *callback, - void *arg, - int option) -{ - if (NULL == re || NULL == src || NULL == callback || - src_size < 0) { - return SPREG_NULL; - } - int n = 0; - spreg_match_t *res = NULL; - spreg_callback_param_t callback_match; - int capturecount = 0; - int offset = 0; - int ret = 0; - int capn = 0; - pcre_fullinfo(re->_re, NULL, PCRE_INFO_CAPTURECOUNT, &capturecount); - n = capturecount + 1; - res = spreg_match_init(n + 1); - if (NULL == res) { - return SPREG_NOMEMORY; - } - callback_match.src = src; - callback_match.src_size = src_size; - callback_match.rmatch = res; - callback_match.arg = arg; - do { - capn = spreg_search(re, src + offset, - src_size - offset, (res+1), n, option); - - - if (capn > 0) { - ret ++; - callback_match.nrmatch = capn + 1; - for (int i = 1; i < callback_match.nrmatch; ++i) { - res[i].match_begin += offset; - res[i].match_end += offset; - } - res[0].match_begin = offset; - res[0].match_end = res[1].match_begin; - - if (res[1].match_end == res[1].match_begin) { - offset = res[1].match_end + 1; - res[0].match_end ++; - } else { - offset = res[1].match_end; - } - - if (callback(&callback_match) < 0) { - goto end; - } - if (offset >= src_size) break; - - } - } while (capn > 0 && offset < src_size); - - if (offset < src_size) { - res[1].match_begin = -1; - res[1].match_end = -1; - res[0].match_begin = offset; - res[0].match_end = src_size; - callback_match.nrmatch = 1; - ret ++; - if (callback(&callback_match) < 0) { - goto end; - } - } -end: - spreg_match_destroy(res); - - return ret; -} - -typedef struct _replace_type_t { - int error; - int limit; - int last_match; - const char *replace_string; - char *dst; - char *dst_end; -} replace_type_t; - -static int replace_call_back(spreg_callback_param_t *callback_match) -{ - replace_type_t *replace = (replace_type_t *)(callback_match->arg); - - int match_len = 0; - int n = callback_match->nrmatch; - const char *walk = replace->replace_string; - const char *src = callback_match->src; - char *buffer = replace->dst; - char *buffer_end = replace->dst_end; - spreg_match_t *rmatch = callback_match->rmatch; - int copy_len = rmatch[0].match_begin - replace->last_match; - - int backref = 0; - - if (copy_len != 0) { - if (buffer + copy_len < buffer_end) { - memcpy(buffer, src + replace->last_match, copy_len); - buffer += copy_len; - } else { - replace->error = -1; - } - } - replace->last_match = rmatch[0].match_end; - while (*walk && buffer + 1 < buffer_end) { - if ('\\' == *walk) { - if (walk[1] > '9' || walk[1] < '1') { - if (walk[1] == '\\') { - *buffer++ = '\\'; - walk += 2; - } else { - ++ walk; - } - continue; - } - backref = walk[1] - '0'; - if (backref < n) { - match_len = rmatch[backref].match_end - rmatch[backref].match_begin; - if (buffer + match_len >= buffer_end) { - match_len = buffer_end - buffer; - replace->error = -1; - } - memcpy(buffer, src + rmatch[backref].match_begin, (size_t)match_len); - buffer += match_len; - walk += 2; - continue; - } - } - *buffer++ = *walk++; - } - replace->dst = buffer; - if (1 == replace->limit) { - //达到替换的数量限制,直接memcpy - if (replace->dst + callback_match->src_size - rmatch[0].match_end < buffer_end) { - memcpy(buffer, src + rmatch[0].match_end, - (size_t)(callback_match->src_size - rmatch[0].match_end)); - replace->dst += callback_match->src_size - rmatch[0].match_end; - } else { - //超过buffer的大小 - replace->error = -1; - } - return -1; - } else if (replace->error < 0) { - return -1; - } else if (replace->limit > 1) { - replace->limit --; - } - return 0; -} - -int spreg_replace(const spreg_t *re, - const char *src, - int src_size, - const char *replace_string, - char * dst, - int dst_size, - int limit, - int option) -{ - if (NULL == re || NULL == src || NULL == dst || - NULL == replace_string || src_size <= 0 || - dst_size <= 0 || limit < 0) { - return SPREG_NULL; - } - replace_type_t replace; - - replace.replace_string = replace_string; - replace.dst = dst; - replace.dst_end = dst + dst_size; - replace.error = 0; - replace.limit = limit; - replace.last_match = 0; - int ret = 0; - ret = spreg_search_all(re, src, src_size, replace_call_back, &replace, option); - - if (ret > 0) { - ret = replace.dst - dst; - if (replace.error < 0) { - return SPREG_BADBUFFER; - } else { - if (src_size != replace.last_match && replace.limit != 1) { - memcpy(replace.dst, src + replace.last_match, src_size - replace.last_match); - ret += src_size - replace.last_match; - } - } - } else if (0 == ret) { - //没有找到要替换的字符串,直接memcpy - if (src_size > dst_size) { - ret = SPREG_BADBUFFER; - } else { - memcpy(dst, src, (size_t)src_size); - ret = src_size; - } - } - return ret; -} - -int spreg_destroy(spreg_t *re) -{ - if (NULL != re) { - if (NULL != re->_re) { - pcre_free(re->_re); - re->_re = NULL; - } - - if (NULL != re->_extra) { - pcre_free(re->_extra); - re->_extra = NULL; - } - free(re); - } - return 0; -} - -int spreg_match_destroy(spreg_match_t *rmatch) -{ - if (NULL != rmatch) { - free(rmatch); - } - return 0; -} - -const char *spreg_error(int err) -{ - static const char *unknown = "unknown error code"; - static const char *badbuffer = "buffer is too small"; - err = -err; - if (err < 0) { - return unknown; - } - if (err >= (int)(sizeof(spreg_err_list)/sizeof(spreg_err_list[0]))) { - return badbuffer; - } - return spreg_err_list[err]; -} -/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */ diff --git a/spreg/spreg.h b/spreg/spreg.h deleted file mode 100644 index 00089c1ca5123f128cc9d83f036be190d56bc022..0000000000000000000000000000000000000000 --- a/spreg/spreg.h +++ /dev/null @@ -1,300 +0,0 @@ -/*************************************************************************** - * - * Copyright (c) 2008 Baidu.com, Inc. All Rights Reserved - * $Id: spreg.h,v 1.6 2009/02/06 07:16:04 baonh Exp $ - * - **************************************************************************/ - - - -/** - * @file regexapi.h - * @author baonh(baonenghui@baidu.com) - * @version $Revision: 1.6 $ - * @brief COM REGEX 是对正则表式库PCRE进行的封装,在PCRE的基础上增加一些功能, - * 并进行了一定的简化,方便使用 - * - **/ - - -#ifndef __SPREG_H_ -#define __SPREG_H_ - -#include "pcre.h" - -/** -* @brief 错误码 -* -* -*/ -enum { - SPREG_NOMATCH = PCRE_ERROR_NOMATCH, /**< 不匹配 -1 */ - SPREG_NULL = PCRE_ERROR_NULL, /**< 传入参数非法 -2 */ - SPREG_BADOPTION = PCRE_ERROR_BADOPTION, /**< 匹配选项设置错误 -3 */ - SPREG_NOMEMORY = PCRE_ERROR_NOMEMORY, /**< 内存不够 -6 */ - SPREG_MATCHLIMIT = PCRE_ERROR_MATCHLIMIT, /**< 匹配数量过多 -8 */ - SPREG_BADUTF8 = PCRE_ERROR_BADUTF8, /**< 错误的UTF8编码 -10 */ - SPREG_INTERNAL = PCRE_ERROR_INTERNAL, /**< 内部错误 -14 */ - SPREG_BADNEWLINE = PCRE_ERROR_BADNEWLINE, /**< NEWLINE错误 -23 */ - SPREG_BADBUFFER = -99 /**< buffer不足,在PCRE中没有这个错误号*/ - /**< 是在@spreg_replace中替换结果的*/ - /**< 串缓冲空间太小时返回 */ -}; - -//正则匹配的选项 -#define SPREG_DEFAULT 0 /**< 默认选项 */ -#define SPREG_CASELESS PCRE_CASELESS /**< 忽略大小写 */ -#define SPREG_MULTILINE PCRE_MULTILINE /**< 采用多行模式,^ $可以匹配\r\n */ -#define SPREG_DOTALL PCRE_DOTALL /**< .号可以匹配\r\n */ -#define SPREG_NOTBOL PCRE_NOTBOL /**< ^不匹配串开头 */ -#define SPREG_NOTEOL PCRE_NOTEOL /**< $不匹配串末尾 */ -#define SPREG_UNGREEDY PCRE_UNGREEDY /**< 非贪婪模式 */ -#define SPREG_NOTEMPTY PCRE_NOTEMPTY /**< 匹配时不匹配空串 */ -#define SPREG_UTF8 PCRE_UTF8 /**< UTF8模式 */ -#define SPREG_NO_UTF8_CHECK PCRE_NO_UTF8_CHECK /**< 使用UTF8模式但不检查UTF8是否合法*/ - - - -/** - * @brief 存储每个匹配的返回结果 - * - * 每次匹配后除了 整个正则表达式匹配的串位置,还包括使用'('')'包含的子匹配表达式 - * - * - * 使用需要spreg_match_init出来,当成数组进行使用.下标0的位置是整个正则表达式匹配的串位置, - * 子匹配表达式顺序和'('出现的先后顺序相同 - * -**/ -typedef struct _spreg_match_t { - int match_begin; /**< 匹配串在原串中的开始位置 */ - int match_end; /**< 匹配串在原串中终止位置 */ -} spreg_match_t; - -/** - * @brief 用来做匹配的结构体 - * - * 使用需要spreg_init出来,使用后需要销毁 - * 一个spreg_t init好后在多个线程中使用是安全的 - * -**/ -typedef struct _spreg_t spreg_t; - - - -/** -* @brief 回调函数传入的参数,包括了匹配结果和进行匹配的目标串 -* -* 回调函数类型spreg_callback_t使用的参数,@spreg_search_all和 @spreg_split需要使用到 -* -* @note 在@spreg_search_all中rmatch中是代表的是每一次的匹配结果,包括了子匹配串。下标0位置表示 -* 完整的匹配串的位置。 -* -* 在@spreg_split中,rmatch[0]的表示分割串的位置,rmatch[1]的位置代表分割串后面第一个满足正则 -* 表达式的位置,rmatch[2]以后是其匹配的子匹配串 -*/ -typedef struct _spreg_callback_param_t { - spreg_match_t *rmatch; /**< 每一次的匹配结果,包括了子匹配串 */ - const char *src; /**< 进行匹配的目标串指针 */ - void *arg; /**< 用户传入自定义参数 */ - int nrmatch; /**< (子)匹配串个数 */ - int src_size; /**< 进行匹配的目标串长度 */ -} spreg_callback_param_t; - -/** - * @brief 回调函数类型 - * - * @param [in] callback_match : 回调函数传入的参数,包括了匹配结果和进行匹配的目标串 - * 回调函数返回值小于0,将停止匹配过程 - * 见@spreg_callback_param_t - * @author baonh -**/ -typedef int spreg_callback_t(spreg_callback_param_t *callback_match); - -/** - * @brief 分配返回结果使用的空间 - * - * 分配返回结果使用的空间,n为可存放的最大的匹配串个数, - * 正则表达式中用()包起来的子字符串的个数 - * - * @param [in] n : 最大的(子)匹配串个数 - * @return 存放正则匹配的返回结果 NULL为失败 - * @author baonh -**/ -spreg_match_t *spreg_match_init (int n); - -/** - * @brief 用正则表达式进行初始化 - * - * @param [in] reg : 需要初始化的正则表达式 - * @param [in] errinfo : 如果出错返回结果的错误描述,由于出错的类型非常多,不适合使用返回值 - * @param [in] option : 进行初始化的选项 - * - SPREG_DEFAULT 默认选项 - * - SPREG_CASELESS 忽略大小写 - * - SPREG_MULTILINE 使用多行模式 ^ $ 可以匹配 \r\n前后 - * - SPREG_DOTALL . 号可以匹配包括 \r\n在内的换行符 - * - SPREG_UNGREEDY 使用非贪婪模式 - * - SPREG_UTF8 使用UTF8模式,可以检查UTF8编码是否合法 - * - SPREG_NO_UTF8_CHECK 不检查UTF8编码是否合法 - * - * @return 初始化后的spreg_t, 是进行正则表达式匹配使用的句柄 - * @author baonh -**/ -spreg_t * spreg_init(const char *reg, - const char **errinfo = NULL, - int option = SPREG_DEFAULT); - -/** - * @brief 在src中查找符合re 的字符串 - * - * @param [in] : 进行查找的正则表达式句柄,由spreg_init初始化 - * @param [in] src : 需要查找的目标字符串 - * @param [in] src_size : 需要查找的目标字符串长度 - * @param [out] rmatch : 匹配的结果,如果这里设为NULL, n必须为0,否则会报错, - *             此时返回值为0表示src中存在符合re 的字符串 - * @param [in] n : 匹配的结果的最大(子)匹配串个数 - * @param [in] option : 进行匹配的选项 - * - SPREG_DEFAULT 默认选项 - * - SPREG_NO_UTF8_CHECK 不检查UTF8编码是否合法(re使用UTF8模式) - * - SPREG_NOTBOL 使用了SPREG_MULTILINE 后^不匹配字符串开头, - * 只匹配’\r’’\n’之后的新行开始, - * 没有指定PCRE_MULTILINE,这个选项无效 - * - SPREG_NOTEOL 使用了SPREG_MULTILINE后$不匹配字符串末尾, - * 只匹配以’\r’’\n’做为结束符的末尾, - * 没有指定PCRE_MULTILINE,这个选项无效 - * @return >0成功,返回匹配的子匹配串数量 非0为返回错误 见 错误码说明 - * 0 是当n == 0 时, 匹配成功返回的 - * @author baonh -**/ -int spreg_search(const spreg_t *re, - const char *src, - int src_size, - spreg_match_t *rmatch, - int n, - int option = SPREG_DEFAULT); -/** - * @brief 判断目标串 src是否完全匹配 正则表达式 re - * - * - * @param [in] re : 进行查找的正则表达式句柄,由spreg_init初始化 - * @param [in] src : 需要匹配的目标字符串 - * @param [in] src_size : 需要查找的目标字符串长度 - * @param [out] rmatch : 匹配的结果, 设为 NULL,不获取匹配结果 - * @param [in] n : 匹配的结果的最大(子)匹配串个数, 设0 不获取匹配结果 - * @param [in] option : 进行匹配的选项,见 spreg_search的option说明 - * @return >0匹配成功, 非0错误或不匹配 - * @author baonh -**/ - -int spreg_match(const spreg_t *re, - const char *src, - int src_size, - spreg_match_t *rmatch = NULL, - int n = 0, - int option = SPREG_DEFAULT); - -/** - * @brief 在src中查找所有符合re 的字符串 - * - * 通过 callback 对每个匹配项进行操作, callback返回值小于0,则停止匹配 - * callback中的参数说明见@spreg_callback_param_t - * - * @param [in] re : 进行查找的正则表达式句柄,由spreg_init初始化 - * @param [in] src : 需要查找的目标字符串 - * @param [in] src_size : 需要查找的目标字符串长度 - * @param [in] callback : 处理单个匹配的callback, - * @param [in] arg : 用户传入callback使用的参数,默认为NULL - * @param [in] option : 进行匹配的选项,见spreg_search的option说明 - * @return >0返回匹配成功的个数(包括callback返回值小于的最后一个匹配), <0 返回错误码 - * @author baonh -**/ - -int spreg_search_all(const spreg_t *re, - const char *src, - int src_size, - spreg_callback_t *callback, - void *arg = NULL, - int option = SPREG_DEFAULT); - -/** - * @brief 在src中按照 re 匹配的字符串进行分割 - * - * 通过 callback 对每个分割结果进行操作, callback返回值小于0,则停止匹配 - * callback 中的参数说明见@spreg_callback_param_t - * 注意:这里的分割的串包括空串 - * - * @param [in] re : 进行匹配的正则表达式句柄,由spreg_init初始化 - * @param [in] src : 需要分割的目标字符串 - * @param [in] src_size : 需要分割的目标字符串长度 - * @param [in] callback : 处理单个分割结果的callback - * @param [in] arg : 用户传入callback使用的参数,默认为NULL - * @param [in] option : 进行匹配的选项,见 spreg_search的option说明 - * @return >=0返回分割结果的个数(包括callback返回值小于的最后一个匹配), <0 返回错误码 - * @author baonh -**/ - -int spreg_split(const spreg_t *re, - const char *src, - int src_size, - spreg_callback_t *callback, - void *arg = NULL, - int option = SPREG_DEFAULT); - - -/** - * @brief 对目标串中满足re的串用replace_string进行替换 - * - * - * replace_string中可以使用特殊语法用\\1 \\2 表示匹配串的子串, 支持1-9 反向引用 - * - * @param [in] : 进行查找的正则表达式句柄,由spreg_init初始化 - * @param [in] src : 需要替换的目标字符串 - * @param [in] src_size : 需要查找的目标字符串长度 - * @param [in] replace_string : 用来替换的字符串 - * @param [in] dst : 替换后的结果 - * @param [in] dst_size : dst 的最大长度 - * @param [in] limit : 最多替换的个数,默认0为全部替换 - * @param [in] option : 进行匹配的选项,见 spreg_search的option说明 - * @return >=0匹配成功,返回结果字符串实际长度, 非0错误 - * @author baonh -**/ -int spreg_replace(const spreg_t *re, - const char *src, - int src_size, - const char *replace_string, - char *dst, - int dst_size, - int limit = 0, - int option = SPREG_DEFAULT); - - -/** - * @brief 销毁 spreg_t 结构体 - * - * @param [in] re : 需要销毁的spreg_t 结构体 - * @return 0返回成功 - * @author baonh -**/ -int spreg_destroy(spreg_t *re); - - -/** - * @brief 销毁 spreg_match_t 结构体 - * - * @param [in] rmatch : 需要销毁的spreg_match_t 结构体 - * @return 0 返回成功 - * @author baonh -**/ -int spreg_match_destroy(spreg_match_t *rmatch); - - -/** - * @brief 将匹配的错误信息已字符串形式输出,主要用于打错误日志 - * - * @param [in] err : 匹配时返回的错误信息 - * @author baonh -**/ -const char *spreg_error(int err); - -#endif //__SPREG_H_ - -/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */